SpyBara
Go Premium

managed-mcp.md 2026-09-08 20:00 UTC to 2026-09-09 22:58 UTC

This page contains 49 additions and 26 deletions.

2026
Wed 9 22:58 Sat 12 03:02 Fri 18 23:58 Fri 25 23:58

Kontrollieren Sie den MCP-Serverzugriff für Ihre Organisation

Beschränken Sie, welche MCP-Server Benutzer hinzufügen oder mit verwalteten Konfigurationsdateien, Zulassungslisten und Sperrlisten verbinden können.

Standardmäßig kann jeder, der Claude Code ausführt, jeden beliebigen MCP-Server verbinden. Anthropic überprüft Konnektoren anhand seiner Auflistungskriterien, bevor sie zum Anthropic-Verzeichnis hinzugefügt werden, führt aber keine Sicherheitsprüfung durch und verwaltet keinen MCP-Server. Als Administrator können Sie einschränken, welche Server in Ihrer Organisation ausgeführt werden – von der Bereitstellung eines festen genehmigten Satzes bis zur vollständigen Deaktivierung von MCP.

Diese Einschränkungen gelten für die Server, die Claude Code selbst lädt, einschließlich der Konnektoren, die es von claude.ai abruft. Konnektoren, die die Desktop-App an ihre lokalen und SSH-Sitzungen liefert, kommen prozessinternal an und werden stattdessen von Ihren claude.ai-Organisationseinstellungen aus gesteuert; Wie Konnektoren Claude Code erreichen zeigt, welche Kontrollen für Konnektoren in jeder Art von Sitzung gelten, einschließlich Cloud-Sitzungen.

Diese Seite behandelt folgende Themen:

Wählen Sie ein Muster

Claude Code unterstützt eine Reihe von Einschränkungsstufen. Jedes Muster verwendet einen oder beide der unten behandelten Mechanismen: managed-mcp.json zur Bereitstellung eines festen Satzes und allowedMcpServers/deniedMcpServers zum Filtern der Benutzerkonfiguration.

Muster Was es tut Konfigurieren
MCP deaktivieren Keine Server werden geladen, außer In-Process-Servern, die die App registriert, die die Sitzung gestartet hat managed-mcp.json mit einer leeren Serverzuordnung
Feste Bereitstellung Jeder Benutzer erhält die gleichen Server und kann keine anderen hinzufügen managed-mcp.json mit den gewünschten Servern
Genehmigter Katalog Veröffentlichen Sie eine Liste genehmigter Server; Benutzer fügen die gewünschten hinzu, alles andere wird blockiert allowedMcpServers + allowManagedMcpServersOnly: true
Nur Plugin-Server Benutzer können keine Server über ~/.claude.json oder .mcp.json hinzufügen; Plugin-Server werden weiterhin geladen strictPluginOnlyCustomization mit mcp in der Liste
Soft-Zulassungsliste Erzwingen Sie eine Zulassungsliste, die Benutzer in ihren eigenen Einstellungen erweitern können allowedMcpServers ohne allowManagedMcpServersOnly
Nur Sperrliste Blockieren Sie bekannt schlechte Server, erlauben Sie alles andere deniedMcpServers
Keine Einschränkungen Benutzer fügen alles hinzu Stellen Sie keine verwaltete MCP-Konfiguration bereit

Exklusive Kontrolle mit managed-mcp.json

Wenn Sie eine managed-mcp.json-Datei bereitstellen, lädt Claude Code nur die Server, die diese Datei definiert, plus alle In-Process-Server, die die App registriert, die die Sitzung gestartet hat, wie z. B. der eigene Server der VS Code-Erweiterung oder die Konnektoren, die die Desktop-App bereitstellt. Benutzer können keine anderen MCP-Server hinzufügen, ändern oder verwenden, einschließlich Plugin-bereitgestellter Server und Server, die mit dem --mcp-config-CLI-Flag übergeben werden. Die Datei unterdrückt auch die claude.ai-Konnektoren, die Claude Code selbst abruft, es sei denn, Sie erlauben sie neben dem verwalteten Satz.

