在前面的章节中,我们构建了功能完备的单体智能体,它们具备推理、工具调用和记忆能力。然而,当我们尝试构建更复杂的 AI 系统时,自然会有疑问:如何让智能体与外部世界高效交互?如何让多个智能体相互协作?

这正是智能体通信协议要解决的核心问题。本章将为 HelloAgents 框架引入三种通信协议:MCP(Model Context Protocol)用于智能体与工具的标准化通信,**A2A(Agent-to-Agent Protocol)用于智能体间的点对点协作,ANP(Agent Network Protocol)**用于构建大规模智能体网络。这三种协议共同构成了智能体通信的基础设施层。

10.1.2 三种协议设计理念比较

智能体通信协议并非单一的解决方案,而是针对不同通信场景设计的一系列标准。在本章以目前业界主流的三种协议 MCP、A2A 和 ANP 为例进行实践,下面是一个总览的比较。

(1)MCP:智能体与工具的桥梁

MCP(Model Context Protocol)由 Anthropic 团队提出[1],其核心设计理念是标准化智能体与外部工具/资源的通信方式。想象一下,你的智能体需要访问文件系统、数据库、GitHub、Slack 等各种服务。传统做法是为每个服务编写专门的适配器,这不仅工作量大,而且难以维护。MCP 通过定义统一的协议规范,让所有服务都能以相同的方式被访问。
在这里插入图片描述
(2)A2A:智能体间的对话

A2A(Agent-to-Agent Protocol)协议由 Google 团队提出2,其核心设计理念是实现智能体之间的点对点通信。与 MCP 关注智能体与工具的通信不同,A2A 关注的是智能体之间如何相互协作。这种设计让智能体能够像人类团队一样进行对话、协商和协作。

A2A 的设计哲学是"对等通信"。如图 10.2 所示,在 A2A 网络中,每个智能体既是服务提供者,也是服务消费者。智能体可以主动发起请求,也可以响应其他智能体的请求。这种对等的设计避免了中心化协调器的瓶颈,让智能体网络更加灵活和可扩展。
在这里插入图片描述
(3)ANP:智能体网络的基础设施

ANP(Agent Network Protocol)是一个概念性的协议框架3,目前由开源社区维护,还没有成熟的生态,其核心设计理念是构建大规模智能体网络的基础设施。如果说 MCP 解决的是"如何访问工具",A2A 解决的是"如何与其他智能体对话",那么 ANP 解决的是"如何在大规模网络中发现和连接智能体"。

ANP 的设计哲学是"去中心化服务发现"。在一个包含成百上千个智能体的网络中,如何让智能体能够找到它需要的服务?如图 10.3 所示,ANP 提供了服务注册、发现和路由机制,让智能体能够动态地发现网络中的其他服务,而不需要预先配置所有的连接关系。在这里插入图片描述
在这里插入图片描述

10.1.3 HelloAgents 通信协议架构设计

如图 10.4 所示,HelloAgents 的通信协议架构采用三层设计,从底层到上层分别是:协议实现层、工具封装层和智能体集成层。
在这里插入图片描述

10.2 MCP 协议实战

MCP 架构

MCP 协议采用 Host、Client、Servers 三层架构设计,让我们通过图 10.5 的场景来理解这些组件如何协同工作。

假设你正在使用 Claude Desktop 询问:“我桌面上有哪些文档?”
在这里插入图片描述
三层架构的职责:

Host(宿主层):Claude Desktop 作为 Host,负责接收用户提问并与 Claude 模型交互。Host 是用户直接交互的界面,它管理整个对话流程。

Client(客户端层):当 Claude 模型决定需要访问文件系统时,Host 中内置的 MCP Client 被激活。Client 负责与适当的 MCP Server 建立连接,发送请求并接收响应。

Server(服务器层):文件系统 MCP Server 被调用,执行实际的文件扫描操作,访问桌面目录,并返回找到的文档列表。
在这里插入图片描述
(4)MCP 的工作流程

让我们通过一个具体例子来理解 MCP 的完整工作流程,如图 10.6 所示
在这里插入图片描述
一个关键问题是:Claude(或其他 LLM)是如何决定使用哪些工具的?

当用户提出问题时,完整的工具选择流程如下:

工具发现阶段:MCP Client 连接到 Server 后,首先调用list_tools()获取所有可用工具的描述信息(包括工具名称、功能说明、参数定义)

上下文构建:Client 将工具列表转换为 LLM 能理解的格式,添加到系统提示词中。例如:

你可以使用以下工具:

  • read_file(path: str): 读取指定路径的文件内容
  • search_code(query: str, language: str): 在代码库中搜索
    Copy to clipboardErrorCopied
    模型推理:LLM 分析用户问题和可用工具,决定是否需要调用工具以及调用哪个工具。这个决策基于工具的描述和当前对话上下文

