io.modelcontextprotocol/ui 扩展支持 MCP Apps。当前阵容提供 MCP Apps:自包含的 ui:// HTML 资源,MCP Apps 宿主可在关联的工具调用后内联渲染它们。
本页面是交互式接口的权威指南。请与 MCP Server 概述配合使用,以了解认证、配额、传输和一般 JSON-RPC 行为。
MCP Apps 在托管工具调用后,把 WorldMonitor UI 渲染到 MCP 宿主内部。WebMCP 则让浏览器智能体操作当前标签页中已有的 WorldMonitor 网站。WebMCP 不是 MCP App,也不会取代这些资源背后的托管 MCP 服务器。
契约
三个发现信号必须保持一致:
阵容
运行时流程
- 宿主对
https://worldmonitor.app/mcp调用initialize。 - WorldMonitor 返回正常的 MCP 能力,外加
capabilities.extensions["io.modelcontextprotocol/ui"]。 - 宿主调用
tools/list。关联 UI 的工具携带_meta.ui.resourceUri以及已弃用的扁平别名_meta["ui/resourceUri"]。 - 宿主调用
resources/list并看到ui://应用资源。每个 UI 条目包含mimeType: text/html;profile=mcp-app和_meta.ui.csp。 - 宿主对选定的
ui://URI 调用resources/read。此次读取是公开且不计配额的,因为它只返回一个静态的、不含数据的模板。 - 宿主对关联工具执行正常的、经过身份验证的
tools/call。这是唯一获取实时数据并消耗适用配额的步骤。 - 宿主将返回的 HTML 嵌入一个沙盒化的 iframe,并交换 MCP Apps 消息:
资源读取与配额
resources/list 暴露具体的公开资源,包括所有 ui:// 模板。resources/templates/list 暴露参数化的数据资源。
所有方法仍计入每密钥、每用户或匿名 IP 每分钟 60 次的速率限制器。
视图安全
应用外壳被刻意设计得静态且受限:- 它们是自包含的 HTML:没有外部脚本、样式、图像、iframe、字体或网络获取。
- 渲染使用 DOM 构造和
textContent,绝不使用innerHTML。 - 链接仅通过
http:或https:URL 解析被允许,并以rel="noopener noreferrer"渲染。 - 共享外壳在初始化后以及每次渲染后报告尺寸,以便宿主调整 iframe 大小。
- 软错误信封(
_budget_exceeded、_jmespath_error以及顶层字符串error)会渲染为可见的错误消息,而非空白的成功状态。 - 该 HTML 包含一个 meta CSP,设置了
default-src 'none'、限定范围的内联脚本/样式许可、锁定的form-action和base-uri,以及镜像_meta.ui.csp.connectDomains策略的 connect-src。
frame-ancestors 仅为建议性。浏览器仅从 HTTP Content-Security-Policy 响应头强制执行 frame-ancestors。该 meta 指令保留在外壳中,供静态扫描器和意图文档使用;请勿将其视为浏览器级别的点击劫持防护。
添加新的 MCP App
- 在
api/mcp/ui/*-app.ts下添加自包含的应用外壳。 - 复用
api/mcp/ui/shell.ts中的buildAppHtml(),除非有协议方面的理由不这样做。 - 在
api/mcp/ui/registry.ts中添加规范的*_UI_URI常量和注册表条目。 - 在
api/mcp/registry/rpc-tools.ts或api/mcp/registry/cache-tools.ts中,恰好为一个后备工具设置_uiResourceUri。 - 更新
docs/mcp-apps.mdx、简短的 MCP 概述以及public/.well-known/mcp/server-card.json。 - 运行
npm run docs:stats以刷新docs/generated/stats.json。 - 运行
npm run docs:check以及针对性的 MCP 资源/工具测试。
api/mcp/ui/registry.ts 和工具注册表派生应用清单。它在以下情况失败:
docs/mcp-apps.mdx、docs/mcp-overview.mdx或public/mcp-server.md遗漏了某个关联工具或ui://URI。public/.well-known/mcp/server-card.json.metadata.mcpApps与代码派生的应用列表、规范版本或 MIME 类型不一致。docs/docs.json将本页面从导航中移除。- 文档记录的 MCP 工具数量与服务器卡片的工具清单不一致。
