随着 AI 智能体(AI Agents)的使用日益广泛,对于确保标准化、安全性并支持开放创新的协议需求也随之增长。在本课程中,我们将涵盖旨在满足这一需求的三个协议:模型上下文协议 (Model Context Protocol, MCP)、智能体间协议 (Agent to Agent, A2A) 以及自然语言网络 (Natural Language Web, NLWeb)。
导言 (Introduction)
在本课程中,我们将涵盖:
- MCP 如何允许 AI 智能体访问外部工具和数据以完成用户任务。
- A2A 如何实现不同 AI 智能体之间的通信与协作。
- NLWeb 如何为任何网站带来自然语言接口,使 AI 智能体能够发现内容并与之交互。
学习目标 (Learning Goals)
- 识别 MCP、A2A 和 NLWeb 在 AI 智能体语境下的核心用途和优势。
- 解释 每种协议如何促进大语言模型(LLM)、工具和其他智能体之间的通信与交互。
- 认识 每种协议在构建复杂的智能体系统中所扮演的独特角色。
模型上下文协议 (Model Context Protocol)
模型上下文协议 (MCP) 是一个开放标准,它为应用程序向 LLM 提供上下文和工具提供了一种标准化方式。这实现了一个连接不同数据源和工具的“通用适配器”,使 AI 智能体能够以一致的方式进行连接。
让我们看看 MCP 的组成部分、与直接使用 API 相比的优势,以及 AI 智能体如何使用 MCP 服务器的示例。
MCP 核心组件 (MCP Core Components)
MCP 基于客户端-服务器架构 (client-server architecture) 运行,其核心组件包括:
- 宿主 (Hosts):启动与 MCP 服务器连接的 LLM 应用程序(例如像 VSCode 这样的代码编辑器)。
- 客户端 (Clients):宿主应用程序中维持与服务器一对一连接的组件。
- 服务器 (Servers):暴露特定能力的轻量级程序。
协议中包含三个核心原语,即 MCP 服务器的能力:
- 工具 (Tools):这些是 AI 智能体可以调用以执行动作的离散动作或函数。例如,天气服务可能暴露一个“获取天气”工具,或者电商服务器可能暴露一个“购买产品”工具。MCP 服务器会在其能力列表中宣告每个工具的名称、描述以及输入/输出模式(Schema)。
- 资源 (Resources):这些是 MCP 服务器可以提供的只读数据项或文档,客户端可以按需检索。示例包括文件内容、数据库记录或日志文件。资源可以是文本(如代码或 JSON)或二进制(如图像或 PDF)。
- 提示词 (Prompts):这些是预定义的模板,提供建议的提示语,从而支持更复杂的协作工作流。
MCP 的优势 (Benefits of MCP)
MCP 为 AI 智能体提供了显著的优势:
- 动态工具发现:智能体可以从服务器动态接收可用工具列表及其功能描述。这与传统 API 形成对比,后者通常需要针对集成进行静态编码,这意味着任何 API 更改都必须更新代码。MCP 提供了一种“一次集成”的方法,带来了更强的适应性。
- 跨 LLM 的互操作性:MCP 适用于不同的 LLM,提供了切换核心模型以评估更佳性能的灵活性。
- 标准化安全:MCP 包含标准的身份验证方法,在增加对额外 MCP 服务器的访问时提高了可扩展性。这比为各种传统 API 管理不同的密钥和身份验证类型要简单得多。

MCP 示例 (MCP Example)
想象用户想要使用由 MCP 驱动的 AI 助手预订航班。
- 连接:AI 助手(MCP 客户端)连接到由航空公司提供的 MCP 服务器。
- 工具发现:客户端询问航空公司的 MCP 服务器:“你有哪些可用工具?”服务器回复“搜索航班”和“预订航班”等工具。
- 工具调用:接着你告诉 AI 助手:“请搜索从波特兰到檀香山的航班。”AI 助手利用其 LLM 识别出需要调用“搜索航班”工具,并将相关参数(出发地、目的地)传递给 MCP 服务器。
- 执行与响应:MCP 服务器充当包装器(Wrapper),对航空公司的内部预订 API 发起实际调用。随后接收航班信息(例如 JSON 数据)并将其发回给 AI 助手。
- 进一步交互:AI 助手展示航班选项。一旦你选择了航班,助手可能会调用同一 MCP 服务器上的“预订航班”工具,完成预订。
智能体间协议 (Agent-to-Agent Protocol / A2A)
虽然 MCP 侧重于将 LLM 连接到工具,但智能体间协议 (A2A) 更进一步,实现了不同 AI 智能体之间的通信与协作。A2A 跨越不同组织、环境和技术栈连接 AI 智能体,以完成共同任务。
我们将检查 A2A 的组件和优势,以及它如何应用于我们的旅游申请示例。
A2A 核心组件 (A2A Core Components)
A2A 专注于实现智能体之间的通信,并让他们协作完成用户的子任务。协议的每个组件都为此做出了贡献:
- 智能体卡片 (Agent Card):类似于 MCP 服务器分享工具列表,智能体卡片包含:
- 智能体名称。
- 其完成的一般任务描述。
- 带有描述的特定技能列表,帮助其他智能体(甚至人类用户)理解何时以及为何要调用该智能体。
- 智能体当前的端点 URL (Endpoint URL)。
- 智能体的版本和能力(如流式响应和推送通知)。
- 智能体执行器 (Agent Executor):负责将用户聊天的上下文传递给远程智能体,远程智能体需要这些上下文来理解需要完成的任务。在 A2A 服务器中,智能体使用自己的大语言模型 (LLM) 来解析传入的请求,并使用其内部工具执行任务。
- 工件 (Artifact):一旦远程智能体完成了请求的任务,其工作成果将作为“工件”创建。工件包含智能体工作的结论、已完成内容的描述以及通过协议发送的文本上下文。发送工件后,与远程智能体的连接将关闭,直到再次需要。
- 事件队列 (Event Queue):该组件用于处理更新和传递消息。这在生产环境的智能体系统中尤为重要,可以防止在任务完成前(特别是任务执行时间较长时)智能体之间的连接被关闭。
A2A 的优势 (Benefits of A2A)
- 增强协作:它使来自不同供应商和平台的智能体能够交互、共享上下文并协同工作,促进了传统上断连系统之间的无缝自动化。
- 模型选择灵活性:每个 A2A 智能体可以自行决定使用哪个 LLM 来服务其请求,允许针对每个智能体使用优化或微调过的模型,这与某些 MCP 方案中单一 LLM 连接不同。
- 内置身份验证:身份验证直接集成到 A2A 协议中,为智能体交互提供了稳健的安全框架。
A2A 示例 (A2A Example)

