MCP & A2A协议简介

在近期,AI行业内出现了Cursor这种编程工具,Deepseek-R1这样的极低的训练成本和极强推理能力的大模型。

同时在大模型工程化领域,也推出两种不同的协议,分别是MCP和A2A

其中MCP协议主要是让模型具有调用API及资源的能力

A2A协议则是Agent和Agent之间进行交互

这里我们分别主要介绍下

对于MCP协议,其全程 Model Context Protocol 简称 模型上下文协议。

其主要的作用就是为模型设计了一个标准化的协议,来方便模型利用外部资源。如果没有这样一个协议,那么大模型在调用外部工具的时候,需要集成多个API,每个API代表着独立的代码,文档,身份验证方式。

比如说,让一个Agent支持网络搜索的话,就需要考虑让其能够支持如何拼接请求,解析HTML这些东西。

如果使用MCP协议,则可以将具体的做法隐藏到服务器端。让Agent通过JSON-RPC的方式调用就可以了。比如如下的JSON串

{ “method”: “callTool”, “params”: { “tool”: “Translate”, “input”: “Hello, world!”, “target_lang”: “zh” } }

通过这种方式调用,并且由服务器端返回一个标准格式给模型。

给模型增加了外部能力。这样开发者只需要给模型告知MCP服务器地址即可

其是一个客户端-服务器的架构,核心理念是模型主控,客户端驱动服务器调用

模型负责思考调用什么工具,客户端提供工具调用,并最终驱动外部服务器提供能力。

利用MCP这个标准化协议,实现将AI Agent连接到外部工具上面。

这个协议相比OpenAI的Function Calling功能,其大部分都是绑定在GPT系列中,返回格式也是和GPT深度耦合。

简单来说使用MCP协议,可以有效降低工程化成本。

其次是A2A协议,其代表着智能代理之间的协议,就是让不同的Agent之间可以协作的标准语言。可以理解为Agent之间沟通的语言。

比如一个Agent组之中,有的Agent负责形成整体规划,有个Agent负责酒店预订,有的Agent负责机票和火车预订,将这三者组成一个组。如果我们想要这三个Agent进行协作,就需要考虑跟人类一样,给他们赋予相同的沟通方式,不然会导致鸡同鸭讲的局面。因此A2A诞生了。他可以让负责整体规划的Agent依靠A2A协议依次发出两个Agent调用。

  1. 向着酒店预订的Agent发送“告诉我10月1日到7日的外滩附近酒店预订情况”
  1. 向着机票预订的Agent发送“告诉我10月1日从北京到上海的机票价格”

A2A在这个协议中,主要负责的是

统一消息发现和调用机制

异步协作能力,支持流式和异步返回能力

新Agent即插即用的能力,无需额外的扩展

通过A2A协议,最终完成Agent之间的信息交互和协作,其还支持能力发现,会话管理,任务生命周期管理,消息和内容单元,还有长任务,多模态协作,以及角色控制。

本章最后我们对比下两者,说下相似之处和不同之处。

不同之处在于两者聚焦的点不同,一个聚焦于模型和工具的交互(MCP)

而A2A则是聚焦于不同Agent之间的协作沟通,是一种Agent之间的语言,位于更高的层次,强调任务协作和信息共享。

但是相同点是,两个协议的出现是为了解决信息孤岛,提供统一的通信机制,并且可以扩展到更多的应用场景,且MCP明确定义为客户端驱动,服务器响应的方式,A2A则是客户端和服务器端的对等信息交换方式。

最后来看,两者相辅相成,形成了一个完整的AI时代的通信协议方案。

未来的AI系统将由不同的模型组成一个动态的网络。通过MCP的资源接入和A2A的协同能力,构建一个搜索到企业中台,到协同网络的整体架构。