Was ein Benutzer sieht, wenn eine Sitzung --mcp-config-Server erhält, hängt davon ab, wo die Sitzung ausgeführt wird:

  • Auf einer Workstation beendet Claude Code beim Start mit You cannot dynamically configure MCP servers when an enterprise MCP config is present.
  • In Cloud-Sitzungen auf einem Host, auf dem die Datei bereitgestellt ist, wie z. B. einem selbstgehosteten Runner, startet Claude Code nur mit den verwalteten Servern und überspringt die claude.ai-Konnektoren und andere Server, die der Cloud-Host durch --mcp-config bereitstellt. Nichts in der Sitzung teilt dem Benutzer mit, welche Server ausgelassen wurden. Claude Code nennt sie in einer Warnung auf stderr, die ein selbstgehosteter Runner auf der debug-Protokollebene aufzeichnet. Vor v2.1.229 beendeten diese Sitzungen mit dem gleichen Fehler, den eine Workstation anzeigt.

Wenn ein Benutzer --strict-mcp-config übergibt, beendet Claude Code beim Start sowohl auf einer Workstation als auch in einer Cloud-Sitzung, da dieses Flag auffordert, den verwalteten Satz zu ersetzen.

Zwei weitere Einstellungen können den verwalteten Satz weiter filtern:

  • allowedMcpServers und deniedMcpServers gelten auch für verwaltete Server, daher wird ein verwalteter Server, der diese nicht erfüllt, nicht geladen.
  • Die eigenen deniedMcpServers eines Benutzers werden aus seinen Einstellungen zusammengeführt, daher können Benutzer einen verwalteten Server für sich selbst blockieren.

Siehe Wie ein Server bewertet wird für die vollständige Reihenfolge der Überprüfungen.

managed-mcp.json ist eine eigenständige Datei und kann nicht über serververwaltete Einstellungen bereitgestellt werden. Jeder Prozess, der in einen Systempfad mit Administratorrechten schreiben kann, kann sie bereitstellen. In großem Maßstab geschieht dies normalerweise über Geräteverwaltungstools wie Jamf oder ein Konfigurationsprofil auf macOS, Gruppenrichtlinie oder Intune unter Windows oder Ihre Fleet-Verwaltung Ihrer Wahl unter Linux. Claude Code sucht die Datei unter einem dieser Pfade:

Plattform Pfad
macOS /Library/Application Support/ClaudeCode/managed-mcp.json
Linux und WSL /etc/claude-code/managed-mcp.json
Windows C:\Program Files\ClaudeCode\managed-mcp.json

Die Datei verwendet das gleiche Format wie eine Projekt-.mcp.json-Datei:

{
  "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"
      }
    }
  }
}

Authentifizieren Sie sich mit benutzerspezifischen Anmeldedaten

Jeder Benutzer auf dem Computer kann diese Datei lesen, daher speichern Sie keine API-Schlüssel oder andere Anmeldedaten in env-Blöcken. Übergeben Sie benutzerspezifische Anmeldedaten stattdessen mit einem dieser:

Validieren Sie die Konfiguration

Um zu bestätigen, dass die Datei wirksam ist, führen Sie zwei Überprüfungen auf einem verwalteten Computer durch:

  1. claude mcp list zeigt nur die Server in managed-mcp.json. Wenn die eigenen Server eines Benutzers immer noch angezeigt werden, wird die Datei nicht gelesen; überprüfen Sie den Pfad und die Berechtigungen.
  2. claude mcp add --transport http test https://example.com/mcp schlägt mit Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers fehl. Die URL muss kein echter Server sein, da die Richtlinienprüfung den Befehl ablehnt, bevor etwas kontaktiert wird.

Deaktivieren Sie MCP vollständig

Stellen Sie eine managed-mcp.json mit einer leeren Serverzuordnung bereit, um jeden MCP-Server außer In-Process-Servern zu blockieren, die die App registriert, die die Sitzung gestartet hat:

{
  "mcpServers": {}
}

claude mcp add schlägt mit dem oben genannten Enterprise-Richtlinienfehler fehl. Server, die Benutzer zuvor konfiguriert hatten, werden beim nächsten Starten einer Sitzung nicht mehr geladen, ohne dass eine Warnung angezeigt wird, dass die Richtlinie der Grund ist.

Erlauben Sie claude.ai-Konnektoren neben dem verwalteten Satz

