Apps are one part of the plugin model. A plugin is the package users discover, install, submit, and publish. An app is the MCP-backed capability inside that package.
The Apps SDK is the ChatGPT app development framework for MCP-backed apps. It builds on MCP: your server exposes tools and returns structured data, and, when you need UI, Apps SDK conventions let you register MCP UI resources and connect them to those tools inside ChatGPT.
Build an app when your plugin needs to connect to a service, expose tools, authenticate users, or take action through an MCP server.
App building model
An app can include:
- An MCP server: the server defines tools, handles authentication, returns structured data, and enforces the integration’s real behavior. See Build your MCP server.
- Tool metadata and annotations: required for reliable model behavior,
discovery, and review. Tool names, descriptions, schemas,
readOnlyHint,openWorldHint, anddestructiveHintshould match what the tool actually does. See the Apps SDK reference for the descriptor fields and annotation details. - Optional MCP UI: useful when users need to inspect, compare, edit, confirm, or navigate structured information inside ChatGPT. If your app can complete its job through tool calls and model responses, you do not need custom UI. Build this with Apps SDK UI resources when tool calls and model responses are not enough.
Build MCP-first
Define the app’s capabilities before designing UI:
- Identify the user workflows the app should support.
- Define the MCP tools needed for those workflows.
- Write clear tool names, descriptions, input schemas, and output schemas. Use the metadata optimization guide to improve discovery and model selection.
- Mark every tool with accurate safety annotations, then review the security and privacy guidance for write actions, data handling, and network access.
- Add authentication only for data or actions that require it.
- Test the app from ChatGPT developer mode before packaging it into a plugin.
Add UI if it materially improves the app experience
The Apps SDK quickstart shows how to build a simple MCP-backed app with an optional UI component. The Apps SDK helps you build MCP UI for an MCP-backed app. It is optional: use it when the app needs an embedded component, modal, fullscreen view, or other custom interaction in ChatGPT. See Build your MCP UI for UI-specific patterns.
Do not add UI just to show a banner ad or brand placement. The UI should materially improve the user’s workflow by making the app easier to inspect, edit, compare, confirm, or navigate.
Even when you add UI, keep the tools decoupled from the rendering layer. Tools should still return useful structured data and model-readable results, while UI components focus on presentation and interaction. See Separate data processing from UI rendering.
Package the app as a plugin
After the app works in developer mode, package it into a plugin so users can install it.
- Create or scaffold the plugin folder. See Build plugins.
- Add the app reference to the plugin manifest.
- Add bundled skills if ChatGPT should follow repeatable workflows alongside the app.
- Test the plugin locally.
- Review the Apps SDK app submission guidelines, then submit it for review as part of a plugin when it is ready for public distribution. See Submit plugins.