让我们扩展旅游预订场景,但这次使用 A2A。
- 用户向多智能体发出请求:用户与一个“旅游管家” A2A 客户端/智能体交互,例如说:“请预订下周去檀香山的整个行程,包括航班、酒店和租车。”
- 旅游管家的编排:旅游管家接收到这个复杂的请求。它使用自己的 LLM 对任务进行推理,并确定需要与其他专业智能体交互。
- 智能体间通信:旅游管家随后使用 A2A 协议连接到下游智能体,例如由不同公司创建的“航空公司智能体”、“酒店智能体”和“租车智能体”。
- 委托任务执行:旅游管家向这些专业智能体发送特定任务(例如“寻找去檀香山的航班”、“预订酒店”、“租车”)。这些专业智能体各自运行自己的 LLM 并利用自己的工具(这些工具本身可以是 MCP 服务器),执行各自部分的预订。
- 整合响应:一旦所有下游智能体完成任务,旅游管家会汇总结果(航班详情、酒店确认、租车预订),并将综合的、对话式的回复发回给用户。
自然语言网络 (Natural Language Web / NLWeb)
长期以来,网站一直是用户获取互联网信息和数据的主要方式。让我们看看 NLWeb 的不同组件、优势以及通过旅游应用看其工作原理的示例。
NLWeb 的组件 (Components of NLWeb)
- NLWeb 应用程序(核心服务代码):处理自然语言问题的系统。它连接平台的各个部分以生成响应。你可以将其视为驱动网站自然语言功能的“引擎”。
- NLWeb 协议:这是一套用于与网站进行自然语言交互的基础规则。它以 JSON 格式(通常使用 Schema.org)返回响应。其目的是为“AI 网络”创建一个简单的基础,就像 HTML 使在线共享文档成为可能一样。
- MCP 服务器(MCP 端点):每个 NLWeb 设置也充当 MCP 服务器。这意味着它可以与其他 AI 系统共享工具(如“ask”方法)和数据。实际上,这使得网站的内容和能力可以被 AI 智能体使用,让网站成为更广泛的“智能体生态系统”的一部分。
- 嵌入模型 (Embedding Models):这些模型用于将网站内容转换为称为“向量 (Vectors)”(嵌入)的数值表示。这些向量以计算机可以比较和搜索的方式捕捉含义。它们存储在一个特殊的数据库中,用户可以选择他们想要使用的嵌入模型。
- 向量数据库(检索机制):该数据库存储网站内容的嵌入。当有人提问时,NLWeb 会检查向量数据库以快速找到最相关的信息。它会给出一个按相似度排序的可能答案列表。NLWeb 支持不同的向量存储系统,如 Qdrant、Snowflake、Milvus、Azure AI Search 和 Elasticsearch。
NLWeb 示例 (NLWeb by Example)

再次考虑我们的旅游预订网站,但这次它是由 NLWeb 驱动的。
- 数据摄取:旅游网站现有的产品目录(如航班列表、酒店描述、旅游套餐)使用 Schema.org 格式化或通过 RSS 提要加载。NLWeb 的工具摄取这些结构化数据,创建嵌入,并将其存储在本地或远程向量数据库中。
- 自然语言查询(人类):用户访问网站,不再通过菜单导航,而是在聊天界面输入:“帮我找一家檀香山下周适合家庭入住且带泳池的酒店”。
- NLWeb 处理:NLWeb 应用程序接收到此查询。它将查询发送给 LLM 进行理解,同时在其向量数据库中搜索相关的酒店列表。
- 准确的结果:LLM 帮助解读来自数据库的搜索结果,根据“适合家庭”、“泳池”和“檀香山”等标准识别出最佳匹配,然后格式化为自然语言回复。关键在于,回复引用的是网站目录中真实的酒店,避免了凭空捏造的信息。
- AI 智能体交互:由于 NLWeb 充当 MCP 服务器,外部 AI 旅游智能体也可以连接到该网站的 NLWeb 实例。AI 智能体随后可以使用 ask 这一 MCP 方法直接查询网站:ask("酒店推荐的檀香山地区是否有素食友好型餐厅?")。NLWeb 实例将处理此请求,利用其餐厅信息数据库(如果已加载),并返回结构化的 JSON 响应。
你可能也喜欢
- ♥ AI 智能体的可观测性与评估03/31
- ♥ AI 智能体中的元认知 (Metacognition in AI Agents)05/24
- ♥ 构建值得信赖的 AI 智能体04/19
- ♥ AI 智能体与智能体用例简介03/06
- ♥ 工具使用设计模式01/19
- ♥ 智能体的上下文工程09/06

