Docs Menu
Docs Home
/ /

Mejores prácticas de seguridad del servidor MCP de MongoDB

Esta página describe las mejores prácticas de seguridad para el servidor MongoDB MCP.

El servidor MCP --readOnly La opción habilita el modo--readOnly de solo lectura. restringe el servidor MCP para que solo ejecute herramientas que realicen operaciones de lectura, conexión y metadatos.

De forma predeterminada, el modo de solo lectura no está habilitado y el servidor MCP permite operaciones de escritura en clústeres. Para mejorar la seguridad, habilite el modo de solo lectura del servidor MCP y use un usuario de base de datos de solo lectura para conectarse a los clústeres.

El modo de solo lectura evita modificaciones de datos accidentales o maliciosas realizadas con el servidor MCP.

Para habilitar el modo de solo lectura, incluya --readOnly en el archivo de configuración JSON de la aplicación cliente MCP o en la línea de comandos, o bien, configure la variable de entorno del sistema operativo MDB_MCP_READ_ONLY como true. Las siguientes secciones muestran ejemplos de cada método.

El siguiente ejemplo muestra --readOnly en el archivo de configuración JSON del cliente MCP para la aplicación de cliente Claude Desktop:

{
"mcpServers": {
"MongoDB": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mongodb-mcp-server@latest",
"--readOnly"
],
"env": {
"MDB_MCP_CONNECTION_STRING":
"mongodb://localhost:27017/myDatabase"
}
}
}
}

Para ver otros ejemplos de archivos de configuración JSON de cliente, consulte Configurar el servidor MCP.

El siguiente ejemplo define la cadena de conexión del servidor MCP en una variable de entorno Unix para conectarse a un clúster Atlas:

export MDB_MCP_CONNECTION_STRING="mongodb://localhost:27017/myDatabase"

El siguiente ejemplo utiliza la variable de entorno anterior y también establece una opción de línea de comando adicional:

npx -y mongodb-mcp-server@latest --readOnly

Utilice variables de entorno en lugar de argumentos de línea de comandos para configuraciones sensibles, como credenciales de inicio de sesión e información de conexión. Por ejemplo, utilice MDB_MCP_API_CLIENT_ID y MDB_MCP_API_CLIENT_SECRET para la configuración del cliente API y MDB_MCP_CONNECTION_STRING para las cadenas de conexión.

Las variables de entorno son más seguras que los argumentos en la línea de comandos. Los argumentos en la línea de comandos pueden ser rastreados, almacenados en caché, incluidos en listas de procesos y registrados en diversas ubicaciones.

El siguiente ejemplo establece la variable de entorno MDB_MCP_READ_ONLY en true y establece la variable de entorno MDB_MCP_CONNECTION_STRING:

"MongoDB": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mongodb-mcp-server@latest",
],
"env": {
"MDB_MCP_READ_ONLY": "true",
"MDB_MCP_CONNECTION_STRING":
"mongodb://127.0.0.1:27019/?directConnection=true"
}
}

Para obtener más información sobre las variables de entorno, consulte Definición de variables de entorno del servidor MCP en el sistema operativo.

Para una implementación segura, utilice acceso a la base de datos de solo lectura con el servidor MCP:

  • Cree usuarios de base de datos dedicados de solo lectura para conexiones de servidor MCP.

  • Utilice el rol de base de datos read o cree un rol de solo lectura personalizado para los usuarios de la base de datos.

  • Nunca utilice las credenciales de la base de datos write con el servidor MCP.

Casos de uso para acceso a bases de datos de solo lectura:

  • Análisis de datos: consulta y analiza datos de producción sin riesgo de modificación.

  • Reporte: genera informes a partir de datos en vivo.

  • Monitoreo: examinar las métricas de la base de datos y los indicadores de rendimiento.

  • Soporte de desarrollo: permite a los desarrolladores consultar datos de producción con fines de depuración sin permitir el acceso de escritura.

Además, utilice la opción --readOnly del servidor MCP para garantizar el acceso a los datos de solo lectura. Para más detalles, consulte la sección anterior. Modo de solo lectura del servidor MCP.

Se recomienda el acceso de solo lectura a la base de datos para producción. Sin embargo, considere el acceso de escritura limitado para los siguientes casos de uso:

  • Entornos de desarrollo y puesta en escena.

  • Realizar tareas administrativas con la debida autorización.

  • Clústeres de pruebas aislados con datos no críticos.

Puede implementar el servidor MCP de forma local o remota.

En un servidor MCP local, el servidor MCP y la aplicación cliente se ejecutan en el mismo ordenador.

