模型上下文協定 (MCP):開發者入門指南

模型上下文協定的解讀

由 Anthropic 於 2024 年 11 月推出,MCP 是一種開放標準,經過精心設計,旨在優化 AI 模型與外部工具、資料儲存庫以及各種資源之間的互動。

Anthropic 將 MCP 設想為 LLM 的通用連接器,類似於 USB-C 在硬體連接方面帶來的標準化。這讓開發者可以透過統一的協定,將任何工具或資料來源與他們的 AI 應用程式無縫整合。MCP 秉持與語言無關的理念,並提供 Python、TypeScript、Java、Kotlin 和 C# 等語言的軟體開發套件 (SDK),消除了對客製化、一次性整合的需求。

MCP 透過兩個主要元件運作:伺服器,用於公開工具、資源和提示;以及用戶端,用於促進 AI 模型與這些伺服器之間的連接。通訊透過基於 HTTP 的 JSON-RPC 進行,可容納同步和非同步工作流程。安全是首要考量,透過明確的權限和本地優先設計來確保隱私。MCP 已獲得主要 AI 平台的支援,並且正在促進生態系統的快速成長,使其成為構建穩健、感知上下文的 AI 代理的基礎技術。

LangChain、OpenAI Agent SDK、Google Agent Developer Kit 和 Microsoft Copilot Studio 等框架和平台原生支援 MCP。

深入探討 MCP 伺服器和用戶端

代理工作流程取決於兩個關鍵要素才能自主運作:最新資料和對現有系統的存取。資料作為上下文提供給 LLM,以提供事實資訊,進而協助 LLM 做出明智的決策。一旦做出採取行動的決定,就需要對系統進行程式化存取,通常以 API 的形式公開,這些 API 會成為可用的工具。

值得注意的是,MCP 伺服器和用戶端可以獨立於任何 LLM 運作。當用戶端與 LLM 整合時,它將成為代理工作流程的基石。

在 MCP 架構中,伺服器抽象化了對資料和工具的存取。例如,資料庫可以作為資源整合到 MCP 伺服器中。用戶端擁有對此資源的唯讀存取權,用於資料檢索。資源也支援參數,以套用篩選器或限制與用戶端共用的資料。例如,員工薪資資訊是資源的理想候選者。

除了資源之外,MCP 伺服器還公開了工具,這些工具使客戶端能夠執行超出僅僅檢索資料的動作。雖然資源提供唯讀存取權,但工具促進了 API 的調用,這些 API 可以操作資料或執行動作。調用 Stripe API 來完成付款交易就是一個很好的工具範例。

除了資源和工具之外,MCP 伺服器還可以充當預定義提示的儲存庫。用戶端可以檢索這些提示並將其傳送到 LLM,從而確保提示的一致且標準化的儲存庫。

可以查詢 MCPservers 以取得它們公開的資源、工具和提示的清單,從而提供基本的探索機制。總而言之,MCP 伺服器可以向用戶端公開資源、工具和提示,而用戶端的動作則由開發者自行決定。

MCP 用戶端駐留在主機應用程式中,例如聊天機器人或代理。主機應用程式的範例包括 Claude Desktop 和 Cursor AI。開發者可以建構代理應用程式,其中多個用戶端與一個或多個 MCP 伺服器互動。

可以在不與 LLM 互動的情況下建立 MCP 用戶端。但是,用戶端可以充當 LLM 存取 MCP 伺服器的強大管道。

在典型的工作流程中,主機應用程式(例如聊天機器人或代理)連接到 MCP 伺服器,檢索可用的資源和工具,並以適合的格式將其呈現給 LLM。

根據提示,LLM 可以恢復到主機以透過 MCP 用戶端存取資源或調用工具。大多數代理框架(例如 OpenAI Agents SDK 和 Google ADK)都抽象化了此功能,從而使 LLM 和主機應用程式之間的往返變得無縫。

深入研究 MCP 伺服器和用戶端之間的通訊

通訊協定是 MCP 架構的基本層面。MCP 伺服器支援兩種傳輸協定:STDIO 和伺服器傳送事件 (SSE)。

STDIO 傳輸協定

當使用 STDIO 作為傳輸協定時,MCP 用戶端會直接調用 MCP 伺服器並提供必要的參數。然後,它會捕獲伺服器的輸出(該輸出會寫入控制台),並將其傳輸到主機應用程式。

在此情境中,用戶端和伺服器共用相同的程序。伺服器只是執行命令並立即退出。每次用戶端調用伺服器時,此過程都會重複。本質上,用戶端和伺服器在程序中運作,而不涉及任何遠端呼叫或遠端程序呼叫 (RPC)。當用戶端和伺服器駐留在同一台機器上時,此方法最適合,從而消除了長時間執行的程序造成的延遲。因此,當使用 STDIO 傳輸時,MCP 伺服器和用戶端會維持 1:1 的連線。

伺服器傳送事件 (SSE) 傳輸協定

MCP 支援的第二種傳輸協定是伺服器傳送事件 (SSE)。它使伺服器能夠透過單個持久 HTTP 連線將即時更新推送給用戶端。一旦用戶端啟動連線,伺服器就會在事件發生時串流資料,從而無需重複輪詢。此方法對於諸如即時新聞摘要或通知之類的應用程式尤其有效,在這些應用程式中,更新主要從伺服器流向用戶端。

與 REST 相比,SSE 提供更低的延遲和更高的效率,因為 REST 需要用戶端重複輪詢伺服器以獲取新資料,從而增加了開銷和延遲。SSE 還提供自動重新連線,並與大多數防火牆無縫整合,使其對於即時情境更為穩健。

