AI Agents 入門課程 · 第 11 課 / 共 18 課

使用 Agentic 通訊協定:MCP、A2A 與 NLWeb

原文:Microsoft AI Agents for Beginners · MIT 授權

一句話:當 AI Agent 生態蓬勃發展,標準化通訊協定就是讓不同 Agent 之間、Agent 與工具之間能「講共通語言」的關鍵——MCP 負責 Agent↔工具、A2A 負責 Agent↔Agent、NLWeb 負責網站↔自然語言。

導論

隨著 AI Agent 的使用日益普及,對標準化、安全且支援開放創新的通訊協定需求也與日俱增。本課將介紹三種協定:Model Context Protocol (MCP)Agent-to-Agent (A2A)Natural Language Web (NLWeb)

學習目標

Model Context Protocol (MCP)

Model Context Protocol (MCP) 是一項開放標準,為應用程式提供標準化的方式來向 LLM 提供上下文(Context)與工具(Tools)。它就像一個「通用轉接頭」,讓 AI Agent 能以一致的方式連接各種資料來源與工具。

MCP 核心元件

MCP 採用主從式架構(Client-Server),核心元件如下:

元件說明
Host(主機)LLM 應用程式(如 VSCode),負責啟動與 MCP Server 的連線
Client(客戶端)Host 應用程式內的元件,與 Server 維持一對一連線
Server(伺服器)輕量級程式,暴露特定功能給 Agent 使用

協定中包含三種核心原語(Primitives),代表 MCP Server 的能力:

原語說明範例
Tools(工具)Agent 可呼叫的獨立動作或函式天氣服務暴露 "get_weather" 工具;電商服務暴露 "purchase_product"
Resources(資源)唯讀的資料或文件,客戶端可按需擷取檔案內容、資料庫記錄、日誌檔(可為文字或二進位)
Prompts(提示模板)預定義的提示模板,支援更複雜的工作流程結構化的對話範本

MCP 的優勢

MCP 運作範例:訂機票

  1. 連線:AI 助理(MCP Client)連線到航空公司提供的 MCP Server
  2. 工具發現:Client 詢問「有哪些工具可用?」Server 回應「search_flights」和「book_flights」
  3. 工具調用:使用者說「幫我搜尋波特蘭到檀香山的航班」,AI 助理使用 LLM 判斷需要呼叫 "search_flights",並傳遞出發地、目的地等參數
  4. 執行與回應:MCP Server 作為包裝層,實際呼叫航空公司內部訂票 API,取得航班資料(JSON)後回傳給 AI 助理
  5. 後續互動:AI 助理呈現航班選項,使用者選擇後,助理呼叫同一 MCP Server 的 "book_flight" 工具完成訂位

Agent-to-Agent Protocol (A2A)

MCP 專注於連接 LLM 與工具,而 Agent-to-Agent (A2A) 協定則更進一步:讓不同 AI Agent 之間可以通訊與協作。A2A 能連結跨組織、跨環境、跨技術棧的 AI Agent,共同完成一個共享任務。

A2A 核心元件

元件說明
Agent Card類似 MCP Server 的工具清單,包含:Agent 名稱、任務描述、技能清單、Endpoint URL、版本與能力(如串流回應、推播通知)
Agent Executor負責將使用者對話的上下文傳遞給遠端 Agent,遠端 Agent 使用自己的 LLM 解析請求並以自有工具執行任務
Artifact遠端 Agent 完成任務後產出的工作成果。包含:執行結果、完成描述、透過協定傳送的文字上下文。傳送後即關閉連線
Event Queue處理更新與訊息傳遞的佇列機制。生產環境中特別重要,防止長時間任務在完成前被中斷連線

A2A 的優勢

