跳至主要內容

在公開網際網路上公開 MCP

控制哪些 MCP 伺服器會對外部呼叫者(例如 ChatGPT、Claude Desktop)可見,哪些僅供內部呼叫者使用。當您希望部分 MCP 伺服器可公開存取,同時將敏感伺服器限制在私人網路內時,這非常有用。

概觀

屬性詳細資訊
說明針對 MCP 伺服器的基於 IP 存取控制 — 外部呼叫者只能看到標記為公開的伺服器
設定每個 MCP 伺服器上的 available_on_public_internet
網路設定mcp_internal_ip_rangesgeneral_settings
支援的用戶端ChatGPT、Claude Desktop、Cursor、OpenAI API,或任何 MCP 用戶端
delegate_auth_to_upstream 的互動

如果某個 MCP 伺服器是 available_on_public_internet: false(供基於 IP 探索的內部使用) 具有 delegate_auth_to_upstream: trueauth_type: oauth2(互動式 PKCE,非 M2M),匿名呼叫者仍可在沒有 LiteLLM 工作階段的情況下使用上游 OAuth /authorize 路徑。請參閱 MCP OAuth — 將驗證委派給上游 以了解詳情與緩解方式。

運作方式

當請求抵達 LiteLLM 的 MCP 端點時,LiteLLM 會檢查呼叫者的 IP 位址,以判定其是 內部 還是 外部 呼叫者:

  1. 擷取用戶端 IP 自傳入請求(在設定為位於反向代理後方時,支援 X-Forwarded-For)。
  2. 將 IP 分類 為內部或外部,方法是將其與已設定的私人 IP 範圍比對(預設為 RFC 1918:10.0.0.0/8172.16.0.0/12192.168.0.0/16127.0.0.0/8)。
  3. 過濾伺服器清單
    • 內部呼叫者 可看到所有 MCP 伺服器(公開與私人)。
    • 外部呼叫者 只能看到具有 available_on_public_internet: true 的伺服器。

此過濾會套用於每個 MCP 存取點:MCP 登錄、工具清單、工具呼叫、動態伺服器路由,以及 OAuth 探索端點。

操作流程

本操作流程涵蓋兩個流程:

  1. 新增公開的 MCP 伺服器(DeepWiki)並從 ChatGPT 連線
  2. 將現有伺服器設為私人(Exa)並驗證 ChatGPT 不再看見它

流程 1:新增公開的 MCP 伺服器(DeepWiki)

DeepWiki 是一個免費的 MCP 伺服器 — 很適合公開,以便 AI 閘道使用者可從 ChatGPT 存取。

步驟 1:建立 MCP 伺服器

前往 MCP Servers 頁面並點擊 "+ Add New MCP Server"

點擊 Add New MCP Server

建立對話框會開啟。將 "DeepWiki" 輸入為伺服器名稱。

輸入伺服器名稱

在傳輸類型下拉選單中,選擇 HTTP,因為 DeepWiki 使用 Streamable HTTP 傳輸。

選擇傳輸類型

現在向下捲動到 MCP Server URL 欄位。

設定伺服器

輸入 DeepWiki MCP URL:https://mcp.deepwiki.com/mcp

輸入 MCP 伺服器 URL

完成名稱、傳輸與 URL 填寫後,基本伺服器設定即完成。

已設定伺服器 URL

步驟 2:啟用「可在公開網際網路上使用」

在建立之前,向下捲動並展開 Permission Management / Access Control 區段。您可以在此控制誰能看見這部伺服器。

展開 Permission Management

"Available on Public Internet" 開啟。這是關鍵設定 — 它告訴 LiteLLM 外部呼叫者(例如從公開網際網路連線的 ChatGPT)應該能夠探索並使用這部伺服器。

切換 Available on Public Internet

啟用切換後,點擊 "Create" 以儲存伺服器。

點擊 Create

步驟 3:從 ChatGPT 連線

現在讓我們驗證它是否可運作。開啟 ChatGPT,尋找 MCP 伺服器圖示以新增連線。要使用的端點是 <your-litellm-url>/mcp

ChatGPT 新增 MCP 伺服器

在下拉選單中,選擇 "Add an MCP server" 以設定新連線。

ChatGPT MCP 伺服器選項

ChatGPT 會要求伺服器標籤。請給它一個容易辨識的名稱,例如 "LiteLLM"。

輸入伺服器標籤

接著輸入 Server URL。這應該是您的 LiteLLM proxy 的 MCP 端點 — <your-litellm-url>/mcp

輸入 LiteLLM MCP URL

