2025年5月4日星期日

一文告诉你,到底MCP和A2A有啥关系?(附5个优质MCP合集服务网站)

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_banner.png

所以A2A就是智能体之间的沟通渠道,就好像通用语言一样让所有智能体都能听懂。

A2A协议的核心概念

A2A协议定义了一套清晰的客户端-服务器交互模型。一个"客户端"智能体(发起请求方)与一个"远程"智能体(A2A服务器,处理请求方)通过一系列任务和消息进行通信。以下是A2A协议的核心概念:

  1. Agent Card:这是一个公开的元数据文件(通常位于/.well-known/agent.json),描述智能体的能力、技能、端点URL和认证要求。客户端使用它进行发现。

  2. A2A Server:一个智能体公开的HTTP端点,实现A2A协议方法(定义在json规范中)。它接收请求并管理任务执行。

  3. A2A Client:一个消费A2A服务的应用程序或另一个智能体。它向A2A服务器的URL发送请求(如tasks/send)。

  4. Task工作中的中心单元。客户端通过发送消息(tasks/send或tasks/sendSubscribe)来启动任务。任务具有唯一ID,并经历各种状态(已提交、处理中、需要输入、已完成、失败、已取消)。

  5. Message表示客户端(角色:"user")和智能体(角色:"agent")之间的通信轮次。消息包含Parts。

  6. PartMessage或Artifact中的基本内容单元。它可以是TextPart、FilePart(带有内联字节或URI)或DataPart(用于结构化JSON,例如表单)。

  7. Artifact表示智能体在任务过程中生成的输出(例如,生成的文件、最终的结构化数据)。Artifacts也包含Parts。

  8. Streaming对于长时间运行的任务,支持streaming能力的服务器可以使用tasks/sendSubscribe。客户端接收包含TaskStatusUpdateEvent或TaskArtifactUpdateEvent消息的服务器发送事件(SSE),提供实时进度。

  9. Push Notifications支持pushNotifications的服务器可以主动将任务更新发送到客户端提供的 webhook URL,通过tasks/pushNotification/set配置

A2A_announce.png

A2A协议的典型工作流程包括以下步骤

  1. 发现客户端从服务器的知名URL获取Agent Card

  2. 初始化:客户端发送tasks/send或tasks/sendSubscribe请求,包含初始用户消息和唯一任务ID。

  3. 处理

    • 流式处理:服务器发送SSE事件(状态更新、Artifacts)随着任务的进展。

    • 非流式处理:服务器同步处理任务并在响应中返回最终Task对象。

  4. 交互(可选)如果任务进入需要输入的状态,客户端使用相同任务ID通过tasks/send或tasks/sendSubscribe发送后续消息。

  5. 完成:任务最终达到终端状态(已完成、失败、已取消)。

a2a_demo_arch.png

两种区别在哪?

1、区别

协议核心关注点交互模式应用场景抽象层次
MCP模型与工具的连接函数调用、结构化输入输出工具集成、API调用、资源访问低级别(具体功能)
A2A代理与代理的协作对话式、长时间运行的任务多代理协作、复杂任务分解、服务发现高级别(意图和能力)

2、两者优缺点

协议优势挑战
MCP结构明确,执行可预测;与现有API框架集成简单;降低了AI与工具连接的复杂性- 性能开销相对较小。灵活性有限,需要明确定义每个工具;不适合处理高度动态或未知的任务- 难以表达复杂的协作需求。
A2A支持动态发现和即兴协作;适合处理开放式、复杂的任务;更接近人类团队协作的自然模式;可扩展性强,可以轻松添加新代理。状态一致性管理复杂;安全性和访问控制挑战;推理开销较大;部分故障处理机制尚不成熟。

3、两者互补才能高效

尽管MCP和A2A关注不同的方面,但它们是互补而非竞争。在实际应用中,它们往往需要结合后使用才高效:

  1. MCP提供了代理获取工具的标准方式,使AI模型能够与外部工具和数据源交互。

  2. A2A提供了代理间协作的标准方式,使不同的AI代理能够协同工作,共同完成复杂任务。

  3. 使用MCP连接AI与各种工具和数据源。

  4. 使用A2A实现多代理间的协作和任务委派。

怎么搭建自己的MCP?

这里我们用Cursor来搭建自己的MCP,Cursor支持MCP协议,允许用户将Cursor连接到外部系统和数据源,从而将Cursor与现有的工具和基础设施集成,而不仅仅是处理代码的本身。

第1步:设置项目

创建一个新的项目文件夹,并在其中初始化一个新的Node.js项目:

mkdir my-mcp-servercd my-mcp-servernpm 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

  1. 打开Cursor并在左侧边栏中点击"Settings"。

  2. 导航到"Features" > "MCP"。

图片

   3. 点击"Add new global MCP server"。

   4. 选择"Command"类型。

   5. 在"Command"字段中输入:node index.js。

   6. 保存设置。

图片

第5步:在Chat中使用MCP工具

  1. 打开Cursor的Chat界面

  2. 输入:Use hello with name="World"

  3. 你将看到工具调用的批准请求

  4. 点击"Approve",然后等待结果

图片

物理模拟技术,Gen-4的不传之秘?

使用ADK连接MCP和A2A的步骤

  1. 安装ADK需要安装Google Agent Development Kit。这是连接MCP和A2A的基础。

  2. 配置MCP服务器配置MCP服务器,使其能够与AI模型通信。MCP服务器是应用程序和AI模型之间的桥梁,它负责处理应用程序的请求,并将其转换为AI模型可以理解的格式。

  3. 创建A2A代理使用ADK创建A2A代理。A2A代理是负责与其他AI代理通信的组件。它使用A2A协议与其他代理交换消息。

  4. 集成MCP服务器到A2A代理将配置好的MCP服务器集成到A2A代理中。这样,A2A代理就可以通过MCP服务器与AI模型通信。

  5. 实现通信逻辑实现A2A代理之间的通信逻辑。这包括定义消息格式、处理消息、执行任务等。通过这些步骤,我们可以实现通过A2A协议连接两个MCP的目标。接下来,我们将提供一个简单的示例,帮助读者更好地理解这个过程。

简单示例:通过A2A连接两个MCP

我们用两个AI代理连接两个MCP,两个代理将通过A2A协议进行通信,实现一个简单的任务:代理1将从用户那里获取一个查询,然后将这个查询发送给代理2,代理2将使用其MCP连接来回答这个问题。

# 安装必要的库pip install google-agent-development-kitpip install anthropic-mcp
# 导入必要的库from google_agent_development_kit import A2AAgentfrom 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)
# 设置代理IDagent_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?

GitHup上爆火的两个平替Manus开源项目,其中一个居然在GAIA测试开源得了第一!

Manus使用的四种渠道,尤其是最后一种完全没有使用限制!

1分钟秒读懂Manus,这款顶级AI智能体凭什么估值45亿美元?邀请码竟卖到50000一个!(附三种申请方法)

没有评论:

发表评论

一文告诉你,到底MCP和A2A有啥关系?(附5个优质MCP合集服务网站)

MCP + A2A = 超高效的智能体调用   点击下方,关注后台回复 【666】 ,免费领取 【DeepSeek学习礼包】       大家好,我是凡人。 在近一年中AI智能体的发展就像坐着火箭, 各行业的企业在实际业务应用中都在不断融入AI智能体( Agent )来提质增...