用途:为构建 MCP Apps(官方 io.modelcontextprotocol/ui 扩展)提供指导,让 MCP 工具在无 UI 支持时仍可用,并在支持时渐进增强为沙箱化交互界面。
主要能力:讲解核心契约——配对两个静态注册:模型可见工具返回文本并通过嵌套 _meta.ui.resourceUri 指向 ui:// 资源;预声明资源返回 MIME 为 text/html;profile=mcp-app 的 HTML 视图。动态数据放在工具结果中,不为每个用户或请求生成资源 URI。强调渐进增强:始终同时返回 content(给模型与非 UI 宿主的简洁完整文本)和 structuredContent(给视图的校验数据),两者都需有界,不得含密钥、凭据或不必要 PII,视图渲染前需再次校验。
使用方式:先核对实时包版本并克隆匹配的官方示例,如 bun pm view @modelcontextprotocol/ext-apps version、bun pm view @modelcontextprotocol/sdk version 及对应 git clone 命令;资料给出的 2026 年 7 月基线为 Ext Apps 1.7.4、MCP SDK 1.29.0,需 Node 20+ 或兼容 Bun。优先使用官方技能 create-mcp-app、add-app-to-server、convert-web-app,本技能用于跨领域架构、安全与生成式 UI 集成。视图生命周期需在连接前注册 ontoolinput、ontoolinputpartial、ontoolresult、onhostcontextchanged、onteardown 等处理器,再 app.connect(new PostMessageTransport())。打包建议用 Vite 与 vite-plugin-singlefile 输出单文件 HTML,依赖安装示例:bun add @modelcontextprotocol/ext-apps @modelcontextprotocol/sdk zod;bun add -d typescript vite vite-plugin-singlefile;bun run build。
适用场景与限制:适用于需要交互式 HTML 界面的 MCP 工具开发,包括生成式 UI(JSON Render 相关技能)。安全上要求 CSP 默认拒绝、只加精确来源,禁止通配符;视图视为不可信输入,服务端校验授权、所有权、版本/nonce、选项 ID 与数值边界;工具可见性区分 model 与 app。测试需覆盖无 UI 文本模式、官方 basic-host、各生产宿主、主题与布局、CSP、非法/过期/越权提交、拆除重连及构建产物。具体 API 签名与 CSP 字段名随版本变化,需以检出的 SDK 为准;资料未提供价格、平台支持清单等细节。