当多 Agent 系统从 demo 走向生产,"Agent 之间怎么说话"迅速变成了和"模型选哪家"同等关键的工程问题。过去一年里,Anthropic 主导的 Model Context Protocol、Google 牵头的 Agent2Agent(A2A),以及 OpenAI 在 2023 年推出并持续演进的 Function Calling,三种协议各自占据了一个语义层,它们既不是替代关系,也不该被混为一谈。
本文拆解这三层协议的设计目标、能力边界、工程权衡与典型组合用法。文末参考资料按"官方/开源/行业/社区/基准"五类分组,逐条标注可达性。
一、各自要解决的问题
Function Call 是最早成熟的一层,2023 年 OpenAI 在 GPT-4 之上引入,核心是把"模型在对话中调用外部工具"这件事标准化成 JSON Schema,模型输出 `tool_calls` 字段、运行时按名称匹配路由。MCP 则把这一层标准化拔高了一档——它不再要求每个厂商自实现一遍工具注册,而是定义一个 Host/Client/Server 的握手协议,任何"提供工具/资源/Prompt 模板"的进程都能以 MCP Server 身份挂载,客户端用统一格式发现和调用。A2A 是三层里最新的一档,Google 在 2025 年中联合 50 余家厂商发起,目标是让运行在不同框架、不同云上的 Agent 实例之间互相发现能力、协商任务、传递结果。
简单记忆:Function Call 是单模型内的工具调用协议,MCP 是模型与外部进程之间的标准握手,A2A 是 Agent 与 Agent 之间的跨进程协同协议。

二、能力原语对比

Function Call 给到的是单次同步的工具调用语义,模型输出形如 `{"name":"get_weather","arguments":{"city":"SF"}}` 的结构化片段,运行时由宿主应用或 SDK 派发。MCP 在这之上提供五类原语:`tools`(可调用动作)、`resources`(只读或受控的数据源,如 SQLite 视图、GitHub repo 索引)、`prompts`(可复用 Prompt 模板)、`sampling`(让 Server 反过来请求 Client 协助一次 LLM 推理)、`roots`(声明客户端可访问的边界)。A2A 则全部围绕"任务"展开:Agent Card 是 JSON 描述文件(能力/Skills/认证端点/输入输出模态),任务态机包含 `submitted`/`working`/`completed`/`failed`/`canceled`,产物通过 Artifact 形式流转。
三、协议边界的工程权衡
Function Call 最轻、最快,但每个模型厂商实现不同(OpenAI/Anthropic/Google/Groq 各自的 JSON 形态、并行调用、流式规范都略有差异),跨厂商时要写适配层。MCP 用统一协议换来了"一个 Server 适配所有 Client"的可移植性,代价是多一次 JSON-RPC 握手 + 每工具一次 schema 协商,延迟敏感的场景要权衡。A2A 的工程负担最重——它假设 Agent 是长时、跨域、有认证边界的,因此天然支持 SSE 流式、推送通知、多模态产物。
数据上看,MCP 官方 spec 仓库在 2026 年 7 月初已积累 8.5k+ stars,Claude Code 仓库 13.5 万 stars,大量 IDE/编辑器/桌面工具以 MCP Server 形态接入生态。A2A 方面,Google 主导的 `a2aproject/A2A` 仓库同样积累到 2.4 万 stars,2025 年中起生态厂商逐步接入(Ask HN "Is anyone using the A2A protocol?" 在 2026-06 拿到 96 points,讨论区显示早期采纳者集中在企业内部多 Agent 编排而非消费级场景)。
四、关键点
- 三种协议不是替代关系,而是互补:Function Call 在模型内,MCP 在模型与外部资源间,A2A 在 Agent 与 Agent 间。生产系统往往是三层叠加。
- MCP 的关键概念是 Server 注册工具,Client 由应用宿主启动——和 Function Call 的"模型直接生成调用结构"是一一对应关系,只是协议通道换成了 JSON-RPC over stdio/HTTP/SSE。
- A2A 的落地阻力来自认证 + 跨域信任,典型提问集中在"对方 Agent 误调用时责任归谁""结果如何追溯"——这两点都是 Function Call/MCP 不需要面对的。
- 协议选型应先问"我要解决什么层的问题":单 LLM 工具编排选 Function Call;同一进程族/同一可信域内统一工具入口选 MCP;跨厂商/跨云/对外暴露能力才需要 A2A。
- 工程上,MCP/A2A 的握手开销不容忽视——一次 `initialize` 后只有在长会话才回本,短任务场景用裸 Function Call 更划算。
五、行业影响
大厂层面,MCP 已经形成事实标准的雏形:Anthropic 把官方 SDK 抽到独立组织、Claude Code/Claude Desktop/各类编辑器原生支持 MCP Server,Coze/Cursor/Continue.dev 等社区工具也跟进。A2A 还在生态扩张期,2026 年的关键是能否出现 2-3 个杀场(比如金融/客服/运维)证明跨厂商 Agent 互通的价值。Function Call 在三者里最稳定,新模型厂商基本都把它当成最低基线——但越来越多人开始在 SDK 层把它替换成 MCP Client,从而"两个协议只写一次"。
六、结语
回到开头的问题,Agent 协议不是单选题。一份成熟的 2026 年多 Agent 架构图里,你大概率会同时看到三层:Function Call 在最底层做模型内工具调用、MCP 在中间做工具与资源的标准接入、A2A 在最上层做跨域任务协同。理解了它们各自承担哪段语义,选型时就不会在"MCP 能不能取代 A2A"这类问题里绕圈——它们本来就不在同一条赛道上。
参考资料
官方文档
- Model Context Protocol 官方介绍页 [200]
- MCP: Landscape, Security Threats(arXiv 2503.23278) [200]
- Google A2A 官方仓库 [200] - 2026-07-03 更新
开源项目
- modelcontextprotocol/modelcontextprotocol [200] - 8.5k★,spec + docs + schema
- anthropics/claude-code [200] - 135k★,MCP 原生接入代表
- openai/openai-agents-python [200]
- apify/mcp-cli(Show HN: mcpc) [200]
行业报道
社区讨论
- HN Algolia 搜索 "MCP" [200]
- Ask HN: Is anyone using the A2A protocol? [200] - 96 points, 2026-06-18
- OpenAI rejects 1,200-line community PR for Google's A2A [200]
对比基准
**本文由 AI 生成**。内容基于公开资料整理,可能存在事实偏差,引用链接请以原始来源为准。
