复杂化还是必要的工程化?
MCP 给开发者提供了一个"LLM-可消费"层。如果你的目标是真正让模型/Agent 自助调用工具,那么为旧 API 加一层 MCP 抽象几乎不可避免;但若只想让人类程序员继续写拉取脚本,把 API 直接暴露就够了——此时再包一层 MCP 大概率是在叠加你不需要的责任。
| 来源 | 典型抱怨 | 复杂性根因 |
|---|---|---|
| Spring AI 实践【Craig Walls】 | 1 对 1 映射端点 → LLM 反复试错 → Token 爆炸 | API 粒度不适合自然语言问题,需要二次聚合/裁剪 |
| Honeycomb 团队经验 | 默认 JSON 响应巨大,Agent 陷入"doom loop"反复查询 | 业务 API 和 LLM 消费模式不匹配 |
| FeatureForm 评测 | JSON-RPC + 自带 IdP 的 Auth 扩展"过度工程" | 需要自己维护 OAuth / Token 映射,门槛高 |
| 规范层 | MCP 引入 stdio/HTTP/SSE 多传输、资源/工具/提示 三大功能块 | 对"只是想暴露几个 GET 接口"的团队而言超标 |
| 生态声音 | "这只是把旧 API 再包一层而已" | 乍看像重复造轮子,价值不显而易见 |
MCP 把工具描述、参数验证、能力声明都标准化,让 LLM/Agent 像插 USB-C 一样即插即用,而不用为每个 REST API 单独写 prompt 模板和 schema 翻译器。
Open-source & SaaS 已涌现 >100 个 MCP Server(Google Drive、GitHub、Zapier 等),外部生成器一键把 OpenAPI → MCP (Speakeasy、Stainless, CLI 工具)。选择跟随主流可减少未来迁移成本和碎片化风险。
MCP Roadmap 里的 Graph-Aware 通信、交互式 Workflows 都以 Server → Client 能力协商为前提;裸 REST 很难参与。
大型平台(Zapier MCP、AWS ModelArk 等)已把 "把 API 包成 MCP" 当作新品卖点;行业新闻普遍看好其"连接 AI 与传统软件"的潜在市场。
利用OpenAPI→MCP 自动生成器或 GitHub 通用包装器快速出雏形,验证场景可行性后再重构 Tool 粒度。
把用户常问的任务抽象成高阶 Tool(例如 getParkHours(date,parkName) 而不是暴露 destinations + schedule 多步链),并在 Server 侧裁剪冗余字段,可减 90 % token 消耗。
JSON 里保留对话必要字段即可;大对象转成摘要、分页或图像 URL (参见 Honeycomb 把复杂查询结果转"图像识别"来省 token 的做法)。
若不想自建 IdP,可在 MCP Server 前加反向代理或使用 MCPEngine 之类框架,把标准 OAuth2/JWT 验证托管出去,弱化 MCP Auth 的侵入性。
本地桌面插件更适合 stdio;SaaS-级多租户就上 HTTP + SSE,并用反向 proxy 复用已有 Ingress / 监控体系。
先以单 Server → Client 模式落地,待场景成熟再开启 Agent Graph namespacing,减少一次性设计过度。
| 判断标准 | 说明 |
|---|---|
| LLM 不在你的业务链路里 | 比如 SDK 只给前端或后台服务消费,人类开发者写代码即可。 |
| API 高度定制、回调/流式形态复杂 | 实现 JSON-RPC → gRPC → Streaming 桥接可能比原生集成更难。 |
| 安全合规压倒一切,但 MCP Auth 能力尚不满足 | 医疗、金融等对最小权限、审计追踪有硬性要求时,可等规范/SDK 成熟再上。 |
将旧 API "包进" MCP 绝非银弹,也绝非一纸规范就能搞定的工作:
如果你确实要让 Agent 自主调用工具、并打算在未来利用 Agent Graph、workflow 审批等能力,早点投入这层适配是"必要复杂性";否则,把时间花在产品本身,而不是协议迁移,更符合"工程禅"。