貼上您的 LiteLLM URL,並確認其看起來正確。

已貼上 URL

ChatGPT 也需要驗證。請在驗證欄位輸入您的 LiteLLM API 金鑰,以便它可以連線到 proxy。

輸入 API 金鑰

點擊 "Connect" 建立連線。

點擊 Connect

ChatGPT 連線後會顯示可用工具。由於目前 DeepWiki 和 Exa 都標記為公開,ChatGPT 可以看到來自兩部伺服器的工具。

ChatGPT 顯示可用的 MCP 工具


流程 2:將現有伺服器設為私人(Exa)

現在讓我們反向操作 — 將目前公開的現有 MCP 伺服器(Exa)限制為僅內部存取。完成此變更後,ChatGPT 不應再看到 Exa 的工具。

步驟 1:編輯伺服器

前往 MCP Servers 表格並點擊 Exa 伺服器以開啟其詳細檢視。

Exa 伺服器總覽

切換到 "Settings" 分頁以存取編輯表單。

點擊 Settings

編輯表單會載入 Exa 目前的設定。

編輯伺服器

步驟 2:關閉「可在公開網際網路上使用」

向下捲動並展開 Permission Management / Access Control 區段,以找到公開網際網路切換。

展開權限

"Available on Public Internet" 關閉。這會對您私人網路之外的任何呼叫者隱藏 Exa。

關閉公開網際網路

點擊 "Save Changes" 套用。變更會立即生效 — 不需要重新啟動 proxy。

儲存變更

步驟 3:在 ChatGPT 中驗證

回到 ChatGPT 確認 Exa 已不再可見。您需要重新連線,讓 ChatGPT 重新取得工具清單。

ChatGPT 驗證

開啟 MCP 伺服器設定並選擇新增或重新連線伺服器。

重新連線到伺服器

輸入與先前相同的 LiteLLM MCP URL。

重新連線 URL

設定伺服器標籤。

重新連線名稱

輸入您的 API 金鑰以進行驗證。

重新連線金鑰

點擊 "Connect" 重新建立連線。

點擊 Connect

這次只會顯示 DeepWiki 的工具 — Exa 已消失。LiteLLM 偵測到 ChatGPT 是從公開 IP 呼叫,因為 Exa 已不再標記為公開,所以已將其過濾掉。您私人網路上的內部使用者仍然會看到兩部伺服器。

僅顯示 DeepWiki 工具

設定參考

每部伺服器的設定

在建立或編輯 MCP 伺服器時,於 Permission Management 區段切換 "Available on Public Internet"

自訂私人 IP 範圍

預設情況下,LiteLLM 會將 RFC 1918 私人範圍視為內部。您可以在 MCP Servers 底下的 Network Settings 分頁中自訂此設定,或透過設定:

config.yaml
general_settings:
mcp_internal_ip_ranges:
- "10.0.0.0/8"
- "172.16.0.0/12"
- "192.168.0.0/16"
- "100.64.0.0/10" # Add your VPN/Tailscale range

當留空時,會使用標準私人範圍(10.0.0.0/8172.16.0.0/12192.168.0.0/16127.0.0.0/8)。


公網 vs MCP Hub 可見性

available_on_public_internetMCP HubGET /public/mcp_hub)是兩個容易混淆的獨立機制:

顧慮由誰控制預設
外部(非私人 CIDR)呼叫端是否可以在 MCP 工具端點(list/call)看到此伺服器?伺服器上的 available_on_public_internetTrue(預設可見;切換為 false 可限制為私人 CIDR)
此伺服器是否會出現在未驗證的 GET /public/mcp_hub 廣告中?litellm.public_mcp_servers 清單,受 litellm.public_mcp_hub_strict_whitelist 控制Hub 嚴格白名單預設為開啟——只有明確列於 public_mcp_servers 的伺服器才會被廣告

預設嚴格白名單模式下,available_on_public_internet: true(預設)不會讓伺服器出現在 hub 中。若要在 hub 上廣告某個伺服器,您還需要將其加入 public_mcp_servers

Server on the hub AND visible to external callers (the default)
litellm_settings:
public_mcp_servers:
- deepwiki
# public_mcp_hub_strict_whitelist defaults to true

mcp_servers:
deepwiki:
url: https://mcp.deepwiki.com/mcp
# available_on_public_internet defaults to true

如果您設定 litellm.public_mcp_hub_strict_whitelist: false,hub 會退回為廣告所有具有 available_on_public_internet: true 的伺服器——但本頁面的基於 IP 存取篩選器仍會獨立套用至實際的工具端點。