前言
AI 解決一些上下文清晰的小題目如 LeetCode 會發現它通常有驚人的效率與準確率,然而在真實情境下 AI 通常沒有這麼厲害,因為環境上下文和需求是模糊的,如何更好的讓 AI 看清與外部世界互動能夠達成更有效率的產出,而 MCP 是一種大型語言模型的統一協定幫助達成該目標。
三階段了解為什麼需要 MCP
階段一:只有大型語言模型(LLM)
LLM 運作上完全依靠訓練資料來評估最有可能出現的下個詞彙,它的侷限性在於沒辦法達成任何訓練之外的事情,例如:了解最新的天氣資料(上下文)或寄電子郵件(工具)。
階段二:連接額外的應用程式介面(API)
所以開發者們提供了各項 API 供 LLM 呼叫使用,題在於不同 API 各自定義資料格式、驗證方式、回應結構,導致 LLM 要處理不同規格的接口,整合成本很高,打造穩定體驗的工具需要耗費大量時間且容易帶來許多混亂。
階段三:模型上下文協定(MCP)
一個統一的方式提供 AI 應用上下文與工具
MCP 是 Anthropic 公佈的開源標準,提供不同環境的 SDK 方便開發者製作 MCP Server 用於更好的讓 AI 訪問資源,具體來說有三種方式:
- 工具:提供功能(像是 POST 端點,供執行代碼或副作用例如:檔案操作、API 呼叫、資料庫查詢)
- 資源:暴露資料(像是 GET 端點,供 LLM 載入資訊,例如:檔案內容、資料庫記錄、API 回應)
- 提示:定義 Prompt(像是可重複使用的 LLM 互動模板)
架構上使用者會在本地透過 MCP Host 協調和管理一個或多個 MCP Client 的 AI 應用程式如:Claude Desktop,當連接到 MCP Server 時用於:
- 建立和管理多個 Client 實例
- 控制 Client 連線權限和生命週期
- 執行安全策略和同意要求
- 處理使用者授權決策
- 協調 AI/LLM 整合和取樣
- 管理跨 Client 的上下文聚合
而每個 MCP Client 維護與 MCP Server 的連線並取得資源供 MCP Host 使用:
- 為每個 Server 建立一個有狀態會話
- 處理協議協商和功能交換
- 雙向路由協定訊息
- 管理訂閱和通知
- 維護 Server 之間的安全邊界
最後 MCP Server 是專門向 MCP Client 提供服務的程式,可以於本地建立或由第三方服務提供。
- 透過 MCP 原語公開資源、工具和提示
- 獨立運行,職責明確
- 透過 Client 介面請求採樣
- 必須遵守安全約束
- 可以是本地應用或遠端服務
總結
- 現代開發者:可以用更統一且規範化的方式提供上下文與服務與 AI 互動
- 一般用戶:一致的方式擴充 AI 的能力。
MCP 架構使得各種 App 可以有統一的方式與 AI 進行互動,想像 USB-C 標準,各家電器廠商不用煩惱資料傳輸如何對接,只需要統一遵循相同的接口,MCP 是 AI 時代的統一溝通標準。要玩玩看 MCP 可以參考:Example Clients 與 Example Servers 有詳細的比較清單與說明。
延伸閱讀
- Introducing the Model Context Protocol - ANTHROPIC
- What is MCP? Integrate AI Agents with Databases & APIs - IBM Technology
- MCP vs API: Simplifying AI Agent Integration with External Data - IBM Technology