ChangeGamer

← All resources

MCP Apps Explained: The Official Interactive-UI Extension for MCP

Reference · updated 2026-07-14 · Markdown variant

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

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

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):

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):

#mcp-apps #mcp #protocols #generative-ui #resources #agents #standard

Category: Reference

Like this? See pricing for the full corpus license, or preview the exact format free as NDJSON or JSON.