Standardmäßig unterdrückt die Bereitstellung von managed-mcp.json die claude.ai-Konnektoren, die Claude Code selbst abruft, einschließlich Konnektoren, die ein Administrator für die Organisation in der claude.ai-Verwaltungskonsole konfiguriert hat. Um diese Konnektoren neben den Servern in managed-mcp.json zu laden, setzen Sie "allowAllClaudeAiMcps": true in einer verwalteten Einstellungsquelle.

Mit der aktivierten Einstellung lädt Claude Code die gleichen claude.ai-Konnektoren, die es laden würde, wenn managed-mcp.json nicht bereitgestellt würde. Zulassungslisten und Ablehnungslisten gelten weiterhin für diese Konnektoren, daher können Sie bestimmte mit deniedMcpServers blockieren. Die Einstellung betrifft nur die claude.ai-Konnektoren, die Claude Code selbst abruft; Plugin-bereitgestellte Server bleiben unterdrückt.

Cloud-Sitzungen und die lokalen und SSH-Sitzungen der Desktop-App erhalten Konnektoren auf andere Weise, wie in Wie Konnektoren Claude Code erreichen beschrieben. Eine managed-mcp.json auf dem Host, der eine Cloud-Sitzung ausführt, wie z. B. ein selbstgehosteter Runner-Host, unterdrückt die Konnektoren dieser Sitzung, unabhängig davon, ob Sie allowAllClaudeAiMcps setzen. Keine managed-mcp.json erreicht die Konnektoren, die die Desktop-App an ihre lokalen und SSH-Sitzungen bereitstellt.

Claude Code liest allowAllClaudeAiMcps nur aus von Administratoren kontrollierten Richtlinien-Ebenen: serververwaltete Einstellungen, ein von MDM bereitgestellter plist- oder HKLM-Registrierungsschlüssel oder eine System-managed-settings.json-Datei. Das Platzieren in Benutzer- oder Projekteinstellungen hat keine Auswirkung, daher können Benutzer Konnektoren, die exklusive Kontrolle unterdrückt hat, nicht erneut aktivieren.

Richtlinienbasierte Kontrolle mit Zulassungslisten und Sperrlisten

Zulassungslisten und Sperrlisten filtern, welche konfigurierten Server geladen werden dürfen. Sie sind keine Registrierung: Ein Server muss immer noch von einem Benutzer, einem Plugin oder managed-mcp.json hinzugefügt werden, bevor die Zulassungsliste oder Sperrliste darauf angewendet wird. Um Server für Benutzer bereitzustellen, verwenden Sie managed-mcp.json. Beide Listen filtern auch Server, die mit dem --mcp-config CLI-Flag übergeben werden, mit Ausnahme von In-Process-type: "sdk"-Einträgen; --strict-mcp-config begrenzt, welche Konfigurationsdateien geladen werden, und umgeht keine der beiden Listen.

Um die Zulassungsliste verbindlich zu machen, setzen Sie allowedMcpServers und allowManagedMcpServersOnly: true zusammen in einer verwalteten Einstellungsquelle, z. B. serververwaltete Einstellungen oder eine bereitgestellte managed-settings.json-Datei. Beschränken Sie die Zulassungsliste auf verwaltete Einstellungen nur zeigt die Konfiguration. Ohne allowManagedMcpServersOnly werden Zulassungslisten aus jeder Einstellungsquelle zusammengeführt, einschließlich der eigenen ~/.claude/settings.json eines Benutzers, daher kann ein Benutzer erweitern, was Ihre Zulassungsliste erlaubt. Sperrlisten werden unabhängig davon aus jeder Quelle zusammengeführt.

Passen Sie Server nach URL, Befehl oder Name an

allowedMcpServers und deniedMcpServers sind Listen von Einträgen. Jeder Eintrag ist ein Objekt mit einem einzelnen Schlüssel, der Server nach ihrer URL, ihrem Befehl oder ihrem Namen identifiziert:

Schlüssel Passt zu Verwenden Sie für
serverUrl Eine Remote-Server-URL, exakt oder mit *-Platzhaltern HTTP- und SSE-Server
serverCommand Der genaue Befehl und die Argumente, die einen Stdio-Server starten Stdio-Server
serverName Das vom Benutzer zugewiesene Label. Nur exakte Übereinstimmung; Platzhalter werden nicht erweitert Beide Typen, aber siehe die Warnung unten

