Struktura obiektu ustawień MCP
Przegląd
Konfiguracja mcpSettings zapewnia globalne ustawienia dotyczące bezpieczeństwa i zachowania serwerów MCP (Model Context Protocol). Konfiguracja ta jest oddzielona od mcpServers i kontroluje sposób, w jaki serwery MCP mogą łączyć się z określonymi domenami i adresami IP.
Przykład
# 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 portKonfiguracja
Podklucze
| Key | Type | Description | Example |
|---|---|---|---|
| allowedDomains | Array of Strings | Lista określająca dozwolone domeny dla połączeń z serwerem MCP. | When configured, only listed domains are allowed. When not configured, SSRF targets are blocked but all other domains are allowed. |
| allowedAddresses | Array of Strings | Lista wyjątków SSRF, ograniczona do prywatnej przestrzeni adresów IP. Pary nazwa hosta/IP + port wymienione tutaj omijają domyślną blokadę SSRF, gdy `allowedDomains` nie jest skonfigurowane. | Use when you want default SSRF protection AND specific internal MCP servers, without flipping `allowedDomains` into strict-whitelist mode. |
Kontekst bezpieczeństwa (ochrona SSRF)
LibreChat zawiera ochronę przed SSRF (Server-Side Request Forgery) o następującym działaniu:
Gdy allowedDomains NIE jest skonfigurowane:
- Cele podatne na SSRF są domyślnie blokowane
- Wszystkie inne domeny zewnętrzne są dozwolone
Gdy allowedDomains JEST skonfigurowane:
- Tylko domeny znajdujące się na liście są dozwolone
- Cele wewnętrzne/SSRF można zezwolić, dodając je jawnie do listy
Zablokowane cele SSRF obejmują:
- Adresy localhost (
localhost,127.0.0.1,::1) - Prywatne zakresy IP (
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16) - Adresy link-local (
169.254.0.0/16, obejmują adresy IP metadanych chmury) - Wewnętrzne TLD (
.internal,.local,.localhost) - Typowe nazwy usług wewnętrznych (
redis,mongodb,postgres,api,rag_apiitp.)
Jeśli Twoje serwery MCP muszą łączyć się z usługami wewnętrznymi lub kontenerami Docker, dodaj je do ścisłej białej listy allowedDomains lub pozostaw allowedDomains nieustawione i dodaj konkretną usługę prywatną do allowedAddresses.
Formaty wzorców
Tablica allowedDomains obsługuje kilka formatów wzorców:
-
Dokładne dopasowanie domeny
allowedDomains: - "example.com"Zezwala na połączenia wyłącznie z dokładnie
example.com(dowolny protokół/port) -
Dopasowanie wieloznaczne subdomen (Wildcard Subdomain Match)
allowedDomains: - "*.example.com"Umożliwia połączenia ze wszystkimi subdomenami
example.com(np.api.example.com,mcp.example.com) -
Określony adres IP
allowedDomains: - "192.168.1.100" - "172.24.1.165"Umożliwia połączenia z określonymi adresami IP
-
Lokalne domeny Docker
allowedDomains: - "mcp-server" - "host.docker.internal"Umożliwia połączenia z nazwami kontenerów Docker lub specjalnymi domenami Docker
-
Z protokołem i portem
allowedDomains: - "https://api.example.com:8443" - "http://internal-mcp:3000"Ogranicza połączenia do określonych kombinacji protokołów i portów
Komunikaty o błędach
Jeśli widzisz błędy typu:
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 allowedPrawdopodobnie oznacza to, że prywatny host i port serwera MCP muszą zostać dodane do allowedAddresses, chyba że celowo używasz allowedDomains jako ścisłej białej listy:
mcpSettings:
allowedAddresses:
- "172.24.1.165:8000" # Add the private host/IP and MCP portallowedAddresses
allowedAddresses to lista wyjątków dla blokady prywatnych adresów IP SSRF — nie jest to biała lista domen. Jest to właściwe narzędzie, gdy chcesz zezwolić na dostęp do jednej lub dwóch konkretnych usług prywatnych/wewnętrznych, nie ograniczając przy tym tego, do czego Twoje serwery MCP mogą uzyskiwać dostęp w publicznym Internecie.
Kiedy używać tego zamiast allowedDomains
allowedDomains to ścisła biała lista: gdy jest ustawiona, osiągalne są tylko wymienione wpisy. Dodanie tam prywatnego adresu IP, aby zezwolić na przykład na własny serwer MCP, blokuje również wszystkie publiczne miejsca docelowe (api.example.com, *.googleapis.com itd.), których również nie uwzględniłeś na liście.
allowedAddresses jest używane tylko wtedy, gdy allowedDomains nie jest skonfigurowane. Pozwala na dostęp do określonych prywatnych celów host:port, pozostawiając resztę publicznego internetu dostępną zgodnie z domyślną polityką SSRF. Typowa konfiguracja:
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.Jeśli allowedDomains jest skonfigurowane, jest ono nadrzędne: usługi prywatne muszą być tam wymienione zamiast polegania na allowedAddresses.
Dopuszczalne wpisy
- Nazwy hostów z portem:
host.docker.internal:8080,mcp-server:3000,localhost:3001 - Prywatne literały IPv4 z portem:
10.0.0.5:8000,127.0.0.1:3001,192.168.1.10:443,169.254.169.254:80 - Literały IPv6 w nawiasach kwadratowych z portem:
[::1]:3001,[fc00::1]:8080,[fe80::1]:8080
Odrzucone wpisy (zweryfikowane podczas ładowania konfiguracji)
- Adresy URL / ścieżki / zakresy CIDR:
http://10.0.0.5,10.0.0.0/24,/path - Same nazwy hostów lub adresy IP:
localhost,10.0.0.5,::1,[::1]— każdy wpis musi zawierać port - Nieprawidłowe porty:
localhost:0,localhost:65536,localhost:http - Literały publicznych adresów IP:
8.8.8.8:53,1.1.1.1:53,[2001:4860::8888]:443— pole jest ograniczone do prywatnej przestrzeni adresów IP; publiczne adresy IP nie są celami SSRF, a wyłączenie dla publicznych adresów IP nie ma celu defensywnego
Zaufanie do nazwy hosta
Wpis nazwy hosta ufa dowolnemu adresowi IP, na który ta nazwa hosta wskazuje w czasie wykonywania na podanym porcie. Jeśli DNS dla wymienionej nazwy hosta zostanie zmieniony lub przejęty, aby wskazywać na inny prywatny adres IP, wyłączenie będzie miało zastosowanie również do niego. Wymieniaj tylko te nazwy hostów, których DNS kontrolujesz. Jeśli to możliwe, preferuj bezpośrednie adresy IP.
Referencje
- Konfiguracja serwerów MCP
- Funkcje MCP
- Actions allowedAddresses (podobna koncepcja dla Actions)
Jaka jest ta instrukcja?