第一次知道 Mark3labs 開發的 MCP Go 工具是因為 MCP Grafana 是基於該工具開發出來的。看了一下後,真的很容易就能開發出自己的 MCP Server。同時他也支援 STDIO
與 SSE
兩種 transport 模式。
參考自 Visual Guide to Model Context Protocol (MCP)
MCP 遵從 client-server 的系統架構設計:
Host:終端用戶直接接觸的 AI 應用,如 Claude Desktop、VSCode 的 Copilot 等。Host 負責使用者介面呈現及基本的輸入處理。
Client:作為 Host 與 Server 間的通訊橋樑,類似資料庫連接物件。每個 Client 實例與特定 Server 實例保持 1:1 的耦合關係,這種設計基於:
RPC 需要嚴格的介面合約
對話型 AI 需要維持連續的上下文狀態
簡化錯誤處理與資源分配
Client 與 Server 間採用 JSON-RPC 2.0 協議交互,支援非同步操作及結構化錯誤處理。Client 實現自動重連及請求重試機制,確保系統穩定性。
Server:提供核心功能(Capabilities)的服務層,遵循介面穩定原則。Server 能夠:
在保持 API 相容性的前提下進行內部升級
適配外部服務(如資料庫、SaaS API)的版本變更
處理認證、授權
提供預先配置的 Prompt
Server 能組成叢集,透過 DNS 服務註冊與發現機制實現水平擴展
整體架構採用服務隔離設計,每個 Server 實例可專注於特定功能域,提高系統彈性及可維護性。