MCP + A2A = 超高效的智能体调用
点击下方,关注后台回复【666】,免费领取【DeepSeek学习礼包】
在近一年中AI智能体的发展就像坐着火箭,各行业的企业在实际业务应用中都在不断融入AI智能体(Agent)来提质增效。
在不久前,就连我这个身处13线小城市的打工人,也和公司建议准备搭一个本地化模型的AI数据分析的智能体,不过就在搭建过程中出现一件麻烦事儿,社区版的dify自带插件太少了,自己写插件复杂又需要调试,工期根本不够,就在我焦头烂额的时候,突然就想起了前段时间爆火的MCP和A2A服务,但一下子对它俩到底怎么用却忘了个干净。
下面咱就一起了解一下MCP和A2A,到底怎么用、用在什么地方以及他们到底有什么区别?最后我在给大家推荐几个高质量的MCP服务网站,让你的智能体如虎添翼。
MCP
Model Context Protocol (MCP) 是一个在2024年11月由Anthropic推出的开源协议,它标准化了大型语言模型(LLM)与外部数据源和工具之间的连接方式。MCP的出现彻底改变了AI与外部系统交互的方式,使得AI不仅能够生成文本,还能执行数据库查询、发送邮件、管理项目和自动化工作流等任务。
MCP是一个开放标准,它允许开发者在他们的数据源和AI工具之间建立安全的双向连接。它被设计为LLM与外部工具或数据源之间的通用适配器,定义了连接语言模型与外部工具和数据源的通用协议(基于JSON-RPC)。
MCP的灵感来源于语言服务器协议(LSP),后者是IDE与特定语言工具通信的标准。与LSP类似,MCP通过采用标准化接口,将模型和工具的集成复杂性从M×N减少到M+N,解决了每个新语言模型(M)都需要自定义连接器和提示以与每个企业工具(N)接口的问题。
要明白MCP就得懂得这三个概念
模型控制:Tools由服务器暴露给客户端,代表LLM可以调用的动态操作。
Tools(工具):由服务器暴露给客户端的可执行功能,代表LLM可以调用的动态操作,可以修改状态或与外部系统交互。
应用程序控制:Resources由客户端应用程序决定如何使用。
Resources(资源):由服务器暴露给客户端的数据和内容,可以被读取并用作LLM交互的上下文。
用户控制:Prompts由服务器暴露给客户端,目的是供用户使用。
Prompts(提示):由服务器定义的预设模板和工作流,用于标准化LLM交互。
MCP其实就是为AI应用专门打造的"TYPE-C接口",它标准化了应用程序向大型语言模型(LLM)提供上下文的方式。通过MCP,AI模型可以像程序员调用函数一样使用各种工具,将工具和数据源连接到AI系统中。
什么事A2A?
随着越来越多的企业开始使用自主智能体,让这些智能体在不同系统和平台间协作变得至关重要,但这些智能体通常是孤立运行,没有办法高效协作,形成了所谓的"智能体孤岛"问题。
为了解决这一困难,谷歌于今年4月9日正式发布了Agent2Agent(A2A)协议,直接开源,就是为了实现不同AI智能体之间的互操作性。
A2A协议为Agent提供了一种标准的交互方式,使它们能够相互协作,无论底层框架或供应商是什么。谷歌认为,这个协议将对支持多智能体通信至关重要,因为它为智能体提供了一个共同的语言,无论它们是基于什么框架或供应商构建的。
所以A2A就是智能体之间的沟通渠道,就好像通用语言一样让所有智能体都能听懂。
A2A协议的核心概念
A2A协议定义了一套清晰的客户端-服务器交互模型。一个"客户端"智能体(发起请求方)与一个"远程"智能体(A2A服务器,处理请求方)通过一系列任务和消息进行通信。以下是A2A协议的核心概念:
Agent Card:这是一个公开的元数据文件(通常位于/.well-known/agent.json),描述智能体的能力、技能、端点URL和认证要求。客户端使用它进行发现。
A2A Server:一个智能体公开的HTTP端点,实现A2A协议方法(定义在json规范中)。它接收请求并管理任务执行。
A2A Client:一个消费A2A服务的应用程序或另一个智能体。它向A2A服务器的URL发送请求(如tasks/send)。
Task:工作中的中心单元。客户端通过发送消息(tasks/send或tasks/sendSubscribe)来启动任务。任务具有唯一ID,并经历各种状态(已提交、处理中、需要输入、已完成、失败、已取消)。
Message:表示客户端(角色:"user")和智能体(角色:"agent")之间的通信轮次。消息包含Parts。
Part:Message或Artifact中的基本内容单元。它可以是TextPart、FilePart(带有内联字节或URI)或DataPart(用于结构化JSON,例如表单)。
Artifact:表示智能体在任务过程中生成的输出(例如,生成的文件、最终的结构化数据)。Artifacts也包含Parts。
Streaming:对于长时间运行的任务,支持streaming能力的服务器可以使用tasks/sendSubscribe。客户端接收包含TaskStatusUpdateEvent或TaskArtifactUpdateEvent消息的服务器发送事件(SSE),提供实时进度。
Push Notifications:支持pushNotifications的服务器可以主动将任务更新发送到客户端提供的 webhook URL,通过tasks/pushNotification/set配置。
A2A协议的典型工作流程包括以下步骤:
发现:客户端从服务器的知名URL获取Agent Card。
初始化:客户端发送tasks/send或tasks/sendSubscribe请求,包含初始用户消息和唯一任务ID。
处理:
流式处理:服务器发送SSE事件(状态更新、Artifacts)随着任务的进展。
非流式处理:服务器同步处理任务并在响应中返回最终Task对象。
交互(可选):如果任务进入需要输入的状态,客户端使用相同任务ID通过tasks/send或tasks/sendSubscribe发送后续消息。
完成:任务最终达到终端状态(已完成、失败、已取消)。
两种区别在哪?
1、区别
协议 | 核心关注点 | 交互模式 | 应用场景 | 抽象层次 |
---|---|---|---|---|
MCP | 模型与工具的连接 | 函数调用、结构化输入输出 | 工具集成、API调用、资源访问 | 低级别(具体功能) |
A2A | 代理与代理的协作 | 对话式、长时间运行的任务 | 多代理协作、复杂任务分解、服务发现 | 高级别(意图和能力) |
2、两者优缺点
协议 | 优势 | 挑战 |
---|---|---|
MCP | 结构明确,执行可预测;与现有API框架集成简单;降低了AI与工具连接的复杂性- 性能开销相对较小。 | 灵活性有限,需要明确定义每个工具;不适合处理高度动态或未知的任务- 难以表达复杂的协作需求。 |
A2A | 支持动态发现和即兴协作;适合处理开放式、复杂的任务;更接近人类团队协作的自然模式;可扩展性强,可以轻松添加新代理。 | 状态一致性管理复杂;安全性和访问控制挑战;推理开销较大;部分故障处理机制尚不成熟。 |
3、两者互补才能高效
尽管MCP和A2A关注不同的方面,但它们是互补而非竞争。在实际应用中,它们往往需要结合后使用才高效:
MCP提供了代理获取工具的标准方式,使AI模型能够与外部工具和数据源交互。
A2A提供了代理间协作的标准方式,使不同的AI代理能够协同工作,共同完成复杂任务。
使用MCP连接AI与各种工具和数据源。
使用A2A实现多代理间的协作和任务委派。
怎么搭建自己的MCP?
这里我们用Cursor来搭建自己的MCP,Cursor支持MCP协议,允许用户将Cursor连接到外部系统和数据源,从而将Cursor与现有的工具和基础设施集成,而不仅仅是处理代码的本身。
第1步:设置项目
创建一个新的项目文件夹,并在其中初始化一个新的Node.js项目:
mkdir my-mcp-servercd
my-mcp-server
npm init -y
第2步:安装依赖
安装必要的依赖项:
npm install mcp-server
第3步:创建index.js
创建一个名为index.js
的文件,并添加以下代码:
const { createServer } =require('mcp-server');
// 创建一个简单的工具
const server=createServer({
tools: {
hello: {
description: "A simple tool that says hello",
input: {
type: "object",
properties: {
name: { description: "The name to say hello to" }
}
},
asyncrun({ name }) {
return { result: `Hello, ${name}!` };
}
}
}});
server.listen();
第4步:将MCP服务器添加到Cursor
打开Cursor并在左侧边栏中点击"Settings"。
导航到"Features" > "MCP"。
3. 点击"Add new global MCP server"。
4. 选择"Command"类型。
5. 在"Command"字段中输入:node index.js。
6. 保存设置。
第5步:在Chat中使用MCP工具
打开Cursor的Chat界面
输入:
Use hello with name="World"
你将看到工具调用的批准请求
点击"Approve",然后等待结果
物理模拟技术,Gen-4的不传之秘?
使用ADK连接MCP和A2A的步骤
安装ADK:需要安装Google Agent Development Kit。这是连接MCP和A2A的基础。
配置MCP服务器:配置MCP服务器,使其能够与AI模型通信。MCP服务器是应用程序和AI模型之间的桥梁,它负责处理应用程序的请求,并将其转换为AI模型可以理解的格式。
创建A2A代理:使用ADK创建A2A代理。A2A代理是负责与其他AI代理通信的组件。它使用A2A协议与其他代理交换消息。
集成MCP服务器到A2A代理:将配置好的MCP服务器集成到A2A代理中。这样,A2A代理就可以通过MCP服务器与AI模型通信。
实现通信逻辑:实现A2A代理之间的通信逻辑。这包括定义消息格式、处理消息、执行任务等。通过这些步骤,我们可以实现通过A2A协议连接两个MCP的目标。接下来,我们将提供一个简单的示例,帮助读者更好地理解这个过程。
简单示例:通过A2A连接两个MCP
我们用两个AI代理连接两个MCP,两个代理将通过A2A协议进行通信,实现一个简单的任务:代理1将从用户那里获取一个查询,然后将这个查询发送给代理2,代理2将使用其MCP连接来回答这个问题。
# 安装必要的库
pip install google-agent-development-kit
pip install anthropic-mcp
# 导入必要的库
from google_agent_development_kit import A2AAgent
from anthropic_mcp import MCPClient
# 创建第一个MCP客户端
mcp_client_1 = MCPClient(
model_name="gpt-3.5-turbo",
api_key="your_api_key_1"
)
# 创建第二个MCP客户端
mcp_client_2 = MCPClient(
model_name="gpt-3.5-turbo",
api_key="your_api_key_2"
)
# 定义A2A代理类
class A2AConnector(A2AAgent):
def __init__(self, mcp_client):
super().__init__()
self.mcp_client = mcp_client
async def on_message(self, message):
# 处理接收到的消息
if message["role"] == "user":
# 使用MCP客户端处理用户的消息
response = await self.mcp_client.process_message(message["content"])
# 如果需要,将响应发送给另一个代理
if self.id == "agent_1":
# 发送消息给agent_2
await self.send_message(
recipient_id="agent_2",
content=response
)
else:
# 处理agent_2的响应并发送给用户
final_response = f"Final Answer: {response}"
await self.send_response(final_response)
# 创建两个A2A代理
agent_1 = A2AConnector(mcp_client_1)
agent_2 = A2AConnector(mcp_client_2)
# 设置代理ID
agent_1.id = "agent_1"
agent_2.id = "agent_2"
# 连接代理
agent_1.connect()
agent_2.connect()
# 模拟用户消息
user_message = "What is the capital of France?"
agent_1.receive_message(
message={
"role": "user",
"content": user_message
}
)
5个高质量MCP网站
1、MCPSet :https://www.mcpset.cn/,严选的高价值 MCP 收录站点。
2、shareMCP :https://sharemcp.cn/,是最大的 MCP 服务器和客户端集合,提供全面的 MCP 资源和搜索功能,是发现和探索 MCP 服务的官方资源平台。
3、MCP.so :https://mcp.so/,不仅是完整的 MCP Server,还可以找到好用的 MCP Client。
4、Smithery :https://smithery.ai/,已收录了 2211 个 MCP Servers,还会提供安装命令和 GitHub 仓库链接。
5、PulseMCP :https://www.pulsemcp.com/,收集了 1704 个 MCP Servers,还整理了 MCP Clients,也会每周更新 MCP 的相关新闻。
最后为了让大家能更快的提升大家AI方面的知识,我特别为粉丝准备了免费领取价值99的,3天的体验破解卡,为你开启AI的学习之旅。
扫码
链接我领礼包
「 往期DeepSeek精选文章 」
8个超能创意1.0实操,带你了解这次豆包的AI绘画为什么会这么火!
一键阅读100篇爆款笔记,同时完成二创,纳米MCP万能工具箱这次牛逼了!
百度突然发力吗,上线两款免费大模型,性能超越DeepSeek-R1,直逼GPT-4.5?
没有评论:
发表评论