A2A 運作範例:規劃整套旅行

  1. 使用者請求:使用者對「旅行 Agent」說「幫我安排下週去檀香山的整趟旅行,包含機票、飯店和租車」
  2. 旅行 Agent 編排:旅行 Agent 收到複雜請求,使用自己的 LLM 推理,判斷需要與其他專業 Agent 互動
  3. 跨 Agent 通訊:旅行 Agent 透過 A2A 協定連線到下游 Agent:由不同公司建立的「航空 Agent」「飯店 Agent」「租車 Agent」
  4. 委派任務執行:旅行 Agent 發送具體任務給各專業 Agent(「找檀香山航班」「訂飯店」「租車」),各 Agent 以自有 LLM 和工具(可能本身就是 MCP Server)各自完成
  5. 統整回應:所有下游 Agent 完成後,旅行 Agent 彙整結果(航班明細、飯店確認、租車預約),以完整的對話式回應回傳給使用者

Natural Language Web (NLWeb)

網站長期以來是使用者在網路上存取資訊的主要方式。NLWeb 讓任何網站都能擁有自然語言介面,AI Agent 可以發現並與內容互動。

NLWeb 核心元件

元件說明
NLWeb 應用程式處理自然語言查詢的核心服務,連接平台各元件以產生回應——可視為網站自然語言功能的「引擎」
NLWeb 協定與網站進行自然語言互動的基本規則集,以 JSON 格式(常使用 Schema.org)回傳回應。目標是為「AI Web」建立簡單基礎,如同 HTML 讓文件分享成為可能
MCP Server 端點每個 NLWeb 設定同時作為 MCP Server,可分享工具(如 "ask" 方法)與資料給其他 AI 系統,讓網站內容能被 AI Agent 使用
嵌入模型將網站內容轉換為向量(Embedding),捕捉語意以利電腦比較與搜尋。儲存在特殊資料庫中,使用者可自行選擇嵌入模型
向量資料庫儲存網站內容的 Embedding。當使用者提問時,NLWeb 查詢向量資料庫快速找到最相關的資訊,按相似度排序。支援 Qdrant、Snowflake、Milvus、Azure AI Search、Elasticsearch 等

NLWeb 運作範例:智慧旅遊網站

  1. 資料導入:旅遊網站的產品目錄(航班列表、飯店描述、旅遊套裝)以 Schema.org 格式化或透過 RSS 匯入。NLWeb 工具導入結構化資料、建立 Embedding、存入向量資料庫
  2. 自然語言查詢:使用者造訪網站,不點選單,直接在聊天介面輸入「幫我找下週檀香山適合家庭、有游泳池的飯店」
  3. NLWeb 處理:NLWeb 應用程式收到查詢,送至 LLM 理解,同時搜尋向量資料庫中相關飯店清單
  4. 精確結果:LLM 解讀資料庫搜尋結果,根據「家庭友善」「游泳池」「檀香山」條件找出最佳匹配,以自然語言格式化回應——關鍵是回應引用的是網站目錄中的真實飯店,不會憑空捏造
  5. AI Agent 互動:因為 NLWeb 同時作為 MCP Server,外部 AI 旅行 Agent 也可連線至此網站的 NLWeb 實例,使用 ask MCP 方法查詢:ask("飯店附近有推薦的純素食餐廳嗎?")

三種協定總覽

協定核心功能連接對象典型場景
MCP標準化 LLM↔工具連線LLM ⇄ 外部工具/資料AI 助理查詢天氣、操作資料庫、訂票
A2A跨 Agent 通訊協作Agent ⇄ Agent多 Agent 協同完成複雜任務(旅行規劃)
NLWeb網站自然語言介面使用者/Agent ⇄ 網站智慧搜尋網站內容、網頁即 API

本課重點回顧

  1. MCP = Agent 與工具的橋樑:Client-Server 架構,三種原語(Tools/Resources/Prompts),讓 Agent 動態發現並調用外部功能
  2. A2A = Agent 之間的共通語言:Agent Card + Executor + Artifact + Event Queue,實現跨組織、跨平台的 Agent 協作
  3. NLWeb = 讓網站開口說話:Embedding + 向量搜尋 + MCP 端點,任何網站都能成為 AI Agent 生態系的一員
  4. 三者互補:MCP 處理 Agent↔工具、A2A 處理 Agent↔Agent、NLWeb 讓網站成為可被 Agent 存取的資源

原始資源