(按上方圖片以觀看本課程的影片)
隨著 AI 代理的使用增加,也愈來愈需要確保標準化、安全性,並支援開放創新的協議。在本課程中,我們將介紹三種旨在滿足此需求的協議 —— 模型上下文協議 (Model Context Protocol, MCP)、代理對代理 (Agent-to-Agent, A2A) 以及 自然語言網頁 (Natural Language Web, NLWeb)。
在本課程中,我們將涵蓋:
• MCP 如何允許 AI 代理存取外部工具與資料以完成使用者任務。
• A2A 如何促成不同 AI 代理之間的通訊與協作。
• NLWeb 如何將自然語言介面帶到任何網站,讓 AI 代理能發現並與內容互動。
• 識別 MCP、A2A 與 NLWeb 在 AI 代理情境中的核心目的與優點。
• 解釋 每個協議如何促進大型語言模型、工具與其他代理之間的通訊與互動。
• 認識 每個協議在建立複雜代理系統中所扮演的不同角色。
模型上下文協議 (Model Context Protocol, MCP) 是一個開放標準,提供一種標準化的方式,讓應用程式可以向大型語言模型提供上下文與工具。這使得不同資料來源與工具的「通用接頭」成為可能,AI 代理可以以一致的方式連接。
讓我們看看 MCP 的組成、與直接使用 API 相比的好處,及 AI 代理可能如何使用 MCP 伺服器的範例。
MCP 採用 客戶端-伺服器架構,核心組件包括:
• Hosts(主機) 是啟動與 MCP 伺服器連線的 LLM 應用程式(例如像 VSCode 這類的程式碼編輯器)。
• Clients(客戶端) 是主機應用程式內部的元件,負責與伺服器維持一對一的連線。
• Servers(伺服器) 是公開特定功能的輕量程式。
協議中包含三個核心原語,這些即為 MCP 伺服器的功能:
• Tools(工具):這些是 AI 代理可以呼叫以執行動作的離散操作或函數。例如,天氣服務可能公開一個「取得天氣」工具,或電子商務伺服器可能公開「購買產品」工具。MCP 伺服器在其功能清單中會公布每個工具的名稱、描述以及輸入/輸出模式。
• Resources(資源):這些是 MCP 伺服器可以提供的唯讀資料項目或文件,客戶端可以按需檢索。例如檔案內容、資料庫記錄或記錄檔。資源可以是文字(如程式碼或 JSON)或二進位(如影像或 PDF)。
• Prompts(提示):這些是預先定義的範本,提供建議的提示,用以支援更複雜的工作流程。
MCP 為 AI 代理帶來顯著優勢:
• 動態工具發現:代理可以動態接收伺服器提供的可用工具清單以及它們的功能描述。這與傳統 API 不同,傳統 API 常需靜態編碼整合,任何 API 變更都需要程式碼更新。MCP 採取「整合一次」的方式,帶來更高的適應性。
• 跨 LLM 的互通性:MCP 可跨不同大型語言模型運作,提供在核心模型之間切換以評估較佳效能的彈性。
• 標準化的安全性:MCP 包含標準的驗證方法,在新增對其他 MCP 伺服器的存取時可提升擴展性。這比管理多種傳統 API 的金鑰與驗證類型更簡單。

想像有位使用者想用 AI 助手透過 MCP 預訂機票。
連線:AI 助手(即 MCP 客戶端)連接到由航空公司提供的 MCP 伺服器。
工具發現:客戶端詢問航空公司的 MCP 伺服器:「你們有哪些可用的工具?」伺服器回應如「搜尋航班」和「訂票」等工具。
呼叫工具:你接著請 AI 助手:「請幫我搜尋從波特蘭到火奴魯魯的航班。」AI 助手使用其大型語言模型,判斷需要呼叫「搜尋航班」工具,並將相關參數(出發地、目的地)傳給 MCP 伺服器。
執行與回應:MCP 伺服器作為封裝器,實際呼叫航空公司的內部訂票 API。然後接收航班資訊(例如 JSON 資料)並回傳給 AI 助手。
進一步互動:AI 助手呈現航班選項。當你選定某班航班後,助手可能會在同一 MCP 伺服器上呼叫「訂票」工具,完成訂位。
當 MCP 專注於連接大型語言模型與工具時,代理對代理協議 (Agent-to-Agent, A2A) 更進一步,讓不同 AI 代理之間得以通訊與協作。A2A 將不同組織、環境與技術堆疊的 AI 代理連接起來,以完成共同的任務。
我們將檢視 A2A 的組件與優點,並以旅遊應用為例說明其應用方式。
A2A 著重於使代理之間能夠溝通並協同完成使用者的子任務。協議中的每個組件都貢獻於此:
類似 MCP 伺服器共享工具清單的方式,Agent Card 包含:
代理執行器負責將使用者對話的上下文傳遞給遠端代理,遠端代理需要這些資訊以理解需完成的任務。在 A2A 伺服器中,代理會使用其自身的大型語言模型來解析傳入請求,並使用自己的內部工具執行任務。
當遠端代理完成所要求的任務後,其工作成果會被建立為產物。產物包含代理工作結果、已完成內容的描述,以及透過協議傳送的文字上下文。產物送出後,與遠端代理的連線會關閉,直到再次需要為止。
此組件用於處理更新與傳遞訊息。在生產環境中,對代理系統而言非常重要,以避免在任務尚未完成時代理之間的連線被關閉,特別是當任務完成時間可能較長時。
• 加強協作:它讓來自不同廠商與平台的代理能互動、分享上下文並協同工作,促成跨越傳統斷鏈系統的無縫自動化。
• 模型選擇彈性:每個 A2A 代理可決定使用哪個大型語言模型來處理其請求,允許針對每個代理使用最佳化或微調的模型,不像某些 MCP 情況只連接單一 LLM。
• 內建驗證:驗證直接整合在 A2A 協議中,為代理互動提供強大的安全框架。

