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.
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.
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.
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 →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.
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.
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 →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.
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.
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 →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.
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