MCP(Model Context Protocol,模型上下文协议)由 Anthropic 于 2024 年 11 月发布,解决的是"智能体到工具"的连接问题——即一个 AI 智能体如何调用外部工具、查询数据库或访问 API。MCP 定义了智能体与外部能力和数据源之间的标准接口。A2A(Agent2Agent Protocol,智能体对智能体协议)由 Google 于 2025 年 4 月发布,解决的是"智能体到智能体"的协作问题——即不同框架、不同厂商构建的智能体如何发现彼此能力、安全交换信息并协作完成复杂任务。
MCP 采用客户端-服务器架构:一个 AI 智能体(宿主或客户端)连接到一个或多个 MCP 服务器,这些服务器暴露标准化能力(如数据库查询、API 调用、文件访问)。通信使用 JSON-RPC 2.0,允许智能体发现可用工具、调用它们并接收结构化结果。A2A 采用对等的协作架构:智能体发布 Agent Cards(JSON 元数据)描述其技能、支持的任务和安全要求;其它智能体发现这些卡片,发起任务,并管理完整的生命周期——包括流式更新、产出物共享和状态转换——通过 HTTP/JSON-RPC,可选使用 Server-Sent Events。
MCP 的工具调用通常是无状态的——每次工具调用是独立的,输入和输出有明确的结构化定义。2025 年 11 月,MCP 新增了 Tasks 原语,为长时间运行的异步操作提供了可选的状态跟踪能力。A2A 的任务(Task)是具有完整生命周期的有状态工作单元:任务从创建到完成经历多个明确状态(SUBMITTED、WORKING、INPUT_REQUIRED、AUTH_REQUIRED、COMPLETED、FAILED、CANCELED、REJECTED),支持多轮对话和增量结果传输。
MCP 的发现机制是:宿主应用程序在会话启动时暴露可用的工具和资源列表,智能体通过 tools/list 方法获取可用工具清单。MCP 服务器是主动暴露能力的。A2A 的发现机制是:每个智能体在其域名的 /.well-known/agent.json 路径下发布 Agent Card,客户端智能体通过获取该 JSON 文档来发现远程智能体的能力。A2A 的发现是被动通告能力的。
MCP 和 A2A 解决的是不同层次的问题,它们是互补的,而非竞争的。在生产系统中,MCP 和 A2A 通常一起使用:一个智能体通过 A2A 协议将任务委托给另一个智能体;接收任务的智能体内部使用 MCP 协议调用其专属的工具和数据源。可以这样理解:MCP 回答"我的智能体如何使用工具?";A2A 回答"我的智能体如何与其它智能体对话?"。主流云服务商和开源框架正在同时支持这两种协议,使开发者能够构建同时使用 MCP 和 A2A 的完整智能体系统。