Das Nicht-Setzen von allowedMcpServers unterscheidet sich vom Setzen auf ein leeres Array:

Einstellung Nicht gesetzt (Standard) Leeres Array [] Gefüllt
allowedMcpServers Alle Server erlaubt Keine Server erlaubt Nur übereinstimmende Server erlaubt
deniedMcpServers Keine Server blockiert Keine Server blockiert Übereinstimmende Server blockiert

Siehe Ungültige Einträge in verwalteten Einstellungen für das, was passiert, wenn ein Eintrag die Schemavalidierung nicht besteht.

Die serverName-Validierung unterscheidet sich zwischen den beiden Listen:

  • In deniedMcpServers akzeptiert serverName jede nicht leere Zeichenkette, daher können Sie claude.ai-Konnektoren nach ihrem Anzeigenamen blockieren. Beispielsweise blockiert { "serverName": "claude.ai Slack" } den Slack-Konnektor. Bevorzugen Sie einen serverUrl-Eintrag, wenn die Sperrung robust gegen Umbenennungen sein muss, oder wenn ein Konnektor-Name kollidiert und ein (N)-Suffix erhält.
  • In allowedMcpServers ist serverName auf Buchstaben, Zahlen, Bindestriche und Unterstriche beschränkt. Verwenden Sie serverUrl, um einen claude.ai-Konnektor in die Zulassungsliste aufzunehmen, den Claude Code selbst abruft; für Konnektoren, die ein Cloud-Host an selbstgehostete Sitzungen liefert, verwenden Sie stattdessen die unter Konnektor-Datenverkehr verlässt Ihr Netzwerk aufgelisteten Einträge.

Um alle claude.ai-Konnektoren auszuschalten, die Claude Code selbst abruft, siehe disableClaudeAiConnectors.

Wie ein Server bewertet wird

Vor dem Laden eines Servers, einschließlich eines aus managed-mcp.json, führt Claude Code die drei folgenden Überprüfungen in Reihenfolge durch. Sie werden erneut ausgeführt, wenn ein Benutzer einen Server erneut verbindet oder einen deaktivierten Server in /mcp wieder aktiviert. In-Process-type: "sdk"-Server, die die App registriert, die die Sitzung gestartet hat, überspringen alle drei.

  1. Zusammenführen der Listen. Zulassungslisten- und Sperrlisten-Einträge aus jeder Einstellungsquelle werden in eine Zulassungsliste und eine Sperrliste kombiniert, wobei die Einträge des verwalteten Bereichs aus der verwalteten Quelle oder den verwalteten Quellen stammen, die Claude Code anwendet. Wenn allowManagedMcpServersOnly true ist, wird nur die verwaltete Zulassungsliste beibehalten; die Sperrliste wird immer aus jeder Quelle zusammengeführt.
  2. Überprüfen Sie die Sperrliste. Ein Server, der einem Sperrlisten-Eintrag entspricht, nach URL, Befehl oder Name, wird blockiert. Nichts überschreibt eine Sperrlisten-Übereinstimmung.
  3. Überprüfen Sie die Zulassungsliste. Wenn allowedMcpServers nirgendwo gesetzt ist, wird jeder Server, der die Sperrliste bestanden hat, geladen. Wenn es gesetzt ist, hängt das, dem der Server entsprechen muss, von seinem Typ ab, wie in der Tabelle unten gezeigt. Integrierte Server wie Claude in Chrome, der ide-Server, mit dem Claude Code sich in einer laufenden VS Code- oder JetBrains-IDE verbindet, und Server, die die CLI selbst konfiguriert, überspringen diese Überprüfung.
Servertyp Erlaubt, wenn es passt zu
Remote (HTTP oder SSE) Ein serverUrl-Eintrag. Eine serverName-Übereinstimmung zählt nur, wenn die Zulassungsliste keine serverUrl-Einträge enthält
Stdio Ein serverCommand-Eintrag. Eine serverName-Übereinstimmung zählt nur, wenn die Zulassungsliste keine serverCommand-Einträge enthält

