Estructura del objeto de configuración MCP
Descripción general
La configuración mcpSettings proporciona ajustes globales para la seguridad y el comportamiento del servidor MCP (Model Context Protocol). Esta configuración es independiente de mcpServers y controla cómo los servidores MCP pueden conectarse a determinados dominios y direcciones IP.
Ejemplo
Configuración
Subclaves
| Key | Type | Description | Example |
|---|---|---|---|
| allowedDomains | Array of Strings | Una lista que especifica los dominios permitidos para las conexiones de servidores 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 | Una lista de exención de SSRF, limitada al espacio de IP privadas. Los pares de nombre de host/IP + puerto enumerados aquí omiten el bloqueo de SSRF de denegación predeterminada cuando `allowedDomains` no está configurado. | Use when you want default SSRF protection AND specific internal MCP servers, without flipping `allowedDomains` into strict-whitelist mode. |
Contexto de seguridad (Protección SSRF)
LibreChat incluye protección contra SSRF (Server-Side Request Forgery) con el siguiente comportamiento:
Cuando allowedDomains NO está configurado:
- Los objetivos propensos a SSRF están bloqueados de forma predeterminada
- Todos los demás dominios externos están permitidos
Cuando allowedDomains ESTÁ configurado:
- Solo se permiten los dominios en la lista
- Los destinos internos/SSRF pueden permitirse añadiéndolos explícitamente a la lista
Los objetivos SSRF bloqueados incluyen:
- Direcciones localhost (
localhost,127.0.0.1,::1) - Rangos de IP privadas (
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16) - Direcciones link-local (
169.254.0.0/16, incluye IPs de metadatos de la nube) - TLDs internos (
.internal,.local,.localhost) - Nombres comunes de servicios internos (
redis,mongodb,postgres,api,rag_api, etc.)
Si tus servidores MCP necesitan conectarse a servicios internos o contenedores Docker, añádelos a la lista blanca estricta allowedDomains, o deja allowedDomains sin configurar y añade el servicio privado exacto a allowedAddresses.
Formatos de patrón
El array allowedDomains admite varios formatos de patrón:
-
Coincidencia exacta de dominio
Solo permite conexiones exactamente a
example.com(cualquier protocolo/puerto) -
Coincidencia de subdominio comodín
Permite conexiones a todos los subdominios de
example.com(p. ej.,api.example.com,mcp.example.com) -
Dirección IP específica
Permite conexiones a direcciones IP específicas
-
Dominios locales de Docker
Permite conexiones a nombres de contenedores Docker o dominios especiales de Docker
-
Con Protocolo y Puerto
Restringe las conexiones a combinaciones específicas de protocolo y puerto
Mensajes de error
Si ves errores como:
Esto probablemente indica que el host y puerto privados del servidor MCP deben agregarse a allowedAddresses, a menos que utilice intencionalmente allowedDomains como una lista blanca estricta:
allowedAddresses
allowedAddresses es una lista de excepciones para el bloqueo de IP privadas SSRF, no una lista blanca de dominios. Es la herramienta adecuada cuando desea permitir uno o dos servicios privados/internos específicos sin restringir lo que sus servidores MCP pueden alcanzar en la internet pública.
Cuándo usarlo en lugar de allowedDomains
allowedDomains es una lista blanca estricta: cuando se establece, solo las entradas listadas son alcanzables. Agregar una IP privada allí para permitir, por ejemplo, un servidor MCP autohospedado también bloquea todos los destinos públicos (api.example.com, *.googleapis.com, etc.) que no hayas incluido también en la lista.
allowedAddresses se utiliza solo cuando allowedDomains no está configurado. Permite objetivos específicos privados host:port mientras deja el resto de la internet pública accesible a través de la política SSRF predeterminada. Configuración común:
Si allowedDomains está configurado, es autoritativo: los servicios privados deben incluirse allí en lugar de depender de allowedAddresses.
Entradas aceptables
- Nombres de host con puerto:
host.docker.internal:8080,mcp-server:3000,localhost:3001 - Literales IPv4 privados con puerto:
10.0.0.5:8000,127.0.0.1:3001,192.168.1.10:443,169.254.169.254:80 - Literales IPv6 privados entre corchetes con puerto:
[::1]:3001,[fc00::1]:8080,[fe80::1]:8080
Entradas rechazadas (validadas al cargar la configuración)
- URLs / rutas / rangos CIDR:
http://10.0.0.5,10.0.0.0/24,/path - Nombres de host o IPs sin formato:
localhost,10.0.0.5,::1,[::1]— cada entrada debe incluir un puerto - Puertos no válidos:
localhost:0,localhost:65536,localhost:http - Literales de IP pública:
8.8.8.8:53,1.1.1.1:53,[2001:4860::8888]:443— el campo está limitado al espacio de IP privada; las IP públicas no son objetivos de SSRF y una exención de IP pública no tiene ningún propósito defensivo
Confianza de nombre de host
Una entrada de hostname confía en cualquier IP a la que dicho hostname se resuelva en tiempo de ejecución en el puerto indicado. Si el DNS de un hostname listado se rota o es secuestrado para apuntar a una IP privada diferente, la exención se aplicará a esta. Liste únicamente hostnames cuyo DNS usted controle. Prefiera IPs literales siempre que pueda.
Referencias
- Configuración de servidores MCP
- Características de MCP
- Actions allowedAddresses (concepto similar para Actions)
¿Qué te parece esta guía?