假设你手上有个退货助手:查订单、发飞书、调顺丰接口。上线三个月,产品经理说要接进公司新买的 Copilot;再过一个月,又要接 Gemini。每换一个客户端,工具定义就得重写一遍。同样的活你写了四遍。
MCP 和 A2A 就是冲这类重复劳动来的。两者解决的不是同一层问题,经常被放在一起讲,也经常被讲混。
一、MCP 把工具接入从 N×M 压到 N+M
Anthropic 在 2024 年 11 月开源了 Model Context Protocol(MCP),用 JSON-RPC 2.0 定义客户端与服务端之间的说话方式:客户端怎么列工具、怎么调工具、怎么读数据,服务端怎么回。
在 MCP 之前,工具接入的代码量大致是 N×M——N 个模型厂商、M 个工具。OpenAI 的 function calling schema 不认识高德的 API 文档,中间那层适配只能自己写。MCP 把工具那一侧的 M 固定下来,客户端换模型时不用重写工具层。
规范到 2026 年已经修订过几轮:
| 规范版本 | 主要变化 |
|---|---|
| 2024-11-05 | 初版。两种传输:stdio 和 HTTP+SSE |
| 2025-03-26 | 引入 Streamable HTTP,HTTP+SSE 标记为弃用;加入 OAuth 2.1 授权框架 |
| 2025-06-18 | 加入 elicitation、结构化工具输出;移除 JSON-RPC batching |
| 2025-11-25 | 引入实验性的 tasks,覆盖长时任务与采样中的工具调用 |
二、A2A 处理的是 agent 之间的对话
Google 在 2025 年 4 月 9 日发布 Agent2Agent(A2A),同年 6 月捐给 Linux Foundation,成员包括 AWS、Cisco、Microsoft、Salesforce、SAP、ServiceNow。它要解决的问题是:用户一个请求要拆给几个 agent 做,而这些 agent 可能属于不同公司、跑在不同框架上。
四个核心概念:
- Agent Card:能力名片。v0.3 起固定放在
/.well-known/agent-card.json,写清这个 agent 会做什么、端点在哪、要什么认证。 - Task:有状态的长任务,状态包括 submitted、working、input-required、completed、failed。
- Message 与 Part:一次交互的轮次和内容分片。
- Artifact:任务产出,可以分片增量推送。
A2A 横着连 agent,MCP 竖着连工具和数据。两个协议会同时出现在一条链路上:编排 agent 用 A2A 把退款请求转给财务 agent,财务 agent 再用 MCP 调 ERP。
三、三种上下文共享方式,代价差很多
function calling、MCP、A2A 在「上下文怎么传」这件事上差别很大,直接决定 token 账单和能不能跑长任务。
| 维度 | 原生 function calling | MCP | A2A |
|---|---|---|---|
| 连接对象 | 模型 → 函数 | 客户端/agent → 工具与数据 | agent → agent |
| 工具发现 | 每次请求在 tools 参数里传定义 | tools/list 动态拉取 | 读对方 Agent Card |
| 结果怎么回来 | 全部塞进 messages | 内容可作为 resource 按需读取 | 作为 Artifact 分片返回 |
| 长任务 | 应用自己轮询 | tasks(2025-11-25 起,实验性) | Task 状态机 + SSE + webhook |
| 上下文压力 | 高,历史越长越贵 | 中,可按 URI 延迟加载 | 低,任务状态与对话上下文分离 |
MCP 多了一层缓冲。工具要返回 10MB 的 CSV,服务端可以只回一个 resource URI,客户端自己决定读不读、读多少。
A2A 把任务状态从对话上下文里拎出来了。一个跑 40 分钟的比价任务,状态存在 Task 对象里,客户端轮询或订阅即可,中间过程不用全喂给模型。
四、安全边界不在同一个层面上
MCP 从 2025-03-26 版开始带 OAuth 2.1 授权框架,规范里点名了几个反模式:
- token passthrough:客户端把自己的 token 原样转给下游 API。规范要求禁止,token 的 audience 必须绑定到具体资源,用 RFC 8707 定义的 resource 参数。
- Confused Deputy:MCP Server 拿自己的权限替客户端做事,而客户端本身没有这个权限。要靠授权请求里带 resource 参数来防。
- 工具描述被污染:工具说明文字来自第三方,模型会当真。
- 2025 年 4 月,Invariant Labs 演示了针对 GitHub MCP Server 的工具投毒:攻击者在一个公开 issue 里写指令,模型读到后照做,用户在界面上看不见。
- 2025 年 6 月,Asana 的 MCP 集成被曝出可被注入,让 agent 读到其他项目的数据。
- 2025 年 7 月,General Analysis 发布报告,Supabase MCP 存在可被注入的 SQL 执行路径,能绕过 RLS 读到全库数据并拿到 service_role token。
A2A 这边的风险点在别处。Agent Card 通常公开可读,会暴露能力和端点,企业部署要想清楚哪些字段对外;任务状态通过 webhook 推送时,接收方必须验签;跨组织调用靠 OAuth 2.0 和 mTLS 建立信任。
上线前对着这个清单过一遍:
- MCP Server 的工具描述、资源内容是否只来自可信来源
- 是否关掉了 token passthrough
- OAuth 请求是否带 resource 参数绑定 audience
- A2A 的推送 webhook 是否验签、是否校验时间戳防重放
- Agent Card 是否暴露了内网地址或调试端点
- 是否有 MCP 工具调用的审计日志
五、平台支持现状(截至 2026 年初)
| 厂商/平台 | MCP | A2A | 备注 |
|---|---|---|---|
| Anthropic | Claude Desktop、Claude Code 原生支持 | 未作为主线推进 | 2025 年 9 月开放 MCP Registry 预览 |
| OpenAI | Agents SDK、Responses API 支持 MCP | 未加入 A2A 项目 | 2025 年 3 月宣布支持 MCP |
| Gemini API 与 SDK 支持 MCP | 发起方,2025 年 6 月捐给 Linux Foundation | v0.3 增加 gRPC 与 REST 绑定 | |
| Microsoft | Windows 11 原生 MCP 注册表、VS Code、Copilot Studio | Azure AI Foundry、Copilot Studio 支持 | 2025 年 Build 大会宣布 |
| AWS | Bedrock AgentCore 运行时支持 | Bedrock AgentCore 支持 | Linux Foundation A2A 成员 |
| 阿里云 | 百炼 MCP 广场、魔搭 ModelScope MCP 广场 | — | 2025 年上线,接入高德等 Server |
| 腾讯云 | 腾讯云 MCP 广场、云开发 | — | 2025 年上线 |
| 字节 | 扣子支持 MCP | — | 面向智能体开发场景 |
| 高德 | 官方 MCP Server | — | 2025 年 3 月发布 |
| 支付宝 | 官方 MCP Server | — | 面向智能体与百宝箱 |
| 开源社区 | MCP Registry、各类 Server 集合 | ANP(Agent Network Protocol) | ANP 由国内团队开源,做 agent 发现与互联 |
六、开发者能接什么活
MCP Server 本身可以当作产品接口来做。公司有一批 API,包成 MCP Server 挂到各家的 MCP 广场,等于把服务塞进所有支持 MCP 的客户端。财务软件、发票、物流、CRM 这些方向,2026 年还有位置。
企业内网需要一层 MCP 网关。不可能让每个人的 Claude 客户端直连生产数据库。网关负责鉴权、审计、字段脱敏、限流、Server 黑白名单。这类需求目前主要靠自研。
Agent Card 的注册与验证会有需求:跨公司调用时,怎么证明「这个端点真的是某家公司的客服 agent」。
安全扫描和可观测性也缺。把 MCP 调用和 A2A 任务串成一条 trace,出问题时能定位到是哪个 Server 返回了污染内容。
产品形态上,我判断三年内会出现的东西:企业内部 agent 总线、垂直行业的 agent 市场、协议转换网关。
七、今天可以先做的一件事
装好 Node.js 后跑这条命令,用 MCP Inspector 连一个本地 filesystem Server:
npx -y @modelcontextprotocol/inspector \
npx -y @modelcontextprotocol/server-filesystem /tmp
浏览器会打开调试界面,能看到 tools/list 返回的 JSON schema、resources 列表,也能手动调用工具看返回。不用写客户端,直接看协议层在传什么,这是理解 MCP 最快的方式。
看完之后做个检查:把某个工具的描述字段改成一段带指令的文字,看你的客户端会不会照着执行。这一步能让你对工具投毒的防护需求有直观感受。
关于视频
站外视频建议按关键词自己检索,用「MCP 协议 规范讲解」「A2A Agent Card」这类词,按发布时间排序,优先看 2025 年 6 月之后的。更早的讲解大概率还在用已被弃用的 HTTP+SSE 传输,跟着做会踩坑。优先看官方账号(Anthropic、Google for Developers、阿里云、腾讯云开发者)发布的内容。
免责声明:本文不附站外视频的具体链接,避免链接失效或指向搬运内容;视频里的代码演示也不保证与当前规范版本一致。动手前以 modelcontextprotocol.io 和 a2a-protocol.org 的官方规范为准。