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 Seite behandelt folgende Themen:
Die Seite Sicherheit behandelt das MCP-Bedrohungsmodell und wie Sie einen Server vor der Genehmigung bewerten. Entscheiden Sie, was Sie durchsetzen möchten behandelt MCP-Einschränkungen zusammen mit den anderen administrativen Kontrollen.
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 irgendwo geladen
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
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
Claude Code hat keine integrierte MCP-Serverregistrierung, die Benutzer durchsuchen und installieren können. Für das Muster des genehmigten Katalogs teilen Sie die genehmigte Liste und ihre claude mcp add-Befehle an einem Ort, den Ihre Benutzer finden, z. B. einem internen Wiki, oder verteilen Sie die Server als Plugins über einen verwalteten Plugin-Marketplace, damit Benutzer sie von /plugin durchsuchen und installieren können.
Wenn Sie eine managed-mcp.json-Datei bereitstellen, lädt Claude Code nur die Server, die diese Datei definiert. Benutzer können keine anderen MCP-Server hinzufügen, ändern oder verwenden, einschließlich Plugin-bereitgestellter Server. Die Datei unterdrückt auch claude.ai-Konnektoren, es sei denn, Sie erlauben sie neben dem verwalteten Satz.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 ihn 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:
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:
${VAR}-Erweiterung zum Lesen von Geheimnissen aus der Umgebung jedes Benutzers.
Um zu bestätigen, dass die Datei wirksam ist, führen Sie zwei Überprüfungen auf einem verwalteten Computer durch:
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.
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.
Stellen Sie eine managed-mcp.json mit einer leeren Serverzuordnung bereit, um jeden MCP-Server zu blockieren:
{ "mcpServers": {}}
Benutzer sehen keine MCP-Server in /mcp, und 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
Die Bereitstellung von managed-mcp.json unterdrückt claude.ai-Konnektoren standardmäßig, 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. Erfordert Claude Code v2.1.149 oder später.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 claude.ai-Konnektoren; Plugin-bereitgestellte Server bleiben unterdrückt.Claude Code liest diese Einstellung 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.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.
allowManagedMcpServersOnly ist getrennt von allowManagedPermissionRulesOnly, das Berechtigungsregeln nur sperrt. Das Setzen dieses Flags erzwingt nicht die MCP-Zulassungsliste.
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
Ein serverName-Eintrag in einer der beiden Listen ist keine Sicherheitskontrolle. Der Name ist das Label, das ein Benutzer beim Ausführen von claude mcp add oder beim Bearbeiten einer Konfigurationsdatei zuweist, nicht der zugrunde liegende Server, daher kann ein Benutzer jeden Server github nennen. Für claude.ai-Konnektoren ist der Name der von claude.ai zurückgegebene Anzeigename, der sich ändern kann. Um zu erzwingen, welche Server tatsächlich ausgeführt werden, fügen Sie serverCommand- oder serverUrl-Einträge hinzu.
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.
Vor dem Laden eines Servers, einschließlich eines aus managed-mcp.json, führt Claude Code drei Überprüfungen in Reihenfolge durch:
Zusammenführen der Listen. Zulassungslisten- und Sperrlisten-Einträge aus jeder Einstellungsquelle werden in eine Zulassungsliste und eine Sperrliste kombiniert. Wenn allowManagedMcpServersOnlytrue ist, wird nur die verwaltete Zulassungsliste beibehalten; die Sperrliste wird immer aus jeder Quelle zusammengeführt.
Überprüfen Sie die Sperrliste. Ein Server, der einem Sperrlisten-Eintrag entspricht, nach URL, Befehl oder Name, wird blockiert. Nichts überschreibt eine Sperrlisten-Übereinstimmung.
Ü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.
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
Zwei 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.
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
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:
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.
Wenn allowManagedMcpServersOnlytrue 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.
Wenn eine Einschränkung einen Server blockiert, sieht der Benutzer entweder einen Fehler von claude mcp add oder der Server wird stillschweigend nicht mehr geladen. Verwenden Sie diese Tabelle, um diese 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
Im letzten Fall erhält der Benutzer kein Signal, dass die Richtlinie der Grund ist, warum sein Server verschwunden ist, daher teilen Sie betroffenen Benutzern mit, welche Server blockiert werden, wenn Sie eine neue Einschränkung einführen.
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.