Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

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

# Example MCP Settings Configuration
mcpSettings:
  # Strict whitelist mode:
  # allowedDomains:
  #   - "example.com"                    # Specific domain
  #   - "*.example.com"                  # All subdomains using wildcard
  #   - "https://api.example.com:8443"   # With protocol and port
  #   - "http://mcp-server:3000"         # Internal service, explicitly whitelisted
 
  # Default SSRF mode with private service exemptions:
  allowedAddresses:
    - "host.docker.internal:8080"        # Permit one private host on one port
    - "10.0.0.5:8000"                    # Permit one private IP on one port

Konfiguration

Subkeys

KeyTypeDescriptionExample
allowedDomainsArray of StringsEine 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.
allowedAddressesArray of StringsEine 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_api usw.)

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:

  1. Exakte Domain-Übereinstimmung

    allowedDomains:
      - "example.com"

    Erlaubt nur Verbindungen exakt zu example.com (beliebiges Protokoll/Port)

  2. Wildcard-Subdomain-Übereinstimmung

    allowedDomains:
      - "*.example.com"

    Ermöglicht Verbindungen zu allen Subdomains von example.com (z. B. api.example.com, mcp.example.com)

  3. Bestimmte IP-Adresse

    allowedDomains:
      - "192.168.1.100"
      - "172.24.1.165"

    Ermöglicht Verbindungen zu bestimmten IP-Adressen

  4. Lokale Docker-Domains

    allowedDomains:
      - "mcp-server"
      - "host.docker.internal"

    Ermöglicht Verbindungen zu Docker-Containernamen oder speziellen Docker-Domains

  5. Mit Protokoll und Port

    allowedDomains:
      - "https://api.example.com:8443"
      - "http://internal-mcp:3000"

    Beschränkt Verbindungen auf bestimmte Protokoll- und Port-Kombinationen

Fehlermeldungen

Wenn Sie Fehler wie die folgenden sehen:

  error: [MCPServersRegistry] Failed to inspect server "my-mcp": Domain "http://172.24.1.165:8000" is not allowed
  error: [MCP][my-mcp] Failed to initialize: Domain "http://172.24.1.165:8000" is not allowed

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:

mcpSettings:
  allowedAddresses:
    - "172.24.1.165:8000"    # Add the private host/IP and MCP port

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:

mcpSettings:
  allowedAddresses:
    - "host.docker.internal:8080"
    - "10.0.0.5:8000"
  # allowedDomains is intentionally not set — public destinations
  # remain reachable, only listed private host:port services are exempted.

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

Wie finden Sie diese Anleitung?