Google A2A:AI代理间协议
今天,谷歌发布了其开源的代理间协议,这个协议被富有想象力地命名为A2A,即代理到代理。谷歌声称A2A与MCP是互补的。

今天,谷歌发布了其开源的代理间协议(Agent-to-Agent),这个协议被富有想象力地命名为A2A,即代理到代理。由于我们已经看到Anthropic的MCP(模型上下文协议)取得了很多进展,谷歌声称A2A与MCP是互补的。他们甚至用了一个心形表情符号来强调这一点。
我不太确定,所以我决定深入研究一下,看看A2A在代理宇宙中的位置如何。因此我们将涵盖A2A在现实生活中的工作方式,并将其与MCP进行比较。
1、测试A2A
使用A2A出乎意料地类似于MCP。你可以运行几个A2A代理/服务器,然后A2A客户端可以连接到它们。好消息是,通常不需要在运行A2A客户端的同时运行A2A代理。
2、运行A2A代理(服务器)
我在本地启动了所有三个示例代理:
- Google ADK代理,它可以为你提交费用报告。
- CrewAI代理,它可以生成图像。
- LangGraph代理,它可以查询最新的外汇汇率。
A2A服务器通过JSON格式的“代理卡”向世界展示其功能。例如,Google ADK的代理卡如下所示:
{
"name": "报销代理",
"description": "此代理处理员工的报销流程,根据报销金额和用途。",
"url": "http://localhost:10002/",
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": false,
"stateTransitionHistory": false
},
"defaultInputModes": [
"text",
"text/plain"
],
"defaultOutputModes": [
"text",
"text/plain"
],
"skills": [
{
"id": "process_reimbursement",
"name": "处理报销工具",
"description": "帮助用户根据报销金额和用途完成报销流程。",
"tags": [
"报销"
],
"examples": [
"能否报销我午餐与客户的20美元?"
]
}
]
}
3、启动A2A客户端演示应用
接下来是客户端。获取演示Web应用程序运行的说明在这里 。
一旦Web应用程序开始运行,你就可以从浏览器访问它。客户端看起来有点像Gemini AI Studio,具有标志性的Google Material设计风格。
URL: localhost:12000
首先,我们需要通过指定其基本URL将所有代理添加到客户端中。由于在我的情况下我都在本地运行这些代理,所以它们的基本URL是:
- Google ADK:
localhost:10002
- CrewAI:
localhost:10001
- LangGraph:
localhost:10000
备注:在协议中,最终的URL看起来像这样:
https://localhost:10002/.well-known/agent.json
现在你可以看到所有三个已连接的代理:

你可以在这里看到聊天历史记录:

这里可以看到所有的事件列表:

以及所有的任务列表:

设置非常基础:

4、测试Google ADK代理的费用索赔

5、测试LangGraph查询外汇汇率

6、测试CrewAI代理生成图像

7、多个代理组合测试
我想看看A2A客户端是否能够使用多个代理实现单一目标。所以我测试了它是否可以结合费用索赔代理和外汇汇率代理。结果是可行的。
我的任务是“在商务旅行期间为德国的一杯啤酒申请费用,金额为5欧元,日期为2025年4月4日”。对话经过了几轮来回,最终在费用索赔表中得到了正确的美元金额。


8、对A2A的初步观察
我喜欢A2A是一个纯粹的客户端-服务器模型,两者都可以远程运行和托管。客户端无需指定和启动代理/服务器。
代理配置相当简单,只需指定基本URL,“代理卡”负责上下文交换。而且可以在客户端已经启动后添加和移除代理。
在当前的演示形式下,很难理解代理之间如何通信并完成复杂任务。客户端分别调用每个代理执行不同任务,因此非常类似于多工具调用。
9、将A2A与MCP进行比较
现在我已经尝试了A2A,是时候将其与MCP进行比较了,我在这篇文章中之前提到过MCP。
虽然A2A和MCP都旨在改善AI代理系统的开发,理论上它们解决不同的需求。A2A在代理层面运作,专注于独立实体之间的交互,而MCP在LLM层面运作,专注于丰富单个语言模型的上下文和能力。
根据它们的协议文档,以下是它们的主要相似点和差异的概览:
特性 | A2A | MCP |
---|---|---|
主要应用场景 | 代理间的通信与协作 | 为LLMs提供上下文和工具(外部API/SDK) |
核心架构 | 客户端-服务器(代理-代理) | 客户端-主机-服务器(应用-LLM-外部资源) |
标准接口 | JSON规范、代理卡、任务、消息、工件 | JSON-RPC 2.0、资源、工具、记忆、提示 |
关键特性 | 多模态、动态、安全协作、任务管理、能力发现 | 模块化、安全边界、可重用的连接器、SDKs、工具发现 |
通信协议 | HTTP、JSON-RPC、SSE | JSON-RPC 2.0通过stdio、HTTP带SSE(或流式HTTP) |
性能重点 | 异步通信以处理负载 | 高效的上下文管理、并行处理、缓存以实现高吞吐量 |
采用与社区 | 初期行业支持良好,生态系统尚处于萌芽阶段 | 整个行业的广泛采用,快速增长的社区 |
10、结束语
尽管谷歌做出了听起来A2A像是MCP的互补协议,我的初步测试显示它们在目的和功能上高度重叠。它们都旨在满足AI应用开发者利用多个代理和工具实现复杂目标的需求。目前,两者都缺乏一种良好的机制来注册和发现其他代理和工具,而无需手动配置。
MCP起步较早,已经获得了开发社区和大型企业的极大支持。A2A非常年轻,但已获得许多Google Cloud企业客户的强力初始支持。
我认为这对开发者来说是个好消息,因为他们将有更多的选择在开放且标准的代理间协议中。只有时间能告诉我们哪个会占据主导地位,或者它们可能会合并为一个单一的标准。
原文链接:Google A2A - a First Look at Another Agent-agent Protocol
汇智网翻译整理,转载请标明出处
