- Ein Muster wählen, das dem erforderlichen Kontrollumfang entspricht
- Einen festen Serversatz mit
managed-mcp.jsonbereitstellen, einschließlich wie Sie MCP vollständig deaktivieren - Server durch verwaltete Einstellungen bereitstellen, während Benutzer ihre eigenen behalten
- Server mit Zulassungslisten und Ablehnungslisten kontrollieren
- Benutzer informieren, was sie erwarten können, wenn eine Einschränkung einen Server blockiert
- Überwachen Sie, welche Server Ihre Organisation tatsächlich nutzt
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.
Wählen Sie ein Muster
Claude Code unterstützt eine Reihe von Einschränkungsstufen. Jedes Muster verwendet einen oder mehrere der folgenden Mechanismen:managed-mcp.json zum Bereitstellen eines festen Satzes, die verwaltete Einstellung managedMcpServers zum Bereitstellen von Servern neben den von Benutzern hinzugefügten und allowedMcpServers/deniedMcpServers zum Filtern dessen, was Benutzer konfigurieren.
Claude Code hat keine integrierte MCP-Server-Registry, 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, an dem Ihre Benutzer sie finden, z. B. in 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.Exklusive Kontrolle mit managed-mcp.json
Wenn Sie einemanaged-mcp.json-Datei bereitstellen, lädt Claude Code nur diese MCP-Server:
- Die Server, die die Datei definiert
- Server, die Sie über
managedMcpServersbereitstellen - In-Process-Server, die die Anwendung registriert, die die Sitzung gestartet hat, wie beispielsweise der eigene Server der VS Code-Erweiterung oder die Konnektoren, die die Desktop-Anwendung bereitstellt
- Der integrierte Claude in Chrome-Server, wenn Sie ihn neben dem verwalteten Satz erlauben
--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.
managed-mcp.json bereitstellen
managed-mcp.json ist eine eigenständige Datei und kann daher nicht über servergesteuerte Einstellungen bereitgestellt werden. Um Server stattdessen über verwaltete Einstellungen bereitzustellen, ohne exklusive Kontrolle, verwenden Sie managedMcpServers.
Jeder Prozess, der in einen Systempfad mit Administratorrechten schreiben kann, kann die Datei bereitstellen. Über eine Flotte hinweg geschieht dies normalerweise über Geräteverwaltungstools wie Jamf oder ein Konfigurationsprofil auf macOS, Gruppenrichtlinie oder Intune unter Windows oder Ihre Flottenverwaltung Ihrer Wahl unter Linux. Claude Code sucht die Datei unter einem dieser Pfade:
Die Datei verwendet das gleiche Format wie eine Projekt-
.mcp.json-Datei:
Mit benutzerspezifischen Anmeldedaten authentifizieren
Jeder Benutzer auf dem Computer kann diese Datei lesen, daher speichern Sie keine API-Schlüssel oder andere Anmeldedaten inenv-Blöcken. Übergeben Sie stattdessen benutzerspezifische Anmeldedaten mit einer dieser Optionen:
${VAR}-Erweiterung zum Lesen von Geheimnissen aus der Umgebung jedes Benutzers.- OAuth oder benutzerspezifische Header, damit sich jeder Benutzer selbst authentifiziert.
headersHelperzum Generieren von Anmeldedaten zum Verbindungszeitpunkt.
Server, die mit --mcp-config oder --strict-mcp-config übergeben werden
Wenn eine Sitzung Server über --mcp-config erhält, während eine managed-mcp.json, die Claude Code lesen und analysieren kann, bereitgestellt wird, unterscheidet sich das, was der Benutzer sieht, zwischen einer Workstation und einer Cloud-Sitzung:
- 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 wird, wie beispielsweise einem selbstgehosteten Runner, startet Claude Code nur mit den verwalteten Servern und überspringt die claude.ai-Konnektoren und andere Server, die der Cloud-Host über
--mcp-configbereitstellt. Nichts in der Sitzung teilt dem Benutzer mit, welche Server ausgelassen wurden. Claude Code benennt sie in einer Warnung auf stderr, die ein selbstgehosteter Runner auf derdebug-Protokollebene aufzeichnet.
--strict-mcp-config fordert auf, den verwalteten Satz zu ersetzen. Wenn ein Benutzer es übergibt, während eine solche Datei bereitgestellt wird, beendet Claude Code beim Start sowohl auf einer Workstation als auch in einer Cloud-Sitzung.
Wie Zulassungslisten und Ablehnungslisten auf den verwalteten Satz angewendet werden
Die Ablehnungsliste kann die Server inmanaged-mcp.json weiter filtern:
deniedMcpServersgilt auch für verwaltete Server, daher wird ein verwalteter Server, der einem Eintrag entspricht, nicht geladen.- Die eigene
deniedMcpServerseines Benutzers wird aus seinen Einstellungen zusammengeführt, daher können Benutzer einen verwalteten Server für sich selbst blockieren.
allowedMcpServers gilt nicht für die Server in managed-mcp.json, mit einer Ausnahme: Claude Code überprüft immer noch einen Server, dessen Definition ${VAR}-Erweiterung verwendet, gegen die Zulassungsliste, da die effektive Konfiguration dieses Servers aus der Umgebung jedes Benutzers stammt und nicht nur aus der Datei. Vor v2.1.259 musste jeder verwaltete Server die Zulassungsliste passieren, wenn eine gesetzt war. Siehe Wie ein Server evaluiert wird für die Felder, die die ${VAR}-Überprüfung auslösen, und die vollständige Reihenfolge der Überprüfungen.
Wenn Sie allowedMcpServers verwendet haben, um zu verhindern, dass einige Ihrer eigenen managed-mcp.json-Server geladen werden, beginnen diese Server beim ersten Start jedes Benutzers von v2.1.259 oder später zu laden, es sei denn, sie verwenden ${VAR}-Erweiterung, ohne Aufforderung oder Benachrichtigung: nur deniedMcpServers wird weiterhin von diesen Servern subtrahiert. Fügen Sie Ablehnungslisteneinträge für sie hinzu, oder stellen Sie eine separate managed-mcp.json pro Gruppe bereit, bevor Ihre Benutzer ein Upgrade durchführen.
Konfiguration validieren
Um zu bestätigen, dass die Datei wirksam ist, führen Sie zwei Überprüfungen auf einem verwalteten Computer durch:claude mcp listzeigt nur die Server inmanaged-mcp.jsonplus alle, die Sie übermanagedMcpServersbereitstellen. Zwei weitere Ergebnisse bedeuten, dass etwas nicht stimmt:- Wenn die eigenen Server eines Benutzers immer noch angezeigt werden, wird die Datei nicht gelesen; überprüfen Sie den Pfad und die Berechtigungen auf den übergeordneten Verzeichnissen.
- Wenn die Server der Datei nicht angezeigt werden und der Abschnitt
MCP config diagnosticsdie Enterprise-Konfiguration als fehlgeschlagen beim Parsen markiert, kann Claude Code die Datei nicht lesen oder parsen. Beheben Sie den Fehler, den dieser Abschnitt benennt, und lassen Sie den Benutzer Claude Code neu starten.
claude mcp add --transport http test https://example.com/mcpschlägt mitCannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP serversfehl. Die URL muss kein echter Server sein, da die Richtlinienüberprüfung den Befehl ablehnt, bevor etwas kontaktiert wird.
MCP vollständig deaktivieren
Stellen Sie einemanaged-mcp.json mit einer leeren Serverzuordnung bereit, um jeden MCP-Server außer den Servern zu blockieren, die unter exklusive Kontrolle geladen werden:
claude mcp add schlägt mit dem oben genannten Enterprise-Richtlinienfehler fehl. Server, die Benutzer zuvor konfiguriert hatten, werden beim nächsten Start einer Sitzung nicht mehr geladen, ohne Warnung, dass die Richtlinie der Grund ist. Server, die Sie über managedMcpServers bereitstellen, und alles andere, das Sie neben dem verwalteten Satz erlauben, werden weiterhin unter einer leeren Zuordnung geladen, daher lassen Sie diese Schlüssel ungesetzt, um MCP vollständig zu deaktivieren.
claude.ai-Konnektoren neben dem verwalteten Satz erlauben
Standardmäßig unterdrückt die Bereitstellung vonmanaged-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-Anwendung 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 beispielsweise ein selbstgehosteter Runner-Host, unterdrückt die Konnektoren dieser Sitzung, unabhängig davon, ob Sie allowAllClaudeAiMcps setzen oder nicht. Keine managed-mcp.json erreicht die Konnektoren, die die Desktop-Anwendung an ihre lokalen und SSH-Sitzungen bereitstellt.
Claude Code liest allowAllClaudeAiMcps nur aus von Administratoren kontrollierten Richtlinienebenen: servergesteuerte Einstellungen, eine von MDM bereitgestellte plist oder ein 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.
Claude in Chrome neben dem verwalteten Satz erlauben
Standardmäßig blockiert Claude Code den integrierten Claude in Chrome-Server in Terminal-Sitzungen, wenn Siemanaged-mcp.json bereitstellen. Benutzer erhalten nicht die Abfrage zur Erweiterungsinstallation, und eine Sitzung, in der der Benutzer Chrome standardmäßig aktiviert hat, startet ohne Chrome und gibt keine Warnung aus. Wenn ein Benutzer, der Claude in Chrome sonst ausführen könnte, claude --chrome startet, beendet sich Claude Code beim Start mit einem Fehler, der die Einstellung allowClaudeInChromeWithManagedMcp benennt.
Um Benutzern zu ermöglichen, Claude in Chrome neben dem verwalteten Satz auszuführen, setzen Sie "allowClaudeInChromeWithManagedMcp": true in den verwalteten Einstellungen des Geräts selbst. Platzieren Sie es in einer von MDM bereitgestellten plist, einem HKLM-Registrierungsschlüssel oder einer System-managed-settings.json-Datei, je nachdem, welche Claude Code auf diesem Gerät auswählt. Erfordert Claude Code v2.1.282 oder später. Claude Code liest die Einstellung nur aus diesen Gerätequellen, auch wenn servergesteuerte Einstellungen den Rest Ihrer Richtlinie bereitstellen. Ein deniedMcpServers-Eintrag für claude-in-chrome blockiert den Server auch bei aktivierter Einstellung weiterhin.
Server über verwaltete Einstellungen bereitstellen
Um jedem Benutzer einen Satz von Remote-MCP-Servern zur Verfügung zu stellen, ohne die ausschließliche Kontrolle über MCP zu übernehmen, listen Sie diese untermanagedMcpServers in einer verwalteten Einstellungsquelle auf: servergesteuerte Einstellungen, eine Claude-Apps-Gateway-Richtlinie, ein MDM-Profil oder eine Registrierungsrichtlinie oder managed-settings.json. Benutzer behalten die Server, die sie selbst hinzufügen, und erhalten Ihre zusätzlich. Erfordert Claude Code v2.1.259 oder später. Frühere Clients ignorieren den Schlüssel.
Der Wert ist ein Objekt mit einem Schlüssel pro Servername. Jeder Eintrag hat die gleiche Form wie ein HTTP- oder SSE-Server in einer Projekt-.mcp.json-Datei, einschließlich der optionalen headers- und oauth-Member, die in Authentifizierung mit Remote-MCP-Servern beschrieben sind. Dieses Beispiel stellt einen Suchserver bereit, bei dem sich jeder Benutzer mit OAuth anmeldet, und einen Datensatzserver, der einen Header sendet, den Ihre Organisation ausgibt:
headers weg und lassen Sie jeden Benutzer sich mit OAuth anmelden.
Was ein Eintrag enthalten kann
Claude Code lädt einen Eintrag nur, wenn er alle folgenden Überprüfungen besteht. Es verwirft einen Eintrag, der eine nicht besteht, zeichnet einen Hinweis auf, den Sie mit/status lesen können, und lädt trotzdem die anderen Einträge:
typeisthttpodersse. Wie in.mcp.jsonwirdstreamable-httpals Alias fürhttpakzeptiert.urlist einehttps://-URL. Claude Code lehnt eine einfachehttp://-URL ab, einschließlich einer, die auflocalhostverweist.- Der Eintrag hat keinen
command-,args-,env- oderheadersHelper-Member, daher nennt ein verwaltetes Einstellungsdokument niemals ein Programm, das auf dem Computer eines Benutzers ausgeführt werden soll. - Kein Wert enthält einen
${VAR}-Verweis. Claude Code erweitert Umgebungsvariablen in diesen Einträgen nicht, daher schreiben Sie Literalwerte. - Der Servername enthält nur Buchstaben, Zahlen, Bindestriche und Unterstriche, und kein Schlüssel oder Wert enthält Steuerzeichen oder unsichtbare Formatierungszeichen.
Wie bereitgestellte Server geladen werden
Diese Regeln entscheiden, was geladen wird, wenn ein bereitgestellter Server mit einer anderen Serverdefinition oder mit einer anderen Einstellung auf dieser Seite überlappt:- Ein bereitgestellter Server hat Vorrang vor einem Server mit dem gleichen Namen im lokalen, Projekt- oder Benutzerbereich und vor einem Plugin-Server oder claude.ai-Connector, der auf die gleiche URL verweist.
- Wenn Sie auch
managed-mcp.jsonbereitstellen, lädt Claude Code seine Server und die bereitgestellten Server zusammen, und der Eintrag der Datei hat Vorrang, wenn beide einen Namen definieren. - Bereitgestellte Server werden weiterhin geladen, wenn
strictPluginOnlyCustomizationdiemcp-Oberfläche sperrt. deniedMcpServersgilt für bereitgestellte Server, einschließlich Einträge aus den eigenen Einstellungen eines Benutzers, daher kann ein Benutzer einen für sich selbst blockieren. Bereitgestellte Server benötigen keinenallowedMcpServers-Eintrag.
managed-mcp.json nicht bereitgestellt haben, behalten die Pro-Lauf-Flags ihre Bedeutung:
- Ein Server, den ein Benutzer mit
--mcp-configunter dem gleichen Namen übergibt, ersetzt den bereitgestellten für diesen Lauf und wird gegenallowedMcpServersüberprüft. --strict-mcp-configlässt bereitgestellte Server zusammen mit jedem anderen konfigurierten Server weg.
managed-mcp.json verhalten sich beide Flags wie Ausschließliche Kontrolle mit managed-mcp.json beschreibt.
Was Benutzer sehen und ändern können
Benutzer können einen bereitgestellten Server nicht bearbeiten oder entfernen:claude mcp removemeldet, dass der Server von der Organisation bereitgestellt wird.- Wenn Sie auch
managed-mcp.jsonnicht bereitgestellt haben, wird ein Eintrag, den ein Benutzer unter dem gleichen Namen hinzufügt, gespeichert, aber nicht verwendet, während Ihrer vorhanden ist. - Benutzer können einen bereitgestellten Server für sich selbst in
/mcpimmer noch ausschalten, das bereitgestellte Server unter Managed MCPs auflistet.
claude mcp get und /mcp zeigen die URL eines bereitgestellten Servers nur als seinen Host an, zum Beispiel https://mcp.example.com/…, und claude mcp get zeigt seine Header-Namen ohne ihre Werte an.
Wo managedMcpServers gilt
Claude Code liest managedMcpServers aus der verwalteten Quelle, die es unter Wie Claude Code verwaltete Quellen kombiniert auswählt. Wenn diese Quelle managedSourcesBehavior auf "merge" setzt, stellt Claude Code stattdessen die Server von jeder Admin-Quelle bereit, und wenn zwei Quellen den gleichen Namen definieren, gilt der Eintrag der höher eingestuften Quelle vollständig. Es liest den Schlüssel niemals aus der benutzergeschriebenen HKCU-Registrierung, aus übergeordneten Einstellungen, die ein Embedding-Host bereitstellt, oder aus Benutzer-, Projekt- oder lokalen Einstellungsdateien, wo es den Schlüssel mit einer Warnung verwirft.
Claude Code liest den Schlüssel nicht in der Code-Registerkarte der Claude Desktop-App bei einer Drittanbieter-Bereitstellung oder in den Cowork-Sitzungen der App, da Claude Desktop die MCP-Server dieser Sitzungen selbst bereitstellt und sperrt. /status und claude doctor sagen so, wenn Ihre verwalteten Einstellungen den Schlüssel dort tragen.
Wenn bereitgestellte Server verbunden werden
WennmanagedMcpServers über servergesteuerte Einstellungen ankommt, folgt sein Timing Abruf- und Caching-Verhalten:
- Auf einem Computer mit zwischengespeicherten Einstellungen hält Claude Code die zwischengespeicherte Kopie dieses Schlüssels zurück, bis der Server die Einstellungen für die Sitzung bestätigt, und wartet auf diese Bestätigung, bevor MCP-Server geladen werden. Wenn die Bestätigung fehlschlägt, wird die Sitzung ohne die bereitgestellten Server fortgesetzt und
/statussagt, dass sie zurückgehalten werden. - Beim ersten Start eines Computers, wenn noch nichts zwischengespeichert ist, verbindet eine interaktive Sitzung, die vor dem Eintreffen der Einstellungen startet, die bereitgestellten Server, sobald sie eintreffen, und ein
claude -p-Lauf, der bereits gestartet hat, kann ohne sie beendet werden.
- Server hinzufügen: Claude Code verbindet ihn, wenn die aktualisierten Einstellungen eintreffen, ohne einen Neustart.
- Eintrag eines Servers ändern: Diese Sitzungen verbinden sich mit der neuen Definition erneut.
- Server entfernen: Eine laufende interaktive Sitzung trennt ihn, sobald sie die geänderten Einstellungen liest. Ein nicht-interaktiver (
-p)-Lauf behält ihn bis zum Ende.
Richtlinienbasierte Kontrolle mit Zulassungs- und Sperrlisten
Zulassungs- 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 Ihrer Organisation hinzugefügt werden, bevor eine der beiden Listen auf ihn angewendet wird. Server, die Ihre Organisation übermanagedMcpServers bereitstellt, werden ohne einen Allowlist-Eintrag geladen, und Server, die die Allowlist-Überprüfung überspringen behandelt managed-mcp.json-Server. Die Denylist gilt für jeden Server, unabhängig davon, woher er kommt, mit Ausnahme von In-Process-type: "sdk"-Einträgen.
Um Server an Benutzer bereitzustellen, verwenden Sie managed-mcp.json oder managedMcpServers. 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. servergesteuerte Einstellungen oder eine bereitgestellte managed-settings.json-Datei.
Die Sperre gilt aus jeder von Administratoren kontrollierten verwalteten Quelle, sodass eine Sperrung in einer bereitgestellten Datei immer noch gilt, wenn auch servergesteuerte Einstellungen verwendet werden, die MCP nicht erwähnen. Während die Sperre aktiv ist, stammt die verwaltete Zulassungsliste aus der höchstrangigen Admin-Quelle, die eine setzt. Das Lesen der Sperre und der Zulassungsliste über Quellen hinweg erfordert Claude Code v2.1.273 oder später.
Beschränken Sie die Zulassungsliste auf verwaltete Einstellungen nur zeigt die Konfiguration.
Ohne allowManagedMcpServersOnly werden Zulassungslisten aus jedem Einstellungsbereich zusammengeführt, einschließlich der eigenen ~/.claude/settings.json eines Benutzers, sodass ein Benutzer das, was Ihre Zulassungsliste erlaubt, erweitern kann. Sperrlisten werden unabhängig davon aus jedem Bereich zusammengeführt.
allowManagedMcpServersOnly ist getrennt von allowManagedPermissionRulesOnly, das Berechtigungsregeln nur sperrt. Das Setzen dieses Flags erzwingt nicht die MCP-Zulassungsliste.Server nach URL, Befehl oder Name abgleichen
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:
Das Belassen von
allowedMcpServers ungesetzt unterscheidet sich vom Setzen auf ein leeres Array:
Siehe Ungültige Einträge in verwalteten Einstellungen für das, was passiert, wenn ein Eintrag die Schemavalidierung nicht besteht.
Wie serverName-Einträge abgeglichen werden
Ein serverName-Eintrag stimmt exakt mit der vom Benutzer zugewiesenen Bezeichnung überein, ohne Platzhalter.
Die serverName-Validierung unterscheidet sich zwischen den beiden Listen:
- In
deniedMcpServersakzeptiertserverNamejede nicht leere Zeichenkette ohne führende oder nachfolgende Leerzeichen, sodass Sie claude.ai-Konnektoren nach ihrem Anzeigenamen blockieren können. Zum Beispiel blockiert{ "serverName": "claude.ai Slack" }den Slack-Konnektor. Bevorzugen Sie einenserverUrl-Eintrag, wenn die Sperre robust gegen Umbenennungen sein muss, oder wenn ein Konnektor-Name kollidiert und ein(N)-Suffix erhält. - In
allowedMcpServersistserverNameauf Buchstaben, Zahlen, Bindestriche und Unterstriche beschränkt. Verwenden SieserverUrl, um einen claude.ai-Konnektor auf die Zulassungsliste zu setzen, 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.
disableClaudeAiConnectors.
Wie serverCommand-Einträge abgeglichen werden
Ein serverCommand-Eintrag enthält den Befehl und seine Argumente als ein Array, wie in { "serverCommand": ["npx", "-y", "server"] }. Claude Code vergleicht dieses Array mit dem Befehl und den Argumenten in der Konfiguration des Servers:
- Befehle stimmen genau überein. Jedes Argument, in Reihenfolge.
["npx", "-y", "server"]stimmt nicht mit["npx", "server"]oder["npx", "-y", "server", "--flag"]überein. - Der
env-Block wird nicht verglichen.["node", "server.js"]stimmt mit einem Server überein, der diesen Befehl mit beliebigenenv-Werten ausführt. Einige Umgebungsvariablen ändern, wasnodebeim Start lädt. Um dieenv-Werte selbst festzulegen, definieren Sie den Server inmanaged-mcp.json.
Wie serverUrl-Einträge abgeglichen werden
URLs unterstützen *-Platzhalter, einschließlich * als gesamtes Schema. Der Hostname-Abgleich unterscheidet nicht zwischen Groß- und Kleinschreibung und ignoriert einen nachgestellten FQDN-Punkt, sodass https://Mcp.Example.com/* mit https://mcp.example.com/api übereinstimmt. Pfade unterscheiden weiterhin zwischen Groß- und Kleinschreibung. Wenn Sie keinen Port angeben, entscheidet die Schreibweise des Hostnamens, ob das Muster nur mit dem Standardport des Schemas oder mit jedem Port übereinstimmt:
- Vollständig ausgeschriebener Hostname: nur der Standardport, 443 für
httpsund 80 fürhttp - Hostname mit einem
*darin: jeder Port
Einträge in
deniedMcpServers gleichen Ports auf dieselbe Weise ab. Wählen Sie daher einen Eintrag für staging.example.com nach den Ports und Schemas, die Sie blockieren müssen:
https://staging.example.com/*: blockierthttps-Server auf diesem Host nur auf Port 443, blockiert also keinen Server unterhttps://staging.example.com:8443/apihttps://staging.example.com:*/*: blockierthttps-Server auf diesem Host auf jedem Port*://staging.example.com:*/*: blockiert diesen Host über jedes Schema und auf jedem Port
Umgebungsvariablen in serverCommand- und serverUrl-Einträgen
serverCommand- und serverUrl-Werte werden vor dem Abgleich erweitert. Sowohl der Richtlinieneintrag als auch der konfigurierte Wert des Servers durchlaufen ${VAR}- und ${VAR:-default}-Erweiterung, sodass ein Eintrag, der als ["${HOME}/bin/server"] geschrieben ist, mit einer Serverkonfiguration übereinstimmt, die entweder die gleiche Referenz oder den erweiterten Pfad verwendet. serverName-Werte stimmen wörtlich überein und werden nie erweitert.
Die beiden Seiten lesen unterschiedliche Umgebungen:
- Der konfigurierte Wert des Servers: wird aus der Live-Prozessumgebung erweitert, wie der Rest von
.mcp.json - Ein Richtlinieneintrag: wird aus einer angehefteten Umgebung erweitert, sodass eine Variable, die von einer Projekt- oder Benutzereinstellungsdatei gesetzt wird, nicht ändern kann, was ein Allowlist-Eintrag bedeutet
${USERPROFILE} statt ${HOME}.
Die beiden Listen werden unterschiedlich erweitert: