编辑推荐: |
本文主要介绍了MCP+A2A协议如何让AI从「大模型」进化到「超级分布式智能体」相关内容。希望对你的学习有帮助。
本文来自于微信公众号云上小鲸 ,由火龙果软件Linda编辑,推荐。 |
|

目前,随着大模型变得越来越强大、越来越成熟,以大模型为核心的AI智能体也进入了爆发式增长阶段,加上Dify、Coze、n8n和魔搭社区等智能体创作平台的赋能,AI智能体正在逐渐成为流程化和自动化的核心驱动力。
而现在,大家的统一目标就是:让AI智能体变得更加强大,能够自主获取最新的数据,调用外部工具来完成任务,同时,AI智能体之间还能以一个团队的形式进行分工协作,更快、更好地完成更复杂的任务。
在这个背景下,MCP和A2A协议发布了!
它们成为了AI智能体时代的交互标准,共同构建出多AI智能体生态的核心框架。☆
一、MCP协议

01什么是MCP?
由Anthropic于2024年11月推出的开源协议,旨在标准化大型语言模型(LLM)与外部工具、数据源的交互方式。
MCP类似于“AI领域的USB接口”,允许模型通过统一的协议访问数据库、API、本地文件系统等资源,无需为每个工具单独开发接口。例如,开发者可配置MCP服务器,让AI直接查询数据库或发送邮件。

MCP遵循简单的客户端-服务器架构:

MCP Hosts: 使用LLMs核心的程序,需要访问外部数据或工具(如Cursor)
MCP Clients: 与 MCP 服务器保持1 : 1的连接
MCP Servers: 轻量级程序,通过 MCP 暴露特定的功能,连接到本地或远程数据源
本地数据源: 由 MCP 服务器安全访问的文件、数据库或服务
远程服务: 由 MCP 服务器访问的互联网基 API 或服务
MCP通过开源和标准化,简化了AI模型与数据、工具和服务交互的方式,其优势如下:
简化开发: 写一次,多次集成,无需为每个集成重写自定义代码
灵活性: 切换 AI 模型或工具时无需复杂重新配置
实时响应: MCP 连接保持活动状态,实现实时上下文更新和交互
安全性与合规性: 内置访问控制和标准化的安全实践
可扩展性: 随着 AI 生态系统增长,轻松添加新功能——只需连接另一个 MCP 服务器
MCP协议通过定义 Resources(静态资源)、Prompts(提示词模板)和 Tools(可执行工具)三大核心能力,让开发者能够以模块化方式为
LLM 扩展文件系统访问、API 集成甚至物联网控制等交互能力。

