什么是 MCP 应用?

MCP 应用(MCP Apps)是 Model Context Protocol 的官方可选扩展,使 MCP Server 能把 Tool 与交互式 HTML UI Resource 关联,并由兼容 Host 在会话中渲染。

快速了解

全称模型上下文协议应用
创建时间2025 年(随 MCP 生态增长而诞生的概念)
规范文档官方规范

工作原理

扩展边界

MCP Apps 是首个官方 MCP 扩展,标识为 io.modelcontextprotocol/ui,而不是核心 Tool、Resource 或 Transport 原语。它规范 Server 如何声明交互式 View,以及支持扩展的 Host 如何嵌入它;并不定义应用商店、计费模型、发布者信任计划、业务对象鉴权或所有 Client 的统一支持。

发现与渲染生命周期

Server 发布一个 Tool,并在 _meta.ui.resourceUri 中指向预声明的 ui:// Resource。Host 发现 Metadata、获取 HTML 资源、创建 Sandboxed iframe、完成 ui/initialize 交换,再把 Tool Input 与 Result 交给 View。资源可声明 UI 专用 CSP 和权限请求,但是否授予由 Host 决定。

双向数据流

View 与 Host 通过 postMessage 交换 UI 专用 JSON-RPC。Host 暴露相应能力时,View 可以接收 Tool Input 与结构化结果、请求允许的 Tool Call、发送用户可见消息或更新 Context。Host 始终是执行策略的代理;不能因为 HTML 来自某个 Server,就向 iframe 直接交付凭据或权限。

安全与用户同意

iframe Sandbox 会阻止 View 直接访问 Host DOM、Cookie、Storage 与父级执行环境,但它只是其中一层。Host 仍应校验 Origin 与 CSP、最小化 Capability、对有后果的 UI 发起调用要求用户同意,并在 Server 侧执行认证、对象级鉴权、外链与数据外发限制、消息审计和 View 生命周期结束后的销毁。

兼容与降级

不同 Host 的支持程度不同,扩展也可能独立于核心协议演进。Server 应协商 Capability,固定并测试发布所用扩展与 SDK 版本,保证非 UI Tool Result 仍有意义,并覆盖初始化、Resize、重连、Teardown、权限拒绝、重复操作和不支持扩展的 Host。若体验不依赖会话内嵌,普通 Web 应用通常更简单。

主要特点

  • 官方可选扩展:Host 必须声明并实现 UI 支持
  • Tool 与 View 绑定:`_meta.ui.resourceUri` 将 Tool 指向预声明的 `ui://` Resource
  • 会话内交互:兼容 Host 在 Sandboxed iframe 中渲染 HTML
  • 代理式通信:View 通过 `postMessage` 上的 JSON-RPC 通信,不直接访问 Host 或 Server
  • 渐进增强:没有 UI 支持时仍保留文本或结构化 Tool Result
  • 应用侧控制:身份、鉴权、同意、外发、审计与副作用安全仍由部署系统负责

常见用途

  1. 在不离开会话的情况下探索图表、地图、表格或其他密集 Tool Result
  2. 通过表单收集多字段配置,避免反复 Prompt 询问
  3. 使用交互控件审查文档、媒体、代码差异或生成产物
  4. 通过进度、日志、筛选器和状态更新监控长任务
  5. 由 Host 代理每次有后果的 Tool Call,完成审批或分诊流程

示例

loading...
Loading code...

常见问题

MCP Apps 是官方 MCP 标准的一部分吗?

是。MCP Apps 是官方可选扩展,而不是强制核心能力。Server 与 Host 都支持扩展时才能渲染交互式 View,因此实现必须协商 Capability,并保留非 UI 降级结果。

MCP App 与 MCP Server 有什么区别?

MCP Server 暴露 Tool、Resource 等协议能力;MCP App 是叠加在这些能力上的交互式 UI 扩展:Tool 引用 UI Resource,兼容 Host 渲染其 View。Server 可以不提供 App,一个 Server 也可以提供多个支持 UI 的 Tool。

Host 不支持 MCP Apps 时会怎样?

Tool 应继续返回有用的文本或结构化内容。Server 在依赖 UI 行为前检查协商得到的 Host Capability,客户端只展示普通 Tool Result。这种渐进增强模式避免 UI 支持成为每个 MCP Client 的前提。

Sandbox 能否单独保证 MCP App 安全?

不能。Sandbox 隔离浏览器能力,但 Host 与 Server 仍须执行认证、对象级鉴权、用户同意、CSP、外部 Origin 规则、结果限制、审计日志和副作用幂等。UI 内容与 UI 发起的 Tool 参数仍是不可信输入。

什么时候应改用普通 Web 应用?

当用户需要独立入口、完整浏览器能力、自主导航,或体验与当前会话无关时,普通 Web 应用更合适。MCP Apps 最适用于需要把对话上下文、Tool Result 和紧凑交互流程保留在一起的场景。

相关工具

相关术语

相关文章