AI领域:MCP 与 A2A 协议的关系
一、为何会出现MCP和A2A
协议是非常重要的东西,只有大家都遵循统一的协议,整体生态才好发展,正如有了HTML,互联网才快速发展,有了OpenAPI, API才会快速发展。
Agent目前是发展最快的领域,从最初的简单,本地应用,开始向互联发展;人工智能技术的快速发展催生了智能体(Agent)的广泛应用,但系统间的协作障碍逐渐显现。模型无法直接访问实时数据、工具调用标准不统一、多Agent协作缺乏规范等问题,成为制约AI规模化落地的核心瓶颈。这种情况下,智能体(Agent)之间的协作与通信是实现复杂任务的关键。正是在这样的背景下,两个关键协议横空出世:谷歌主导的A2A(Agent-to-Agent)协议和Anthropic推出的MCP(Model Context Protocol)。由此,MCP(模型上下文协议)、和 A2A(Agent到Agent协议)相继成为支持 AI Agent通信和协作的重要协议和框架。二者协议各有独特的设计和目标,旨在增强AI Agent能力,都反映了AI Agent从单一模型向多Agent协作发展的趋势。所以,MCP,A2A这样的协议就显得非常重要。这两个协议不是竞争关系,更像是构建未来AI生态系统的互补基石。
二、什么是 A2A 与 MCP
MCP是由Anthropic提出并于2024年11月开源的通信协议,旨在标准化大型语言模型与外部数据源和工具的交互方式,为LLM提供上下文和工具支持。在MCP协议,一些专业工具、软件、系统都可以向大模型提供服务支持,这样用户在大模型交互的时候,就能支持更丰富的能力专业能力。
A2A也是一个开源通信协议,由谷歌推出,旨在为不同系统和平台中的智能体提供标准化的交互方式。智能体是能够执行特定任务的AI实体,A2A确保这些智能体通过一致的标准进行通信和协作,实现跨平台协同工作。A2A的目标是使多个AI Agent能够共同完成任务,而不直接分享它们的内部记忆、思维或工具。
三、什么是 MCP
MCP(Model Context Protocol,模型上下文协议)由Anthropic于2024年11月推出,是一套开放协议标准,旨在规范AI模型与外部数据源、工具之间的交互方式。它通过标准化接口,实现AI模型与外部资源(如数据库、API、文件系统等)的无缝集成。MCP的设计以模型为中心,将互联网视为上下文和工具的来源,适合当前AI模型(尤其是大型语言模型)访问互联网资源的需求。可以让AI模型像使用USB设备一样方便地调用外部工具,因此可以被视为AI系统的“USB接口”。
其核心目标是解决以下问题:
数据孤岛:模型无法直接访问实时数据或本地资源;
集成复杂性:为每个工具编写独立接口导致开发成本高;
生态碎片化:不同平台的工具调用机制缺乏统一标准;
安全隐患:缺乏标准化的访问控制机制。
基本组成(MCP采用客户端-服务器架构):
MCP Host:运行 MCP Client 的宿主环境,可能是 Claude 桌面端、IDE、企业 Copilot 系统等。
MCP Client:代表模型一侧发起任务请求的客户端 SDK,封装成标准协议消息发送给 MCP Server。
MCP Server:暴露功能或数据接口的服务提供者,可是本地数据库、文件系统,也可以是远程 API。
数据源或远程服务:MCP Server 后端连接的数据或服务。
通信协议:基于 JSON-RPC 2.0,使用 WebSocket、本地 socket、HTTP 等方式作为承载层。
会话管理:虽然 JSON-RPC 是无状态协议,MCP 在其基础上增加了有状态会话机制,支持多轮交互。
能力协商:客户端和服务器在建立连接后,会互换所支持的能力与版本,确保兼容性。
MCP 协议的几个核心能力:
1. Resources(资源):表示模型可以读取的数据,如:本地文件(markdown, code, PDF 等);数据库查询结果;实时日志流;Server 端根据 query 参数,返回结构化数据或内容片段,模型据此推理。
2. Prompts(提示):Server 提供特定场景下可复用的提示模版,例如:提交 Bug 的规范格式;提醒语句的生成模版;模型根据 prompt 模版动态构建完整 prompt,提升上下文一致性与效果。
3. Tools(工具):Server 以函数形式暴露一组可调用方法,模型可以查看工具描述、参数定义,并构造调用请求;输入/输出均为结构化 JSON;类似 OpenAI 的 function calling,但与模型 API 解耦,工具只暴露于 MCP Server,而非模型服务端。
4. Sampling(采样:反向调用模型): Sampling 是客户端(Client)提供给服务器(Server)的附加能力;它允许服务器反向请求客户端执行一次 LLM 补全,然后把生成结果回传给服务器本身。这使服务器可在自身逻辑里嵌套 LLM 调用(例如让模型为返回的数据做摘要、分类或生成代码),从而形成递归式、多代理协作。由于服务器可触发模型生成,规范要求Sampling应始终有人类在环(human‑in‑the‑loop),客户端应提供拒绝或中止采样请求的能力。
5. Roots(限定服务器可操作范围的“根路径”):Roots是客户端提供给服务器的 URI 列表,用于声明服务器可操作的资源边界;Roots 只是“指导信息(guidance, not enforcement)”,真正的约束仍需服务器端遵守;但它为多源资源接入提供了清晰的作用域模型,便于权限审核与 UI 呈现。典型 root 可以是文件系统目录、Git 仓库路径或 REST API 根 URL。用途:最小暴露面:服务器只应在这些 root 下读取/写入,避免误操作其他文件或泄露数据;动态更新:客户端可在会话中实时添加、移除或变更 roots,服务器会通过roots/listchanged_ 通知获知。
MCP 应用场景示例:
1. 开发工具集成:在IDE中通过自然语言查询数据库、调用部署工具,开发工具集成,在IDE中通过自然语言查询数据库、调用部署工具。
2. 自定义AI工作流:通过MCP,用户可以将AI助手与外部数据源和工具连接,构建个性化的AI工作流。
3. 企业级自动化应用:在企业环境中,MCP可以连接ERP、CRM等系统,构建智能客服系统、自动化办公流程等,实现流程自动化,提高企业的运营效率。
4. 本地数据处理:在隐私保护前提下分析用户设备内的文件。
5. 以“模型查询某用户的数据库信息”为例演示流程:
5.1. 注册能力:Server 启动并声明提供query_user_info工具,说明其参数为 user_id,返回结构为 JSON。
5.2. 能力协商:模型所在应用(Client)建立连接,获得工具描述。
5.3. 模型调用:模型识别到缺少用户信息,于是发起 Tool Call 请求:json{"method":"query_user_info","params":{"user_id":12345}}
5.4. Server 执行:MCP Server 查询数据库,返回:json{"result":{"name":"小明","level":3,"org":"杭州分部"}}
5.5. 模型继续生成回答:基于新获得的信息,回答“该用户来自哪个部门?”等问题。
目前 MCP 已成为行业重点推进的通用标准,生态扩展迅速:官方 SDK 提供 Python、TypeScript、Java、C# 等语言支持;如 Google Drive, Slack, GitHub, Postgres 等接口已提供标准 MCP Server 实现预构建服务器;mcp-python-sdk 和 mcp-typescript-sdk 等开源工具链,开源集成如 Dify、LangChain 社区已提供插件;国内也已有初步生态实践:如阿里百炼推出了 MCP 工具市场 (https://bailian.console.aliyun.com/?tab=app#/mcp-manage),支持企业级私有 Server 接入。
四、什么是 A2A
2025年4月9日,谷歌在Google Cloud Next 25大会上推出Agent2Agent 协议(A2A),这是一项全新的开放标准,旨在让AI智能体能够相互通信。此前,Anthropic的模型上下文协议(MCP) 为智能体提供了一种结构化的工具使用方式,而A2A则为智能体提供了一种相互协作的方式,就像是给AI智能体们制定了一套“通用社交礼仪”和“标准沟通语言”,让它们可以互相理解、协作,共同完成复杂任务。A2A的推出,也反映了行业对Agent互操作性的迫切需求。不仅限于技术层面,还涉及企业应用的商业价值。
在A2A协议出现之前,AI智能体之间很难直接对话和协作,必须依赖开发者定制的接口。这就像是每个国家都有自己的语言和规矩,想要互相沟通、做生意、交换情报非常困难。A2A协议的出现,解决了这个“智能体孤岛”问题,让不同来源、不同技术的AI智能体能够相互沟通、安全地交换信息,并协同执行跨企业平台或应用的复杂任务。该协议由谷歌联合50余家科技企业(包括Salesforce、SAP、埃森哲等)共同推动,目标就是解决AI生态中“各自为战”的痛点:打破生态孤岛,解决多Agent协作的协议不兼容问题;支持长时任务,处理耗时数小时至数天的复杂流程;模态无关性,兼容文本、音频、视频等多模态交互。
A2A基于HTTP、SSE(Server-Sent Events)和JSON-RPC构建,包含以下核心模块:
能力发现(Capability Discovery):通过Agent Card(JSON元数据)声明Agent能力;
任务管理(Task Management):以任务为单位管理多轮交互;
协作机制(Collaboration):支持Agent间消息传递与状态同步;
用户体验协商:根据终端设备动态调整内容呈现方式。
典型交互流程包括:客户端Agent通过HTTP GET发现远程Agent能力;通过SSE建立持久连接并发送任务请求;远程Agent返回包含文本、表单、流媒体等内容的Message对象;任务完成后生成Artifact(如文件、结构化数据)。应用场景示例:
1. 跨系统流程自动化:如招聘场景中,协调简历解析、面试安排、背调等Agent;
2. 供应链管理优化:连接库存管理、物流调度、需求预测等Agent。A2A可以协调不同企业的智能体,优化供应链流程。例如,一个物流智能体可以与一个仓储智能体协作,实时更新货物状态。
3. 客户关系管理:语音助手、工单系统、知识库Agent的协同响应。在跨平台客户管理中,A2A可以实现数据共享和协作。例如一个电商平台的智能客服可以与一个社交媒体平台的智能客服协作,提供更全面的客户支持。
4. 医疗健康:A2A可以协调不同医疗机构的智能体,实现医疗数据的共享和协作。
A2A与MCP的功能很相似,但也有着不同。A2A侧重智能体之间的协作沟通,而MCP侧重智能体获取外部工具与数据。两者可以视为互补的层次 。Google在发布A2A时也明确提到:“A2A是一个开放协议,与Anthropic的MCP互为补充:MCP为智能体提供有用的工具和上下文,而A2A则让不同智能体能够协同工作” 。例如,在一个汽车维修店的示例中,MCP负责连接单个维修机器人智能体与它使用的传感器、机械臂等“工具”(结构化动作指令),而A2A则让不同机器人和客服代理彼此对话协商,共同完成复杂的维修任务 。因此,两协议并非竞争关系,而是针对不同层面的需求提供支持:MCP连接“AI与工具”,A2A连接“AI与AI”。
五、MCP和A2A解决的是AI技术栈中不同层次的问题对比
MCP 解决数据和工具代理的问题,A2A 解决 AI Agent 协作通信的问题。A2A 和 MCP就好比是 AI 世界的 “外交协议” 与 “万能接口”。
A2A 协议并不是要取代 MCP,它们俩是好搭档,是互补关系!一个是让 AI 自己“兵器”使得更顺手,一个是让不同的 AI 组成“军队”能协同作战。
• MCP 更侧重于解决单个 AI 智能体 如何使用工具和获取外部信息 的问题 (Agent ↔️ Tool/Data)。
• A2A 则专注于解决 不同 AI 智能体之间如何有效协作 的问题 (Agent ↔️ Agent)。
六、A2A + MCP 生态
谷歌A2A协议已获得50+家科技企业和服务商支持,覆盖工具层、应用层、咨询服务三大领域:
典型场景:Salesforce的CRM Agent通过A2A调用Workday的HR Agent,自动同步客户签约与员工绩效数据。
Anthropic的MCP协议聚焦AI与工具/数据的连接,主要支持者包括:
典型场景:Claude模型通过MCP访问GitHub代码库,自动修复程序漏洞。
A2A 和 MCP 等开放协议统一标准后,有望构建全新 AI Agent 生态。众多 AI Agent 通过 A2A 通信、借助 MCP 调动资源,用户能像浏览网页般无感使用智能体协同服务。
七、AI 协议的安全问题不可忽视
Google A2A要解决的是不同黑盒中Agent间的安全通信与信任问题,其中的关键实现是AgentCard,这个是一个公开的元数据文件,描述了AI代理的功能、技能、端点URL和身份验证要求,可以通过URL路径 http://{remote_agent_address}/.well-known/agent.json 访问。AgentCard允许代理在不了解彼此的情况下,通过读取对方的AgentCard来识别对方的能力和访问权限,从而实现安全的协作。A2A的 Agent Auth方案可以选择简单的API KEY,可以选择OAuth等企业级授权方案,在消息推送方面,也通过类似机制来确保通信数据安全性。相对MCP协议,Google A2A协议在安全功能实现与安全指引上明显更为成熟。从攻击视角看,由于Google A2A的使用场景主要是不同Agent间的远程通信,大部分服务会被部署在公网,所以一旦出现漏洞,攻击成本会更低影响也更大,这对于使用Google A2A协议的AI Agent开发者们的安全意识提出了更高要求,需要开发运维等持续关注Google A2A协议与开发者实现的安全问题。
由于设计之初MCP协议主要是用于AI Agent调用本地工具或调用权威厂商提供的MCP服务,同时也没有过多考虑安全相关风险;在2025年3月25号最新发布的MCP协议规范文档中,MCP官方正式支持了OAuth2.1授权认证,来确保MCP客户端和MCP服务器之间的交互受到严格的权限管理。
官方强调了MCP协议本身无法实现上述这些安全原则,AI Agent与MCP服务的开发者们应该为MCP服务的安全实现负责,并给了一些粗略的安全建议:在应用程序中构建明确的同意和授权流程;提供清晰的安全隐患提示文档;实施适当的访问控制和数据保护;在工具集成中遵循安全最佳实践;在功能设计中考虑隐私影响。
从中可以看到MCP官方已经意识到了安全的重要性,不过不同于Google,MCP官方明确了安全责任主体是开发者,未强制要求MCP服务必须开启OAuth授权保护,也没有在协议中提供可直接使用的权限分级管控能力与安全加固的详细实现指引。
八、开源协议地址
(1)MCP 协议参考实现的集合
这个仓库是模型上下文协议(MCP)的一系列参考实现的集合,同时包含了社区构建的服务器和额外资源的引用。此仓库中的服务器展示了MCP的多样性和可扩展性,演示了如何使用它来为大型语言模型(LLM)提供对工具和数据源的 安全、受控访问。每个MCP服务器都是使用TypeScript MCP SDK或Python MCP SDK实现的。
https://github.com/modelcontextprotocol/servers
https://modelcontextprotocol.io/introduction
(2)A2A协议已经完全开源,在
https://github.com/google/A2A/tree/main
https://google.github.io/A2A/
智能体应用需要 A2A 和 MCP 结合。建议工具使用 MCP,代理使用 A2A。
--------------------------------------
没有自由的秩序和没有秩序的自由,同样具有破坏性。