載入中

MCP 客戶端是您的伺服器與 MCP 伺服器之間的通訊橋樑。您可以將它視為存取 MCP 伺服器所提供所有工具的入口。當您需要使用外部功能時,客戶端會為您處理所有訊息傳遞和協定細節。

傳輸無關的通訊

MCP 的一個關鍵優勢是傳輸無關性——這是一種花式說法,意思是客戶端和伺服器可以使用不同的通訊方法互相溝通。最常見的設定是在同一台機器上同時執行 MCP 客戶端和伺服器,它們透過標準輸入/輸出進行通訊。

但您並不侷限於這種方式。MCP 客戶端和伺服器也可以透過以下方式連接:

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

訊息類型

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

ListToolsRequest/ListToolsResult: 客戶端向伺服器詢問「您提供哪些工具?」,並取得一份完整的可用功能清單。

CallToolRequest/CallToolResult: 客戶端告訴伺服器「使用這些參數執行這個特定工具」,並接收執行結果。

完整流程範例

以下說明所有環節如何在實際情境中協同運作。假設使用者詢問「我有哪些儲存庫?」——以下是完整的通訊流程:

這個流程從使用者向您的伺服器提交問題開始。但在您的伺服器向 Claude 請求協助之前,它需要先知道有哪些工具可用。

您的伺服器向 MCP 客戶端請求工具清單。客戶端向 MCP 伺服器發送 ListToolsRequest,並取得包含所有可用工具的 ListToolsResult。

現在您的伺服器已具備向 Claude 發出初始請求所需的一切:使用者的問題以及可用工具清單。

Claude 分析這些工具,並判斷需要呼叫其中一個工具來回答問題。它會回應一個工具使用請求。

您的伺服器識別出 Claude 想要執行一個工具,但您的伺服器不再直接執行工具——那是 MCP 伺服器的工作。因此它會要求 MCP 客戶端使用 Claude 指定的參數來執行該工具。

MCP 客戶端向 MCP 伺服器發送 CallToolRequest,然後 MCP 伺服器向 GitHub 發出實際請求以取得使用者的儲存庫。

GitHub 回應儲存庫資料,MCP 伺服器將其包裝成 CallToolResult 並傳回給 MCP 客戶端。

MCP 客戶端將工具結果傳回給您的伺服器,伺服器接著將其作為後續訊息的一部分傳送給 Claude。

最後,Claude 已取得所需的所有資訊,並產生類似「您的儲存庫是……」的回應,這個回應會透過您的伺服器傳回給使用者。

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