How
Indirect: the model calls an MCP tool and the host shows that tool's View. The View, not the model, drives the UI; it can call tools and push context to the model (ui/update-model-context).
MCP extension: tools ship sandboxed HTML UIs into chat hosts.
apps.extensions.modelcontextprotocol.io ↗repo ↗docs ↗MCP-UI (predecessor, community) ↗MCP Apps announcement (2025-11-21) ↗fka.dev: MCP Apps Should Work in the Terminal Too (2026-09-09) ↗Claude Code issue #93973: plugin API for interactive TUI elements ↗Anthropic: donating MCP to the Agentic AI Foundation ↗
MCP Apps owns UI in web chat hosts; scene can fill the terminal gap and speak MCP as its control transport.
Complement it: it does a neighbouring job; interoperate.
MCP Apps is where the users already are. It turned MCP-UI's community experiment and OpenAI's Apps SDK into one stable, foundation-governed standard, and Claude, ChatGPT, VS Code and Goose render it today, so one server reaches hundreds of millions of chat users with a real interactive app, not a widget catalog. It refuses to invent a UI language: a View is just HTML, so anything the web can draw (maps, 3D, sheet music, Excalidraw) works, and safety comes from proven browser isolation (sandboxed iframes, CSP, predeclared resources, auditable JSON-RPC over MCP's own messages). With 4.6M weekly SDK downloads and agent skills that scaffold an app in one prompt, it is the default answer to 'my tool needs a UI'.
| UI as data | 1 scene 5 | The resource is a declared, reviewable HTML document, but the UI itself is code. |
|---|---|---|
| Agent can drive it | 3 scene 5 | Model triggers Views via tool calls and gets tool calls back; it cannot directly manipulate a live View. |
| Agent can see it | 2 scene 5 | Structured but voluntary: whatever the View sends via update-model-context. |
| Small, targeted edits | 1 scene 5 | |
| Time travel | 0 scene 0 | |
| Live data rate | 3 scene 5 | A View can open its own connections so data bypasses the model; no published numbers. |
| Terminal native | 0 scene 5 | HTML-only; terminal views exist only as a 2026-09 blog proposal. |
| Pixel graphics | 5 scene 4 | Full web platform (canvas, WebGL; Three.js and ShaderToy examples). |
| Teaching | 0 scene 3 | |
| Maturity | 4 scene 1 | Stable spec shipped in Claude, ChatGPT, VS Code, Goose; not yet ubiquitous across MCP clients. |
| Openness | 5 scene 4 | Linux Foundation (AAIF) governed, Apache-2.0/MIT. |
MCP Apps (SEP-1865) scene now scene planned
Indirect: the model calls an MCP tool and the host shows that tool's View. The View, not the model, drives the UI; it can call tools and push context to the model (ui/update-model-context).
Write an MCP server that registers tools with UI resources (SDK + agent skills such as create-mcp-app); works in any compliant host without host changes.
Only what the View chooses to report via ui/update-model-context or tool calls; the model cannot query the DOM or see the render.
No addressing: the host delivers tool inputs/results; the View app decides what to change.
None.
Gives agents a way to ship arbitrary rich UI into the chat, but the UI is an opaque app the model neither inspects nor edits.
A tool declares a ui:// resource (text/html;profile=mcp-app) in _meta.ui.resourceUri; when the model calls the tool, the host fetches the HTML and renders it in a sandboxed iframe (often via a sandbox proxy). The View talks to the host over JSON-RPC on postMessage using MCP's own message shapes: ui/initialize, ui/notifications/tool-input(-partial), tool-result, tool-cancelled, size-changed, host-context-changed; the View can call server tools through the host, send ui/message, ui/open-link, ui/request-display-mode and ui/update-model-context. Hosts theme Views through standardized CSS variables and enforce CSP declared by the server.
No published performance numbers; a View is an ordinary web page so its rendering/update rate is whatever the browser and the app code achieve.
The de facto standard for UI inside chat hosts: Claude and ChatGPT both render it, and it unifies MCP-UI and OpenAI's Apps SDK. Star count understates adoption; the spec repo is small but the SDK has 4.6M weekly downloads.
Used by: Claude, ChatGPT, VS Code, Goose, Postman, MCPJam, mcp-use inspector, Alpic playground, CopilotKit (MCP Apps renderer), json-render (@json-render/mcp)
Stable spec, active SDK, neutral governance; MCP-UI (the community predecessor) has gone quiet as the official extension took over.
Releases: SDK: v1.7.5 2026-07-23, v2.0.0 2026-09-08, v2.0.1 2026-09-24, v2.0.2/v2.0.3 2026-09-25; spec dated 2026-01-26 · Contributors: ~48 (ext-apps); MCP-UI ~20 · Recent: 56 commits on ext-apps main since 2026-07-11; MCP-UI shows no main-branch commits in that window (last client release 7.1.1, 2026-05-09) · Bus factor: high: foundation-governed, multiple vendors depend on it
Both put an interactive UI in front of a user on an agent's behalf and let the UI call back into the agent's tools.
Nothing in the UI model; scene's tooling should reuse MCP itself as the transport rather than a private socket protocol for remote agents.
A terminal renderer for MCP tool UIs. scene could be the host-side terminal view the fka.dev proposal and Claude Code #93973 are asking for, with readback and patching MCP Apps doesn't offer.
| 1–7 | home · features · use cases · docs · changelog · under the hood · blog |
| t | light or dark |
| j k | scroll |
| g G | top · bottom |
| ? Esc | this · close |