MCP Apps specification
The stable SEP-1865 extension: the ui:// resource format, how tools point at their UI through metadata, the sandboxed iframe model, and the message contract between view and host. Read this first and build once.
Interactive UI over MCP runs on one open contract: declare a ui:// resource, link it from your tool metadata, and speak JSON-RPC through the host. Below is the shortest honest path — read the extension spec, study the reference SDKs, follow one host guide end to end, and test locally before you ship.
The stable SEP-1865 extension: the ui:// resource format, how tools point at their UI through metadata, the sandboxed iframe model, and the message contract between view and host. Read this first and build once.
The foundation Apps extends — tools, resources, and prompts, capability negotiation, and the JSON-RPC base. Reach for it when the extension references behavior it assumes you already know.
The SDKs that road-tested the standard before it was one — server helpers and client renderers in TypeScript, plus Python and Ruby, with runnable examples and an adapter for hosts on the older protocol. Start from its examples folder.
One sitting, one working widget: register a tool with its UI resource, wire the bridge handshake, tunnel your localhost, and connect it in ChatGPT developer mode. The fastest way to feel the whole loop.
How to present UI inside ChatGPT once the standard flow works — inline cards, carousels, fullscreen and picture-in-picture, the decoupled data-then-render tool pattern, and which host capabilities to feature-detect before reaching for extensions.
The reference workbench for your server before any host ever sees it — list tools, call them, watch the wire traffic in the browser UI, or script the same checks in CI with the CLI. Includes recipes for reviewing MCP Apps.