2 天内构建 20 个 MCP App 的经验教训
我的团队在两天内构建了 20 个 MCP App。这让我对这些工具的功能以及它们的局限性有了清晰的认识。
MCP App 是 MCP 规范的第一个官方扩展。它们允许工具在返回结果的同时返回一个 UI 资源。宿主(host)会在一个沙箱化的 iframe 中渲染该 UI。你可以直接在聊天界面中展示表格、图表和表单。
视觉信息通常比文本更有效。图表比 CSV 文件更直观。拉取请求(pull request)列表比一大堆文本更容易阅读。
以下是我们学到的经验:
• App 运行在服务器内部 MCP App 不是一个托管的 URL。它是通过 MCP 而非 HTTP 获取的。UI 代码随你的 MCP 服务器一同发布。
• 使用 React 和 Vite
我们使用 React 以复用现有的设计系统。我们在 /ui 文件夹中设置了一个 Vite 项目。在构建过程中,它会为每个 TSX 文件输出一个 HTML 文件。
• 文本仍然是主要的交互契约
如果宿主不支持 MCP App,它会忽略 UI 属性。用户只能看到文本响应。永远不要只在 UI 中提供答案。如果你这样做,使用终端客户端的用户将无法使用你的工具。设计时请始终假设有一半的用户只能看到文本。
• 预料布局的不一致性 每个宿主对规范的实现都不同。ChatGPT 的渲染宽度较宽,Claude 的渲染宽度较窄,移动端则又是另一种情况。从一开始就要设计出能在窄宽度下自动重排(reflow)的布局。
• 开发循环较慢 目前还没有标准的测试工具。你必须在每个客户端手动进行构建、安装和检查。与标准的工程化前端开发相比,这感觉很慢。
• 不要在 App 中收集敏感信息 App 运行在沙箱化的 iframe 中,宿主可以看到其中的内容。永远不要在表单字段中填写 API 密钥或 OAuth 令牌。如果需要敏感数据,请使用独立的加密表单。
如果你现在开始:
- 将 UI 打包在你的服务器中。
- 使用多页面 Vite 配置。
- 直接导入你现有的设计系统。
MCP App 还处于早期阶段,规范也在不断演进。虽然工具链尚不完善,但它们非常值得尝试。
来源:https://dev.to/arcade/lessons-from-building-20-mcp-apps-in-2-days-1f98
可选的学习社区:https://t.me/GyaanSetuAi