跳至主要內容

MCP 部署指南

如何將 LiteLLM 部署為 LLM、MCP 伺服器與代理程式的中央閘道。


核心概念​

LiteLLM 是三種資源類型的單一控制平面:

資源註冊為
LLMmodel_list,可在設定檔中或透過 API
MCP Servermcp_servers,可在設定檔中或透過 UI
AgentA2A 路由

這三者都共用相同的驗證(LiteLLM API 金鑰)、速率限制,以及使用量儀表板,讓您能擁有一個集中式目錄,而不需要分開的登錄系統。


部署拓樸​

一個 LiteLLM 執行個體處理 LLM 路由、MCP 工具呼叫與 A2A 代理程式呼叫。

Agents / AI clients
│
▼
┌───────────────────────────────────┐
│ LiteLLM Gateway │
│ /v1/chat/completions (LLMs) │
│ /mcp (tools) │
│ /a2a (agents) │
└───────┬───────┬──────────┬────────┘
│ │ │
OpenAI MCP servers Downstream
Bedrock (internal) agents
Azure (public)

一個服務、一份設定、一組 API 金鑰。使用公網過濾器來控制哪些 MCP 伺服器對外部呼叫者(Claude Desktop、ChatGPT)可見,以及哪些僅限內部使用。

config.yaml
general_settings:
master_key: os.environ/LITELLM_MASTER_KEY
store_model_in_db: true
mcp_internal_ip_ranges:
- "10.0.0.0/8"
- "172.16.0.0/12"
- "192.168.0.0/16"
- "100.64.0.0/10" # VPN/Tailscale range

model_list:
- model_name: gpt-5.6-terra
litellm_params:
model: openai/gpt-5.6-terra
api_key: os.environ/OPENAI_API_KEY

mcp_servers:
internal_db:
url: http://db-mcp.internal:8000/mcp
transport: http
available_on_public_internet: false # internal callers only

web_search:
url: https://mcp.exa.ai/mcp
transport: http
available_on_public_internet: true # visible to ChatGPT / Claude Desktop (the default)

伺服器名稱不得包含連字號;代理程式在啟動時會拒絕 mcp_servers 鍵,例如 internal-db。請改用底線。


選項 B:分離的 LLM 閘道與 MCP 閘道​

分成兩個 LiteLLM 部署:一個用於 LLM 路由(不對外網暴露),一個用於 MCP 服務(可選擇對外網開放)。

Internal AI clients             External AI clients
│ (ChatGPT, Claude Desktop)
│ │
▼ ▼
┌────────────────────┐ ┌────────────────────────┐
│ LLM Gateway │ │ MCP Gateway │
│ (no public port) │ │ (port 443 / public) │
│ /v1/chat/... │ │ /mcp │
└────────┬───────────┘ └──────────┬─────────────┘
│ │
LLM providers MCP servers
(OpenAI, Bedrock, …) (internal + public)

LLM API 金鑰保留在防火牆之後。即使 MCP 閘道遭到入侵,也不會暴露這些金鑰。當需要外部 MCP 存取,但 LLM 憑證必須完全保持私密時,請使用此選項。


中央目錄​

LiteLLM 透過標準端點公開所有資源類型:

端點回傳
GET /v1/models所有已註冊的 LLM
GET /v1/mcp/server所有 MCP 伺服器
GET /mcp所有 MCP 工具(跨所有伺服器)
GET /a2a/{agent_id}/.well-known/agent-card.jsonA2A 代理程式卡片

MCP 登錄系統(可選):為 Claude Desktop / Cursor 提供一個探索端點:

config.yaml
general_settings:
enable_mcp_registry: true
Claude Desktop config
{
"mcpServers": {
"litellm": {
"url": "https://your-litellm.example.com/mcp",
"headers": { "Authorization": "Bearer sk-..." }
}
}
}

安全性考量​

開放埠問題​

如果您將 LiteLLM 的連接埠暴露到網際網路(供 Claude Desktop / ChatGPT 使用),/v1/chat/completions 也會對外可達。LLM 憑證仍由金鑰驗證保護,但請審慎處理。

緩解措施:

  1. 分開部署(選項 B):LLM 閘道永遠不會取得公開埠
  2. 防火牆 — 在網路層封鎖來自公用 IP 的 /v1/chat/completions
  3. 短效範圍限定金鑰 — 若金鑰外洩,將影響範圍降到最低

MCP 伺服器可以連到公網​

當您註冊外部 MCP URL(例如 https://mcp.exa.ai/mcp)時,LiteLLM 會在每次工具呼叫時對其發出外向請求。請確認您的網路政策允許此操作,且您的資安團隊對資料離開邊界感到放心。

針對隔離網路:只在您的邊界內註冊 MCP 伺服器,並在每個伺服器上設定 available_on_public_internet: false。預設值是 true,因此除非您明確將其設為 false,否則伺服器對外部呼叫端可見。

存取控制​

預設情況下,所有已驗證的呼叫者都可以呼叫所有 MCP 工具。使用以下方式進行限制:

控制項位置
每個金鑰的工具存取金鑰層級 MCP 權限
每個團隊的工具存取團隊層級 MCP 權限
對外部呼叫者隱藏內部伺服器available_on_public_internet
驗證請求是否經由 LiteLLM 傳入MCP Zero Trust (JWT)
在回應中阻擋敏感資料MCP 防護欄