Drei Matching-Regeln gelten innerhalb dieser Überprüfungen:

  • Befehle stimmen genau überein. Jedes Argument, in Reihenfolge. ["npx", "-y", "server"] stimmt nicht mit ["npx", "server"] oder ["npx", "-y", "server", "--flag"] überein.
  • serverCommand- und serverUrl-Werte werden vor dem Matching erweitert. Sowohl der Richtlinieneintrag als auch der konfigurierte Wert des Servers durchlaufen die ${VAR}- und ${VAR:-default}-Erweiterung, daher passt ein Eintrag, der als ["${HOME}/bin/server"] geschrieben ist, zu einer Serverkonfiguration, die entweder die gleiche Referenz oder den erweiterten Pfad verwendet. Unter Windows verweisen Sie auf eine Umgebungsvariable, die dort gesetzt ist, z. B. ${USERPROFILE} statt ${HOME}. serverName-Werte stimmen wörtlich überein und werden nie erweitert. Die beiden Seiten lesen unterschiedliche Umgebungen; Wie Richtlinieneinträge erweitert werden behandelt, welche und wie sich Zulassungslisten- und Sperrlisten-Einträge unterscheiden.
  • URLs unterstützen *-Platzhalter überall im Muster, einschließlich des Schemas. Hostname-Matching ist case-insensitiv und ignoriert einen nachgestellten FQDN-Punkt, daher passt https://Mcp.Example.com/* zu https://mcp.example.com/api. Pfade bleiben case-sensitiv.
Muster Erlaubt
https://mcp.example.com/* Alle Pfade auf einer bestimmten Domain
https://mcp.example.com Auch alle Pfade auf dieser Domain. Ein Muster ohne Pfad passt zu jedem Pfad
https://*.example.com/* Jede Subdomain von example.com
http://localhost:*/* Jeder Port auf localhost
*://mcp.example.com/* Jedes Schema zu einer bestimmten Domain

Wie Richtlinieneinträge erweitert werden

Der konfigurierte Wert des Servers wird aus der Live-Prozessumgebung erweitert, wie der Rest von .mcp.json. Ein Richtlinieneintrag wird stattdessen aus einer angehefteten Umgebung erweitert, daher kann eine Variable, die von einer Projekt- oder Benutzereinstellungsdatei gesetzt wird, nicht ändern, was ein Zulassungslisten-Eintrag bedeutet. Da ein Richtlinieneintrag immer noch vom Wert der startenden Shell für jede Variable abhängt, auf die er verweist, verwenden Sie wörtliche URLs und Befehle für Einträge, auf die Sie sich für die Durchsetzung verlassen.

Eintragsliste Erweitert aus Erweiterung, die das Schema, den Host oder den Pfadbereich eines URL-Eintrags ändern würde
allowedMcpServers Die Umgebung, mit der Claude Code gestartet wurde, plus env-Werte aus verwalteten Einstellungen Claude Code ignoriert den Eintrag
deniedMcpServers Dasselbe, und eine Variable ohne Startwert und ohne :-default wird aus Einstellungsdateien außerhalb des Repositorys gefüllt, z. B. Benutzer- oder verwaltete Einstellungen, die nur jemals erweitern, was der Eintrag passt Der Eintrag passt immer noch

Erfordert Claude Code v2.1.219 oder später.

Beispielkonfiguration

Die folgende Konfiguration richtet eine harte Zulassungsliste mit einer Sperrliste ein. Die hervorgehobenen Zeilen ändern, wie der Rest der Liste bewertet wird, und die Callouts nach dem Block erklären jeweils:

{
  "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/*" }
  ]
}
  • Zeile 3: der erste serverUrl-Eintrag. Sobald einer existiert, muss jeder Remote-Server einem URL-Muster entsprechen, daher kann ein Benutzer keinen nicht aufgelisteten Remote-Server erhalten, indem er ihm einen zulässigen Namen gibt.
  • Zeile 5: der erste serverCommand-Eintrag. Gleicher Effekt für Stdio-Server, daher muss jeder lokale Server genau einem aufgelisteten Befehl entsprechen.
  • Zeile 11: ein serverName-Eintrag in der Sperrliste. Sperrlisten-Einträge gelten immer, daher wird jeder Server namens dangerous-server blockiert, unabhängig von seiner URL oder seinem Befehl.

