MCP 課程文件

MCP 的架構元件

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

MCP 的架構元件

在上一節中,我們討論了 MCP 的關鍵概念和術語。現在,讓我們深入探討構成 MCP 生態系統的架構元件。

主機、客戶端和伺服器

模型上下文協議 (MCP) 建立在客戶端-伺服器架構之上,該架構實現了 AI 模型和外部系統之間的結構化通訊。

MCP Architecture

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 工作流中如何互動

在下一節中,我們將深入探討使這些元件能夠與實際示例配合使用的通訊協議。

  1. 使用者互動:使用者與主機應用程式互動,表達意圖或查詢。

  2. 主機處理主機處理使用者的輸入,可能會使用 LLM 來理解請求並確定可能需要哪些外部功能。

  3. 客戶端連線主機指示其客戶端元件連線到適當的伺服器。

  4. 功能發現客戶端查詢伺服器以發現其提供哪些功能(工具、資源、提示)。

  5. 功能呼叫:根據使用者需求或 LLM 的判斷,主機指示客戶端呼叫伺服器中的特定功能。

  6. 伺服器執行伺服器執行請求的功能並將結果返回給客戶端

  7. 結果整合客戶端將這些結果傳回給主機,主機將其整合到 LLM 的上下文中或直接呈現給使用者。

這種架構的一個關鍵優勢是其模組化。一個主機可以透過不同的客戶端同時連線到多個伺服器。可以在不更改現有主機的情況下將新伺服器新增到生態系統中。可以在不同伺服器之間輕鬆組合功能。

正如我們在上一節中討論的,這種模組化將傳統的 M×N 整合問題(M 個 AI 應用程式連線到 N 個工具/服務)轉換為更易於管理的 M+N 問題,其中每個主機和伺服器只需實現一次 MCP 標準。

該架構可能看起來很簡單,但其強大之處在於通訊協議的標準化以及元件之間職責的清晰分離。這種設計允許構建一個內聚的生態系統,其中 AI 模型可以與不斷增長的外部工具和資料來源無縫連線。

結論

這些互動模式受若干指導 MCP 設計和演進的關鍵原則的指導。該協議透過提供通用的 AI 連線協議來強調標準化,同時透過保持核心協議簡單但支援高階功能來保持簡潔性。透過對敏感操作要求明確的使用者批准來優先考慮安全性,並且可發現性實現了功能的動態發現。該協議在設計時考慮了可擴充套件性,透過版本控制和功能協商支援演進,並確保不同實現和環境之間的互操作性

在下一節中,我們將探討使這些元件有效協同工作的通訊協議。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.