Endless U
Public course

How to Create a ChatGPT Plugin

A practical guide to designing, building, testing, and publishing a modern ChatGPT plugin with skills, MCP tools, and optional UI.

8 modules · 33 lessons
1

What a ChatGPT Plugin Is Now

Understand the current plugin model and choose the right architecture.

  • 1.1 From Legacy Plugins to the Current System

    Explain how current ChatGPT plugins differ from the older manifest-and-OpenAPI plugin model and why terminology matters.

  • 1.2 Skills, MCP Servers, and Optional UI

    Teach the responsibilities of skills, MCP servers, and embedded interfaces, including how they complement one another.

  • 1.3 Choose the Right Architecture

    Compare skills-only, MCP-only, and combined plugins and select an architecture based on the user workflow.

2

Plan the User Experience

Turn an idea into bounded, testable user workflows.

  • 2.1 Define Concrete User Jobs

    Identify recognizable user goals, expected outcomes, and the minimum capabilities needed to complete them.

  • 2.2 Set Scope and Boundaries

    Define supported and unsupported requests so the plugin behaves predictably and avoids over-collection or unnecessary powers.

  • 2.3 Divide Work Across Instructions, Tools, and UI

    Decide whether each part of the experience belongs in a skill, an MCP tool, model-readable output, or an optional interface.

  • 2.4 Draft Evaluation Prompts Early

    Create direct, indirect, follow-up, negative, and boundary prompts before implementation to clarify expected behavior.

One-on-one, at your pace

Every Endless U course is taught one-on-one. Ask questions, go deeper, or skip ahead, ChatGPT teaches at your pace, not a fixed script.

Open Endless U in ChatGPT →
3

Design High-Quality MCP Tools

Create tools that models can select and call reliably.

  • 3.1 Tool Names and Descriptions

    Write precise tool names and descriptions that clarify when a tool should and should not be invoked.

  • 3.2 Input and Output Schemas

    Design focused inputs, useful structured outputs, and concise model-readable text without unnecessary data.

  • 3.3 Tool Annotations

    Apply readOnlyHint, openWorldHint, and destructiveHint accurately and understand how they affect review and confirmations.

  • 3.4 Retries, Confirmations, and Errors

    Design idempotent behavior where possible, make side effects explicit, and return actionable error states.

4

Build the MCP Server

Implement and expose a working server using the current MCP stack.

  • 4.1 Set Up the TypeScript Project

    Create a minimal Node and TypeScript project using the official MCP SDK and Zod for schema validation.

  • 4.2 Register the First Tool

    Implement a small end-to-end MCP tool with validated inputs, realistic behavior, and a clear result.

  • 4.3 Use Streamable HTTP

    Expose the server through a stable /mcp endpoint and understand the transport requirements for development and production.

  • 4.4 Return Model-Readable Results

    Structure tool responses so the conversation remains useful even when no custom UI is available.

The best way to learn

Sitting down with a real tutor has always been the best way to learn, it's just been expensive and hard to access until now. Endless U gives you that experience for anything, for free.

Open Endless U in ChatGPT →
5

Add a ChatGPT Interface

Build optional embedded UI that complements the conversational result.

  • 5.1 Decide Whether UI Is Needed

    Recognize workflows that benefit from an inline card, carousel, fullscreen canvas, or picture-in-picture experience.

  • 5.2 Register and Render a Component

    Connect an MCP tool result to an iframe-based web component using the MCP Apps UI standard.

  • 5.3 Use the Component Bridge

    Work with tool input, tool output, widget state, and tool calls through the MCP Apps bridge and ChatGPT-specific window.openai extensions.

  • 5.4 Design for Mobile and Accessibility

    Create compact, responsive, accessible interactions and feature-detect optional host capabilities.

6

Authentication, Data, and Security

Protect user data and authorize account-connected actions correctly.

  • 6.1 Know When Authentication Is Required

    Separate public capabilities from tools that access private data or act on a user's behalf.

  • 6.2 Implement OAuth Safely

    Explain the MCP authorization model, transparent consent, narrowly scoped permissions, and established identity providers.

  • 6.3 Minimize Data Collection

    Avoid broad conversation-history fields, unnecessary personal information, secrets, and undisclosed identifiers.

  • 6.4 Prepare Reviewer Access

    Create reliable demo credentials and sample data without inaccessible signup, two-factor, or manual approval steps.

Any topic works

This isn't a fixed curriculum. Ask for a course on literally anything, and Endless U drafts the outline with you before saving it.

Open Endless U in ChatGPT →
7

Test Inside ChatGPT

Verify server behavior, tool selection, UI, and failure cases before submission.

  • 7.1 Test with MCP Inspector

    Connect locally, inspect discovered tools, and call them with normal, missing, empty, and edge-case inputs.

  • 7.2 Connect Through Developer Mode

    Expose the endpoint through HTTPS or a secure tunnel, add it in ChatGPT, and refresh metadata after changes.

  • 7.3 Evaluate Tool Selection

    Run direct, indirect, follow-up, write-action, and unsupported prompts while recording selected tools and arguments.

  • 7.4 Test UI and Cross-Device Behavior

    Verify loading, state restoration, console errors, component fallbacks, and interactions across desktop and mobile.

8

Package and Submit

Prepare a production-quality plugin for review and public distribution.

  • 8.1 Package the Plugin

    Combine skills, MCP configuration, and optional UI into the plugin structure and test the installed package end to end.

  • 8.2 Prepare the Public Listing

    Assemble the name, descriptions, logo, starter prompts, URLs, verified identity, countries, and policy materials.

  • 8.3 Scan Tools and Verify the Domain

    Submit the production MCP endpoint, complete the well-known domain challenge, scan metadata, and resolve validation issues.

  • 8.4 Build the Review Test Set

    Prepare five positive and three negative test cases with clear expected behavior and representative sample data.

  • 8.5 Avoid Common Rejection Risks

    Review reliability, tool annotations, privacy, authentication, commerce limitations, and completeness before submission.

  • 8.6 Publish and Maintain Updates

    Explain reviewed metadata snapshots, version updates, regression testing, and keeping the plugin aligned with evolving documentation.

New to Endless U?

Endless U turns anything you're curious about into a guided course, taught by ChatGPT, one focused lesson at a time. It's free, and takes seconds to start.

Open Endless U in ChatGPT