MCP 利用 SSE 而不是 WebSocket 進行遠端通訊,主要是因為 SSE 為僅需要伺服器到用戶端串流的情境提供更簡單、更穩健的解決方案。SSE 在標準 HTTP 上運作,簡化了與防火牆和受限網路的整合。它還使伺服器能夠將即時更新推送給用戶端,而無需管理全雙工 WebSocket 連線的複雜性。

在 MCP 中,用戶端到伺服器的通訊透過 HTTP POST 請求進行管理,而 SSE 處理從伺服器到用戶端的串流更新,這與 AI 工具和資源通知的典型互動模式一致。與雙向且通常更複雜的 WebSocket 協定相比,此方法降低了開銷,簡化了實作,並提高了與現有基礎架構的相容性。

JSON-RPC:線路協定

雖然 SSE 充當通訊技術,但 JSON-RPC 是 MCP 使用的線路協定。JSON-RPC 是一種輕量級、無狀態的協定,專為遠端程序呼叫而設計,使其非常適合 AI 工作流程中所需的快速、動態交換。

在 MCP 中,每個互動(例如調用工具、提取資料或列出可用功能)都編碼為 JSON-RPC 訊息,其中包括方法名稱、參數和用於追蹤回應的識別碼。此方法使 MCP 用戶端和伺服器可以無縫通訊,而與其底層實作語言無關,並確保所有請求、回應和通知都遵循可預測、可互通的格式。透過建構在 JSON-RPC 之上,MCP 簡化了整合,支援錯誤處理,並使開發者能夠建立靈活、可組合的代理工作流程,這些工作流程可以與各種外部工具和資源互動。

與 STDIO 傳輸協定不同,SSE 可以支援由單個 MCP 伺服器同時服務的多個用戶端。當 MCP 伺服器遠端託管在平台即服務 (PaaS) 和無伺服器執行階段等環境中時,這尤其有利。

MCP 的主要優勢

  • 標準化整合: MCP 提供統一的協定,用於將各種工具和資料來源整合到 AI 應用程式中,從而消除了對自訂整合的需求。

  • 與語言無關: MCP 與語言無關的方法,以及適用於多種語言的 SDK,簡化了跨不同平台的開發。

  • 增強的安全性: MCP 透過明確的權限和本地優先設計來優先考慮安全性,從而確保資料隱私和保護。

  • 即時更新: SSE 支援可實現從伺服器到用戶端的即時更新,從而促進高效的資料流並減少延遲。

  • 可擴展性: MCP 的 SSE 實作允許單個伺服器同時為多個用戶端提供服務,從而增強了可擴展性和資源利用率。

  • 簡化的開發: 使用 JSON-RPC 作為線路協定簡化了整合,支援錯誤處理,並實現了靈活的工作流程組合。

  • 生態系統成長: 主要 AI 平台對 MCP 的採用正在推動生態系統的快速成長,使其成為 AI 開發的基礎技術。

MCP 的實際應用

  • 聊天機器人: MCP 使聊天機器人能夠存取外部知識庫、資料庫和 API,以提供更明智和相關的回應。

  • AI 代理: MCP 使 AI 代理能夠與外部系統互動、自動化任務並做出資料驅動的決策。

  • 資料整合: MCP 簡化了將各種資料來源整合到 AI 應用程式中的過程,從而實現了全面的分析和見解。

  • 工具編排: MCP 促進了 AI 工作流程中各種工具和服務的編排,從而優化了效能和效率。

  • 即時應用程式: MCP 的 SSE 支援可實現即時資料串流,適用於金融分析、詐欺偵測和預測性維護等應用程式。

實作 MCP:逐步指南

  1. 安裝 MCP SDK: 首先,為您偏好的程式設計語言(例如,Python、TypeScript)安裝 MCP SDK。

  2. 定義資源和工具: 確定您的 MCP 伺服器將向用戶端公開的資源和工具。

  3. 實作伺服器邏輯: 開發伺服器端邏輯以處理用戶端對資源和工具的請求。

  4. 設定安全性: 實作適當的安全性措施(例如,身份驗證和授權)以保護您的資料和服務。

  5. 建立 MCP 用戶端: 開發 MCP 用戶端以連接到伺服器並存取公開的資源和工具。

  6. 與 LLM 整合: 將 MCP 用戶端與您的 LLM 整合,以實現對外部知識和功能的存取。

  7. 測試和部署: 徹底測試您的 MCP 實作並將其部署到您的生產環境中。

MCP 的未來趨勢

  • 增強的安全性: 目前的開發重點是增強 MCP 的安全性功能,以解決新出現的威脅並確保資料隱私。

  • 改進的可擴展性: 目前正在努力進一步改進 MCP 的可擴展性和效能,以支援日益複雜的 AI 應用程式。

  • 擴展的生態系統: 預計 MCP 生態系統將繼續成長,越來越多的工具、資源和平台採用該協定。

  • 與新興技術整合: MCP 正在進行調整,以與聯合學習和分散式 AI 等新興技術整合。

  • 標準化工作: 目前的標準化工作旨在鞏固 MCP 作為 AI 整合的行業標準。

透過了解 MCP 的原理、架構和實作,開發者可以釋放 AI 的全部潛力,並建構利用外部知識、工具和服務的創新應用程式。隨著 AI 環境的不斷發展,MCP 將在塑造智慧系統的未來方面發揮越來越重要的作用。開發者必須採用此協定並利用其功能來建立更強大、感知上下文且用途廣泛的 AI 解決方案。隨著社群的成長和新用例的出現,MCP 有望成為推動人工智慧領域發展的關鍵技術。