跳到主要内容

Xpert 发布 MCP Apps:把智能体工具结果变成可交互应用

· 阅读需 6 分钟
Leader of XpertAI

Xpert + ChatKit 新增 MCP Apps 支持。现在,插件不仅可以向智能体提供标准 MCP tools,还可以让工具调用结果在对话中变成一个真正可交互的内联应用。

这意味着用户可以在 ChatKit 中提出一个业务问题,然后直接在回答里操作图表、地图、表单、媒体浏览器或分析面板。模型负责理解意图和发起工具调用;MCP App 负责承载交互、状态和后续动作。

Xpert + ChatKit MCP Apps 技术架构图

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-app MCP App resource
  • 支持标准 JSON-RPC bridge,包括 ui/initializeui/notifications/tool-inputui/notifications/tool-resulttools/callresources/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-dashboard
  • echarts_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 只放 resourceUrivisibility
  • CSP、浏览器权限、prefersBorder 等放在 resource metadata
  • app-only 工具必须显式声明 _meta.ui.visibility = ['app']
  • iframe 所有工具调用都走 Xpert 后端鉴权和审计
  • 外部脚本、连接域名和 iframe 权限默认最小化

下一步

开发者可以从两篇文档开始:

协议细节可继续参考 MCP Apps APIBuild an MCP AppChatGPT MCP Apps 兼容说明

MCP Apps 让智能体回答不再停留在文本和卡片上。它把业务系统中的交互式工作台带进对话,让用户可以边问、边看、边操作,也让插件生态有了更强的应用表达能力。