讓我們在旅遊訂票情境上做延伸,但這次使用 A2A。
使用者向多代理請求:使用者與一個「旅遊代理」A2A 客戶端/代理互動,可能會說:「請為我在下週預訂整趟去火奴魯魯的旅程,包括機票、飯店和租車」。
由旅遊代理進行協調:旅遊代理收到這個複雜請求,它使用自己的大型語言模型推理任務,判定需要與其他專門代理互動。
代理間通訊:旅遊代理接著使用 A2A 協議連接下游代理,例如由不同公司所建立的「航空代理」、「飯店代理」與「租車代理」。
委派任務執行:旅遊代理將具體任務發送給這些專門代理(例如「尋找飛往火奴魯魯的航班」、「訂飯店」、「租車」)。這些專門代理各自運行自己的大型語言模型並使用自己的工具(這些工具本身也可能是 MCP 伺服器),各自完成訂票的特定部分。
整合回應:當所有下游代理完成任務後,旅遊代理彙整結果(航班細節、飯店確認、租車預訂),並以綜合的聊天式回應回傳給使用者。
網站長期以來一直是使用者存取網際網路資訊與資料的主要方式。
讓我們來看看 NLWeb 的不同組件、NLWeb 的優點,以及透過我們的旅遊應用範例來說明 NLWeb 的運作原理。
NLWeb 應用程式(核心服務程式碼):處理自然語言問題的系統。它連接平台的不同部分以生成回應。你可以將它視為驅動網站自然語言功能的引擎。
NLWeb 協議:這是一套針對網站自然語言互動的基本規則。它以 JSON 格式(常使用 Schema.org)回傳回應。其目的是為「AI 網路」建立簡單的基礎,就像 HTML 讓文件能在線上分享一樣。
MCP 伺服器(模型上下文協議端點):每個 NLWeb 設定也同時作為一個 MCP 伺服器。這表示它可以與其他 AI 系統共享工具(如 “ask” 方法)與資料。實務上,這讓網站的內容與能力可被 AI 代理使用,使該網站成為更廣泛「代理生態系」的一部分。
Embedding 模型:這些模型用於將網站內容轉換為稱為向量(embeddings)的數值表示。這些向量以一種電腦能比較與搜尋的方式捕捉語意。它們被儲存在特殊資料庫中,使用者可以選擇要使用的 embedding 模型。
向量資料庫(檢索機制):此資料庫儲存網站內容的 embeddings。當有人提出問題時,NLWeb 會查詢向量資料庫以快速找到最相關的資訊,並提供按相似度排序的快速可能答案列表。NLWeb 可與不同的向量儲存系統合作,例如 Qdrant、Snowflake、Milvus、Azure AI Search 與 Elasticsearch。

再以我們的旅遊訂票網站為例,但這次網站由 NLWeb 提供支援。
資料攝取:旅遊網站現有的產品目錄(例如航班清單、飯店描述、旅遊套裝)會使用 Schema.org 格式化或透過 RSS feed 載入。NLWeb 的工具會攝取這些結構化資料,建立 embeddings,並將它們儲存在本地或遠端的向量資料庫中。
自然語言查詢(人類):使用者造訪網站,並非透過導覽選單,而是在聊天介面輸入:「幫我找下週在火奴魯魯有游泳池且適合家庭入住的飯店」。
NLWeb 處理:NLWeb 應用程式接收此查詢。它會將查詢送至大型語言模型以進行理解,並同時在其向量資料庫中搜尋相關的飯店清單。
準確結果:大型語言模型協助詮釋資料庫的搜尋結果,根據「適合家庭」、「有游泳池」與「火奴魯魯」等條件識別最佳匹配,然後格式化為自然語言回應。關鍵是,回應會引用網站目錄中的實際飯店,避免捏造資訊。
AI 代理互動:由於 NLWeb 同時作為 MCP 伺服器,外部的 AI 旅遊代理也可以連接到該網站的 NLWeb 實例。AI 代理接著可以使用 ask MCP 方法直接查詢網站: ask("Are there any vegan-friendly restaurants in the Honolulu area recommended by the hotel?")。NLWeb 實例會處理此請求,利用它所載入的餐廳資料庫(若有)並回傳結構化的 JSON 回應。
加入 Microsoft Foundry Discord,與其他學習者交流、參加辦公時間並提出你的 AI 代理相關問題。
免責聲明: 本文件已使用 AI 翻譯服務「Co‑op Translator」(https://github.com/Azure/co-op-translator)進行翻譯。雖然我們力求準確,但自動翻譯可能仍包含錯誤或不準確之處。原文應視為具權威性的版本;如涉及重要資訊,建議採用專業人工翻譯。我們對因使用本翻譯而引致的任何誤解或曲解概不負責。