MCP 課程文件
MCP 的架構元件
並獲得增強的文件體驗
開始使用
MCP 的架構元件
在上一節中,我們討論了 MCP 的關鍵概念和術語。現在,讓我們深入探討構成 MCP 生態系統的架構元件。
主機、客戶端和伺服器
模型上下文協議 (MCP) 建立在客戶端-伺服器架構之上,該架構實現了 AI 模型和外部系統之間的結構化通訊。
MCP 架構由三個主要元件組成,每個元件都有明確定義的角色和職責:主機、客戶端和伺服器。我們在上一節中提到了這些內容,但讓我們深入瞭解每個元件及其職責。
主機
主機是使用者直接互動的面向使用者的 AI 應用程式。
示例包括
- AI 聊天應用,如 OpenAI ChatGPT 或 Anthropic 的 Claude Desktop
- AI 增強型 IDE,如 Cursor,或與 Continue.dev 等工具的整合
- 使用 LangChain 或 smolagents 等庫構建的自定義 AI 代理和應用程式
主機的職責包括
- 管理使用者互動和許可權
- 透過 MCP 客戶端啟動與 MCP 伺服器的連線
- 協呼叫戶請求、LLM 處理和外部工具之間的整體流程
- 以一致的格式向用戶呈現結果
在大多數情況下,使用者將根據自己的需求和偏好選擇其主機應用程式。例如,開發人員可能會選擇 Cursor,因為它具有強大的程式碼編輯功能,而領域專家可能會使用 smolagents 中構建的自定義應用程式。
客戶端
客戶端是主機應用程式中的一個元件,用於管理與特定 MCP 伺服器的通訊。主要特點包括
- 每個客戶端與單個伺服器保持 1:1 連線
- 處理 MCP 通訊的協議級詳細資訊
- 充當主機邏輯和外部伺服器之間的中介
伺服器
伺服器是外部程式或服務,透過 MCP 協議向 AI 模型公開功能。伺服器
- 提供對特定外部工具、資料來源或服務的訪問
- 充當現有功能的輕量級包裝器
- 可以在本地(與主機在同一臺機器上)或遠端(透過網路)執行
- 以客戶端可以發現和使用的標準化格式公開其功能
通訊流程
讓我們看看這些元件在典型的 MCP 工作流中如何互動
在下一節中,我們將深入探討使這些元件能夠與實際示例配合使用的通訊協議。
使用者互動:使用者與主機應用程式互動,表達意圖或查詢。
主機處理:主機處理使用者的輸入,可能會使用 LLM 來理解請求並確定可能需要哪些外部功能。
客戶端連線:主機指示其客戶端元件連線到適當的伺服器。
功能發現:客戶端查詢伺服器以發現其提供哪些功能(工具、資源、提示)。
功能呼叫:根據使用者需求或 LLM 的判斷,主機指示客戶端呼叫伺服器中的特定功能。
伺服器執行:伺服器執行請求的功能並將結果返回給客戶端。
結果整合:客戶端將這些結果傳回給主機,主機將其整合到 LLM 的上下文中或直接呈現給使用者。
這種架構的一個關鍵優勢是其模組化。一個主機可以透過不同的客戶端同時連線到多個伺服器。可以在不更改現有主機的情況下將新伺服器新增到生態系統中。可以在不同伺服器之間輕鬆組合功能。
正如我們在上一節中討論的,這種模組化將傳統的 M×N 整合問題(M 個 AI 應用程式連線到 N 個工具/服務)轉換為更易於管理的 M+N 問題,其中每個主機和伺服器只需實現一次 MCP 標準。
該架構可能看起來很簡單,但其強大之處在於通訊協議的標準化以及元件之間職責的清晰分離。這種設計允許構建一個內聚的生態系統,其中 AI 模型可以與不斷增長的外部工具和資料來源無縫連線。
結論
這些互動模式受若干指導 MCP 設計和演進的關鍵原則的指導。該協議透過提供通用的 AI 連線協議來強調標準化,同時透過保持核心協議簡單但支援高階功能來保持簡潔性。透過對敏感操作要求明確的使用者批准來優先考慮安全性,並且可發現性實現了功能的動態發現。該協議在設計時考慮了可擴充套件性,透過版本控制和功能協商支援演進,並確保不同實現和環境之間的互操作性。
在下一節中,我們將探討使這些元件有效協同工作的通訊協議。
< > 在 GitHub 上更新