跳轉到主要內容

Documentation Index

Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

根據預設,任何執行 Claude Code 的人都可以連接他們選擇的任何 MCP 伺服器。Anthropic 在將連接器新增到 Anthropic Directory 之前會根據其 列表標準 審查連接器,但不會對任何 MCP 伺服器進行安全審計或管理。作為管理員,您可以限制在組織中執行的伺服器,從部署固定的已批准集合到完全停用 MCP。 本頁涵蓋如何:
安全 頁面涵蓋 MCP 威脅模型以及如何在批准伺服器之前評估它。決定要強制執行的內容 涵蓋 MCP 限制以及其他管理控制。

選擇模式

Claude Code 支援一系列限制級別。每個模式使用以下機制中的一個或兩個:managed-mcp.json 用於部署固定集合,allowedMcpServers/deniedMcpServers 用於篩選使用者配置的內容。
模式功能配置
停用 MCP任何地方都不載入伺服器managed-mcp.json 包含空伺服器對應
固定部署每個使用者獲得相同的伺服器,無法新增其他伺服器managed-mcp.json 包含您想要的伺服器
已批准目錄發佈已批准伺服器的清單;使用者新增他們想要的伺服器,其他所有伺服器都被阻止allowedMcpServers + allowManagedMcpServersOnly: true
僅外掛程式伺服器伺服器只能來自外掛程式;使用者無法新增自己的伺服器strictPluginOnlyCustomization 包含清單中的 mcp
軟允許清單強制執行允許清單,使用者可以在自己的設定中擴展allowedMcpServers 不含 allowManagedMcpServersOnly
僅拒絕清單阻止已知的不良伺服器,允許其他所有伺服器deniedMcpServers
無限制使用者新增任何內容不部署任何受管 MCP 配置
Claude Code 沒有內建的 MCP 伺服器登錄表,使用者可以從中瀏覽和安裝。對於已批准目錄模式,在使用者會找到的地方(例如內部 wiki)共享已批准清單及其 claude mcp add 命令,或通過 受管外掛程式市場 將伺服器作為外掛程式分發,以便使用者可以從 /plugin 瀏覽和安裝它們。

使用 managed-mcp.json 進行獨佔控制

如果您部署 managed-mcp.json 檔案,Claude Code 只會載入該檔案定義的伺服器。使用者無法新增、修改或使用任何其他 MCP 伺服器,包括外掛程式提供的伺服器和 claude.ai 連接器。 另外兩個設定可以進一步篩選受管集合:
  • allowedMcpServersdeniedMcpServers 也適用於受管伺服器,因此不符合它們的受管伺服器將不會載入。
  • 使用者自己的 deniedMcpServers 從他們的設定中合併,因此使用者可以為自己阻止受管伺服器。
有關檢查的完整順序,請參閱 伺服器如何被評估 managed-mcp.json 是一個獨立檔案,因此無法通過 伺服器受管設定 傳遞。任何可以寫入具有管理員權限的系統路徑的程序都可以部署它。在大規模部署中,通常通過裝置管理工具進行,例如 macOS 上的 Jamf 或配置檔案、Windows 上的群組原則或 Intune,或 Linux 上您選擇的艦隊管理。Claude Code 在以下路徑之一查找該檔案:
平台路徑
macOS/Library/Application Support/ClaudeCode/managed-mcp.json
Linux 和 WSL/etc/claude-code/managed-mcp.json
WindowsC:\Program Files\ClaudeCode\managed-mcp.json
該檔案使用與專案 .mcp.json 檔案相同的格式:
{
  "mcpServers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/"
    },
    "sentry": {
      "type": "http",
      "url": "https://mcp.sentry.dev/mcp"
    },
    "company-internal": {
      "type": "stdio",
      "command": "/usr/local/bin/company-mcp-server",
      "args": ["--config", "/etc/company/mcp-config.json"],
      "env": {
        "COMPANY_API_URL": "https://internal.example.com"
      }
    }
  }
}

使用每個使用者的認證進行身份驗證