Un servidor MCP local permite controlar el entorno de instalación:

  • Configuración y dependencias: gestionas las dependencias del software MCP Server. Para definir los parámetros del Servidor MCP y las conexiones a bases de datos, edita los archivos en el equipo local.

  • Seguridad de credenciales: la información confidencial de las claves API y las cadenas de conexión se almacena localmente en archivos de configuración o variables de entorno. Usted protege las credenciales.

  • Actualizaciones manuales de software: cuando hay una nueva versión de MCP Server disponible, los usuarios pueden descargar e instalar el software. Esto puede provocar que los usuarios utilicen diferentes versiones de MCP Server.

Implemente un servidor MCP local para los siguientes escenarios:

  • Requiere una configuración sencilla para comenzar a utilizar MCP Server en su computadora.

  • Gestione su propia configuración y actualizaciones.

Los protocolos de transporte MCP permiten la comunicación de mensajes entre la aplicación cliente y el servidor MCP. Para un servidor MCP local, utilice uno de los siguientes protocolos de transporte:

  • STDIO (Entrada/Salida Estándar): la aplicación cliente inicia el servidor MCP como proceso secundario y se comunica mediante las tuberías estándar del sistema operativo (stdin stdouty). MongoDB recomienda el protocolo de transporte STDIO para implementaciones locales.

  • HTTP de transmisión: el servidor MCP inicia un servidor localhost en. El cliente se comunica con el servidor MCP mediante solicitudes HTTP de transmisión, lo que crea una sesión persistente. Se incluye un ID de sesión único en el encabezado del mensaje para mantener el estado y el contexto de la interacción.

Advertencia

Con HTTP Streamable, el servidor MCP está vinculado a localhost (127.0.0.1) por defecto. Esto garantiza que solo acepte conexiones que se originen en el mismo equipo.

La vinculación a 0.0.0.0 expone el servidor MCP a toda la red local, lo que permite que otros dispositivos de la misma red accedan potencialmente a él. Esto supone un riesgo de seguridad y podría permitir el acceso no autorizado al contexto de la base de datos. Si debe exponer el servidor MCP fuera localhost de, implemente la autenticación de seguridad descrita en la sección "Protección de conexiones al servidor MCP".

STDIO crea un enlace directo entre la aplicación cliente y el servidor MCP. STDIO es ideal si solo una aplicación se comunica con el servidor MCP, ya que ambos están estrechamente vinculados. Al usar STDIO, el servidor MCP debe ejecutarse en el mismo equipo que la aplicación cliente.

Streamable HTTP es flexible y funciona como un servidor privado en su ordenador. Varios clientes pueden conectarse al servidor MCP. Streamable HTTP es fácil de probar. A diferencia de STDIO, Streamable HTTP también permite implementar el servidor MCP de forma remota y local.

En una implementación de servidor MCP remoto, el servidor MCP se ejecuta en una computadora en la nube o en un servidor local.

Las aplicaciones cliente se conectan al servidor MCP a través de la red y utilizan HTTP Streamable. Esto proporciona un entorno compartido centralizado, accesible para múltiples usuarios, sistemas automatizados, aplicaciones y agentes de IA.

Tenga en cuenta los siguientes puntos para las implementaciones remotas del servidor MCP:

  • La implementación remota conlleva riesgos de seguridad adicionales y requiere una configuración segura.

  • Como mínimo, debe configurar el aislamiento de la red, la autenticación en el servidor MCP y configurar la gestión de secretos en la nube o en las instalaciones.

La comunicación en una implementación remota de servidor MCP suele utilizar HTTP de transmisión. Tenga en cuenta los siguientes puntos para HTTP de transmisión:

  • Mantenga el servidor MCP vinculado a localhost (127.0.0.1) para las conexiones, que es el valor predeterminado.

  • Para vincular a localhost, los administradores deben agregar un proxy inverso delante del servidor MCP. Por ejemplo, use un proxy inverso de Nginx.

  • El servidor MCP depende del proxy inverso para detener el tráfico malicioso antes de que llegue al servidor MCP.

  • Administración central: las políticas de seguridad, el registro, el control de versiones y el control de acceso se gestionan en un solo lugar.

  • Admite automatización: Las canalizaciones deCI/CD, los marcos de pruebas automatizadas y otros agentes pueden funcionar como clientes para flujos de trabajo automatizados.

  • Hardware adicional: requiere infraestructura de red y servidor dedicado.

  • Seguridad compleja: requiere seguridad de red, autenticación, autorización y gestión de certificados TLS.

  • Punto único de fallo: si el servidor remoto falla, afecta a todos los usuarios. Considere implementar alta disponibilidad para entornos críticos.

