MCP

MCP与其他协议的区别

在前面的课程中,我们已经对 MCP 模型上下文协议的核心机制进行详尽阐述,也明白了它在大模型工具调用时的关键作用。本章节主要介绍一下MCP和其他协议的关系和区别。 MCP与远程过程调用(RPC) 远程过程调用(RPC)是软件架构中历…

TL;DR

在前面的课程中,我们已经对 MCP 模型上下文协议的核心机制进行详尽阐述,也明白了它在大模型工具调用时的关键作用。本章节主要介绍一下MCP和其他协议的关系和区别。 MCP与远程过程调用(RPC) 远程过程调用(RPC)是软件架构中历…

在前面的课程中,我们已经对 MCP 模型上下文协议的核心机制进行详尽阐述,也明白了它在大模型工具调用时的关键作用。本章节主要介绍一下MCP和其他协议的关系和区别。

MCP与远程过程调用(RPC)

远程过程调用(RPC)是软件架构中历史悠久且至关重要的一种通信范式,其设计初衷是让程序能够像调用本地函数一样,透明地调用远程服务器上的服务。RPC的核心在于过程的同步执行和命令式控制,就是像调本地函数一样,去调远程函数。它要求调用方和被调用方之间拥有严格预定义的接口、函数签名和数据类型,通信语义聚焦于“如何执行”一个特定的操作,并期待一个确定的执行结果。 相比之下,MCP的诞生是为了服务于具有推理能力的大模型。MCP的核心在于提供结构化的上下文和工具使用指引,实现从“执行”到“决策”的转变。 RPC解决的就是执行的问题,它是一个执行引擎;而MCP解决的是“提供哪些信息和工具,让AI决定如何使用”的问题,它是一个上下文与能力的抽象。大模型通过MCP来理解外部世界的各种工具和数据,将用户的自然语言意图(例如:“帮我查询下周的天气”)转换为对MCP工具的调用。这种交互模式是意图驱动的、声明式的,它屏蔽了底层API的复杂性。 MCP 虽然在消息结构上采用了 JSON-RPC 的格式规范,但这并不意味着它建立在传统 RPC 架构之上。MCP 的通信本质是基于标准的 STDIO 或 HTTP 传输机制(SSE、Streamable HTTP),JSON-RPC 在其中仅作为消息封装和结构约定使用,而非远程过程调用语义。RPC 框架(如 Dubbo、gRPC、Feign)并不是 MCP 的技术基础,而只是RPC或者MCP,都有可能是基于HTTP协议来实现的通信。

MCP与智能体通信协议(A2A)

智能体通信协议(Agent-to-Agent Protocol,简称A2A),是近年来由Google等厂商推动的开放标准,专门用于解决多智能体系统中的智能体协作问题。 若说MCP是解决单个智能体如何使用工具的问题,那么A2A解决的就是多个智能体如何协同工作的问题。 - MCP:垂直集成与赋能 MCP专注于垂直能力集成,负责将一个大模型或智能体与它所需要的外部资源(如数据库、企业内部API、第三方工具)进行安全且标准化的连接。它保证了智能体能够有效地去操作外部世界,是智能体获工具能力的桥梁。 - A2A:水平协作与编排 A2A专注于水平协作通信,定义了智能体之间如何进行发现、协商任务、传递上下文、交换成果和管理任务生命周期的机制。它让不同的专业智能体(如“财务智能体”、“营销智能体”和“分析智能体”)能够像一个团队的成员一样,互相协调,共同解决一个复杂的、超出一个单一智能体能力范围的任务。 实际上,我们可以看出MCP和A2A完全是互补的关系,的复杂应用场景中,MCP和A2A是分工明确、相互依赖的。 比如:想象一个旅行规划的智能体系统: 1. 用户提出一个复杂需求:“帮我规划一下本周末要去南京旅游两天的行程”。 2. A2A协议开始工作,协调“行程编排代理”、“机票预订代理”和“酒店查询代理”等多个专业智能体。 3. “机票预订代理”在执行其子任务时,需要调用外部的航班查询API。这时,它会通过MCP协议连接到已经暴露的“航班工具”,安全地将查询上下文传递给工具,获取结果。 4. 代理们通过各自的MCP完成了对外部工具的操作,再通过A2A协议将各自的成果(如航班信息、酒店预订状态)反馈给“行程编排代理”进行汇总。 总之,A2A提供了智能体之间的对话和协条的规范,而MCP则提供了智能体获取外部世界工具能力的规范。两者结合,就能构建出一个既具备强大工具调用能力(MCP),又具备高效复杂任务处理能力(A2A)的多智能体应用架构。

版本提示

模型、框架与接口会持续变化。涉及版本号、参数与生产配置时,请在实践前对照对应官方文档。

LLMentor系统化学习大模型应用工程

内容来自个人课程知识库备份,并经过结构化整理。技术版本持续演进,生产使用前请结合官方文档验证。