載入中

MCP 客戶端是您的伺服器與 MCP 伺服器之間的通訊橋樑。它是您存取 MCP 伺服器所提供所有工具的入口,負責處理訊息交換與協定細節,讓您的應用程式不必親自處理這些事務。

傳輸無關的通訊

MCP 的一大優勢在於其傳輸無關性——換句話說,客戶端與伺服器可以根據您的設定,透過不同的協定進行通訊。

最常見的設定是在同一台機器上同時執行 MCP 客戶端與伺服器,透過標準輸入/輸出進行通訊。但您也可以透過以下方式連接它們:

  • HTTP
  • WebSockets
  • 其他各種網路協定

MCP 訊息類型

連接建立後,客戶端與伺服器會交換 MCP 規範中定義的特定訊息類型。您最常會用到的主要類型包括:

ListToolsRequest/ListToolsResult: 客戶端詢問伺服器「你提供哪些工具?」,並取得可用工具的清單。

CallToolRequest/CallToolResult: 客戶端要求伺服器以給定的參數執行特定工具,然後接收結果。

整體運作方式

以下是一個完整範例,展示使用者查詢如何流經整個系統——從您的伺服器,經過 MCP 客戶端,到達像 GitHub 這樣的外部服務,再回到 Claude。

假設使用者詢問「我有哪些儲存庫?」以下是逐步流程:

  1. 使用者查詢: 使用者向您的伺服器提交問題
  2. 工具發現: 您的伺服器需要知道有哪些工具可以傳送給 Claude
  3. 列出工具交換: 您的伺服器向 MCP 客戶端詢問可用的工具
  4. MCP 通訊: MCP 客戶端向 MCP 伺服器傳送 ListToolsRequest,並接收 ListToolsResult
  5. Claude 請求: 您的伺服器將使用者的查詢以及可用工具傳送給 Claude
  6. 工具使用決策: Claude 判斷需要呼叫工具才能回答問題
  7. 工具執行請求: 您的伺服器要求 MCP 客戶端執行 Claude 指定的工具
  8. 外部 API 呼叫: MCP 客戶端向 MCP 伺服器傳送 CallToolRequest,由其實際執行 GitHub API 呼叫
  9. 結果回傳: GitHub 回應儲存庫資料,該資料以 CallToolResult 的形式透過 MCP 伺服器回傳
  10. 工具結果傳回 Claude: 您的伺服器將工具結果傳回給 Claude
  11. 最終回應: Claude 使用儲存庫資料擬定最終答案
  12. 使用者取得答案: 您的伺服器將 Claude 的回應傳遞給使用者

沒錯,這個流程涉及許多步驟,但每個元件都有明確的職責。MCP 客戶端抽象化了伺服器通訊的複雜性,讓您能專注於應用程式邏輯,同時仍能存取強大的外部工具與資料來源。

理解這個流程至關重要,因為在接下來的章節中建構您自己的 MCP 客戶端與伺服器時,您將會看到所有這些環節。