Xpert 发布 MCP Apps:把智能体工具结果变成可交互应用
Xpert + ChatKit 新增 MCP Apps 支持。现在,插件不仅可以向智能体提供标准 MCP tools,还可以让工具调用结果在对话中变成一个真正可交互的内联应用。
这意味着用户可以在 ChatKit 中提出一个业务问题,然后直接在回答里操作图表、地图、表单、媒体浏览器或分析面板。模型负责理解意图和发起工具调用;MCP App 负责承载交互、状态和后续动作。
Xpert + ChatKit MCP Apps 技术架构图:工具调用、MCP Apps Host、sandbox iframe 与插件 MCP server 的协作关系。
为什么需要 MCP Apps
传统工具调用擅长返回文本和结构化数据,但很多真实工作并不是“一次调用,一段回答”就结束了。用户经常需要:
- 点击图表查看下一层数据
- 切换指标、时间范围或筛选条件
- 在表单里调整参数后重新计算
- 查看地图、文件、媒体或诊断面板
- 在分析过程中把当前状态继续交给模型讨论
过去这些能力通常需要自定义前端页面、平台插件 view 或专门的 widget。MCP Apps 提供了一条新的路线:让 MCP server 通过标准 resource 返回 HTML App,再由 ChatKit 作为宿主安全地渲染和代理通信。
Xpert 支持了什么
本次能力围绕标准 MCP Apps 协议实现,核心包括:
- 识别 MCP tool
_meta.ui.resourceUri - 渲染
ui://resource 对应的内联 ChatKit iframe - 校验
text/html;profile=mcp-appMCP App resource - 支持标准 JSON-RPC bridge,包括
ui/initialize、ui/notifications/tool-input、ui/notifications/tool-result、tools/call、resources/read和 iframe resize - 支持 app-only tools,通过
_meta.ui.visibility = ['app']让 iframe 可调用、但不暴露给模型 - 从 resource metadata 读取 CSP、浏览器权限和呈现偏好
- 通过短生命周期 app instance 避免把原始 HTML 写入聊天历史
- 支持通过 Xpert plugin 安装 plugin-managed MCP server
ChatKit 实现的是标准 MCP Apps bridge,不依赖 ChatGPT 专属 window.openai API。插件可以保留 _meta["openai/outputTemplate"] 作为兼容 alias,但 Xpert 侧的运行路径以标准 MCP Apps 为主。
插件成为交付入口
对开发者来说,最自然的交付方式是 Xpert plugin:
plugin
└── plugin-managed MCP server
├── model-visible tool
├── app-only tools
└── ui:// MCP App resource
插件负责声明 MCP server、工具策略、权限和构建产物。Xpert 负责安装插件、创建 MCP Toolset、执行 Agent 工具调用,并在 ChatKit 中渲染 MCP App。
这种方式把“工具能力”和“交互结果”放在同一个可版本化、可安装、可回滚的插件包中。企业团队可以把内部业务系统、分析逻辑和可视化体验以插件形式交付给智能体,而不必修改 Xpert 核心代码。
示例:销售经营下钻分析 App
为了验证这条链路,我们提供了 @xpert-ai/plugin-echarts-mcp-app 示例插件。它实现了一个销售经营分析 App:
echarts_sales_overview:模型可见工具,返回销售概览、结构化图表数据和ui://echarts-sales-dashboardecharts_sales_drilldown:app-only 工具,iframe 点击图表后调用,用于获取下一层聚合数据ui://echarts-sales-dashboard:MCP App resource,返回 ECharts 驱动的内联分析界面src/app:Vanilla TypeScript 前端源码,通过 esbuild 构建成dist/app/index.html
在 ChatKit 中,用户可以要求“展示 2026 年各区域收入,并支持下钻分析”。模型调用 overview 工具后,回答中会出现一个交互式图表。用户点击区域后,App 继续调用 app-only drilldown 工具,进入产品或月份维度。
这只是一个起点。真实业务可以接入 CRM、ERP、指标平台、语义模型或数据仓库,并扩展异常解释、同比环比、行动建议和审批型工具。
与已有能力如何分工
MCP Apps 不是要替代 ChatKit Widgets、Extension View 或 Agent Middleware,而是补齐一个新的位置:
| 能力 | 适合场景 |
|---|---|
| ChatKit Widgets | 受控、声明式、结构化的小型 UI |
| Extension View | 工作台、配置页、集成详情页等持久平台槽位 |
| Agent Middleware | 注册工具、拦截调用、增强 Agent 流程 |
| MCP Apps | 工具调用结果中的内联交互式应用 |
简单说:如果 UI 是“这次工具调用的结果”,并且需要复杂交互,优先考虑 MCP Apps。如果 UI 是平台的一部分,继续使用 Extension View。
安全默认值
MCP Apps 以 sandbox iframe 运行。Xpert Host 会校验 resource MIME、CSP、工具可见性和 Toolset policy。聊天历史不会保存原始 HTML,只保存必要的安全元数据。
推荐实践包括:
- tool
_meta.ui只放resourceUri和visibility - CSP、浏览器权限、
prefersBorder等放在 resource metadata - app-only 工具必须显式声明
_meta.ui.visibility = ['app'] - iframe 所有工具调用都走 Xpert 后端鉴权和审计
- 外部脚本、连接域名和 iframe 权限默认最小化
下一步
开发者可以从两篇文档开始:
- ChatKit MCP Apps:了解 Xpert + ChatKit 的 host 运行时、bridge 和安全模型
- 开发一个销售经营分析 MCP App 插件:从插件角度实现一个可交互业务分析 App
协议细节可继续参考 MCP Apps API、Build an MCP App 和 ChatGPT MCP Apps 兼容说明。
MCP Apps 让智能体回答不再停留在文本和卡片上。它把业务系统中的交互式工作台带进对话,让用户可以边问、边看、边操作,也让插件生态有了更强的应用表达能力。