02构建MCP Server
下面MCP Server示例展示:如何使用社区Go SDK(mark3labs/mcp-go)快速构建自己的
MCP Server。
主要实现当前时间的查询,支持任意时区:
package
main
import (
"context"
"fmt"
"time"
"github.com/mark3labs/mcp-go/mcp"
"github.com/mark3labs/mcp-go/server"
)
func main() {
// Create MCP server
s := server.NewMCPServer(
"Demo",
"1.0.0",
)
// Add tool
tool := mcp.NewTool(
"current time",
mcp.WithDescription("Get current time
with timezone, Asia/Shanghai is default"),
mcp.WithString(
"timezone",
mcp.Required(),
mcp.Description("current time timezone"),
),
)
// Add tool handler
s.AddTool(tool, currentTimeHandler)
// Start the stdio server
if err := server.ServeStdio(s); err != nil
{
fmt.Printf("Server error: %v\n",
err)
}
}
func currentTimeHandler(ctx context.Context,
request mcp.CallToolRequest)(*mcp.CallToolResult,
error) {
timezone, ok := request.Params.Arguments["timezone"].(string)
if !ok {
return mcp.NewToolResultError("timezone
must be a string"), nil
}
loc, err := time.LoadLocation(timezone)
if err != nil {
return mcp.NewToolResultError(fmt.Sprintf("parse
timezone with error: %v", err)), nil
}
return mcp.NewToolResultText(fmt.Sprintf(`current
time is %s`, time.Now().In(loc))), nil
}
|
然后,将代码编译成二进制文件:

03配置和应用MCP Server
下面,我在Trae工具上安装了Cline插件,配置好自己的DeepSeek API和key,再把编译好的MCP
Server配置到Cline中:

配置OK后,在Cline上创建新任务,输入任务请求:请告诉我当前的北京时间?

这时,会提示已经连接到time-mcp-server,可以查询时间,问你是否同意?
然后,点击Act切换模式,就能通过你的time-mcp-server服务器查询时间,并返回:

通过这个示例可以看出,使用MCP SDK开发一个 MCP 服务非常便捷,且该服务能够轻松集成到任何支持
MCP 协议的客户端程序中,这大大降低了服务与应用程序之间的集成难度。
二、Agent2Agent协议

01Agent2Agent协议是什么?
Agent2Agent协议(A2A)是一种开放协议,它为智能体提供了一种相互协作的标准方式,而不受底层框架或供应商的影响。由Google于2025年4月8日推出,旨在解决不同AI智能体之间的互操作性问题,得到了50多个技术合作伙伴的支持和贡献,包括Atlassian、Langchain、MongoDB、PayPal、Salesforce等。


A2A通过标准化通信格式、身份认证和任务协调机制,使得来自不同厂商或框架的智能体(如客服Agent与日程管理Agent)能够无缝协作。例如,用户可通过A2A协议让一个智能体将任务(如“安排会议”)委托给另一个智能体,并实时追踪进度。

A2A协议有三个核心参与者:
User
Client
Remote Agent(Server)
User存在于协议中,主要的作用是用于 认证&授权 。Client 代表用户向不透明智能体请求操作的实体(服务、智能体、应用程序),即任务的发起者。Remote
Agent 指的是任务的执行者。
Client 和 Server 之间的通信,可以理解为就是一个个简单的请求和结果的响应,只不过这个请求是一个个的任务。一个
Agent(智能体) 既可以是 Client 也可以是 Server。
02A2A的设计原则
设计人员建议应用程序将 A2A 智能体建模为 MCP 资源(由其 AgentCard 表示)。这样,框架就可以使用
A2A 与用户、远程智能体以及其他智能体进行通信。



设计原则:
拥抱代理能力:A2A 致力于使智能体能够以自然、非结构化的模式进行协作,即使它们不共享内存、工具和上下文。我们正在实现真正的多智能体场景,而不将智能体局限于单一的“工具”。
基于现有标准:该协议建立在现有的流行标准之上,包括 HTTP、SSE、JSON-RPC,这意味着它更容易与企业日常使用的现有技术栈集成。
默认安全:A2A 旨在支持企业级身份验证和授权,在启动时与 OpenAPI 的身份验证方案相同。
支持长时间运行的任务:在设计 A2A 时就考虑了灵活性,并支持各种场景,使其能够出色地完成各种任务,从快速任务到深度研究,这些任务可能需要数小时甚至数天的时间(如果人工参与)。在此过程中,A2A
可以为用户提供实时反馈、通知和状态更新。
与模态无关:智能体世界不仅限于文本,这就是我们设计 A2A 来支持各种模态(包括音频和视频流)的原因。
03A2A的工作原理

A2A 促进“客户端”智能体与“远程”智能体之间的通信。客户端智能体负责制定和传达任务,而远程智能体负责执行这些任务,以提供正确的信息或采取正确的行动。
核心功能:
能力发现: 智能体可以使用 JSON 格式的“智能体卡片”来宣传其能力,从而允许客户端代理识别能够执行任务的最佳智能体并利用
A2A 与远程智能体进行通信。
任务和状态管理: 客户端与远程智能体之间的通信以任务完成为导向,智能体负责执行最终用户的请求。此“任务”对象由协议定义,并具有生命周期。它可以立即完成,或者对于长时间运行的任务,每个智能体可以进行通信,彼此保持同步,了解任务的最新完成状态。
协作: 智能体可以互相发送消息来传达上下文、回复、工件或用户指令。
用户体验协商: 每条消息包含“Parts”,即完整形成的内容片段,例如生成的图像。每个Part都有指定的内容类型,允许客户端和远程智能体协商所需的正确格式,并明确包含对用户
UI 功能(例如:iframe、视频、Web 表单等)的协商。
04实际案例:候选人招聘
通过 A2A 协作,招聘软件工程师的过程可以显著简化。在 Agentspace 这样的统一界面中,用户(例如:招聘经理)可以委托其智能体寻找符合职位列表、工作地点和技能要求的候选人。然后,智能体会与其他专业智能体互动,以寻找潜在候选人。
用户收到这些建议后,可以指示其智能体安排进一步的面试,从而简化候选人寻找流程。面试流程完成后,可以联系另一位智能体协助进行背景调查。这只是
AI 智能体如何跨系统协作以寻找合格候选人的一个例子。
05未来憧憬
A2A 有望开启智能体互操作的新时代,促进创新,并创建更强大、更灵活的智能体系统。我们相信,该协议将为未来铺平道路,使智能体能够无缝协作,解决复杂问题,改善我们的生活。
三、MCP与A2A协议的关系
01通俗解释
假设有一家汽车修理店,该店雇佣了一些自主操作的工人,他们使用专用工具(例如千斤顶、万用表和套筒扳手)来诊断和维修车辆故障。这些工人经常需要诊断和修复他们从未见过的问题,维修过程可能需要与客户进行深入交流、进行研究,并与零件供应商合作。
将汽修店员工建模为 AI 智能体:
MCP 是将这些智能体与其结构化工具(比如:千斤顶)连接起来的协议。
A2A 是另一种协议,允许这些智能体(比如:用户、其他供应商与汽修店员工)之间进行沟通协作。


A2A与MCP分别代表了AI智能体生态的“横向协作”与“纵向扩展”。
MCP解决的是“如何让AI智能体使用工具”,而A2A解决的是“如何让多个AI智能体协作完成任务”。
这两者的结合将推动AI智能体从孤立的功能模块进化为动态协作的专业团队,为复杂的任务(如自动化供应链、跨学科研究)提供技术基础,极大限度地释放AI智能体的潜力。
|