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。

--------------------------------------

没有自由的秩序和没有秩序的自由,同样具有破坏性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/76765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习训练中的显存溢出问题分析与优化:以UNet图像去噪为例

最近在训练一个基于 Tiny-UNet 的图像去噪模型时,我遇到了经典但棘手的错误: RuntimeError: CUDA out of memory。本文记录了我如何从复现、分析,到逐步优化并成功解决该问题的全过程,希望对深度学习开发者有所借鉴。 训练数据&am…

FramePack V2版 - 支持首尾帧生成,支持LoRA,支持批量,支持50系显卡,一个强大的AI视频生成软件 本地一键整合包下载

FramePack 是斯坦福大学主导开发的视频生成框架,是一种用于视频生成的下一帧(下一帧部分)预测神经网络结构,可以逐步生成视频。FramePack 主要开发者之一,就是业内大名鼎鼎的张吕敏大佬,AI领域的“赛博佛祖…

STM32 HAL 通用定时器延时函数

使用通用定时器TIM3,实现ms、us延时。 delay.c #include "delay.h" #include "stm32f1xx_hal.h"TIM_HandleTypeDef htim3;/*** brief 初始化定时器3用于延时* param 无* retval 无*/ void Delay_Init(void) {TIM_ClockConfigTypeDef sClock…

软件功能测试和非功能测试有什么区别和联系?

软件测试是保障软件质量的核心环节,而软件功能测试和非功能测试作为测试领域的两大重要组成部分,承担着不同但又相互关联的职责。 软件功能测试指的是通过验证软件系统的各项功能是否按照需求规格说明书来正确实现,确保软件的功能和业务流程…

使用Java调用TensorFlow与PyTorch模型:DJL框架的应用探索

在现代机器学习的应用场景中,Python早已成为广泛使用的语言,尤其是在深度学习框架TensorFlow和PyTorch的开发和应用中。尽管Java在许多企业级应用中占据一席之地,但因为缺乏直接使用深度学习框架的能力,往往使得Java开发者对机器学…

Docker安装beef-xss

新版的kali系统中安装了beef-xss会因为环境问题而无法启动,可以使用Docker来安装beef-xss,节省很多时间。 安装步骤 1.启动kali虚拟机,打开终端,切换到root用户,然后执行下面的命令下载beef的docker镜像 wget https:…

metasploit(2)生成dll木马

声明!本文章所有的工具分享仅仅只是供大家学习交流为主,切勿用于非法用途,如有任何触犯法律的行为,均与本人及团队无关!!! 一、dll文件基本概念 DLL 是一种包含可由多个程序同时使用的代码和数…

5V 1A充电标准的由来与技术演进——从USB诞生到智能手机时代的电力革命

点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万阅读 1.6万收藏 一、起源:USB标准与早期电力传输需求 1. USB的诞生背景 1996年,由英特尔、微软、IBM等公司组成的USB-IF(USB Implementers Forum)发布了…

使用Python设置excel单元格的字体(font值)

一、前言 通过使用Python的openpyxl库,来操作excel单元格,设置单元格的字体,也就是font值。 把学习的过程分享给大家。大佬勿喷! 二、程序展示 1、新建excel import openpyxl from openpyxl.styles import Font wb openpyxl.…

【设计模式】深入解析代理模式(委托模式):代理模式思想、静态模式和动态模式定义与区别、静态代理模式代码实现

代理模式 代理模式,也叫委托模式。 Spring AOP 是基于动态代理来实现 AOP 的 定义 为其他对象提供一种代理 以控制对这个对象的访问。它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而…

利用java语言,怎样开发和利用各种开源库和内部/自定义框架,实现“提取-转换-加载”(ETL)流程的自动化

一、ETL 架构设计的核心要素​ 在企业级数据处理场景中,ETL(Extract-Transform-Load)流程自动化是数据仓库、数据湖建设的核心环节。基于 Java 生态的技术栈,我们可以构建分层解耦的 ETL 架构,主要包含以下四层结构&am…

2023蓝帽杯初赛内存取证-8

也是用到pslist模块,加上grep过滤”chrome“即可: vol.py --plugin/opt/volatility/plugins -f memdump.mem --profile Win7SP1x64 pslist | grep "chrome" 第一个是PID,第二个是PPID,第三个是线程数,第四个…

【C语言】动态内存的常见错误

前言&#xff1a; 在上章节中讲解了动态内存的概念和管理的核心函数。 在本章节继续为大家介绍动态内存的常见错误&#xff0c;让大家更好的理解运用。 补充&#xff1a;使用内存函数需要头文件<stdlib.h> 对NULL指针的解引用操作 当使用malloc、calloc或realloc等函…

uniapp-x 二维码生成

支持X&#xff0c;二维码生成&#xff0c;支持微信小程序&#xff0c;android&#xff0c;ios&#xff0c;网页 - DCloud 插件市场 免费的单纯用爱发电的

Linux内核之文件驱动随笔

前言 近期需要实现linux系统文件防护功能&#xff0c;故此调研了些许知识&#xff0c;如何实现文件防护功能从而实现针对文件目录防护功能。当被保护的目录&#xff0c;禁止增删改操作。通过内核层面实现相关功能&#xff0c;另外在通过跟应用层面交互从而实现具体的业务功能。…

利用大模型实现地理领域文档中英文自动化翻译

一、 背景描述 在跨国性企业日常经营过程中&#xff0c;经常会遇到专业性较强的文档翻译的需求&#xff0c;例如法律文书、商务合同、技术文档等&#xff1b;以往遇到此类场景&#xff0c;企业内部往往需要指派专人投入数小时甚至数天来整理和翻译&#xff0c;效率低下&#x…

鸿蒙Flutter仓库停止更新?

停止更新 熟悉 Flutter 鸿蒙开发的小伙伴应该知道&#xff0c;Flutter 3.7.12 鸿蒙化 SDK 已经在开源鸿蒙社区发布快一年了&#xff0c; Flutter 3.22.x 的鸿蒙化适配一直由鸿蒙突击队仓库提供&#xff0c;最近有小伙伴反馈已经 2 个多月没有停止更新了&#xff0c;不少人以为停…

(七)深入了解AVFoundation-采集:采集系统架构与 AVCaptureSession 全面梳理

引言 在 iOS 开发中&#xff0c;AVFoundation 是构建音视频功能的强大底层框架。而在音视频功能中&#xff0c;“采集”往往是最基础也是最关键的一环。从摄像头捕捉图形、到麦克风获取声音&#xff0c;构建一条高效且稳定的采集链是开发高质量音视频应用的前提。 本系列将逐…

QML ShaderEffect(着色器效果)组件

ShaderEffect 是 QML 中用于实现自定义着色器效果的组件&#xff0c;允许开发者使用 GLSL 着色器语言创建图形效果。 核心属性 基本属性 属性类型默认值说明fragmentShaderstring""片段着色器代码vertexShaderstring""顶点着色器代码blendingbooltrue是…

基于javaweb的SSM教材征订与发放管理系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…