MCP Apps 交互式 GUI 完整指南
目录
- MCP Apps 基础概念
- 交互式UI 技术实现
- 支持生态与客户端
- 生产级应用案例
- 开发者指南
- 竞品对比
- 常见问题
MCP Apps 基础概念
什么是 MCP Apps?
MCP (Model Context Protocol) Apps 是基于 MCP 协议构建的扩展应用,它让 AI(如 Claude Desktop、Cursor、IDE)能够:
- 连接您的本地文件、数据库和第三方工具
- 直接在对话窗口中显示交互式界面
- 无需在多个应用间切换
与传统 AI 助手相比,MCP Apps 打破了"文本对话"的限制,实现了"集成工作台"模式。
MCP Apps 实现的三大功能
1. 连接私有数据(Context)
AI 可以安全地通过只读方式访问您的最新数据,而不依赖训练数据:
- 读取本地代码仓库
- 查询公司内部 PostgreSQL 数据库
- 搜索 Google Drive 文件
- 访问私有知识库
关键特性:只读安全、实时更新、数据不上传到云端
2. 执行实际操作(Tools)
AI 可以代表您执行任务,而不仅仅是提供建议:
- 在 Slack 上发送消息
- 在 Linear/Jira 中创建工单
- 在 GitHub 提交 Pull Request
- 修改本地代码文件
关键特性:自动化工作流、减少手工操作、可审计的变更日志
3. 交互式用户界面(Interactive UI)✨ 新增
2026年1月推出的核心创新。工具可以在聊天窗口中直接渲染可视化界面:
- Canva 设计编辑器直接在对话框打开
- Figma 设计预览可交互调整
- Asana 任务卡片可一键批准
- Slack 消息可实时预览和编辑
关键优势:无需跳转网页、上下文连贯、实时反馈
交互式UI 技术实现
核心架构
MCP Apps 采用双层架构设计,实现安全的客户端UI渲染:
┌─────────────────────────────────────────────────────────┐
│ MCP Client (Claude/VSCode) │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Chat Interface (对话窗口) │ │
│ │ │ │
│ │ ┌───────────────────────────────────────┐ │ │
│ │ │ iframe (Sandboxed UI Renderer) │ │ │
│ │ │ ├─ Slack 消息编辑器 │ │ │
│ │ │ ├─ Figma 设计预览 │ │ │
│ │ │ └─ Canva 创意工具 │ │ │
│ │ └───────────────────────────────────────┘ │ │
│ │ ↕ JSON-RPC 双向通信 │ │
│ │ ┌───────────────────────────────────────┐ │ │
│ │ │ Tool Invocation Layer (工具调用层) │ │ │
│ │ └───────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────┘ │
│ ↕ MCP Protocol │
└─────────────────────────────────────────────────────────┘
↕ JSON-RPC over stdio/stdio
┌─────────────────────────────────────────────────────────┐
│ MCP Server (工具提供者) │
│ │
│ ├─ Slack Server ┌─ UI Resources │
│ ├─ Figma Server ──→ │ (HTML + JS) │
│ ├─ Canva Server │ resourceUri: "https://..." │
│ └─ Asana Server └─ Tool Definitions │
│ callTool(), updateContext() │
└─────────────────────────────────────────────────────────┘
UI 渲染流程
-
工具侧声明 UI 资源
json{ "name": "canva_editor", "description": "Create and edit Canva designs", "inputSchema": {...}, "_meta": { "ui": { "resourceUri": "https://canva-mcp.example.com/ui.html" } } } -
主机侧获取并沙箱化
- 客户端获取
resourceUri指向的 HTML - 在隔离的 iframe 中渲染,限制权限
- 客户端获取
-
双向通信建立
javascript// UI 内的脚本可以: // 调用服务器工具 await app.callServerTool('canva_create_design', { title: 'Quarterly Report', template: 'presentation' }); // 更新模型上下文(告诉 AI 最新状态) await app.updateModelContext({ designId: 'design_12345', status: 'ready_for_review' });
安全隔离机制
MCP Apps 采用多层防护确保安全:
| 防护层 | 实现方式 | 作用 |
|---|---|---|
| iframe 沙箱 | sandbox="allow-scripts allow-same-origin" |
限制 DOM 访问、跨域请求 |
| 权限声明 | 工具定义中显式声明 inputSchema |
预防恶意参数注入 |
| 用户确认 | 关键操作需用户显式点击确认 | 防止无意中执行危险操作 |
| 可审计通信 | 所有 UI-主机调用都经过日志 | 事后追踪和审计 |
| 资源验证 | 主机可在渲染前审核 HTML 内容 | 防止恶意脚本注入 |
支持生态与客户端
客户端推出时间表(2026年1月)
| 客户端 | 推出状态 | 可用时间 | 支持程度 |
|---|---|---|---|
| Claude (Web & Desktop) | ✅ 已上线 | 2026-01-26 | 完全支持 |
| Goose | ✅ 已上线 | 2026-01-26 | 完全支持 |
| VS Code Insiders | ✅ 已上线 | 2026-01-26 | 完全支持 |
| ChatGPT | 📅 本周推出 | 2026-01底 | 完全支持 |
| JetBrains IDEs | 🔜 即将推出 | 待定 | 正在探索 |
| AWS Kiro | 🔜 即将推出 | 待定 | 正在探索 |
| Google Antigravity | 🔜 即将推出 | 待定 | 正在探索 |
关键优势:统一开放标准
Anthropic、OpenAI 和 MCP 社区联合制定标准:
- ✅ 开发者只需编写一次 MCP App
- ✅ 可在 Claude、ChatGPT、VS Code 等多个平台运行
- ✅ 无需为不同客户端重复开发
这是与 Apps SDK(OpenAI 私有标准)最大的区别。
生产级应用案例
Claude 官方集成(2026年1月26日推出)
Claude 推出了 9 个生产级官方集成,展示 MCP Apps 的实际应用能力。
1. Slack
核心功能:搜索对话、草拟消息、批量发送
交互方式:
用户: "把今天的讨论总结发到 #marketing 频道"
Claude: [在对话窗口显示 Slack 消息编辑器]
输入框: "Here's today's summary..."
[预览] [编辑] [发送]
用户点击 [发送] → Claude 自动调用 Slack API → 消息推送
2. Figma
核心功能:从文本生成流程图、Gantt 图、网页原型
交互方式:
用户: "根据我们的讨论,画一个用户注册流程图"
Claude: [直接在对话窗口渲染 FigJam 设计板]
用户可直接:
├─ 拖拽添加节点
├─ 调整连接线
├─ 改变颜色和样式
└─ 实时预览
点击 [完成] → 设计自动保存到 Figma 项目
为什么这比传统方式强大:
- 🚫 旧方式:需要手工描述 → 用户打开 Figma → 手工绘制
- ✅ 新方式:一句话 → 实时预览 → 微调完成
3. Canva
核心功能:创建演示文稿大纲并定制设计元素
交互方式:在聊天中实时编辑品牌和设计元素,而不需要打开 Canva 网站。
4. Asana
核心功能:将讨论转化为项目时间线,创建任务、分配责任人
交互方式:
用户: "根据这个计划,在 Asana 创建一个 Q1 项目,deadline 是3月31日"
Claude: [在对话中显示 Asana 时间线视图]
• 用户研究 (1周)
• 原型设计 (2周) ← 可实时拖拽调整
• 测试 (1周)
• 发布 (3天)
[更新任务] [发送审批] [保存到 Asana]
用户确认 → 自动在 Asana 中创建任务卡片
5. Box
核心功能:文件搜索、文档预览、内容提取
交互方式:内联预览文档、直接在对话中提问文档内容
6. Clay
核心功能:公司研究、找联系方式
交互方式:直接在对话中生成联系人名单,可复制导出
7. Amplitude
核心功能:构建分析图表、探索数据趋势
交互方式:交互式图表、动态参数调整(无需重新进入 Amplitude 网站)
8. Hex
核心功能:数据查询、交互式图表生成
交互方式:表格、可视化、引用完整链接
9. monday.com
核心功能:项目管理、任务分配、进度可视化
交互方式:在聊天中直接更新工作板
实际工作流示例
场景:产品上线前检查清单
用户: "帮我检查产品上线前的检查清单,把任务加到 Asana,
design 截图保存到 Figma,发通知到 Slack"
Claude:
✅ 第1步: 在对话中显示检查清单
├─ 代码审查
├─ 性能测试
├─ 安全扫描
└─ 文档更新
✅ 第2步: 显示 Figma 设计预览面板
(可直接在此修改截图标注)
✅ 第3步: 在聊天窗口显示 Asana 时间线
(可拖拽分配任务给团队成员)
✅ 第4步: 显示 Slack 草稿消息编辑器
(预览 → 发送 → 即时到达频道)
全程无需离开对话窗口!
对比传统方式,节省时间成本 70%-80%。
开发者指南
快速开始(15分钟)
环境要求
bash
Node.js 18+
npm 或 yarn
@modelcontextprotocol/sdk (v1.0+)
最小化 MCP App 示例
javascript
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({
name: "my-ui-app",
version: "1.0.0",
});
// 定义一个带 UI 的工具
server.setRequestHandler(
ListToolsRequestSchema,
async () => {
return {
tools: [
{
name: "create_design",
description: "Create a design with interactive UI",
inputSchema: {
type: "object",
properties: {
title: { type: "string" },
width: { type: "number" },
height: { type: "number" },
},
},
// ✨ 关键:声明 UI 资源
_meta: {
ui: {
resourceUri: "https://my-app.com/ui/design-editor.html",
},
},
},
],
};
}
);
// 工具调用处理
server.setRequestHandler(
CallToolRequestSchema,
async (request) => {
if (request.params.name === "create_design") {
const { title, width, height } = request.params.arguments;
return {
content: [
{
type: "text",
text: `Design "${title}" created (${width}x${height}px)`,
},
],
};
}
}
);
// 启动服务器
const transport = new StdioServerTransport();
await server.connect(transport);
UI HTML 文件示例
html
<!DOCTYPE html>
<html>
<head>
<title>Design Editor</title>
<style>
body {
font-family: system-ui;
padding: 20px;
}
.editor {
border: 2px solid #ccc;
padding: 20px;
min-height: 300px;
}
button {
background: #007bff;
color: white;
padding: 10px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
}
</style>
</head>
<body>
<h2>Design Editor</h2>
<div class="editor" id="canvas">
<!-- 设计内容 -->
</div>
<button onclick="saveDesign()">Save to Figma</button>
<script>
// MCP 客户端会注入 'app' 对象
async function saveDesign() {
try {
// 调用服务器工具
const result = await app.callServerTool('save_to_figma', {
designData: JSON.stringify(canvas.innerHTML),
});
// 更新模型上下文
await app.updateModelContext({
message: 'Design saved successfully',
status: 'completed',
});
alert('Design saved!');
} catch (error) {
console.error('Save failed:', error);
}
}
</script>
</body>
</html>
官方工作示例
Anthropic 提供了即用的示例 Server:
threejs-server--- 3D 可视化map-server--- 交互式地图pdf-server--- 文档查看器system-monitor-server--- 实时仪表板sheet-music-server--- 乐谱标记
配置 MCP Server 到 Claude Desktop
编辑 ~/.config/Claude/claude_desktop_config.json:
json
{
"mcpServers": {
"my-ui-app": {
"command": "node",
"args": ["/path/to/my-server.js"]
}
}
}
重启 Claude Desktop 即可使用。
开发调试技巧
- 本地测试 :使用
stdio传输在终端测试 - 日志输出:将调试信息写到 stderr(不会影响 JSON-RPC)
- 沙箱测试 :在浏览器中测试 UI HTML,用
postMessage模拟通信 - 权限校验 :严格检查
inputSchema,防止注入攻击
竞品对比
MCP Apps vs OpenAI Apps SDK vs MCP-UI vs AG-UI
| 特性 | MCP Apps | OpenAI Apps | MCP-UI | AG-UI |
|---|---|---|---|---|
| 开放标准 | ✅ 开放(SEP-1865) | ❌ 私有(OpenAI) | ✅ 社区标准 | ✅ 新兴 |
| 跨平台支持 | ✅ Claude/ChatGPT/VSCode | ❌ ChatGPT 仅限 | ⚠️ 有限 | ⚠️ 有限 |
| UI 渲染 | ✅ iframe 沙箱化 | ✅ 类似机制 | ✅ 类似机制 | ✅ 深度状态同步 |
| 成熟度 | ✅ 生产级(2026-01) | ✅ 生产级(2024) | ⚠️ 社区维护 | 🔜 新兴阶段 |
| 官方支持 | ✅ Anthropic+OpenAI | ✅ OpenAI | ⚠️ 社区 | 🔜 待定 |
| 状态管理 | ✅ 基础(updateContext) | ✅ 基础 | ✅ 基础 | ✅ 深度(事件同步) |
| 门槛 | ⭐⭐ 中等 | ⭐⭐⭐ 高 | ⭐ 低 | ⭐⭐⭐ 高 |
未来融合趋势
- 2026年趋势:MCP Apps 成为行业主流标准
- 协作关系:MCP Apps 吸收了 MCP-UI 的优点,同时尊重 OpenAI Apps SDK
- 互补生态:AG-UI 专注于深度状态同步,与 MCP Apps 互补而非竞争
- CopilotKit 支持:第三方框架已承诺集成 MCP Apps 标准
常见问题
1. MCP Apps 和原始 MCP 工具有什么区别?
| 方面 | MCP 工具 | MCP Apps |
|---|---|---|
| 数据返回 | 纯文本/JSON | 富交互 HTML UI |
| 用户交互 | 间接(通过模型解释) | 直接(UI 按钮、表单) |
| 上下文切换 | 多标签页切换 | 对话窗口内完成 |
| 推出时间 | 2023年 | 2026年1月 |
简单比喻:
- 原始 MCP = "AI 描述一个房间的布局"
- MCP Apps = "AI 实时呈现房间的全息投影,你可以走进去交互"
2. UI 资源在哪里存储?
有三种部署方式:
方式1:云托管(推荐)
json
"_meta": {
"ui": {
"resourceUri": "https://cdn.example.com/ui.html"
}
}
优点:服务器无单点故障,版本管理方便
方式2:内嵌 Base64
json
"_meta": {
"ui": {
"resourceUri": "data:text/html;base64,PGh0bWw+PC9odG1sPg=="
}
}
优点:无外部依赖,完全离线
方式3:相对路径(MCP Server 同进程提供)
json
"_meta": {
"ui": {
"resourceUri": "http://localhost:3000/ui.html"
}
}
优点:本地开发便捷
3. 免费用户能用 MCP Apps 吗?
目前限制(2026年1月):
- ✅ Claude Pro / Max / Team / Enterprise:完全支持
- ❌ Claude 免费用户:暂无法使用
- ℹ️ 其他平台(VS Code、ChatGPT):政策待定
预计未来会逐步开放给免费用户。
4. MCP Apps 如何保护隐私和安全?
多层防护:
- 本地优先:数据默认保留在用户设备,MCP Server 可完全在本地运行
- 权限声明 :每个工具必须明确声明
inputSchema,防止随意调用 - 用户确认:关键操作(如发送消息、删除文件)需显式点击确认
- 沙箱隔离:UI 在 iframe 中运行,无法直接访问主机 DOM
- 可审计:所有工具调用都被记录,可查阅历史
用户责任:
- 仅从信任的源安装 MCP Server
- 定期审查已授权的 MCP 应用
- 避免将敏感凭证硬编码在代码中
5. 如何部署企业级 MCP Apps?
推荐架构:
┌─────────────────┐
│ Claude Desktop │
│ (员工个人) │
└────────┬────────┘
│ MCP 协议
↓
┌─────────────────────┐
│ 企业内网 MCP Server │
│ ├─ Slack 集成 │
│ ├─ Jira 集成 │
│ ├─ 私有数据库 │
│ └─ 文档管理系统 │
└─────────────────────┘
↑
│ VPN/内网只访问
┌────┴─────┐
│ 权限管理 │
│ 审计日志 │
└──────────┘
关键点:
- MCP Server 部署在企业内网
- 通过 VPN 隧道连接员工本地的 Claude Desktop
- 所有访问都经过企业权限系统
- 完整的审计日志记录
6. MCP Apps 会替代 Web 应用吗?
不会。MCP Apps 的设计定位是:
- ✅ 轻量级操作(编辑、预览、简单查询)
- ✅ AI 工作流集成
- ❌ 不适合:复杂的多用户协作、大规模数据处理、离线长时间使用
未来可能:
- MCP Apps 用于快速原型和初步操作
- 复杂操作自动跳转到完整 Web 应用
- 两者通过深链接和状态同步集成
7. 如何学习 MCP Apps 开发?
学习路径:
-
基础阶段(1周)
- 学习 MCP 协议基础
- 理解 Server/Client 模型
- 官方文档:https://modelcontextprotocol.io
-
实战阶段(1-2周)
- 修改官方示例(
map-server,pdf-server) - 创建第一个简单 MCP App(3D 可视化)
- 部署到 Claude Desktop
- 修改官方示例(
-
进阶阶段(持续)
- 集成真实业务数据(数据库、API)
- 优化 UI/UX 体验
- 安全加固(权限校验、加密)
- 开源贡献到社区
推荐资源:
- 官方文档:https://github.com/modelcontextprotocol/
- 社区示例:https://github.com/search?q=mcp+server
- Anthropic 博客:https://blog.modelcontextprotocol.io
总结与展望
当前成就(2026年1月)
✅ 技术突破
- 完整的 iframe 沙箱架构
- 双向 JSON-RPC 通信机制
- 统一的开放标准(SEP-1865)
✅ 生态就位
- 9 个官方生产级集成(Slack/Figma/Canva/Asana 等)
- 5+ 主流平台支持(Claude/ChatGPT/VSCode/Goose)
- 活跃社区维护和贡献
✅ 开发者友好
- 15 分钟快速开始
- 官方 SDK 和示例
- 降低技术门槛
剩余挑战
⚠️ 付费用户优先:免费用户暂无法使用,可能限制普及速度
⚠️ 平台成熟度不均:JetBrains、AWS 等尚在探索阶段
⚠️ 安全教育:用户需要理解权限模型,防止误用
未来方向(2026年后)
🚀 跨应用编排
- 多个 MCP Apps 在同一工作流中协同
- 数据自动流转
🚀 离线模式
- 部分 UI 资源本地缓存
- 无网络环境也能操作
🚀 状态持久化
- 与 AG-UI 深度融合
- 会话级别的完整状态管理
🚀 企业级特性
- SSO/OAuth 集成
- 高级审计和合规
- 数据隐私认证(SOC2、ISO27001)
参考资源
官方文档
- MCP 官方网站:https://modelcontextprotocol.io
- MCP Apps 公告(2026-01-26):https://blog.modelcontextprotocol.io/posts/2026-01-26-mcp-apps/
- MCP GitHub:https://github.com/modelcontextprotocol
相关项目
- Claude Desktop:https://claude.ai/download
- VS Code Insiders:https://code.visualstudio.com/insiders/
- MCP-UI(社区):https://github.com/mcp-ui/mcp-ui
学习资料
- MCP Protocol 详解:https://spec.modelcontextprotocol.io
- 开发者指南:https://modelcontextprotocol.io/docs
最后更新 :2026年1月29日
版本 :1.0
许可证:CC BY 4.0