En todos los sistemas MCP, la autenticación en el servidor MCP se realiza por separado de la autenticación en el servicio al que este proporciona acceso. El servidor MCP de MongoDB proporciona acceso estático a las instancias de MongoDB que protege.

El servidor MCP no proporciona autenticación ni autorización de entrada, por lo que es necesario configurarlas. Esto es especialmente importante en una implementación remota del servidor MCP, ya que este está disponible en una red.

El siguiente diagrama muestra un flujo de trabajo de autenticación.

Diagrama de la autenticación del servidor MCP de MongoDB

Todas las conexiones entrantes al servidor MCP deben estar protegidas, de lo contrario la base de datos queda expuesta.

Las conexiones deben protegerse incluso si la conexión entre el servidor MCP y la base de datos está completamente protegida, como se describe en las siguientes secciones. Esto se debe a que el servidor MCP proporciona un punto de conexión independiente.

La protección de las conexiones entrantes al servidor MCP requiere un servicio externo que opere en paralelo con él. Esto suele requerir un proxy inverso para aplicar controles de acceso a las conexiones entrantes. El proxy asigna los derechos de acceso de la solicitud entrante a una instancia específica del servidor MCP, configurada estáticamente para conectarse a una instancia de base de datos MongoDB, ya sea localmente al servidor MCP o a un clúster Atlas.

Existen otros métodos para proteger el servidor MCP. Para simplificar, las siguientes secciones asumen el uso de un patrón proxy.

En la autorización delegada, el usuario delega un subconjunto de su autoridad a un agente. MongoDB recomienda el uso de OAuth 2.1 con el servidor MCP.

Para operar con el servidor MCP, una implementación debe contar con un servidor de autorización (AS) OAuth protegido por cuentas de usuario autenticadas y un proxy frente al servidor MCP que funcione como servidor de recursos (RS) OAuth. El agente funciona como un cliente OAuth.

La delegación de OAuth funciona de la siguiente manera:

  1. El agente solicita acceso al servidor MCP. Este servidor está protegido por un proxy.

  2. El proxy envía el agente al AS, que inicia una solicitud de autorización

  3. El usuario inicia sesión en el AS y autoriza al agente a acceder al RS, que es el proxy que protege el servidor MCP.

  4. Al agente se le proporciona un token de acceso para acceder al RS.

  5. El agente utiliza el token de acceso para llamar al servidor MCP a través del proxy.

  6. El proxy valida el token de acceso y permite la llamada al servidor MCP.

  7. El servidor MCP recibe la solicitud de proxy y ejecuta el comando en la base de datos a través de la conexión segura configurada de forma estática.

El servidor MCP y la base de datos nunca leen el token de acceso. Se confía en el proxy para proteger el servidor MCP. Omitir el proxy pone en riesgo el acceso al servidor MCP y a las bases de datos a las que este puede acceder.

El formato del token está oculto. LosJWT son un formato común que permite al proxy verificar de forma independiente el token emitido por el AS.

No se recomienda la autenticación directa.

Con la autenticación directa, el agente proporciona credenciales al proxy. El proxy autentica las credenciales. Las credenciales pueden ser una clave API u otra credencial que identifique al agente. El patrón es simple pero presenta los siguientes problemas:

  • Sólo se identifica el agente, no el usuario para el cual actúa el agente.

  • No existe ningún método para auditar quién está realizando qué acción a través del servidor MCP.

  • El acceso normalmente se controla de forma centralizada para todos los usuarios o directamente en el proxy.

Las siguientes secciones describen antipatrones que no debes utilizar.

No utilice la suplantación de usuario.

Con la suplantación de usuario, el usuario proporciona sus credenciales directamente al agente. Este las envía al proxy para su autenticación. La suplantación de usuario presenta los siguientes problemas:

  • Solo se identifica al usuario. Se oculta que el agente actúa en su nombre.

  • Las credenciales de usuario se filtran a sistemas intermedios, lo que pone en riesgo las cuentas de usuario.

  • Las acciones que el usuario puede realizar están permitidas para el agente y la liberación limitada de funciones es imposible.

  • Desconectar un agente requiere rotación de credenciales de usuario, lo que interrumpe cuentas de usuario y sistemas.

  • Las credenciales que no se pueden suplantar de identidad ni reproducir no pueden funcionar.

No utilice autenticación de paso a través.

En la autenticación de paso a través, el agente obtiene y transfiere las credenciales para acceder a la base de datos al proxy. El proxy valida las credenciales y las transfiere al servidor MCP. Este utiliza las credenciales para conectarse a la base de datos. La autenticación de paso a través presenta los siguientes problemas:

  • Sólo pueden funcionar credenciales copiables y reproducibles, lo que limita las conexiones a opciones de baja seguridad.

  • La cadena de conexión está oculta al sistema.

  • Cualquiera puede potencialmente omitir la siguiente parte de la cadena.

