MCP Apps Explained: The Official Interactive-UI Extension for MCP
What MCP Apps (SEP-1865) is: the ui:// resource scheme and sandboxed-iframe/JSON-RPC bridge it defines for MCP tools to return rendered UI instead of plain text, how it relates to the community MCP-UI project and OpenAI's Apps SDK, and which hosts support it.
Plain MCP tools return text and structured data — a chart or a form needs the host to build its own custom rendering logic. MCP Apps is the official MCP extension that closes that gap: a server pre-declares an HTML UI resource, links it to a tool, and a compatible host renders it in a sandboxed iframe that talks back over MCP's own JSON-RPC channel — instead of every client inventing its own bespoke widget protocol.
Key facts
- MCP Apps is SEP-1865 ("MCP Apps - Interactive User Interfaces for MCP"), proposed November 21, 2025 and merged as an accepted, live MCP extension January 26–28, 2026 — confirmed directly against the merged GitHub pull request and the MCP project's own blog.
- It defines a
ui://URI scheme for pre-declared UI resources served astext/html;profile=mcp-app, mandatory sandboxed-iframe rendering, and a bidirectional JSON-RPC-over-postMessagebridge (ui/*methods and notifications) between the widget and host. - It was co-developed by Anthropic, OpenAI, and the community MCP-UI project (
@mcp-ui/server/@mcp-ui/client), which had already been shipping the same iframe-plus-postMessage pattern experimentally — MCP Apps standardizes what MCP-UI and OpenAI's separately-branded Apps SDK each prototyped first. - The extension is optional and backward-compatible, negotiated per-connection through MCP's existing capability mechanism — a server or client that doesn't implement it just gets a plain tool result, nothing breaks.
- Adoption named on the launch announcement itself: Anthropic (Claude), OpenAI (ChatGPT, rolling out), Block (Goose), Microsoft (VS Code Insiders), JetBrains, AWS, and Google DeepMind.
How a tool call becomes a rendered widget
The server registers a ui:// resource template and links it to a tool — the MCP Apps standard key is _meta.ui.resourceUri on the tool descriptor (OpenAI's Apps SDK instead used its own _meta["openai/outputTemplate"] key; check both if a tool must target either host — WebSearch-corroborated, not primary-fetched, see sources below). The model calls the tool as normal via tools/call; the result points at the linked resource. The host fetches and caches the ui:// resource once, then renders it sandboxed. Interaction inside the widget (a button, a form) sends JSON-RPC messages back over the bridge, which can trigger further tool calls — the same trust boundary as any other MCP message, not an open postMessage channel.
Distinct from three adjacent ChangeGamer topics
- Not one of the six core primitives (/resources/mcp-primitives): MCP Apps is an optional extension layered on the Resources primitive, not itself one of the base six.
- Not AG-UI (/resources/generative-ui-for-agents): AG-UI is an SSE event vocabulary an agent backend streams to a frontend you build; MCP Apps ships the UI inside the MCP resource itself and renders inside the host's own chat surface — no separate frontend to build.
- Not covered by the general server-building guide (/resources/building-mcp-servers): its "three server primitives" section predates this extension and stops at plain tool/resource/prompt results, with no UI-rendering path.
Security note
A rendered widget is untrusted, model-adjacent content running in the user's own session — treat it as another agent-exposed UI surface (see /resources/agentic-security-checklist and /resources/agentic-browsers): validate everything the iframe sends back before acting on it, and rely on the mandatory sandboxing rather than the widget's own good behavior.
Verified sources
Primary (fetched directly this session):
- SEP-1865 pull request (merged; title and technical summary confirmed): https://github.com/modelcontextprotocol/modelcontextprotocol/pull/1865
- MCP Apps launch post, "now live" (Jan 26, 2026): https://blog.modelcontextprotocol.io/posts/2026-01-26-mcp-apps/
- MCP Apps proposal post (Nov 21, 2025): https://blog.modelcontextprotocol.io/posts/2025-11-21-mcp-apps/
Secondary — WebSearch-corroborated only (developers.openai.com, mcpui.dev, and a wikipedia.org control fetch all returned HTTP 403 to direct WebFetch this session, so these specific details are not primary-fetched and should be reverified when those domains are reachable):
- OpenAI Apps SDK reference (page title + 3 independent developer write-ups agree on the
_metakey names): https://developers.openai.com/apps-sdk/reference - MCP-UI project docs on the Apps SDK relationship: https://mcpui.dev/guide/apps-sdk
- Shopify Engineering, "MCP UI: Breaking the text wall with interactive components": https://shopify.engineering/mcp-ui-breaking-the-text-wall