用途:实现或调试 MCP Apps 扩展。该扩展让 MCP 服务器在工具之外附带可交互 UI,UI 在宿主(Claude、ChatGPT、M365 Copilot)的沙箱 iframe 中渲染,通过 postMessage 上的 JSON-RPC 2.0 与宿主通信。
主要能力:涉及三个角色——服务器(注册工具与 UI 资源)、宿主(聊天客户端,拥有 iframe 并代理每次调用)、视图(iframe 内运行的 HTML/JS)。视图不直接访问服务器,所有调用由宿主代理。核心是两项注册:资源(uri 为 ui://<anything>/<anything>,mimeType 为 text/html;profile=mcp-app,text 为完整 HTML)与工具(带 _meta.ui.resourceUri 指向资源)。_meta.ui 在工具描述符与资源内容中字段不同:工具侧有 resourceUri、visibility;资源侧有 csp.connectDomains、csp.resourceDomains、csp.frameDomains、csp.baseUriDomains、permissions、prefersBorder、domain。visibility 可设为 ["model","app"](默认)、["app"](仅 UI,隐藏于模型)、["model"]。
使用方式:视图通过 window.parent.postMessage 发送请求,如 ui/initialize、tools/call、resources/read、ui/message、ui/update-model-context、ui/size-changed、ui/open-link、ui/request-display-mode;宿主通过通知下发 ui/notifications/tool-input、tool-input-partial、tool-result、initialized、tool-cancelled、teardown、host-context-changed。生命周期依次为发现、初始化、数据下发、交互、卸载;应在 connect() 前注册全部处理函数。
限制:CSP 放在资源内容的 _meta 中,而非 registerAppResource 的第三个配置参数;默认拒绝一切未声明项,嵌套 frame 默认被阻止。structuredContent 不可信,只能按文本渲染,禁止 innerHTML 或 eval;导航须用 ui/open-link,不得 window.open 或设置 top.location。资源 URI 被宿主当作缓存键,破坏性改动应发布新 URI 并重指向所有相关工具,不得原地改变既有 URI 语义。并非所有宿主都渲染 MCP Apps,每个工具仍须返回真实文本内容与 structuredContent 以优雅降级。相关技能:mcp-apps-sdk、host-capability-matrix、ui-security-sandbox、openai-apps-sdk。具体安装命令与价格资料暂未提供。