El método que utiliza el servidor MCP para acceder de forma segura a la base de datos es independiente del método utilizado para proteger el acceso al servidor MCP. Las siguientes secciones describen la seguridad de la base de datos y la red.

El servidor MCP admite los siguientes métodos de autenticación de bases de datos:

  • Autenticación empresarial con LDAP, certificados X.509, OIDC y Kerberos.

  • Autenticación SCRAM-SHA-256 predeterminada para proporcionar una autenticación de contraseña segura.

  • Autenticación de certificadomTLS para cuentas de servicio y comunicación entre clústeres.

La base de datos MongoDB admite los siguientes métodos de autorización:

  • RBAC para limitar el acceso a la base de datos.

  • Permisos detallados de la base de datos para limitar el acceso a bases de datos específicas, colecciones individuales y operaciones como lectura, guardado y acciones administrativas.

  • Roles de base de datos personalizados para equipos. Por ejemplo, acceso de solo lectura para el equipo de análisis y acceso de lectura y escritura para el equipo de operaciones.

  • Seguridad de colección adicional para limitar el acceso a la colección.

Recomendaciones para el aislamiento de la red:

  • Implemente clústeres en una VPC o VNet privada sin acceso directo a Internet.

  • Conexiones seguras a la red privada en la nube con peering VPC y puntos finales privados.

  • Restringir el acceso a la base de datos a direcciones IP específicas o bloques CIDR.

Recomendaciones para la configuración del firewall:

  • Restrinja el acceso al puerto 27017 del servidor MongoDB únicamente a servidores de aplicaciones autorizados.

  • Configure reglas de firewall en la nube con grupos de seguridad y una ACL para el tráfico de red entrante y saliente.

  • Deshabilite los puertos no cifrados y aplique TLS 1.2+ para todas las conexiones.

El servidor MCP utiliza directorios para almacenar registros y archivos de datos exportados. Proteja estos directorios con permisos del sistema de archivos, ya que pueden contener información confidencial.

La logPath opción de configuración especifica el directorio donde el servidor MCP escribe los archivos de registro. Los registros pueden contener información confidencial, como cadenas de conexión, patrones de consulta y detalles de errores.

Para proteger el directorio de registro:

  • Establezca el propietario del directorio en la cuenta de usuario que ejecuta el servidor MCP.

  • Configure permisos de lectura y escritura solo para el propietario.

  • Denegar el acceso a todos los demás usuarios y procesos.

  • Revise y rote periódicamente los archivos de registro para evitar el acceso no autorizado a los datos históricos.

La exportsPath opción de configuración especifica el directorio donde el servidor MCP almacena los archivos de datos exportados. Proteja los archivos exportados del acceso no autorizado, ya que pueden contener registros confidenciales de la base de datos.

Para proteger el directorio de exportaciones:

  • Establezca el propietario del directorio en la cuenta de usuario que ejecuta el servidor MCP.

  • Configure permisos de lectura y escritura solo para el propietario.

  • Denegar el acceso a todos los demás usuarios y procesos.

  • Supervise el tamaño del directorio para evitar el agotamiento del espacio en disco debido a las exportaciones acumuladas.

Importante

Aísle los directorios logPath y exportsPath de otros procesos del sistema. datos confidenciales a usuarios o aplicaciones no autorizados en el mismo sistema.

Asigna permisos mínimos de Atlas API al usuario de Atlas para la implementación. Normalmente, utiliza solo los roles de proyecto y asígnalos únicamente a los proyectos específicos que necesites gestionar o ver.

Nota

Evite el rol Organization Owner a menos que necesite control administrativo sobre todos los proyectos y configuraciones de la organización. El rol Organization Owner rara vez es necesario y puede representar un riesgo de seguridad.

La siguiente tabla muestra los roles de Atlas con menos privilegios para asignar tareas comunes:

Tarea a realizar
Rol con menos privilegios para asignar
Nivel de rol

Enumere organizaciones y proyectos

Organization Member or Organization Read Only

Organización

Crear nuevos proyectos

Organization Project Creator

Organización

Ver clústeres y bases de datos en un proyecto

Project Read Only

Proyecto

Crear y administrar clústeres en un proyecto

Project Cluster Manager

Proyecto

Administrar listas de acceso del proyecto

Project IP Access List Admin

Proyecto

Gestionar usuarios de base de datos

Project Database Access Admin

Proyecto

Para obtener información completa sobre los roles de Atlas, consulte Roles de usuario de Atlas.

Volver

Apoderado