SEP-1865: MCP Apps - Interactive User Interfaces for MCP - Model Context Protocol
https://modelcontextprotocol.org/seps/1865-mcp-apps-interactive-user-interfaces-for-mcp • 321 KB fetched
Open original page
SEP-1865: MCP Apps - Interactive User Interfaces for MCP - Model Context Protocol
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
Skip to main content
Model Context Protocol home page
Search...
⌘ K Ask Assistant ⌘ I
* Blog
* GitHub
Search...
Navigation
Final
SEP-1865: MCP Apps - Interactive User Interfaces for MCP
Documentation
Specification
Extensions
Registry
SEPs
Community
* SEP Index
Final
* SEP-414: Document OpenTelemetry Trace Context Pr…
* SEP-932: Model Context Protocol Governance
* SEP-973: Expose additional metadata for Implemen…
* SEP-985: Align OAuth 2.0 Protected Resource Meta…
* SEP-986: Specify Format for Tool Names
* SEP-990: Enable enterprise IdP policy controls d…
* SEP-991: Enable URL-based Client Registration us…
* SEP-994: Shared Communication Practices/Guidelin…
* SEP-1024: MCP Client Security Requirements for Lo…
* SEP-1034: Support default values for all primitiv…
* SEP-1036: URL Mode Elicitation for secure out-of-…
* SEP-1046: Support OAuth client credentials flow i…
* SEP-1302: Formalize Working Groups and Interest G…
* SEP-1303: Input Validation Errors as Tool Executi…
* SEP-1319: Decouple Request Payload from RPC Metho…
* SEP-1330: Elicitation Enum Schema Improvements an…
* SEP-1577: Sampling With Tools
* SEP-1613: Establish JSON Schema 2020-12 as Defaul…
* SEP-1686: Tasks
* SEP-1699: Support SSE polling via server-side dis…
* SEP-1730: SDKs Tiering System
* SEP-1850: PR-Based SEP Workflow
* SEP-1865: MCP Apps - Interactive User Interfaces…
* SEP-2085: Governance Succession and Amendment Pro…
* SEP-2106: Tools `inputSchema` & `outputSchema` Co…
* SEP-2133: Extensions
* SEP-2148: MCP Contributor Ladder
* SEP-2149: MCP Group Governance and Charter Templa…
* SEP-2164: Standardize Resource Not Found Error Co…
* SEP-2207: OIDC-Flavored Refresh Token Guidance
* SEP-2243: HTTP Header Standardization for Streama…
* SEP-2260: Require Server requests to be associate…
* SEP-2322: Multi Round-Trip Requests
* SEP-2468: Recommend Issuer (iss) Parameter in MCP…
* SEP-2484: Require Conformance Tests for Standards…
* SEP-2549: TTL for List Results
* SEP-2567: Sessionless MCP via Explicit State Hand…
* SEP-2575: Make MCP Stateless
* SEP-2577: Deprecate Roots, Sampling, and Logging
* SEP-2596: Specification Feature Lifecycle and Dep…
* SEP-2663: Tasks Extension
On this page
* Abstract
* Motivation
* Specification
* Rationale
* Predeclared resources vs. inline embedding
* Reusing MCP JSON-RPC instead of a custom protocol
* HTML-only MVP
* Backward Compatibility
* Security Implications
* Reference Implementation
Final
SEP-1865: MCP Apps - Interactive User Interfaces for MCP
Copy page Copy page
MCP Apps - Interactive User Interfaces for MCP
Copy page Copy page
Final Extensions Track
This SEP has reached Final status and is preserved as a historical record of
the design as accepted. Changes made to the protocol after finalization are
not reflected here. Refer to the current
specification and its changelog for authoritative
requirements.
Field Value
SEP 1865
Title MCP Apps - Interactive User Interfaces for MCP
Status Final
Type Extensions Track
Created 2025-11-21
Author(s) Ido Salomon ( @idosal ), Liad Yosef ( @liadyosef ), Olivier Chafik ( @olivierchafik ), Jerome Swannack ( @jeromeswannack ), Jonathan Hefner ( @jonathanhefner ), Anton Pidkuiko ( @antonpidkuiko ), Nick Cooper ( @nickcooper ), Bryan Ashley ( @bryanashley ), Alexi Christakis ( @alexichristakis )
Sponsor None (seeking sponsor)
PR #1865
Abstract
This SEP proposes an extension to MCP (per SEP-1724) that enables servers to deliver interactive
user interfaces to hosts. MCP Apps introduces a standardized pattern for declaring UI resources via
the ui:// URI scheme, associating them with tools through metadata, and facilitating
bi-directional communication between the UI and the host using MCP’s JSON-RPC base protocol. This
extension addresses the growing community need for rich, interactive experiences in MCP-enabled
applications, maintaining security, auditability, and alignment with MCP’s core architecture. The
initial specification focuses on HTML resources ( text/html;profile=mcp-app ) with a clear path for
future extensions.
Motivation
MCP lacks a standardized way for servers to deliver rich, interactive user interfaces to hosts.
This gap blocks many use cases that require visual presentation and interactivity that go beyond
plain text or structured data. As more hosts adopt this capability, the risk of fragmentation and
interoperability challenges grows.
MCP-UI has demonstrated the viability and value of MCP apps built on UI
resources and serves as a community playground for the UI spec and SDK. Fueled by a dedicated
community, it developed the bi-directional communication model and the HTML, external URL, and
remote DOM content types. MCP-UI’s adopters, including hosts and providers such as Postman,
HuggingFace, Shopify, Goose, and ElevenLabs, have provided critical insights and contributions to
the community.
OpenAI’s Apps SDK , launched in November 2025, further
validated the demand for rich UI experiences within conversational AI interfaces. The Apps SDK
enables developers to build rich, interactive applications inside ChatGPT using MCP as its
backbone.
The architecture of both the Apps SDK and MCP-UI has significantly informed the design of this
specification.
However, without formal standardization:
* Servers cannot reliably expect UI support via MCP
* Each host may implement slightly different behaviors
* Security and auditability patterns are inconsistent
* Developers must maintain separate implementations or adapters for different hosts (e.g., MCP-UI
vs. Apps SDK)
This SEP addresses the current limitations through an optional, backwards-compatible extension that
unifies the approaches pioneered by MCP-UI and the Apps SDK into a single, open standard.
Specification
The full specification can be found at
modelcontextprotocol/ext-apps .
At a high level, MCP Apps extends the Model Context Protocol to enable servers to deliver
interactive user interfaces to hosts. This extension introduces:
* UI Resources: Predeclared resources using the ui:// URI scheme
* Resource Discovery: Tools reference UI resources via metadata
* Bi-directional Communication: UI iframes communicate with hosts using standard MCP JSON-RPC
protocol
* Security Model: Mandatory iframe sandboxing with auditable communication
This specification focuses on HTML content ( text/html;profile=mcp-app ) as the initial content
type, with extensibility for future formats.
As an extension, MCP Apps is optional and must be explicitly negotiated between clients and servers
through the extension capabilities mechanism (see Capability Negotiation section in the
full specification ).
Rationale
Predeclared resources vs. inline embedding
UI is modeled as predeclared resources ( ui:// ), referenced by tools via metadata. This allows:
* Hosts to prefetch templates before tool execution, improving performance
* Separation of presentation (template) from data (tool results), facilitating caching
* Security review of UI resources
Alternatives considered:
* Embedded resources: Current MCP-UI approach, where resources are returned in tool results.
Although it’s more convenient for server development, it was deferred due to the gaps in
performance optimization and the challenges in the UI review process.
* Resource links: Predeclare the resources but return links in tool results. Deferred due to
the gaps in performance optimization.
Reusing MCP JSON-RPC instead of a custom protocol
Reuses existing MCP infrastructure (type definitions, SDKs, etc.). JSON-RPC offers advanced
capabilities (timeouts, errors, etc.).
Alternatives considered:
* Custom message protocol: Current MCP-UI approach with message types like tool, intent,
prompt, etc. These message types can be translated to a subset of the proposed JSON-RPC messages.
* Global API object: Rejected because it requires host-specific injection and doesn’t work with
external iframe sources. Syntactic sugar may still be added on the server/UI side.
HTML-only MVP
* HTML is universally supported and well-understood
* Simplest security model (standard iframe sandbox)
* Allows screenshot/preview generation (e.g., via html2canvas)
* Sufficient for most observed use cases
* Provides a clear baseline for future extensions
Alternatives considered:
* Include external URLs in MVP: This is one of the easiest content types for servers to adopt,
as it’s possible to embed regular apps. However, it was deferred due to concerns around model
visibility, inability to screenshot content, and review process. It may effectively be supported
with the SEP’s new externalIframes capability.
Backward Compatibility
The proposal is an optional extension to the core protocol. Existing implementations continue
working without changes.
Security Implications
Hosting interactive UI content from potentially untrusted MCP servers requires careful security
consideration.
Based on the threat model, MCP Apps proposes the following mitigations:
* Iframe sandboxing : All UI content runs in sandboxed iframes with restricted permissions
* Predeclared templates : Hosts can review HTML content before rendering
* Auditable messages : All UI-to-host communication goes through loggable JSON-RPC
* User consent : Hosts can require explicit approval for UI-initiated tool calls
A full threat model analysis and mitigations are available in the
full specification .
Reference Implementation
* MCP-UI client and server SDKs support the patterns proposed
in this spec.
* ext-apps repository contains a prototype
implementation by Olivier Chafik.
Was this page helpful?
Yes No
SEP-1850: PR-Based SEP Workflow
SEP-2085: Governance Succession and Amendment Pro…
github
Assistant
Responses are generated using AI and may contain mistakes.
Links found on this page
- /llms.txt [direct]
- Skip to main content [direct]
- Model Context Protocol home page [direct]
- Blog [direct]
- GitHub [direct]
- Documentation [direct]
- Specification [direct]
- Extensions [direct]
- Registry [direct]
- SEPs [direct]
- Community [direct]
- SEP-414: Document OpenTelemetry Trace Context Pr… [direct]
- SEP-932: Model Context Protocol Governance [direct]
- SEP-973: Expose additional metadata for Implemen… [direct]
- SEP-985: Align OAuth 2.0 Protected Resource Meta… [direct]
- SEP-986: Specify Format for Tool Names [direct]
- SEP-990: Enable enterprise IdP policy controls d… [direct]
- SEP-991: Enable URL-based Client Registration us… [direct]
- SEP-994: Shared Communication Practices/Guidelin… [direct]
- SEP-1024: MCP Client Security Requirements for Lo… [direct]
- SEP-1034: Support default values for all primitiv… [direct]
- SEP-1036: URL Mode Elicitation for secure out-of-… [direct]
- SEP-1046: Support OAuth client credentials flow i… [direct]
- SEP-1302: Formalize Working Groups and Interest G… [direct]
- SEP-1303: Input Validation Errors as Tool Executi… [direct]
- SEP-1319: Decouple Request Payload from RPC Metho… [direct]
- SEP-1330: Elicitation Enum Schema Improvements an… [direct]
- SEP-1577: Sampling With Tools [direct]
- SEP-1613: Establish JSON Schema 2020-12 as Defaul… [direct]
- SEP-1686: Tasks [direct]
- SEP-1699: Support SSE polling via server-side dis… [direct]
- SEP-1730: SDKs Tiering System [direct]
- SEP-1850: PR-Based SEP Workflow [direct]
- SEP-2085: Governance Succession and Amendment Pro… [direct]
- SEP-2106: Tools `inputSchema` & `outputSchema` Co… [direct]
- SEP-2133: Extensions [direct]
- SEP-2148: MCP Contributor Ladder [direct]
- SEP-2149: MCP Group Governance and Charter Templa… [direct]
- SEP-2164: Standardize Resource Not Found Error Co… [direct]
- SEP-2207: OIDC-Flavored Refresh Token Guidance [direct]
- SEP-2243: HTTP Header Standardization for Streama… [direct]
- SEP-2260: Require Server requests to be associate… [direct]
- SEP-2322: Multi Round-Trip Requests [direct]
- SEP-2468: Recommend Issuer (iss) Parameter in MCP… [direct]
- SEP-2484: Require Conformance Tests for Standards… [direct]
- SEP-2549: TTL for List Results [direct]
- SEP-2567: Sessionless MCP via Explicit State Hand… [direct]
- SEP-2575: Make MCP Stateless [direct]
- SEP-2577: Deprecate Roots, Sampling, and Logging [direct]
- SEP-2596: Specification Feature Lifecycle and Dep… [direct]
- SEP-2663: Tasks Extension [direct]
- current
specification [direct]
- @idosal [direct]
- @liadyosef [direct]
- @olivierchafik [direct]
- @jeromeswannack [direct]
- @jonathanhefner [direct]
- @antonpidkuiko [direct]
- @nickcooper [direct]
- @bryanashley [direct]
- @alexichristakis [direct]
- #1865 [direct]
- MCP-UI [direct]
- Apps SDK [direct]
- modelcontextprotocol/ext-apps [direct]
- MCP-UI [direct]
- ext-apps [direct]