本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
MCP 託管策略
將可用工具抽象化為 MCP 伺服器會將您的代理程式開發與可用工具分離。這將介紹託管 MCP 伺服器的位置,以及在這些伺服器內如何組織工具的挑戰。
託管方法
託管 MCP 伺服器有三個選項:在終端使用者機器本機上執行它們、遠端託管它們,或透過 MCP 閘道託管它們。每個選項都有優點和權衡。
本機託管
本機託管會在本機電腦上執行 MCP 伺服器作為子程序,以及透過標準輸入和輸出串流使用 JSON-RPC 與伺服器通訊的代理程式。此方法不需要用戶端和伺服器之間的身分驗證。工具可以與本機應用程式和檔案互動、使用本機儲存的登入資料,以及繼承使用者本機電腦的網路存取權。這是最簡單的託管模式,有幾個優點。
許多客戶使用本機伺服器開始使用 MCP。它們可讓工程師快速迭代和解決其本機環境中的各種問題。請考慮連線至工程師編碼助理我們使用的 Git 儲存庫的 MCP 伺服器。將 MCP 伺服器保留在本機很有意義,因為它可以使用工程師的唯一登入資料來存取儲存庫,而且不會將額外的網路呼叫新增至遠端 MCP 伺服器。下圖顯示與 IDE 中的編碼代理程式搭配使用的本機託管 MCP 伺服器。
對於這些類型的部署,您必須考慮如何開發和分發 MCP 伺服器。大多數客戶都會開發 MCP 登錄檔,供最終使用者註冊和下載伺服器。這與容器登錄非常類似,使用者可以搜尋特定功能,並找到符合其需求的 MCP 伺服器。
有公有 MCP 登錄檔,例如官方 MCP 登錄檔
不過,本機託管引入了組織應考慮的操作挑戰。首先,最終使用者必須獨立探索、下載和設定 MCP 伺服器。這可能會增加複雜性,以開始使用其在本機使用的每個個別 MCP 伺服器。其次,您無法控制 MCP 伺服器生命週期,這表示使用者可能會繼續在本機執行具有安全漏洞或缺少功能的過時版本。這可能會使符合合規要求變得複雜。有些 IDEs 和 CLI 工具,例如 Kiro
遠端託管
第二個選項是託管透過 HTTP 或 HTTPS 存取的遠端 MCP 伺服器。這可讓您存取任何網路連線的用戶端。使用遠端託管可讓您集中控制對 MCP 資源和功能的存取、實作身分驗證和授權,以及控制 MCP 伺服器邏輯的版本控制和更新。遠端託管仍然需要使用 MCP 登錄檔,以便最終使用者可以探索他們想要與代理程式搭配使用的 MCP 伺服器。下圖顯示遠端託管方法。
從客服人員開發的角度來看,無論 MCP 伺服器是本機或遠端,體驗都很類似。最重要的變更是實作身分驗證和授權,包括代理程式對 MCP 伺服器的存取,以及伺服器對外部資源的存取。必須仔細規劃遠端 MCP 伺服器實作,以考慮多租戶存取和權限管理。MCP 控管策略章節包含有關身分驗證和授權考量的詳細資訊。
MCP 閘道
最後一個選項是使用 MCP 閘道。MCP 閘道可做為 MCP 用戶端和伺服器之間的集中式代理,並協調對已註冊 MCP 伺服器的存取。如果沒有閘道,每個代理程式都需要註冊其可能想要使用的每個遠端 MCP 伺服器。閘道可讓代理程式連線至管理身分驗證、授權、路由和通訊協定轉譯的單一端點。新的 MCP 伺服器和工具可以動態新增,並立即提供給代理程式。下圖顯示 MCP 閘道方法。
有些閘道解決方案,例如 Docker MCP Gateway
託管 MCP 伺服器的最佳實務
-
託管選項的頻譜不是適合所有人的大小。目前大部分的 MCP 伺服器使用都是本機的。
-
當您開始使用遠端 MCP 伺服器時,您的主要考量是對 MCP 伺服器的一致身分驗證和授權,以及 MCP 伺服器如何對下游資源執行身分驗證和授權。
-
MCP 閘道可簡化託管多個遠端 MCP 伺服器的連線、身分驗證和授權。他們也提供功能,透過搜尋適用的工具來改善內容時段管理。