MCP Apps
What is MCP Appsโ
MCP Apps is an extension to the Model Context Protocol that allows MCP servers to deliver interactive UI applications directly inside LLM host environments (Claude Desktop, VS Code Copilot, Microsoft 365 Copilot, Postman). Instead of returning plain text or structured data, tools return interactive HTML/JS interfaces rendered in sandboxed iframes.
- Status: Supported in major MCP hosts (2026)
- License: MIT (part of MCP ecosystem)
- Hosts: Claude, Claude Desktop, VS Code GitHub Copilot, Microsoft 365 Copilot, Goose, Postman
Why it's interestingโ
- Context preservation โ interactive UIs live inside the chat, so users don't lose context by switching tabs.
- Bidirectional data flow โ apps can call MCP tools on the server and receive pushed updates from the host.
- Sandboxed security โ apps run in isolated iframes with strict CSP; host controls permissions for tools, microphone, camera, etc.
- Framework-agnostic โ build with React, Vue, Svelte, vanilla JS, or any web framework.
- Progressive enhancement โ tools work as plain MCP tools when the host doesn't support UI; the UI layer is optional.
- Already deployed โ supported by Claude, VS Code Copilot, and Microsoft 365 Copilot today.
When to useโ
- Data exploration โ interactive dashboards, drilldown charts, maps that live inside the conversation
- Multi-step workflows โ approval flows, configuration wizards, code review UIs
- Rich media โ PDF viewers, 3D models, video players with native interactivity
- Real-time monitoring โ live metrics dashboards that update without leaving chat
- Complex forms โ multi-field configuration with validation and interdependent fields
When NOT to useโ
- Simple text/image responses โ plain MCP tool results are simpler and sufficient
- Standalone web apps โ if users are fine switching contexts, a regular web app is easier to build and maintain
- Hosts that don't support it yet โ not all MCP clients render UI resources
- Non-interactive outputs โ if the tool just returns data for the LLM to summarize, you don't need a UI
How it worksโ
- MCP server tool declares a
ui://resource in_meta.ui.resourceUri - Host preloads the HTML/JS/CSS before the tool is invoked
- Tool execution triggers UI rendering in a sandboxed iframe
- App communicates with host via
postMessageAPI - App can call MCP tools through the host; host can push fresh data to the app