MCP生态全景图:谁在定义Agent时代的USB-C
你给客服 Agent 接了 6 个工具:查订单、查物流、发优惠券、开工单、查知识库、转人工。两个月后模型从 A 换到 B,这 6 个工具的 schema、错误码、鉴权方式全部要重写一遍。工具越多,重写量越大。
这是 MCP 想解决的问题。Anthropic 在 2024 年 11 月把 Model Context Protocol 开源,到 2026 年,它已经是 Agent 工具层最接近"公共接口"的那套东西。但"接近"和"成为"之间还有距离。下面按机制、落地进度、协议边界、商业化四段拆开看。
一、机制:三个角色、两种传输、一次握手
架构是三层:Host(宿主,如 Claude Desktop、Cursor、VS Code)—— Client(连接器,一个 Client 对应一个 Server)—— Server(工具提供方)。Host 里跑模型,Client 和 Server 之间走 JSON-RPC 2.0。
服务端能暴露三类东西:
| 原语 | 是什么 | 典型用法 |
|---|---|---|
| Tools | 可执行的函数 | 查订单、发邮件 |
| Resources | 可读取的数据 | 文件内容、数据库行 |
| Prompts | 预设提示模板 | 代码审查模板 |
传输方式两种:
- stdio:Server 是宿主拉起的本地子进程。调试首选,不涉及网络鉴权。
- Streamable HTTP:远程服务。2025-06-18 修订后取代了早期的 HTTP+SSE 方案。跨网络调用走这条,也就意味着必须处理 OAuth。
链路里有个容易忽略的点:tools/list 的返回结果是直接塞进模型上下文的。工具越多,占的 token 越多,选错的概率越高。一个常见现象是接了三四十个工具之后模型开始疯狂调错函数,解法不是换模型,而是按场景把工具拆成多个 Server,只挂当前任务需要的那几个。
规范版本到目前有三版比较关键:2024-11-05 首版、2025-03-26 加入基于 OAuth 2.1 的授权、2025-06-18 引入 Streamable HTTP 和 Elicitation 并移除 JSON-RPC batching。写代码前先看 initialize 返回的 protocolVersion,版本不匹配时客户端应主动降级或直接报错,硬跑会出现难查的字段缺失。
二、谁真的接进来了
分三层看:宿主(谁在用)、服务端(谁在被调)、平台(谁在撮合)。
宿主这层
| 客户端 | 接入情况 |
|---|---|
| Claude Desktop / Claude Code | 官方原生支持,首个实现 |
| Cursor、Windsurf、Cline、Continue | 编辑器与插件侧早期接入 |
| VS Code + GitHub Copilot | 已支持 MCP Server 配置 |
| OpenAI 系(桌面端、Agents SDK) | 2025 年 3 月宣布支持 |
| Gemini CLI 及 Google 系 | 2025 年跟进 |
国内平台
阿里云百炼在 2025 年上线 MCP 服务并做了 MCP 市场,把云上能力封装成可挂载的 Server。腾讯云这边,云开发 CloudBase 推出了 MCP Server,让 Agent 直接操作云开发资源,腾讯云智能体开发平台也开放了 MCP 接入。火山引擎推了 MCP 广场,扣子(Coze)支持挂载 MCP 插件。百度智能云千帆也在往这个方向做。
这几个产品的共同意图是当分发入口:开发者少写胶水代码,平台拿调用量和模型消耗。对使用者是好事,也是风险——工具生态被绑在某一家的控制台里,迁出去的成本不低。选之前先问一句:MCP 配置能不能导出成标准 JSON,能不能换宿主继续用。
开源框架
Dify、LangChain/LangGraph、LlamaIndex、Spring AI、FastMCP 都提供了 MCP 适配。其中 FastMCP 是写 MCP Server 最省事的 Python 库,装饰器风格,本地起一个 stdio 服务十几行代码就能跑通。官方 SDK 有 Python 和 TypeScript 两个版本,服务端和客户端都能用。
三、Function Calling、MCP、A2A 各自管哪一段
| 维度 | Function Calling | MCP | A2A |
|---|---|---|---|
| 谁提出 | OpenAI,2023 | Anthropic,2024-11 | Google,2025-04,后捐给 Linux 基金会 |
| 解决什么 | 模型怎么表达"我要调这个函数" | 工具怎么被跨模型发现、分发、授权 | 一个 Agent 怎么把任务交给另一个 Agent |
| 通信范围 | 请求体内部 | Host ↔ Server | Agent ↔ Agent |
| 发现机制 | 无,每次请求带全量定义 | tools/list,运行时动态获取 | AgentCard,暴露能力与端点 |
| 状态 | 单次请求 | 会话(initialize 握手 + 能力协商) | 任务有生命周期,可长时间运行 |
| 协议 | 各厂商私有 JSON Schema | JSON-RPC 2.0 | JSON-RPC + SSE |
- MCP Server 暴露的工具,最终由宿主翻译成对应模型的 Function Calling 格式发给模型。MCP 是供给层,Function Calling 是模型侧的消费接口。
- A2A 管 Agent 之间的横向协作,MCP 管 Agent 到工具的纵向调用。A2A 的 AgentCard 里同样可以挂 MCP 端点,两者是组合关系。
四、市场、治理、钱在哪
工具市场的三种活法
- Registry 和广场:官方 MCP Registry 以及各家云厂商的市场。价值在流量和信任背书,问题是工具质量参差,多数没有经过安全审计。
- 企业网关:把 MCP Server 收进内网,统一做认证、审计、限流、工具白名单。这是当前最好收钱的位置——公司不怕买工具,怕的是 Agent 半夜调了一个删库函数。
- SaaS 把能力做成 Server:Figma、Notion、Linear、Sentry、Stripe、GitHub、Cloudflare 都提供了官方或半官方的 Server。这种模式下 MCP 是获客入口,工具本身不收费,用量落在后面的 API 计费里。
权限治理要处理的四件事
- 授权:远程 Server 走 OAuth 2.1,用 Resource Indicators(RFC 8707)把 token 绑到指定资源,避免一个万能 token 打天下。
- 提权:Server 拿到的 scope 按工具粒度拆开。查订单和发起退款不该是同一个权限。
- 投毒:2025 年 4 月 Invariant Labs 演示过在工具描述文本里夹带指令,模型会照着执行。任何第三方 Server 的描述都当不可信输入看。2025 年 6 月还有安全团队披露过 Asana 的 MCP 服务器存在跨租户数据暴露问题。
- 人工确认:写、删、转账、发消息这类高风险工具强制二次确认。Claude Desktop 默认就是逐个工具弹确认,这个默认值值得抄。
谁在赚钱
MCP 协议本身不赚钱,钱在它两侧。左侧是模型的 token 消耗,右侧是工具的 API 调用量,中间夹着网关、审计和权限管理这第三块。
Registry 目前还没形成付费习惯,因为上面大部分工具是免费的。真正能收到钱的是企业侧的三件事:调用合规审计、成本归属(哪个部门用掉了多少 token 和多少 API 调用)、数据外泄防护。这三件事单独拿一个出来都不便宜,加在一起才是企业愿意买单的形态。
五、现在动手的三件事
- 挑一个每天都在用的 SaaS(GitHub 或 Notion 都行),把它的官方 MCP Server 挂到 Claude Desktop 或 Cursor 上,stdio 和远程 HTTP 两种传输各走一遍,感受一下鉴权差异。
- 把现有 Agent 的工具体系画成一张图,标注哪些是只读、哪些会写数据。写操作的那几个单独归到一个 Server,前面加一层确认。
- 检查手上每个 MCP Server 的
protocolVersion。低于 2025-06-18 的,评估升级成本;还在用 HTTP+SSE 的远程服务,迁移窗口不会一直开着。