Ein serverName-Eintrag in dieser Zulassungsliste würde niemals etwas entsprechen, da beide Transporttypen bereits strengere Einträge haben.

Die Akkordeons unten zeigen, wie ein Server gegen andere Zulassungslisten- und Sperrlisten-Kombinationen bewertet wird.

Nur-URL-Zulassungsliste
{
"allowedMcpServers": [
{ "serverUrl": "https://mcp.example.com/*" },
{ "serverUrl": "https://*.internal.example.com/*" }
]
}
Server Ergebnis
HTTP-Server unter https://mcp.example.com/api Erlaubt: passt zu URL-Muster
HTTP-Server unter https://api.internal.example.com/mcp Erlaubt: passt zu Wildcard-Subdomain
HTTP-Server unter https://external.example.com/mcp Blockiert: passt zu keinem URL-Muster
Stdio-Server mit beliebigem Befehl Blockiert: keine Name- oder Befehlseinträge zum Abgleichen
Nur-Befehl-Zulassungsliste
{
"allowedMcpServers": [
{ "serverCommand": ["npx", "-y", "approved-package"] }
]
}
Server Ergebnis
Stdio-Server mit ["npx", "-y", "approved-package"] Erlaubt: passt zu Befehl
Stdio-Server mit ["node", "server.js"] Blockiert: passt nicht zu Befehl
HTTP-Server namens my-api Blockiert: keine Nameneinträge zum Abgleichen
Gemischte Name- und Befehl-Zulassungsliste
{
"allowedMcpServers": [
{ "serverName": "github" },
{ "serverCommand": ["npx", "-y", "approved-package"] }
]
}
Server Ergebnis
Stdio-Server namens local-tool mit ["npx", "-y", "approved-package"] Erlaubt: passt zu Befehl
Stdio-Server namens local-tool mit ["node", "server.js"] Blockiert: Befehlseinträge existieren, aber passt nicht
Stdio-Server namens github mit ["node", "server.js"] Blockiert: Stdio-Server müssen Befehlen entsprechen, wenn Befehlseinträge existieren
HTTP-Server namens github Erlaubt: passt zu Name
HTTP-Server namens other-api Blockiert: Name passt nicht
Nur-Name-Zulassungsliste
{
"allowedMcpServers": [
{ "serverName": "github" },
{ "serverName": "internal-tool" }
]
}
Server Ergebnis
Stdio-Server namens github mit beliebigem Befehl Erlaubt: keine Befehlsbeschränkungen
Stdio-Server namens internal-tool mit beliebigem Befehl Erlaubt: keine Befehlsbeschränkungen
HTTP-Server namens github Erlaubt: passt zu Name
Jeder Server namens other Blockiert: Name passt nicht
Zulassungsliste mit Sperrlisten-Überschreibung
{
"allowedMcpServers": [
{ "serverUrl": "https://*.example.com/*" }
],
"deniedMcpServers": [
{ "serverUrl": "https://staging.example.com/*" }
]
}
Server Ergebnis
HTTP-Server unter https://mcp.example.com/api Erlaubt: passt zu Zulassungslisten-URL-Muster, keine Sperrlisten-Übereinstimmung
HTTP-Server unter https://staging.example.com/api Blockiert: passt zu beiden, aber die Sperrliste hat Vorrang
HTTP-Server unter https://other.com/mcp Blockiert: passt nicht zu Zulassungsliste

Beschränken Sie die Zulassungsliste auf verwaltete Einstellungen nur

Um die verwaltete Zulassungsliste zur einzigen anzuwenden, setzen Sie allowManagedMcpServersOnly in der verwalteten Einstellungsdatei:

{
  "allowManagedMcpServersOnly": true,
  "allowedMcpServers": [
    { "serverUrl": "https://api.githubcopilot.com/*" },
    { "serverUrl": "https://*.internal.example.com/*" }
  ]
}

Wenn allowManagedMcpServersOnly true ist, werden Zulassungslisten aus Benutzer-, Projekt- und lokalen Einstellungen ignoriert. Die Sperrliste wird immer noch aus allen Quellen zusammengeführt, daher können Benutzer Server immer für sich selbst blockieren.

