What are MCP Apps?
MCP Apps extend the Model Context Protocol so servers can deliver secure, interactive user interfaces to any compliant host. Declare UI once, render everywhere.
Why MCP Apps?
Text responses are not enough for many workflows. MCP Apps unlock rich, interactive experiences without sacrificing portability or security.
Progressive enhancement, by design
Hosts advertise their UI capabilities. Servers register UI-enabled tools only when supported, so everything still works as text on non-UI hosts.
- Servers check host capabilities before enabling UI tools.
- If UI is unavailable, tools return text and structured data instead.
- The same server runs everywhere with consistent behavior.
Your MCP server remains compatible with every host. UI is a bonus where supported.
See capability negotiation in the specArchitecture at a glance
Three entities collaborate to deliver interactive experiences without breaking the MCP model.
Lifecycle
From discovery to teardown, MCP Apps follow a predictable sequence that hosts can trust.
UI resources
Servers declare HTML templates with ui:// URIs during tool registration so hosts can prefetch and review them.
- Hosts can prefetch and cache templates before execution.
- Presentation and data stay decoupled for clean architectures.
- Hosts can inspect UI templates during connection setup.
ui://weather/forecastTool–UI linkage
Tools reference their UI templates via metadata. When called, the Host fetches the template and renders it securely.
- Fetch the UI resource declared by the tool.
- Render the View inside a sandboxed iframe.
- Pass tool inputs and results to the View.
{
"_meta": {
"ui": { "resourceUri": "ui://weather/forecast" }
}
}Bidirectional communication
Views and Hosts communicate over JSON-RPC via postMessage, keeping interactions auditable and secure.
Tool visibility
Tools can be visible to the model, the app, or both. This prevents UI interactions from cluttering model context.
- Default visibility is both model and app.
- App-only tools keep UI interactions private.
Host context & theming
Hosts provide runtime context so Views can adapt their layout and styling.
- Theme preference (light or dark).
- Locale, timezone, and platform metadata.
- Display mode (inline, fullscreen, or picture-in-picture).
- Container dimensions and layout constraints.
.container {
background: var(--color-background-primary, #ffffff);
color: var(--color-text-primary, #000000);
}Hosts notify Views when context changes so UIs can update without reloads.
Display modes
Views declare which modes they support; Hosts decide what they can provide.
Security by default
MCP Apps keep data safe through sandboxing and strict communication rules.
- Views run in sandboxed iframes with no host DOM access.
- CSP declarations restrict external connections by default.
- All communication flows through auditable JSON-RPC.
What you can create
Build highly customized MCP Apps — even personalized experiences for a single user or team.
Want us to build your MCP App?
Contact us to create a world-class MCP App that works across all AI assistants — tailored to your goals and workflows.