工具执行:如果 LLM 决定使用工具,Client 通过 MCP Server 执行所选工具,获取结果

结果整合:工具执行结果被送回给 LLM,LLM 结合结果生成最终回答

这个过程是完全自动化的,LLM 会根据工具描述的质量来决定是否使用以及如何使用工具。因此,编写清晰、准确的工具描述至关重要。

(5)MCP 与 Function Calling 的差异
在这里插入图片描述

10.2.3 MCP 传输方式详解

MCP 协议的一个重要特性是传输层无关性(Transport Agnostic)。这意味着 MCP 协议本身不依赖于特定的传输方式,可以在不同的通信通道上运行。HelloAgents 基于 FastMCP 2.0,提供了完整的传输方式支持,让你可以根据实际场景选择最合适的传输模式。
在这里插入图片描述

10.2.5 MCP 社区生态

MCP 协议的一个巨大优势是丰富的社区生态。Anthropic 和社区开发者已经创建了大量现成的 MCP 服务器,涵盖文件系统、数据库、API 服务等各种场景。这意味着你不需要从零开始编写工具适配器,可以直接使用这些经过验证的服务器。

这里给出 MCP 社区的三个资源库:

Awesome MCP Servers (https://github.com/punkpeye/awesome-mcp-servers)

社区维护的 MCP 服务器精选列表
包含各种第三方服务器
按功能分类,易于查找
MCP Servers Website (https://mcpservers.org/)

官方 MCP 服务器目录网站
提供搜索和筛选功能
包含使用说明和示例
Official MCP Servers (https://github.com/modelcontextprotocol/servers)

Anthropic 官方维护的服务器
质量最高、文档最完善
包含常用服务的实现
在这里插入图片描述
在这里插入图片描述

10.3 A2A 协议实战

A2A(Agent-to-Agent)是一种支持智能体之间直接通信与协作的协议。

10.3.1 协议设计动机

MCP 协议解决了智能体与工具的交互,而 A2A 协议则解决智能体之间的协作问题。在一个需要多智能体(如研究员、撰写员、编辑)协作的任务中,它们需要通信、委托任务、协商能力和同步状态。

传统的中央协调器(星型拓扑)方案存在三个主要问题:

单点故障:协调器失效导致系统整体瘫痪。
性能瓶颈:所有通信都经过中心节点,限制了并发。
扩展困难:增加或修改智能体需要改动中心逻辑。
在这里插入图片描述

10.4 ANP 协议实战

在 MCP 协议解决了工具调用、A2A 协议解决点对点智能体协作之后,ANP 协议则专注于解决大规模、开放网络环境下的智能体管理问题。
当一个网络中存在大量功能各异的智能体(例如,自然语言处理、图像识别、数据分析等)时,系统会面临一系列挑战:

服务发现:当新任务到达时,如何快速找到能够处理该任务的智能体?
智能路由:如果多个智能体都能处理同一任务,如何选择最合适的一个(如根据负载、成本等)并向其分派任务?
动态扩展:如何让新加入网络的智能体被其他成员发现和调用?
在这里插入图片描述

10.5 构建自定义 MCP 服务器

在前面的章节中,我们学习了如何使用现有的 MCP 服务。并且也了解到了不同协议的特点。现在,让我们学习如何构建自己的 MCP 服务器。

10.5.1 创建你的第一个 MCP 服务器
(1)为什么要构建自定义 MCP 服务器?

虽然可以直接使用公开的 MCP 服务,但在许多实际应用场景中,需要构建自定义的 MCP 服务器以满足特定需求。

主要动机包括以下几点:

封装业务逻辑:将企业内部特有的业务流程或复杂操作封装为标准化的 MCP 工具,供智能体统一调用。
访问私有数据:创建一个安全可控的接口或代理,用于访问内部数据库、API 或其他无法对公网暴露的私有数据源。
性能专项优化:针对高频调用或对响应延迟有严苛要求的应用场景,进行深度优化。
功能定制扩展:实现标准 MCP 服务未提供的特定功能,例如集成专有算法模型或连接特定的硬件设备。

10.6 本章总结

本章系统性地介绍了智能体通信的三种核心协议:MCP、A2A 与 ANP,并探讨了它们的设计理念、应用场景与实践方法。

协议定位:

MCP (Model Context Protocol): 作为智能体与工具之间的桥梁,提供统一的工具访问接口,适用于增强单个智能体的能力。
A2A (Agent-to-Agent Protocol): 作为智能体之间的对话系统,支持直接通信与任务协商,适用于小规模团队的紧密协作。
ANP (Agent Network Protocol): 作为智能体的“互联网”,提供服务发现、路由与负载均衡机制,适用于构建大规模、开放的智能体网络。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