MCP 客戶端作為您的伺服器與 MCP 伺服器之間的通訊橋樑。可以將其視為您存取 MCP 伺服器所提供所有工具的入口點。當您需要使用外部工具或服務時,客戶端會為您處理所有訊息傳遞與協定細節。
傳輸無關的通訊
MCP 的一個關鍵優勢是傳輸無關性——這是一種花式說法,意思是客戶端與伺服器可以使用不同的通訊方法彼此溝通。最常見的設定是在同一台機器上同時執行 MCP 客戶端與伺服器,它們透過標準輸入/輸出進行通訊。

但您並不侷限於這種方式。MCP 客戶端與伺服器也可以透過以下方式連接:
- HTTP
- WebSockets
- 各種其他網路協定

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

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

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

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

流程從使用者向您的伺服器提交查詢開始。您的伺服器意識到在發出請求之前,需要先向 Claude 提供可用工具的清單。

您的伺服器向 MCP 客戶端請求工具,客戶端會向 MCP 伺服器發送 ListToolsRequest,並接收回傳的 ListToolsResult。

現在您的伺服器已具備向 Claude 發出初始請求所需的一切——包括使用者的問題與可用的工具。

Claude 檢視這些工具,並判斷需要呼叫其中一個工具才能回答問題。它會以工具使用請求作為回應。

您的伺服器要求 MCP 客戶端執行 Claude 所請求的工具。MCP 客戶端會向 MCP 伺服器發送 CallToolRequest,伺服器接著向 GitHub 發出實際請求。

GitHub 回傳儲存庫資料,該資料以 CallToolResult 的形式流回 MCP 伺服器,再傳給 MCP 客戶端,最後傳回您的伺服器。

您的伺服器在後續訊息中將工具結果傳回給 Claude。Claude 現在已擁有制定完整回應所需的所有資訊。

最後,Claude 以格式化的答案回應,您的伺服器再將其傳回給使用者。
沒錯,這個流程涉及許多步驟,但每個元件都有明確的職責。MCP 客戶端抽象化了伺服器通訊的複雜性,讓您能專注於建構應用程式邏輯。當我們實作自己的 MCP 客戶端與伺服器時,您將看到每個部分在實務中如何相互配合。