MCP与A2A
1、MCP
提问:什么是MCP?
MCP 是 Anthropic (Claude) 主导发布的一个开放的、通用的、有共识的协议标准。
MCP 是一种开放的技术协议,旨在标准化大型语言模型(LLM)与外部工具和服务的交互方式。你可以把 MCP 理解成像是一个 AI 世界的通用翻译官,让 AI 模型能够与各种各样的外部工具"对话"。
MCP 出现之前,AI 工具调用面临两大痛点:
- 1. 第一是接口碎片化:每个 LLM 使用不同的指令格式,每个工具 API 也有独特的数据结构,开发者需要为每个组合编写定制化连接代码。
- 2. 第二是开发低效:这种"一对一翻译"模式成本高昂且难以扩展,就像为每个外国客户雇佣专属翻译。
而 MCP 则采用了一种通用语言格式(JSON - RPC),一次学习就能与所有支持这种协议的工具进行交流。一个通用翻译器,不管什么 LLM,用上它就能使用工具 / 数据了。
2、MCP 架构原理:
MCP遵循客户端 - 服务器架构,包含以下几个核心部分:
MCP 主机(MCP Hosts=LLM):发起请求的 AI 应用程序。
MCP 客户端(MCP Clients):在主机程序内部,与 MCP 服务器保持 1:1 的连接。
MCP 服务器(MCP Servers):为 MCP 客户端提供上下文、工具和提示信息。
与Function calling对比:
回顾没有 MCP 的时代,为了解决复杂问题,我们不得不手动从数据库中筛选信息或使用工具来检索相关信息,并将其逐一添加到 prompt 中。处理简单问题时如需要大模型做归纳总结这种方法很奏效,但随着问题复杂度的增加,这种方法变得越来越难以应对。
为了克服这些挑战,许多大型语言模型(LLM)平台(例如 OpenAI 和 Google)引入了 function call 功能。这一机制允许模型根据需要调用预定义函数以获取数据或执行特定操作,大大提高了自动化程度。
Function Calling的工作原理
Function Calling的工作原理是:模型检测任务→选择合适的函数→传递参数→执行外部工具→整合结果到响应中。
function call 其局限性:包括对平台的高度依赖以及不同 LLM 平台间 API 实现的差异,这使得开发者在切换模型时必须重写代码,增加了开发成本。此外,还存在安全性和交互性等方面的挑战。
实际上,数据和工具一直都在那里,关键在于如何更智能、更统一地将它们与模型连接起来。Anthropic 基于这样的需求设计了 MCP,作为 AI 模型的“万能适配器”,让 LLM 能够轻松访问数据或调用工具。
MCP 的优势
- • 生态系统:MCP 提供了丰富的插件库,使您的 AI 应用可以直接利用。所有的服务提供商都可以按MCP协议进行接入,开者可以直接使用。可以预见,这个生态会越来越庞大,生态越庞大,AI的能力越强。
- • 兼容性:大家只要遵循一套协议,都可以实现“万物互联”。不限于特定的 AI 模型,任何支持 MCP 的模型都能灵活切换使用。
大模型如何智能选择Agent/工具
MCP是核心是让我们能方便地调用多个工具,那随之而来的问题是LLM(大模型)是在什么时候确定使用哪些工具的呢?
Anthropic 为我们提供了详细的解释,当用户提出一个问题时:
- • 客户端(Claude Desktop / Cursor)将问题发送给 LLM。
- • LLM 分析可用的工具,并决定使用哪一个(或多个)。
- • 客户端通过 MCP Server 执行所选的工具。
- • 工具的执行结果被送回给 LLM。
- • LLM 结合执行结果,归纳总结后生成自然语言展示给用户!
2、A2A
提问:什么是 Agent to Agent Protocol?
Agent to Agent Protocol (A2A) 是由 Google 推出的开源协议,旨在实现不透明 Agent 智能体应用程序之间的通信和互操作性。该协议使 Agent 智能体能够完成任务,而无需共享内存、想法或工具,相反,它们交换上下文、状态、指令和各自原生模态的数据。
A2A 作为一个开放协议,充分考虑了 Agent 在和用户、企业打通的过程中所面临的一些挑战,其主要功能特性有以下四点:
- • 安全协作(Secure Collaboration):通过引入认证/授权机制,保证 Agent 之间的身份互信。
- • 任务状态管理(Task and state mgmt):实现了 Agent 之间互操作任务以及任务状态的可管理性。
- • 用户体验协商(UX negotiation):不同的 Agent 通过协商的方式,对用户提供无缝的体验。
- • 功能发现(Capability discovery):提供了 Agent 之间相互发现各自能力的机制。
除此之外,A2A 也在企业的无缝接入、简化集成方面,有比较好的考量。
A2A 协议原理:
A2A 中包含三个核心的参与者:
- • User
- • Client Agent
- • Remote Agent
User存在于协议中,主要的作用是用于 认证&授权 。
Client Agent 指的是任务发起者。
Server Agent 指的是任务的执行者。
Client 和 Server 之间的通信,可以理解为就是一个个简单的请求和结果的响应,只不过这个请求是一个个的任务。一个 Agent 既可以是 Client 也可以是 Server。
协议核心组件:
- • Agent Card:一个公开的 JSON 文件(通常托管在 /.well-known/agent.json),AgentCard 是 Server Agent 的名片,它主要描述了 Server Agent 的能力、认证机制等信息。Client Agent通过获取不同 Server Agent 的 AgentCard,了解不同 Server Agent 的能力,来决断具体的任务执行应该调用哪个 Server Agent 。
- • Task :是一个具有状态的实体,由Client Agent创建,其状态由Server Agent维护。一个Task用于达到特定的目标或者结果。Agent Client和Server Client在Task中交换Mesaage,Server Agent生成的结果叫做Artifact。除此之外,每个Task有一个唯一的sessionId,多个Task可以使用一个sessionId,表明多个Task属于同一个会话的一部分。
- • Message:客户端和 Agent 之间互通时用的消息对象("user" 或 "agent" 角色),其中可以包含多种类型的 Part(如文本部分、文件部分、数据部分等)在 Task执行过程中,Server Agent和Client Agent之间是通过Message完成交流的,当然,这不包括Artifact。它可以包括:Agent的思考、用户上下文、指令、错误、状态或元数据。一个Message可以包含多个Part,每个Part携带不同的内容。
- • Artifact:Server Agent 在执行任务后生成的目标结果叫做 Artifact,一个 Task 可能生成一个或者多个 Artifact。Artifacts 是不可变的,可以命名,并且可以有多个部分。流式响应可以分批次,将结果附加到现有 Artifacts上。
- • Part 是 Message 和 Artifact 的核心组成部分,代表了其携带的主要内容。每个 Part 都标识了内容类型和具体内容。
A2A工作原理:
A2A的工作原理是通过促进客户端Agent和远程Agent之间的通信来实现的。客户端Agent负责制定和传达任务,而远程Agent则根据这些任务采取行动,以提供正确的信息或执行相应的操作。
核心流程
Client Agent 和 Server Agent 之间协同工作需要经过以下几个关键步骤:
- • Server Agent 在指定站点托管自己的 AgentCard;
- • Client Agent 主动发现 AgentCard;
- • Client Agent 发起一个 Task;
- • Client Agent 设置任务通知监听;
- • Server Agent 执行任务,返回 Artifact;
- • Client Agent 获取 Artifact。
3、MCP与A2A对比
MCP 还是传统的工程思维,A2A则是站在人的思维来看待世界。
MCP的定位:提供一个规范的方式,向LLMs/Agent提供上下文。MCP强调的是LLMs/Agent为主体,MCPServer为附属的模式。
A2A强调的是Agent和Agent之间的相互操作,协议双端是对等的。
Agent-To-Agent:
Agent-To-MCP-To-Agent:
特性 | Function Calling | MCP (Model Context Protocol) | A2A (Agent-to-Agent Protocol) |
基本概念 | 允许 LLM 调用外部函数或服务,获取信息或执行操作。 | 规范 LLM 与外部数据源和工具之间上下文信息交换的开放协议。 | 旨在实现不同 AI Agent 智能体之间通信和互操作的开放协议。 |
核心定位 | LLM 与工具/服务的单向“桥梁”,使 LLM 具备“使用工具”的能力。 | LLM 与数据/工具的“万能转接头”,标准化 LLM 与外部世界的连接。 | AI Agent 之间的“外交协议”,实现跨平台 Agent 协作。 |
交互方式对比:
阶段 | Function Calling | MCP (Model Context Protocol) | A2A (Agent-to-Agent Protocol) |
用户发起 | 用户向 LLM 提出自然语言请求。 | 用户通过 MCP Host 向 LLM 提出自然语言请求。 | 用户向客户端 Agent 提出请求或任务。 |
LLM 决策 | LLM 解析用户意图,判断是否需要调用外部函数。 | LLM 解析用户意图,决定是否需要调用外部工具。 | 客户端 Agent 解析任务意图,通过能力发现机制寻找远程 Agent。 |
调用生成 | LLM 生成结构化 JSON 函数调用请求。 | LLM 决策后,MCP Client 被激活,连接到 MCP Server。 | 客户端 Agent 识别合适远程 Agent 后,创建并委派任务。 |
外部执行 | 外部应用程序/系统执行函数,返回结果给 LLM。 | MCP Server 执行操作,结果返回给 MCP Client,再到 LLM。 | 远程 Agent 执行任务,生成制品,并通过消息交换。 |
结果呈现 | LLM 整合结果,生成自然语言响应给用户。 | LLM 整合结果,生成自然语言响应给 MCP Host,再到用户。 | 远程 Agent 将制品通过消息返回客户端 Agent,最终呈现给用户。 |
优缺点对比:
Function Calling
优点:
- • 简单直接: 实现相对简单,易于理解和上手,是 LLM 与外部工具交互的入门级方案。
- • 广泛支持: 多数主流 LLM 平台(如 OpenAI、Google)都提供了 Function Calling 的能力。
- • 增强 LLM 能力: 显著扩展了 LLM 的应用范围,使其能够处理实时数据和执行外部操作。
缺点: - • 平台依赖性: 不同 LLM 厂商的 Function Calling API 实现存在差异,导致代码迁移和适配成本较高。
- • 缺乏标准化: 缺乏统一的协议标准,限制了跨平台和跨模型的互操作性。
- • 单向性: 主要侧重于 LLM 调用外部工具,对于工具之间或 Agent 之间的复杂协作支持有限。
- • 幻觉问题: LLM 可能会“幻觉”出不存在的函数或错误的参数,需要额外的错误处理机制。
MCP (Model Context Protocol)
优点:
- • 标准化: 旨在提供统一的协议标准,促进 LLM 与外部工具和数据源的互操作性。
- • 生态丰富: 鼓励开发者构建和共享 MCP Server,形成丰富的工具生态系统。
- • 解耦设计: Host、Client 和 Server 的分离,使得各部分可以独立开发和维护,提高了系统的灵活性和可扩展性。
- • 弥补 Function Calling 局限: 解决了 Function Calling 平台依赖性强、缺乏统一标准的问题。
缺点:
- • 相对较新: 作为一个较新的协议,其生态系统和社区支持仍在发展中,可能不如 Function Calling 成熟。
- • 复杂性增加: 引入了 Host、Client、Server 等概念,对于初学者来说可能比 Function Calling 更复杂。
- • 主要关注 LLM 与工具: 仍主要关注 LLM 与工具的交互,对 Agent 之间的直接协作支持不足。
A2A (Agent-to-Agent Protocol)
优点:
- • Agent 间协作: 专门为 AI Agent 之间的通信和协作设计,实现了真正的多 Agent 系统。
- • 跨平台互操作性: 打破了不同 Agent 框架和供应商之间的壁垒,促进了 Agent 生态的开放和互联。
- • 模态无关: 支持多种模态的数据交换,为构建多模态 Agent 应用提供了基础。
- • 安全与可靠: 内置企业级安全机制,并支持长时间任务和实时状态更新,提高了系统的可靠性。
- • 与 MCP 互补: 与 MCP 形成互补关系,MCP 负责 Agent 与工具的交互,A2A 负责 Agent 之间的协作,共同构建完整的 AI 应用生态。
缺点:
- • 相对较新: 与 MCP 类似,A2A 也是一个较新的协议,其生态系统和应用案例仍在发展中。
- • 关注点不同: 主要关注 Agent 之间的通信,不直接处理 LLM 与底层工具的交互,需要与其他机制(如 MCP 或 Function Calling)结合使用。
- • 复杂性: 构建多 Agent 系统本身就具有一定的复杂性,A2A 协议的引入会增加系统设计的考量。
大模型如何使用它们
模型如何使用 Function Calling
在使用 Function Calling 时,LLM 充当一个“智能决策者”和“参数提取器”。
- 1. 接收用户请求: LLM 接收用户的自然语言输入,例如“帮我查一下上海明天的天气”。
- 2. 意图识别与工具匹配: LLM 内部通过其强大的语义理解能力,识别出用户意图是“查询天气”,并将其与预先提供的工具描述(Tool Definitions)进行匹配,找到对应的 get_weather 函数。
- 3. 参数提取: LLM 从用户输入中提取出 get_weather 函数所需的参数,例如“上海”作为城市参数,“明天”作为日期参数(如果函数支持)。
- 4. 生成函数调用: LLM 不会直接执行天气查询,而是生成一个结构化的 JSON 对象,例如 {"tool_name": "get_weather", "parameters": {"city": "上海", "date": "明天"}}。这个 JSON 对象会被传递给外部的编排逻辑。
- 5. 接收结果并生成响应: 外部编排逻辑实际调用天气 API,获取天气数据,然后将结果返回给 LLM。LLM 接收到天气数据后,将其整合到对话上下文中,生成自然语言响应,例如“上海明天晴转多云,气温20-28摄氏度。”
在这个过程中,LLM 的核心作用是“理解”和“规划”,它决定了何时以及如何调用外部工具,但具体的执行由外部系统完成。
大模型如何使用 MCP
在使用 MCP 时,LLM 扮演着“智能指挥官”的角色,通过 MCP Client 指挥 MCP Server 执行任务。
- 1. 接收用户请求: LLM 通过 MCP Host 接收用户请求,例如“请帮我把桌面上的所有文档列出来”。
- 2. 决策与指令生成: LLM 分析用户请求,判断需要访问本地文件系统。它会生成一个内部指令,指示 MCP Client 连接到文件系统 MCP Server。
- 3. 通过 MCP Client 交互: LLM 不直接与文件系统交互,而是通过 MCP Client 发送结构化的请求给文件系统 MCP Server。MCP Client 负责处理底层的通信协议(如 JSON-RPC 2.0)。
- 4. 接收结果并生成响应: 文件系统 MCP Server 执行文件扫描操作,并将结果返回给 MCP Client,再由 MCP Client 传递给 LLM。LLM 接收到文件列表后,将其整理并生成自然语言响应,例如“您的桌面上有名为 '报告.docx'、'计划书.pdf' 等文档。”
MCP 为 LLM 提供了一个标准化的接口,使其能够以统一的方式访问各种数据源和工具,而无需关心底层实现的细节。LLM 只需要知道有哪些 MCP Server 可用,以及如何通过 MCP Client 与它们交互。
大模型如何使用 A2A
在使用 A2A 时,LLM 通常是某个 Agent 的核心大脑,或者作为 Client Agent 的一部分,与其他 Agent 进行协作。
- 1. 作为 Agent 大脑: LLM 可以作为 Client Agent 或 Remote Agent 的核心,负责理解复杂任务、制定策略、与其他 Agent 沟通和协调。
- 2. 任务委派与协作: 当 Client Agent (由 LLM 驱动) 接收到用户请求时,如果该任务需要其他 Agent 的协助,LLM 会根据其知识和能力发现机制,识别出能够处理该任务的 Remote Agent。
- 3. 消息与任务交换: LLM 会指导 Client Agent 创建一个 A2A 任务,并通过 A2A 协议向 Remote Agent 发送消息,传递任务上下文、指令和数据。例如,一个 LLM 驱动的“项目管理 Agent”可能会向“日程安排 Agent”发送一个 A2A 消息,请求安排会议。
- 4. 接收制品与整合: Remote Agent (可能也由 LLM 驱动) 执行任务后,会生成 Artifact(如会议安排结果),并通过 A2A 消息将其返回给 Client Agent。Client Agent 中的 LLM 接收到这些制品后,将其整合到整体任务流程中,并向用户提供最终的解决方案。
A2A 使得 LLM 能够超越单个模型的限制,参与到更宏大、更复杂的 Agent 协作网络中,实现分布式智能和更高级别的自动化。LLM 在此扮演着“协调者”和“决策者”的角色,驱动 Agent 之间的智能交互。
参考链接:
吴恩达教授与 Anthropic 联合推出 MCP 课程:https://www.deeplearning.ai/short-courses/mcp-build-rich-context-ai-apps-with-anthropic/
Huggingface mcp 教程 :https://huggingface.co/learn/mcp-course/unit0/introduction
开源地址:https://github.com/google/A2A
https://www.51cto.com/aigc/5447.html
https://zhuanlan.zhihu.com/p/1895786881360316389
AI Agent破局:MCP与A2A定义安全新边界
一文讲透MCP的原理及实践
A2A(Agent2Agent) 简介
AI Agent大变天!谷歌开源A2A,一夜改变智能体交互