Struktur des MCP-Einstellungsobjekts
Übersicht
Die mcpSettings-Konfiguration bietet globale Einstellungen für die Sicherheit und das Verhalten von MCP (Model Context Protocol)-Servern. Diese Konfiguration ist von mcpServers getrennt und steuert, wie MCP-Server eine Verbindung zu bestimmten Domains und IP-Adressen herstellen können.
Beispiel
Konfiguration
Subkeys
| Key | Type | Description | Example |
|---|---|---|---|
| allowedDomains | Array of Strings | Eine Liste zur Angabe zulässiger Domains für MCP-Serververbindungen. | When configured, only listed domains are allowed. When not configured, SSRF targets are blocked but all other domains are allowed. |
| allowedAddresses | Array of Strings | Eine SSRF-Ausnahmeliste, begrenzt auf private IP-Bereiche. Hier aufgeführte Hostname/IP + Port-Paare umgehen die standardmäßige SSRF-Blockierung, wenn `allowedDomains` nicht konfiguriert ist. | Use when you want default SSRF protection AND specific internal MCP servers, without flipping `allowedDomains` into strict-whitelist mode. |
Sicherheitskontext (SSRF-Schutz)
LibreChat enthält einen SSRF-Schutz (Server-Side Request Forgery) mit folgendem Verhalten:
Wenn allowedDomains NICHT konfiguriert ist:
- SSRF-anfällige Ziele sind standardmäßig blockiert
- Alle anderen externen Domains sind erlaubt
Wenn allowedDomains konfiguriert IST:
- Nur Domains auf der Liste sind erlaubt
- Interne/SSRF-Ziele können zugelassen werden, indem sie explizit zur Liste hinzugefügt werden
Blockierte SSRF-Ziele umfassen:
- Localhost-Adressen (
localhost,127.0.0.1,::1) - Private IP-Bereiche (
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16) - Link-Local-Adressen (
169.254.0.0/16, beinhaltet Cloud-Metadaten-IPs) - Interne TLDs (
.internal,.local,.localhost) - Gängige interne Dienstnamen (
redis,mongodb,postgres,api,rag_apiusw.)
Wenn Ihre MCP-Server eine Verbindung zu internen Diensten oder Docker-Containern herstellen müssen, fügen Sie diese entweder der strikten allowedDomains-Whitelist hinzu oder lassen Sie allowedDomains leer und fügen Sie den genauen privaten Dienst zu allowedAddresses hinzu.
Musterformate
Das allowedDomains Array unterstützt verschiedene Musterformate:
-
Exakte Domain-Übereinstimmung
Erlaubt nur Verbindungen exakt zu
example.com(beliebiges Protokoll/Port) -
Wildcard-Subdomain-Übereinstimmung
Ermöglicht Verbindungen zu allen Subdomains von
example.com(z. B.api.example.com,mcp.example.com) -
Bestimmte IP-Adresse
Ermöglicht Verbindungen zu bestimmten IP-Adressen
-
Lokale Docker-Domains
Ermöglicht Verbindungen zu Docker-Containernamen oder speziellen Docker-Domains
-
Mit Protokoll und Port
Beschränkt Verbindungen auf bestimmte Protokoll- und Port-Kombinationen
Fehlermeldungen
Wenn Sie Fehler wie die folgenden sehen:
Dies deutet wahrscheinlich darauf hin, dass der private Host und Port des MCP-Servers zu allowedAddresses hinzugefügt werden müssen, es sei denn, Sie verwenden allowedDomains absichtlich als strikte Whitelist:
allowedAddresses
allowedAddresses ist eine Ausnahmeliste für die SSRF-Blockierung privater IP-Adressen – keine Domain-Whitelist. Es ist das richtige Werkzeug, wenn Sie ein oder zwei spezifische private/interne Dienste zulassen möchten, ohne einzuschränken, was Ihre MCP-Server im öffentlichen Internet erreichen können.
Wann es anstelle von allowedDomains verwendet werden sollte
allowedDomains ist eine strikte Whitelist: Wenn sie festgelegt ist, sind nur die aufgeführten Einträge erreichbar. Das Hinzufügen einer privaten IP-Adresse, um beispielsweise einen selbst gehosteten MCP Server zuzulassen, blockiert auch jedes öffentliche Ziel (api.example.com, *.googleapis.com usw.), das Sie nicht ebenfalls aufgelistet haben.
allowedAddresses wird nur verwendet, wenn allowedDomains nicht konfiguriert ist. Es erlaubt spezifische private host:port-Ziele, während der Rest des öffentlichen Internets über die standardmäßige SSRF-Richtlinie erreichbar bleibt. Übliche Konfiguration:
Wenn allowedDomains konfiguriert ist, ist dies maßgeblich: Private Dienste müssen dort aufgelistet werden, anstatt sich auf allowedAddresses zu verlassen.
Zulässige Einträge
- Hostnames mit Port:
host.docker.internal:8080,mcp-server:3000,localhost:3001 - Private IPv4-Literale mit Port:
10.0.0.5:8000,127.0.0.1:3001,192.168.1.10:443,169.254.169.254:80 - In Klammern gesetzte private IPv6-Literale mit Port:
[::1]:3001,[fc00::1]:8080,[fe80::1]:8080
Abgelehnte Einträge (validiert beim Laden der Konfiguration)
- URLs / Pfade / CIDR-Bereiche:
http://10.0.0.5,10.0.0.0/24,/path - Bare Hostnamen oder IPs:
localhost,10.0.0.5,::1,[::1]— jeder Eintrag muss einen Port enthalten - Ungültige Ports:
localhost:0,localhost:65536,localhost:http - Öffentliche IP-Literale:
8.8.8.8:53,1.1.1.1:53,[2001:4860::8888]:443— das Feld ist auf den privaten IP-Adressraum beschränkt; öffentliche IPs sind keine SSRF-Ziele und eine Ausnahme für öffentliche IPs hat keinen defensiven Zweck
Hostname-Vertrauen
Ein Hostname-Eintrag vertraut jeder IP-Adresse, zu der der Hostname zur Laufzeit auf dem angegebenen Port aufgelöst wird. Wenn das DNS für einen aufgeführten Hostnamen rotiert oder gekapert wird, um auf eine andere private IP-Adresse zu verweisen, gilt die Ausnahme auch für diese. Führen Sie nur Hostnamen auf, deren DNS Sie kontrollieren. Bevorzugen Sie nach Möglichkeit direkte IP-Adressen.
Referenzen
- MCP Servers Konfiguration
- MCP-Funktionen
- Actions allowedAddresses (ähnliches Konzept für Actions)
Wie finden Sie diese Anleitung?