Wie Einschränkungen für Benutzer angezeigt werden

Informationen dazu, was Benutzer beim Start sehen, wenn managed-mcp.json bereitgestellt wird und die Sitzung auch --mcp-config-Server hat, finden Sie unter Exklusive Kontrolle mit managed-mcp.json. Verwenden Sie diese Tabelle, um die anderen Berichte zu erkennen und um Benutzern mitzuteilen, was sie erwarten können, bevor Sie eine Änderung einführen:

Einschränkung Was der Benutzer sieht
managed-mcp.json ist vorhanden und der Benutzer führt claude mcp add aus Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers
Der Server ist auf einer Sperrliste und der Benutzer führt claude mcp add aus Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy
Der Server ist nicht auf der Zulassungsliste und der Benutzer führt claude mcp add aus Cannot add MCP server "<name>": not allowed by enterprise policy
Ein zuvor konfigurierter Server wird jetzt durch Richtlinie blockiert Der Server verschwindet stillschweigend aus /mcp und claude mcp list ohne Warnung
Ein Server wird blockiert, während eine Sitzung läuft, und der Benutzer wählt Erneut verbinden oder schaltet ihn in /mcp wieder ein MCP server <name> is blocked by enterprise managed policy

Wenn ein Server stillschweigend verschwindet, erhält der Benutzer kein Signal, dass die Richtlinie der Grund ist, daher teilen Sie betroffenen Benutzern mit, welche Server blockiert werden, wenn Sie eine neue Einschränkung einführen.

Überwachen Sie die MCP-Nutzung

Wenn OpenTelemetry-Export konfiguriert ist, kann Claude Code aufzeichnen, welche MCP-Server und Tools Benutzer aufrufen. Setzen Sie OTEL_LOG_TOOL_DETAILS=1, um MCP-Server- und Tool-Namen in Tool-Events einzubeziehen, und aggregieren Sie sie dann in Ihrem Collector, um zu sehen, welche Server Ihre Benutzer tatsächlich verbinden. Siehe Überwachung, um den Exporter einzurichten und das vollständige Event-Schema zu erhalten.

Konfigurationszusammenfassung

Jede Datei und Einstellung, die diese Seite behandelt, was sie kontrolliert und wie man sie bereitstellt:

Oberfläche Was es kontrolliert Wo es sich befindet Wie man es bereitstellt
managed-mcp.json Fester Serversatz, exklusive Kontrolle Systempfad: /Library/Application Support/ClaudeCode/, /etc/claude-code/ oder C:\Program Files\ClaudeCode\ MDM, GPO, Fleet-Verwaltung oder jeder Prozess mit Administratorrechten. Kann nicht über serververwaltete Einstellungen gesetzt werden
allowedMcpServers Zulassungsliste zulässiger Server Jede Einstellungsbereich; Claude Code führt die Listen aus jedem Bereich zusammen, es sei denn, allowManagedMcpServersOnly ist gesetzt, und nimmt die verwaltete Bereichsliste aus der einen verwalteten Quelle, die es auswählt oder zusammensetzt Zur Durchsetzung eine verwaltete Einstellungsquelle: serververwaltete Einstellungen, managed-settings.json, MDM-Profil oder Registrierung
deniedMcpServers Sperrliste blockierter Server Jede Einstellungsbereich; Claude Code führt die Listen aus jedem Bereich zusammen und über verwaltete Quellen hinweg, wie wie Claude Code verwaltete Quellen kombiniert beschreibt Gleich wie allowedMcpServers
allowManagedMcpServersOnly Sperrt die Zulassungsliste auf verwaltete Quellen nur Nur verwaltete Einstellungsquellen; die Einstellung hat keine Auswirkung anderswo Gleich wie allowedMcpServers
allowAllClaudeAiMcps Lädt die claude.ai-Konnektoren, die Claude Code selbst abruft, neben managed-mcp.json. Eine managed-mcp.json auf dem Host, der eine Cloud-Sitzung ausführt, unterdrückt immer noch die Konnektoren dieser Sitzung Nur verwaltete Einstellungsquellen; die Einstellung hat keine Auswirkung anderswo Gleich wie allowedMcpServers