機器上的任何使用者都可以讀取此檔案,因此不要在 env 區塊中儲存 API 金鑰或其他認證。改用以下其中一種方式傳遞每個使用者的認證:

驗證配置

要確認檔案有效,請在受管機器上執行兩項檢查:
  1. claude mcp list 只顯示 managed-mcp.json 中的伺服器。如果使用者自己的伺服器仍然出現,則檔案未被讀取;檢查路徑和權限。
  2. claude mcp add --transport http test https://example.com/mcp 失敗,並顯示 Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers。URL 不需要是真實伺服器,因為原則檢查在聯繫任何內容之前拒絕該命令。

完全停用 MCP

部署包含空伺服器對應的 managed-mcp.json 以阻止每個 MCP 伺服器:
{
  "mcpServers": {}
}
使用者在 /mcp 中看不到任何 MCP 伺服器,claude mcp add 失敗,並顯示上述企業原則錯誤。使用者之前配置的伺服器在下次啟動會話時停止載入,沒有警告說明原則是原因。

使用允許清單和拒絕清單進行基於原則的控制

允許清單和拒絕清單篩選允許載入的已配置伺服器。它們不是登錄表:伺服器仍然必須由使用者、外掛程式或 managed-mcp.json 新增,然後允許清單或拒絕清單才會應用於它。要將伺服器部署給使用者,請使用 managed-mcp.json 要使允許清單具有權威性,請在 受管設定來源(例如伺服器受管設定或已部署的 managed-settings.json 檔案)中一起設定 allowedMcpServersallowManagedMcpServersOnly: true將允許清單限制為僅受管設定 顯示配置。沒有 allowManagedMcpServersOnly,來自每個設定來源的允許清單會合併,包括使用者自己的 ~/.claude/settings.json,因此使用者可以擴展您的允許清單允許的內容。拒絕清單無論如何都會從每個來源合併。
allowManagedMcpServersOnlyallowManagedPermissionRulesOnly 分開,後者鎖定 權限規則 只。設定該標誌不會強制執行 MCP 允許清單。

按 URL、命令或名稱匹配伺服器

allowedMcpServersdeniedMcpServers 是條目清單。每個條目是一個物件,具有單一鍵,用於按 URL、命令或名稱識別伺服器:
匹配用於
serverUrl遠端伺服器 URL,精確或帶有 * 萬用字元HTTP 和 SSE 伺服器
serverCommand啟動 stdio 伺服器的確切命令和引數Stdio 伺服器
serverName使用者指派的標籤。僅精確匹配;萬用字元不展開任一類型,但請參閱下面的警告
不設定 allowedMcpServers 與將其設定為空陣列不同:
設定未設定(預設)空陣列 []已填入
allowedMcpServers允許所有伺服器不允許任何伺服器僅允許匹配的伺服器
deniedMcpServers不阻止任何伺服器不阻止任何伺服器阻止匹配的伺服器
僅使用 serverName 條目的允許清單不是安全控制。名稱是使用者在執行 claude mcp add 或編輯配置檔案時指派的標籤,而不是基礎伺服器,因此使用者可以呼叫任何伺服器 github。要強制執行實際執行的伺服器,請新增 serverCommandserverUrl 條目。

伺服器如何被評估

在載入伺服器之前,包括來自 managed-mcp.json 的伺服器,Claude Code 按順序執行三項檢查:
  1. 合併清單。 來自每個設定來源的允許清單和拒絕清單條目合併為一個允許清單和一個拒絕清單。當 allowManagedMcpServersOnlytrue 時,僅保留受管允許清單;拒絕清單始終從每個來源合併。
  2. 檢查拒絕清單。 與任何拒絕清單條目匹配的伺服器(按 URL、命令或名稱)被阻止。沒有任何內容會覆蓋拒絕清單匹配。
  3. 檢查允許清單。 如果 allowedMcpServers 未在任何地方設定,通過拒絕清單的每個伺服器都會載入。如果已設定,伺服器必須匹配的內容取決於其類型,如下表所示。
