使用 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)。
- MCP:讓 AI Agent 存取外部工具與資料以完成使用者任務
- A2A:讓不同 AI Agent 之間可以通訊與協作
- NLWeb:為任何網站帶來自然語言介面,讓 AI Agent 能發現並與內容互動
學習目標
- 辨識 MCP、A2A 與 NLWeb 在 AI Agent 場景中的核心用途與優勢
- 說明 各協定如何促進 LLM、工具與其他 Agent 之間的通訊與互動
- 認識 各協定在建構複雜 Agentic 系統中所扮演的獨特角色
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 的優勢
- 動態工具發現:Agent 可動態取得 Server 提供的工具清單及其描述。傳統 API 需要靜態編碼整合,API 變更就需改程式碼。MCP 採用「整合一次」的方式,適應性更高。
- 跨 LLM 互通性:MCP 跨不同 LLM 運作,讓你可彈性切換核心模型以評估效能。
- 標準化安全機制:MCP 內建標準認證方式,擴展更多 MCP Server 時更簡單,不用管理各種不同的 API Key 和認證類型。
MCP 運作範例:訂機票
- 連線:AI 助理(MCP Client)連線到航空公司提供的 MCP Server
- 工具發現:Client 詢問「有哪些工具可用?」Server 回應「search_flights」和「book_flights」
- 工具調用:使用者說「幫我搜尋波特蘭到檀香山的航班」,AI 助理使用 LLM 判斷需要呼叫 "search_flights",並傳遞出發地、目的地等參數
- 執行與回應:MCP Server 作為包裝層,實際呼叫航空公司內部訂票 API,取得航班資料(JSON)後回傳給 AI 助理
- 後續互動: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 的優勢
- 強化協作:讓不同供應商和平台的 Agent 能互動、共享上下文、共同作業,實現跨系統的無縫自動化
- 模型選擇彈性:每個 A2A Agent 可自行選擇使用哪個 LLM 來處理請求,不像某些 MCP 情境只綁定單一 LLM
- 內建認證:認證機制直接整合進 A2A 協定,為 Agent 互動提供健全的安全框架
A2A 運作範例:規劃整套旅行
- 使用者請求:使用者對「旅行 Agent」說「幫我安排下週去檀香山的整趟旅行,包含機票、飯店和租車」
- 旅行 Agent 編排:旅行 Agent 收到複雜請求,使用自己的 LLM 推理,判斷需要與其他專業 Agent 互動
- 跨 Agent 通訊:旅行 Agent 透過 A2A 協定連線到下游 Agent:由不同公司建立的「航空 Agent」「飯店 Agent」「租車 Agent」
- 委派任務執行:旅行 Agent 發送具體任務給各專業 Agent(「找檀香山航班」「訂飯店」「租車」),各 Agent 以自有 LLM 和工具(可能本身就是 MCP Server)各自完成
- 統整回應:所有下游 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 運作範例:智慧旅遊網站
- 資料導入:旅遊網站的產品目錄(航班列表、飯店描述、旅遊套裝)以 Schema.org 格式化或透過 RSS 匯入。NLWeb 工具導入結構化資料、建立 Embedding、存入向量資料庫
- 自然語言查詢:使用者造訪網站,不點選單,直接在聊天介面輸入「幫我找下週檀香山適合家庭、有游泳池的飯店」
- NLWeb 處理:NLWeb 應用程式收到查詢,送至 LLM 理解,同時搜尋向量資料庫中相關飯店清單
- 精確結果:LLM 解讀資料庫搜尋結果,根據「家庭友善」「游泳池」「檀香山」條件找出最佳匹配,以自然語言格式化回應——關鍵是回應引用的是網站目錄中的真實飯店,不會憑空捏造
- AI Agent 互動:因為 NLWeb 同時作為 MCP Server,外部 AI 旅行 Agent 也可連線至此網站的 NLWeb 實例,使用
askMCP 方法查詢:ask("飯店附近有推薦的純素食餐廳嗎?")
三種協定總覽
| 協定 | 核心功能 | 連接對象 | 典型場景 |
|---|---|---|---|
| MCP | 標準化 LLM↔工具連線 | LLM ⇄ 外部工具/資料 | AI 助理查詢天氣、操作資料庫、訂票 |
| A2A | 跨 Agent 通訊協作 | Agent ⇄ Agent | 多 Agent 協同完成複雜任務(旅行規劃) |
| NLWeb | 網站自然語言介面 | 使用者/Agent ⇄ 網站 | 智慧搜尋網站內容、網頁即 API |
本課重點回顧
- MCP = Agent 與工具的橋樑:Client-Server 架構,三種原語(Tools/Resources/Prompts),讓 Agent 動態發現並調用外部功能
- A2A = Agent 之間的共通語言:Agent Card + Executor + Artifact + Event Queue,實現跨組織、跨平台的 Agent 協作
- NLWeb = 讓網站開口說話:Embedding + 向量搜尋 + MCP 端點,任何網站都能成為 AI Agent 生態系的一員
- 三者互補:MCP 處理 Agent↔工具、A2A 處理 Agent↔Agent、NLWeb 讓網站成為可被 Agent 存取的資源