伺服器類型在匹配時允許
遠端(HTTP 或 SSE)一個 serverUrl 條目。serverName 匹配僅在允許清單不包含 serverUrl 條目時計數
Stdio一個 serverCommand 條目。serverName 匹配僅在允許清單不包含 serverCommand 條目時計數
這些檢查中適用兩個匹配規則:
  • 命令精確匹配。 每個引數,按順序。["npx", "-y", "server"] 不匹配 ["npx", "server"]["npx", "-y", "server", "--flag"]
  • URL 支援 * 萬用字元 在模式中的任何地方,包括方案。主機名匹配不區分大小寫,忽略尾部 FQDN 點,因此 https://Mcp.Example.com/* 匹配 https://mcp.example.com/api。路徑保持區分大小寫。
模式允許
https://mcp.example.com/*特定網域上的所有路徑
https://mcp.example.com也允許該網域上的所有路徑。沒有路徑的模式匹配任何路徑
https://*.example.com/*example.com 的任何子網域
http://localhost:*/*localhost 上的任何連接埠
*://mcp.example.com/*任何方案到特定網域

範例配置

以下配置設定了硬允許清單和拒絕清單。突出顯示的行改變了清單其餘部分的評估方式,區塊後的標註解釋了每一行:
{
  "allowedMcpServers": [
    { "serverUrl": "https://api.githubcopilot.com/*" },
    { "serverUrl": "https://mcp.sentry.dev/*" },
    { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem", "."] },
    { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },
    { "serverUrl": "https://mcp.example.com/*" },
    { "serverUrl": "https://*.internal.example.com/*" }
  ],
  "deniedMcpServers": [
    { "serverName": "dangerous-server" },
    { "serverCommand": ["npx", "-y", "unapproved-package"] },
    { "serverUrl": "https://*.untrusted.example.com/*" }
  ]
}
  • 第 3 行:第一個 serverUrl 條目。一旦存在,每個遠端伺服器必須匹配 URL 模式,因此使用者無法通過給它一個允許的名稱來獲得未列出的遠端伺服器。
  • 第 5 行:第一個 serverCommand 條目。對 stdio 伺服器有相同的效果,因此每個本地伺服器必須精確匹配列出的命令。
  • 第 11 行:拒絕清單中的 serverName 條目。拒絕清單條目始終適用,因此任何名為 dangerous-server 的伺服器都被阻止,無論其 URL 或命令如何。
此允許清單中的 serverName 條目永遠不會匹配任何內容,因為兩種傳輸類型都已有更嚴格的條目。 下面的手風琴演示了伺服器如何針對其他允許清單和拒絕清單組合進行評估。
{
  "allowedMcpServers": [
    { "serverUrl": "https://mcp.example.com/*" },
    { "serverUrl": "https://*.internal.example.com/*" }
  ]
}
伺服器結果
https://mcp.example.com/api 上的 HTTP 伺服器允許:匹配 URL 模式
https://api.internal.example.com/mcp 上的 HTTP 伺服器允許:匹配萬用字元子網域
https://external.example.com/mcp 上的 HTTP 伺服器阻止:不匹配任何 URL 模式
具有任何命令的 Stdio 伺服器阻止:沒有名稱或命令條目可匹配
{
  "allowedMcpServers": [
    { "serverCommand": ["npx", "-y", "approved-package"] }
  ]
}
伺服器結果
具有 ["npx", "-y", "approved-package"] 的 Stdio 伺服器允許:匹配命令
具有 ["node", "server.js"] 的 Stdio 伺服器阻止:不匹配命令
名為 my-api 的 HTTP 伺服器阻止:沒有名稱條目可匹配
{
  "allowedMcpServers": [
    { "serverName": "github" },
    { "serverCommand": ["npx", "-y", "approved-package"] }
  ]
}
伺服器結果
名為 local-tool 且具有 ["npx", "-y", "approved-package"] 的 Stdio 伺服器允許:匹配命令
名為 local-tool 且具有 ["node", "server.js"] 的 Stdio 伺服器阻止:命令條目存在但不匹配
名為 github 且具有 ["node", "server.js"] 的 Stdio 伺服器阻止:stdio 伺服器在命令條目存在時必須匹配命令
名為 github 的 HTTP 伺服器允許:匹配名稱
名為 other-api 的 HTTP 伺服器阻止:名稱不匹配
{
  "allowedMcpServers": [
    { "serverName": "github" },
    { "serverName": "internal-tool" }
  ]
}
伺服器結果
名為 github 且具有任何命令的 Stdio 伺服器允許:沒有命令限制
名為 internal-tool 且具有任何命令的 Stdio 伺服器允許:沒有命令限制
名為 github 的 HTTP 伺服器允許:匹配名稱
任何名為 other 的伺服器阻止:名稱不匹配
{
  "allowedMcpServers": [
    { "serverUrl": "https://*.example.com/*" }
  ],
  "deniedMcpServers": [
    { "serverUrl": "https://staging.example.com/*" }
  ]
}
伺服器結果
https://mcp.example.com/api 上的 HTTP 伺服器允許:匹配允許清單 URL 模式,無拒絕清單匹配
https://staging.example.com/api 上的 HTTP 伺服器阻止:匹配兩者,但拒絕清單優先
https://other.com/mcp 上的 HTTP 伺服器阻止:不匹配允許清單

將允許清單限制為僅受管設定

要使受管允許清單成為唯一適用的清單,請在受管設定檔案中設定 allowManagedMcpServersOnly
{
  "allowManagedMcpServersOnly": true,
  "allowedMcpServers": [
    { "serverUrl": "https://api.githubcopilot.com/*" },
    { "serverUrl": "https://*.internal.example.com/*" }
  ]
}
allowManagedMcpServersOnlytrue 時,來自使用者、專案和本地設定的允許清單被忽略。拒絕清單仍然從所有來源合併,因此使用者始終可以為自己阻止伺服器。

限制如何向使用者顯示

當限制阻止伺服器時,使用者要麼看到來自 claude mcp add 的錯誤,要麼伺服器無聲地停止載入。使用此表格識別這些報告,並在推出變更之前告訴使用者會發生什麼:
限制使用者看到的內容
managed-mcp.json 存在且使用者執行 claude mcp addCannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers
伺服器在拒絕清單上且使用者執行 claude mcp addCannot add MCP server "<name>": server is explicitly blocked by enterprise policy
伺服器不在允許清單上且使用者執行 claude mcp addCannot add MCP server "<name>": not allowed by enterprise policy
之前配置的伺服器現在被原則阻止伺服器無聲地從 /mcpclaude mcp list 消失,沒有警告
在最後一種情況下,使用者沒有收到原則是其伺服器消失原因的信號,因此在推出新限制時告訴受影響的使用者哪些伺服器被阻止。

監控 MCP 使用

OpenTelemetry 匯出 配置時,Claude Code 可以記錄使用者呼叫的 MCP 伺服器和工具。設定 OTEL_LOG_TOOL_DETAILS=1 以在工具事件中包含 MCP 伺服器和工具名稱,然後在您的收集器中聚合它們以查看您的使用者實際連接到的伺服器。請參閱 監控 以設定匯出器和完整事件架構。

配置摘要

本頁涵蓋的每個檔案和設定、它控制的內容以及如何傳遞它:
表面控制的內容位置傳遞方式
managed-mcp.json固定伺服器集合、獨佔控制系統路徑:/Library/Application Support/ClaudeCode//etc/claude-code/C:\Program Files\ClaudeCode\MDM、GPO、艦隊管理或任何具有管理員權限的程序。無法通過伺服器受管設定設定
allowedMcpServers允許的伺服器允許清單任何 設定檔案;來自每個來源的條目合併,除非設定了 allowManagedMcpServersOnly為了強制執行,受管設定來源:伺服器受管設定、managed-settings.json、MDM 設定檔或登錄
deniedMcpServers被阻止的伺服器拒絕清單任何設定檔案;來自每個來源的條目合併allowedMcpServers 相同
allowManagedMcpServersOnly將允許清單鎖定為僅受管來源僅受管設定來源;該設定在其他地方無效allowedMcpServers 相同

相關資源