MongoDB Lens

by furey
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Provides full featured access to MongoDB databases using natural language via LLMs to perform queries, run aggregations, optimize performance, and more. The server connects to MongoDB instances to allow exploration, querying, and management of databases, collections, and documents.

Lente MongoDB

MongoDB Lens es un servidor de Protocolo de Contexto de Modelo (MCP) local con acceso completo a bases de datos MongoDB que utiliza lenguaje natural a través de LLM para realizar consultas, ejecutar agregaciones, optimizar el rendimiento y más.

Contenido

Inicio rápido

Características

Herramientas

Recursos

Indicaciones

  • aggregation-builder : creación paso a paso de canalizaciones de agregación
  • backup-strategy : Recomendaciones personalizadas de backup y recuperación
  • data-modeling : asesoramiento experto sobre el diseño de esquemas de MongoDB para casos de uso específicos
  • database-health-check : evaluación integral del estado de la base de datos y recomendaciones
  • index-recommendation : obtenga sugerencias de índice personalizadas basadas en patrones de consulta
  • migration-guide : Planes de migración de versiones de MongoDB paso a paso
  • mongo-shell : Genera comandos de shell de MongoDB con explicaciones
  • multi-tenant-design : Diseño de la arquitectura de base de datos multiinquilino de MongoDB
  • query-builder : Guía interactiva para construir consultas MongoDB
  • query-optimizer : Recomendaciones de optimización para consultas lentas
  • schema-analysis : Análisis detallado del esquema de colección con recomendaciones
  • schema-versioning : gestión de la evolución de esquemas en aplicaciones MongoDB
  • security-audit : análisis de seguridad de bases de datos y recomendaciones de mejora
  • sql-to-mongodb : Convierte consultas SQL en canales de agregación de MongoDB

Otras características

Otras características: Descripción general

MongoDB Lens incluye numerosas otras funciones:

  • Archivo de configuración : configuración personalizada a través de ~/.mongodb-lens.[jsonc|json]
  • Anulaciones de variables de entorno : anula las configuraciones mediante process.env.CONFIG_*
  • Sistema de confirmación : verificación en dos pasos para operaciones destructivas
  • Conexiones múltiples : definir y cambiar entre alias de URI nombrados
  • Deshabilitación de componentes : deshabilite selectivamente herramientas, indicaciones o recursos
  • Resiliencia de la conexión : reconexión automática con retroceso exponencial
  • Protecciones de consulta : límites configurables y protecciones de rendimiento
  • Manejo de errores : códigos y mensajes de error JSONRPC completos
  • Inferencia de esquemas : análisis de esquemas eficiente con muestreo inteligente
  • Protección de credenciales : Ofuscación de contraseñas de cadenas de conexión en registros
  • Gestión de memoria : supervisión y limpieza automáticas para operaciones de gran tamaño
  • Almacenamiento en caché inteligente : almacenamiento en caché optimizado para esquemas, índices, campos y colecciones
  • Compatibilidad con versiones anteriores : admite versiones modernas y heredadas de MongoDB

Otras características: nuevos metadatos de la base de datos

MongoDB Lens inserta una colección metadata en cada base de datos que crea.

Esta colección metadata almacena un único documento que contiene información contextual que sirve como registro permanente del origen de la base de datos y al mismo tiempo garantiza que la base de datos nueva, que de otro modo estaría vacía, persista en el sistema de almacenamiento de MongoDB.

{ "_id" : ObjectId("67d5284463788ec38aecee14"), "created" : { "timestamp" : ISODate("2025-03-15T07:12:04.705Z"), "tool" : "MongoDB Lens v5.0.7", "user" : "anonymous" }, "mongodb" : { "version" : "3.6.23", "connectionInfo" : { "host" : "unknown", "readPreference" : "primary" } }, "database" : { "name" : "example_database", "description" : "Created via MongoDB Lens" }, "system" : { "hostname" : "unknown", "platform" : "darwin", "nodeVersion" : "v22.14.0" }, "lens" : { "version" : "5.0.7", "startTimestamp" : ISODate("2025-03-15T07:10:06.084Z") } }

Una vez que haya agregado sus propias colecciones a su nueva base de datos, puede eliminar de forma segura la colección metadata mediante la herramienta de drop-collection :

  • "Eliminar la colección de metadatos de la nueva base de datos" ➥ Utiliza la herramienta drop-collection (con confirmación)

Instalación

MongoDB Lens se puede instalar y ejecutar de varias maneras:

Instalación: NPX

[!NOTA] NPX requiere que Node.js esté instalado y ejecutándose en su sistema (sugerencia: use Volta ).

La forma más sencilla de ejecutar MongoDB Lens es utilizando NPX.

Primero, asegúrese de que Node.js esté instalado:

node --version # Ideally >= v22.x but MongoDB Lens is >= v18.x compatible

Luego, ejecute MongoDB Lens a través de NPX:

# Using default connection string mongodb://localhost:27017 npx -y mongodb-lens # Using custom connection string npx -y mongodb-lens mongodb://your-connection-string # Using "@latest" to keep the package up-to-date npx -y mongodb-lens@latest

[!TIP] Si encuentra errores de permisos con npx , intente ejecutar npx clear-npx-cache antes de ejecutar npx -y mongodb-lens (esto borra el caché y vuelve a descargar el paquete).

Instalación: Docker Hub

[!NOTA] Docker Hub requiere que Docker esté instalado y ejecutándose en su sistema.

Primero, asegúrese de que Docker esté instalado:

docker --version # Ideally >= v27.x

Luego, ejecute MongoDB Lens a través de Docker Hub:

# Using default connection string mongodb://localhost:27017 docker run --rm -i --network=host furey/mongodb-lens # Using custom connection string docker run --rm -i --network=host furey/mongodb-lens mongodb://your-connection-string # Using "--pull" to keep the Docker image up-to-date docker run --rm -i --network=host --pull=always furey/mongodb-lens

Instalación: Node.js desde la fuente

[!NOTA] Node.js desde la fuente requiere que Node.js esté instalado y ejecutándose en su sistema (sugerencia: use Volta ).

  1. Clonar el repositorio de MongoDB Lens:
    git clone https://github.com/furey/mongodb-lens.git
  2. Navegue hasta el directorio del repositorio clonado:
    cd /path/to/mongodb-lens
  3. Asegúrese de que Node.js esté instalado:
    node --version # Ideally >= v22.x but MongoDB Lens is >= v18.x compatible
  4. Instalar las dependencias de Node.js:
    npm ci
  5. Iniciar el servidor:
    # Using default connection string mongodb://localhost:27017 node mongodb-lens.js # Using custom connection string node mongodb-lens.js mongodb://your-connection-string

Instalación: Docker desde el código fuente

[!NOTA] Para ejecutar Docker desde la fuente es necesario tener Docker instalado y ejecutándose en su sistema.

  1. Clonar el repositorio de MongoDB Lens:
    git clone https://github.com/furey/mongodb-lens.git
  2. Navegue hasta el directorio del repositorio clonado:
    cd /path/to/mongodb-lens
  3. Asegúrese de que Docker esté instalado:
    docker --version # Ideally >= v27.x
  4. Construya la imagen de Docker:
    docker build -t mongodb-lens .
  5. Ejecute el contenedor:
    # Using default connection string mongodb://localhost:27017 docker run --rm -i --network=host mongodb-lens # Using custom connection string docker run --rm -i --network=host mongodb-lens mongodb://your-connection-string

Verificación de la instalación

Para verificar la instalación, pegue y ejecute el siguiente mensaje JSONRPC en el stdio del servidor:

{"method":"resources/read","params":{"uri":"mongodb://databases"},"jsonrpc":"2.0","id":1}

El servidor debería responder con una lista de bases de datos en su instancia de MongoDB, por ejemplo:

{"result":{"contents":[{"uri":"mongodb://databases","text":"Databases (12):\n- admin (180.00 KB)\n- config (108.00 KB)\n- local (40.00 KB)\n- sample_airbnb (51.88 MB)\n- sample_analytics (9.46 MB)\n- sample_geospatial (980.00 KB)\n- sample_guides (40.00 KB)\n- sample_mflix (108.90 MB)\n- sample_restaurants (7.73 MB)\n- sample_supplies (968.00 KB)\n- sample_training (40.85 MB)\n- sample_weatherdata (2.69 MB)"}]},"jsonrpc":"2.0","id":1}

MongoDB Lens ahora está instalado y listo para aceptar solicitudes MCP.

Instalación: versiones anteriores de MongoDB

Si se conecta a una instancia de MongoDB con una versión anterior < 4.0 , el controlador Node.js de MongoDB utilizado por la última versión de MongoDB Lens no será compatible. En concreto, las versiones 4.0.0 y posteriores del controlador Node.js de MongoDB requieren la versión 4.0 o superior de MongoDB.

Para utilizar MongoDB Lens con instancias de MongoDB más antiguas, debe utilizar una versión del controlador MongoDB Node.js de la serie 3.x (por ejemplo, 3.7.4 que es compatible con MongoDB 3.6 ).

Versiones anteriores de MongoDB: Ejecución desde el código fuente

  1. Clonar el repositorio de MongoDB Lens:
    git clone https://github.com/furey/mongodb-lens.git
  2. Navegue hasta el directorio del repositorio clonado:
    cd /path/to/mongodb-lens
  3. Modificar package.json :
    "dependencies": { ... - "mongodb": "^6.15.0", // Or whatever newer version is listed + "mongodb": "^3.7.4", // Or whatever 3.x version is compatible with your older MongoDB instance ... }
  4. Instalar las dependencias de Node.js:
    npm install
  5. Iniciar MongoDB Lens:
    node mongodb-lens.js mongodb://older-mongodb-instance

Esto utilizará la versión anterior del controlador compatible con su instancia de MongoDB.

[!NOTE] Es posible que también necesites revertir esta confirmación para volver a agregar las opciones de configuración de MongoDB useNewUrlParser y useUnifiedTopology .

Versiones anteriores de MongoDB: uso de NPX o Docker

Si prefiere utilizar NPX o Docker, necesitará utilizar una versión anterior de MongoDB Lens que se haya publicado con un controlador compatible.

Por ejemplo, MongoDB Lens 8.3.0 utiliza el controlador MongoDB Node.js 3.7.4 (ver: package-lock.json ).

Para ejecutar una versión anterior de MongoDB Lens usando NPX, especifique la etiqueta de versión:

npx -y mongodb-lens@8.3.0

Lo mismo para Docker:

docker run --rm -i --network=host furey/mongodb-lens:8.3.0

Configuración

Configuración: cadena de conexión de MongoDB

El servidor acepta una cadena de conexión MongoDB como su único argumento.

Ejemplo de uso de NPX:

npx -y mongodb-lens@latest mongodb://your-connection-string

Las cadenas de conexión de MongoDB tienen el siguiente formato:

mongodb://[username:password@]host[:port][/database][?options]

Cadenas de conexión de ejemplo:

  • Conexión local: mongodb://localhost:27017
  • Conexión a mydatabase con credenciales de la base de datos admin : mongodb://username:password@hostname:27017/mydatabase?authSource=admin
  • Conexión a mydatabase con varias otras opciones: mongodb://hostname:27017/mydatabase?retryWrites=true&w=majority

Si no se proporciona ninguna cadena de conexión, el servidor intentará conectarse a través de la conexión local.

Configuración: Archivo de configuración

MongoDB Lens admite una amplia personalización a través del archivo de configuración JSON.

[!NOTA] El archivo de configuración es opcional. MongoDB Lens se ejecutará con la configuración predeterminada si no se proporciona ningún archivo de configuración.

[!TIP] Solo necesitas incluir la configuración que quieras personalizar en el archivo de configuración. MongoDB Lens usará la configuración predeterminada para cualquier valor omitido.

[!TIP] MongoDB Lens admite los formatos de archivos de configuración .json y .jsonc (JSON con comentarios).

{ "mongoUri": "mongodb://localhost:27017", // Default MongoDB connection string or object of alias-URI pairs "connectionOptions": { "maxPoolSize": 20, // Maximum number of connections in the pool "retryWrites": false, // Whether to retry write operations "connectTimeoutMS": 30000, // Connection timeout in milliseconds "socketTimeoutMS": 360000, // Socket timeout in milliseconds "heartbeatFrequencyMS": 10000, // How often to ping servers for status "serverSelectionTimeoutMS": 30000 // Timeout for server selection }, "defaultDbName": "admin", // Default database if not specified in URI "connection": { "maxRetries": 5, // Maximum number of initial connection attempts "maxRetryDelayMs": 30000, // Maximum delay between retries "reconnectionRetries": 10, // Maximum reconnection attempts if connection lost "initialRetryDelayMs": 1000 // Initial delay between retries }, "disabled": { "tools": [], // Array of tools to disable or true to disable all "prompts": [], // Array of prompts to disable or true to disable all "resources": [] // Array of resources to disable or true to disable all }, "enabled": { "tools": true, // Array of tools to enable or true to enable all "prompts": true, // Array of prompts to enable or true to enable all "resources": true // Array of resources to enable or true to enable all }, "cacheTTL": { "stats": 15000, // Stats cache lifetime in milliseconds "fields": 30000, // Fields cache lifetime in milliseconds "schemas": 60000, // Schema cache lifetime in milliseconds "indexes": 120000, // Index cache lifetime in milliseconds "collections": 30000, // Collections list cache lifetime in milliseconds "serverStatus": 20000 // Server status cache lifetime in milliseconds }, "enabledCaches": [ // List of caches to enable "stats", // Statistics cache "fields", // Collection fields cache "schemas", // Collection schemas cache "indexes", // Collection indexes cache "collections", // Database collections cache "serverStatus" // MongoDB server status cache ], "memory": { "enableGC": true, // Whether to enable garbage collection "warningThresholdMB": 1500, // Memory threshold for warnings "criticalThresholdMB": 2000 // Memory threshold for cache clearing }, "logLevel": "info", // Log level (info or verbose) "disableDestructiveOperationTokens": false, // Whether to skip confirmation for destructive ops "watchdogIntervalMs": 30000, // Interval for connection monitoring "defaults": { "slowMs": 100, // Threshold for slow query detection "queryLimit": 10, // Default limit for query results "allowDiskUse": true, // Allow operations to use disk for large datasets "schemaSampleSize": 100, // Sample size for schema inference "aggregationBatchSize": 50 // Batch size for aggregation operations }, "security": { "tokenLength": 4, // Length of confirmation tokens "tokenExpirationMinutes": 5, // Expiration time for tokens "strictDatabaseNameValidation": true // Enforce strict database name validation }, "tools": { "transaction": { "readConcern": "snapshot", // Read concern level for transactions "writeConcern": { "w": "majority" // Write concern for transactions } }, "bulkOperations": { "ordered": true // Whether bulk operations execute in order }, "export": { "defaultLimit": -1, // Default limit for exports (-1 = no limit) "defaultFormat": "json" // Default export format (json or csv) }, "watchChanges": { "maxDurationSeconds": 60, // Maximum duration for change streams "defaultDurationSeconds": 10 // Default duration for change streams }, "queryAnalysis": { "defaultDurationSeconds": 10 // Default duration for query analysis } } }

De forma predeterminada, MongoDB Lens busca el archivo de configuración en:

  • ~/.mongodb-lens.jsonc primero, luego retrocede a
  • ~/.mongodb-lens.json si el anterior no existe

Para personalizar la ruta del archivo de configuración, configure la variable de entorno CONFIG_PATH en la ruta de archivo deseada.

Ejemplo de uso de NPX:

CONFIG_PATH='/path/to/config.json' npx -y mongodb-lens@latest

Ejemplo de uso de Docker Hub:

docker run --rm -i --network=host --pull=always -v /path/to/config.json:/root/.mongodb-lens.json furey/mongodb-lens

Configuración: Generación del archivo de configuración

Puede generar un archivo de configuración automáticamente utilizando el script config:create :

# NPX Usage (recommended) npx -y mongodb-lens@latest config:create # Node.js Usage npm run config:create # Force overwrite existing files npx -y mongodb-lens@latest config:create -- --force npm run config:create -- --force

Este script extrae el archivo de configuración de ejemplo anterior y lo guarda en: ~/.mongodb-lens.jsonc

Generación de archivo de configuración: ruta personalizada

Puede especificar una ubicación de salida personalizada utilizando la variable de entorno CONFIG_PATH .

  • Si CONFIG_PATH no tiene extensión de archivo, se trata como un directorio y se agrega .mongodb-lens.jsonc
  • Si CONFIG_PATH termina con .json (no .jsonc ), los comentarios se eliminan del archivo generado

Ejemplo de uso de NPX:

# With custom path CONFIG_PATH=/path/to/config.jsonc npx -y mongodb-lens@latest config:create # Save to directory (will append .mongodb-lens.jsonc to the path) CONFIG_PATH=/path/to/directory npx -y mongodb-lens@latest config:create # Save as JSON instead of JSONC CONFIG_PATH=/path/to/config.json npx -y mongodb-lens@latest config:create

Ejemplo de uso de Node.js:

# With custom path CONFIG_PATH=/path/to/config.jsonc node mongodb-lens.js config:create # Save to directory (will append .mongodb-lens.jsonc to the path) CONFIG_PATH=/path/to/directory node mongodb-lens.js config:create # Save as JSON instead of JSONC CONFIG_PATH=/path/to/config.json node mongodb-lens.js config:create

Configuración: Múltiples conexiones MongoDB

MongoDB Lens admite múltiples URI de MongoDB con alias en su archivo de configuración , lo que le permite cambiar fácilmente entre diferentes instancias de MongoDB usando nombres simples.

Para configurar múltiples conexiones, establezca la configuración de mongoUri en un objeto con pares alias-URI:

{ "mongoUri": { "main": "mongodb://localhost:27017", "backup": "mongodb://localhost:27018", "atlas": "mongodb+srv://username:password@cluster.mongodb.net/mydb" } }

Con esta configuración:

  • La primera URI de la lista (por ejemplo, main ) se convierte en la conexión predeterminada al inicio
  • Puede cambiar de conexión usando lenguaje natural: "Connect to backup" o "Connect to atlas"
  • La sintaxis original aún funciona: "Connect to mongodb://localhost:27018"
  • La herramienta list-connections muestra todos los alias de conexión disponibles

[!NOTA] Al utilizar el argumento de la línea de comandos para especificar una conexión, puede utilizar un URI MongoDB completo o un alias definido en su archivo de configuración.

[!TIP] Para agregar alias de conexión en tiempo de ejecución, utilice la herramienta add-connection-alias .

Configuración: Anulaciones de variables de entorno

MongoDB Lens admite anulaciones de variables de entorno para configuraciones.

Las variables de entorno tienen prioridad sobre la configuración del archivo de configuración .

Las variables de entorno de configuración siguen el patrón de nombres:

CONFIG_[SETTING PATH, SNAKE CASED, UPPERCASED]

Ejemplos de anulaciones:

ConfiguraciónAnulación de variable de entorno
mongoUriCONFIG_MONGO_URI
logLevelCONFIG_LOG_LEVEL
defaultDbNameCONFIG_DEFAULT_DB_NAME
defaults.queryLimitCONFIG_DEFAULTS_QUERY_LIMIT
tools.export.defaultFormatCONFIG_TOOLS_EXPORT_DEFAULT_FORMAT
connectionOptions.maxPoolSizeCONFIG_CONNECTION_OPTIONS_MAX_POOL_SIZE
connection.reconnectionRetriesCONFIG_CONNECTION_RECONNECTION_RETRIES

Para valores de variables de entorno:

  • Para configuraciones booleanas, utilice valores de cadena 'true' o 'false' .
  • Para configuraciones numéricas, utilice representaciones de cadenas.
  • Para objetos o matrices anidados, utilice cadenas JSON.

Ejemplo de uso de NPX:

CONFIG_DEFAULTS_QUERY_LIMIT='25' npx -y mongodb-lens@latest

Ejemplo de uso de Docker Hub:

docker run --rm -i --network=host --pull=always -e CONFIG_DEFAULTS_QUERY_LIMIT='25' furey/mongodb-lens

Configuración: variables de entorno multiplataforma

Para un uso consistente de las variables de entorno en Windows, macOS y Linux, considere usar cross-env :

  1. Instalar cross-env globalmente:
    # Using NPM npm install -g cross-env # Using Volta (see: https://volta.sh) volta install cross-env
  2. Prefije cualquier variable de entorno NPX o Node.js en los ejemplos de este documento:
    # Example NPX usage with cross-env cross-env CONFIG_DEFAULTS_QUERY_LIMIT='25' npx -y mongodb-lens@latest # Example Node.js usage with cross-env cross-env CONFIG_DEFAULTS_QUERY_LIMIT='25' node mongodb-lens.js

Configuración del cliente

Configuración del cliente: Claude Desktop

Para utilizar MongoDB Lens con Claude Desktop:

  1. Instalar Claude Desktop
  2. Abra claude_desktop_config.json (créelo si no existe):
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Ventanas: %APPDATA%\Claude\claude_desktop_config.json
  3. Agregue la configuración del servidor MongoDB Lens según las opciones de configuración
  4. Reiniciar Claude Desktop
  5. Inicie una conversación con Claude sobre sus datos de MongoDB

Opciones de configuración del escritorio de Claude

Para cada opción:

  • Reemplace mongodb://your-connection-string con su cadena de conexión MongoDB u omítala para utilizar la cadena predeterminada mongodb://localhost:27017 .
  • Para utilizar un archivo de configuración personalizado, configure la variable de entorno CONFIG_PATH .
  • Para incluir variables de entorno:
    • Para NPX o Node.js agregue "env": {} con pares clave-valor, por ejemplo:
      "command": "/path/to/npx", "args": [ "-y", "mongodb-lens@latest", "mongodb://your-connection-string" ], "env": { "CONFIG_LOG_LEVEL": "verbose" }
    • Para Docker, agregue los indicadores -e , por ejemplo:
      "command": "docker", "args": [ "run", "--rm", "-i", "--network=host", "--pull=always", "-e", "CONFIG_LOG_LEVEL=verbose", "furey/mongodb-lens", "mongodb://your-connection-string" ]
Opción 1: NPX (Recomendado)
{ "mcpServers": { "mongodb-lens": { "command": "/path/to/npx", "args": [ "-y", "mongodb-lens@latest", "mongodb://your-connection-string" ] } } }
Opción 2: Imagen de Docker Hub
{ "mcpServers": { "mongodb-lens": { "command": "docker", "args": [ "run", "--rm", "-i", "--network=host", "--pull=always", "furey/mongodb-lens", "mongodb://your-connection-string" ] } } }
Opción 3: Instalación local de Node.js
{ "mcpServers": { "mongodb-lens": { "command": "/path/to/node", "args": [ "/path/to/mongodb-lens.js", "mongodb://your-connection-string" ] } } }
Opción 4: Imagen local de Docker
{ "mcpServers": { "mongodb-lens": { "command": "docker", "args": [ "run", "--rm", "-i", "--network=host", "mongodb-lens", "mongodb://your-connection-string" ] } } }

Configuración del cliente: Inspector MCP

MCP Inspector es una herramienta diseñada para probar y depurar servidores MCP.

[!NOTA] MCP Inspector inicia un servidor proxy en el puerto 3000 y un cliente web en el puerto 5173.

Ejemplo de uso de NPX:

  1. Ejecutar MCP Inspector:
    # Using default connection string mongodb://localhost:27017 npx -y @modelcontextprotocol/inspector npx -y mongodb-lens@latest # Using custom connection string npx -y @modelcontextprotocol/inspector npx -y mongodb-lens@latest mongodb://your-connection-string # Using custom ports SERVER_PORT=1234 CLIENT_PORT=5678 npx -y @modelcontextprotocol/inspector npx -y mongodb-lens@latest
  2. Abrir el inspector MCP: http://localhost:5173

MCP Inspector debe admitir la gama completa de capacidades de MongoDB Lens, incluido el autocompletado de nombres de colecciones y campos de consulta.

Para obtener más información, consulte: Inspector MCP

Configuración del cliente: otros clientes MCP

MongoDB Lens debería poder utilizarse con cualquier cliente compatible con MCP.

Para obtener más información, consulte: Documentación de MCP: clientes de ejemplo

Protección de datos

Para proteger sus datos mientras utiliza MongoDB Lens, tenga en cuenta lo siguiente:

Protección de datos: Cuentas de usuario de solo lectura

Al conectar MongoDB Lens a su base de datos, los permisos otorgados al usuario en la cadena de conexión de MongoDB determinan las acciones que se pueden realizar. Cuando sea adecuado, un usuario de solo lectura puede evitar escrituras o eliminaciones no deseadas, lo que garantiza que MongoDB Lens pueda consultar datos, pero no modificarlos.

Para configurar esto, cree un usuario con el rol read en el ámbito de las bases de datos de destino. En MongoDB, ejecute algo como esto:

use admin db.createUser({ user: 'readonly', pwd: 'eXaMpLePaSsWoRd', roles: [{ role: 'read', db: 'mydatabase' }] })

Luego, aplique esas credenciales a su cadena de conexión MongoDB:

mongodb://readonly:eXaMpLePaSsWoRd@localhost:27017/mydatabase

El uso de credenciales de solo lectura es una forma simple pero efectiva de imponer límites de seguridad, especialmente cuando estás revisando esquemas o ejecutando consultas ad hoc.

Protección de datos: trabajar con copias de seguridad de bases de datos

Al trabajar con MongoDB Lens, considere conectarse a una copia de respaldo de sus datos alojada en una instancia de MongoDB separada.

Comience generando la copia de seguridad con mongodump . A continuación, cree una nueva instancia de MongoDB (por ejemplo, en un puerto diferente, como 27018 ) y restaure la copia de seguridad allí con mongorestore . Una vez que esté en ejecución, apunte a MongoDB Lens a la cadena de conexión de la instancia de copia de seguridad (por ejemplo mongodb://localhost:27018/mydatabase ).

Este enfoque le brinda un entorno protegido para probar operaciones complejas o destructivas sin correr el riesgo de dañar accidentalmente sus datos en vivo.

Protección de datos: Consideraciones sobre el flujo de datos

Consideraciones sobre el flujo de datos: cómo fluyen sus datos a través del sistema

Al utilizar un servidor MCP con un proveedor LLM remoto (como Anthropic a través de Claude Desktop), comprender cómo fluyen sus datos a través del sistema es clave para proteger la información confidencial de exposiciones no deseadas.

Cuando envía una consulta relacionada con MongoDB a través de su cliente MCP, esto es lo que sucede:

[!NOTE] Si bien este ejemplo utiliza una instancia local de MongoDB, los mismos principios se aplican a las instancias remotas de MongoDB.

  1. Envías una solicitud ➥ p. ej. "Muéstrame todos los usuarios mayores de 30 años"
  2. Su cliente envía la solicitud al LLM remoto➥ El proveedor de LLM recibe sus palabras exactas junto con una lista de herramientas MCP disponibles y sus parámetros.
  3. El LLM remoto interpreta su solicitud➥ Determina su intención y le indica al cliente que utilice una herramienta MCP específica con los parámetros apropiados.
  4. El cliente le pide a MongoDB Lens que ejecute la herramienta. Esto ocurre localmente en su máquina a través de stdio.
  5. MongoDB Lens consulta su base de datos MongoDB
  6. MongoDB Lens recupera los resultados de su consulta de MongoDB
  7. MongoDB Lens envía los datos de vuelta al cliente➥ El cliente recibe resultados formateados por MongoDB Lens.
  8. El cliente envía los datos al LLM remoto➥ El proveedor de LLM ve los datos exactos devueltos por MongoDB Lens.
  9. El LLM remoto procesa los datos ➥ Puede resumir o formatear aún más los resultados.
  10. El LLM remoto envía la respuesta final al cliente ➥ El cliente le muestra la respuesta.

El proveedor remoto de LLM ve tanto su solicitud original como la respuesta completa de MongoDB Lens. Si su base de datos incluye campos sensibles (p. ej., contraseñas, datos personales, etc.), estos datos podrían transmitirse involuntariamente al proveedor remoto a menos que tome precauciones.

Consideraciones sobre el flujo de datos: protección de datos confidenciales con proyección

Para evitar que se envíen datos confidenciales al proveedor LLM remoto, utilice el concepto de proyección al usar herramientas como find-documents , aggregate-data o export-data . La proyección permite especificar qué campos incluir o excluir en los resultados de la consulta, garantizando así que la información confidencial permanezca local.

Ejemplo de uso de proyección:

  • "Muéstrame todos los usuarios mayores de 30 años, pero usa proyección para ocultar sus contraseñas". ➥ Usa la herramienta find-documents con proyección.

Consideraciones sobre el flujo de datos: alias de conexión y contraseñas

Al agregar nuevos alias de conexión con la herramienta add-connection-alias , evite agregar alias a URIs que contengan contraseñas si utiliza un proveedor LLM remoto. Dado que su solicitud se envía al LLM, cualquier contraseña en el URI podría quedar expuesta. En su lugar, defina alias con contraseñas en el archivo de configuración de MongoDB Lens, donde permanecen locales y no se transmiten al LLM.

Consideraciones sobre el flujo de datos: configuración local para máxima seguridad

Aunque no se aborda en este documento, para obtener el máximo nivel de privacidad de datos, considere usar un cliente MCP local junto con un modelo LLM alojado localmente. Este enfoque mantiene todas las solicitudes y datos dentro de su entorno local, eliminando el riesgo de que se envíe información confidencial a un proveedor remoto.

Protección de datos: Confirmación para operaciones destructivas

MongoDB Lens implementa un sistema de confirmación basado en tokens para operaciones potencialmente destructivas, que requiere un proceso de dos pasos para ejecutar herramientas que, de lo contrario, podrían provocar una pérdida de datos sin control:

  1. Primera invocación de la herramienta: devuelve un token de confirmación de 4 dígitos que caduca después de 5 minutos
  2. Segunda invocación de la herramienta: ejecuta la operación si se proporciona el token válido

Para ver un ejemplo del proceso de confirmación, consulte: Trabajar con protección de confirmación

Las herramientas que requieren confirmación incluyen:

  • drop-user : Eliminar un usuario de la base de datos
  • drop-index : eliminar un índice (posible impacto en el rendimiento)
  • drop-database : eliminar permanentemente una base de datos
  • drop-collection : eliminar una colección y todos sus documentos
  • delete-document : Eliminar uno o varios documentos
  • bulk-operations : al incluir operaciones de eliminación
  • rename-collection : Cuando la colección de destino existe y será eliminada

Este mecanismo de protección busca prevenir la pérdida accidental de datos debido a errores tipográficos y comandos no deseados. Es una medida de seguridad que le garantiza conocer las consecuencias antes de realizar acciones potencialmente dañinas.

[!NOTA] Si está trabajando en un entorno controlado donde la pérdida de datos es aceptable, puede configurar MongoDB Lens para omitir la confirmación y realizar operaciones destructivas de inmediato.

Evitar la confirmación de operaciones destructivas

Es posible que desees omitir el sistema de confirmación de token.

Establezca la variable de entorno CONFIG_DISABLE_DESTRUCTIVE_OPERATION_TOKENS en true para ejecutar operaciones destructivas inmediatamente sin confirmación:

# Using NPX CONFIG_DISABLE_DESTRUCTIVE_OPERATION_TOKENS=true npx -y mongodb-lens@latest # Using Docker docker run --rm -i --network=host --pull=always -e CONFIG_DISABLE_DESTRUCTIVE_OPERATION_TOKENS='true' furey/mongodb-lens

[!ADVERTENCIA] Deshabilitar los tokens de confirmación elimina un importante mecanismo de seguridad. Se recomienda encarecidamente usar esta opción solo en entornos controlados donde la pérdida de datos sea aceptable, como en desarrollo o pruebas. Desactívela bajo su propia responsabilidad.

Protección de datos: Desactivación de operaciones destructivas

Deshabilitar herramientas

MongoDB Lens incluye varias herramientas que permiten modificar o eliminar datos. Para deshabilitar herramientas específicas, añádalas a la matriz disabled.tools en su archivo de configuración :

{ "disabled": { "tools": [ "drop-user", "drop-index", "drop-database", "drop-collection", "delete-document", "bulk-operations", "rename-collection" ] } }

[!NOTA] Los recursos y las indicaciones también se pueden deshabilitar mediante las configuraciones disabled.resources y disabled.prompts .

Herramientas de alto riesgo

Estas herramientas pueden provocar una pérdida inmediata de datos y se debe considerar desactivarlas en entornos sensibles:

  • drop-user : elimina los usuarios de la base de datos y sus permisos de acceso
  • drop-index : elimina índices (puede afectar el rendimiento de las consultas)
  • drop-database : elimina permanentemente bases de datos completas
  • drop-collection : elimina permanentemente las colecciones y todos sus documentos
  • delete-document : elimina documentos que coinciden con los criterios especificados
  • bulk-operations : puede realizar eliminaciones por lotes cuando está configurado para hacerlo
  • rename-collection : puede sobrescribir colecciones existentes al usar la opción de destino de colocación

Herramientas de riesgo medio

Estas herramientas pueden modificar datos, pero normalmente no provocan una pérdida de datos inmediata:

  • create-user : Crea usuarios con permisos que podrían permitir cambios adicionales
  • transaction : ejecuta múltiples operaciones en una transacción (potencial para cambios complejos)
  • update-document : Actualiza documentos que podrían sobrescribir datos existentes

Configuración de solo lectura

Para una configuración de solo lectura completa, desactive todas las herramientas potencialmente destructivas:

{ "disabled": { "tools": [ "drop-user", "drop-index", "create-user", "transaction", "create-index", "drop-database", "drop-collection", "insert-document", "update-document", "delete-document", "bulk-operations", "create-database", "gridfs-operation", "create-collection", "rename-collection", "create-timeseries" ] } }

Esta configuración permite a MongoDB Lens consultar y analizar datos mientras evita cualquier modificación, proporcionando múltiples capas de protección contra la pérdida accidental de datos.

Habilitación selectiva de componentes

Además de deshabilitar los componentes , especifique exactamente qué componentes deben habilitarse (deshabilitando implícitamente todos los demás) utilizando las configuraciones enabled en su archivo de configuración :

{ "enabled": { "tools": [ "use-database", "find-documents", "count-documents", "aggregate-data" ] }, "disabled": { "resources": true, "prompts": true } }

[!IMPORTANTE] Si un componente aparece en las listas de enabled y disabled , la configuración enabled tiene prioridad.

Tutorial

El siguiente tutorial lo guiará a través de la configuración de un contenedor MongoDB con datos de muestra y luego el uso de MongoDB Lens para interactuar con él a través de consultas en lenguaje natural:

  1. Iniciar contenedor de datos de muestra
  2. Importar datos de muestra
  3. Conectar MongoDB Lens
  4. Consultas de ejemplo
  5. Trabajar con la protección de confirmación

Tutorial: 1. Iniciar el contenedor de datos de muestra

[!NOTA] Este tutorial asume que tiene Docker instalado y ejecutándose en su sistema.

[!IMPORTANTE] Si Docker ya está ejecutando un contenedor en el puerto 27017, deténgalo antes de continuar.

  1. Inicialice el contenedor de datos de muestra:
    docker run --name mongodb-sampledata -d -p 27017:27017 mongo:6
  2. Verifique que el contenedor se esté ejecutando sin problemas:
    docker ps | grep mongodb-sampledata

Tutorial: 2. Importar datos de muestra

MongoDB proporciona varios conjuntos de datos de muestra que usaremos para explorar MongoDB Lens.

  1. Descargue los conjuntos de datos de muestra:
    curl -LO https://atlas-education.s3.amazonaws.com/sampledata.archive
  2. Copie los conjuntos de datos de muestra en su contenedor de datos de muestra:
    docker cp sampledata.archive mongodb-sampledata:/tmp/
  3. Importe los conjuntos de datos de muestra a MongoDB:
    docker exec -it mongodb-sampledata mongorestore --archive=/tmp/sampledata.archive

Esto importará varias bases de datos:

  • sample_airbnb : Anuncios y reseñas de Airbnb
  • sample_analytics : Datos de clientes y cuentas
  • sample_geospatial : Datos geográficos
  • sample_mflix : Datos de películas
  • sample_restaurants : Datos del restaurante
  • sample_supplies : Datos de la cadena de suministro
  • sample_training : Datos de entrenamiento para diversas aplicaciones
  • sample_weatherdata : Mediciones meteorológicas

Tutorial: 3. Conectar MongoDB Lens

Instale MongoDB Lens según las instrucciones de inicio rápido .

Configure su cliente MCP para conectarse a MongoDB Lens a través de: mongodb://localhost:27017

[!TIP] Si omite la cadena de conexión de la configuración del cliente MCP, la cadena de conexión predeterminada será mongodb://localhost:27017 .

Ejemplo de configuración de Claude Desktop :

{ "mcpServers": { "mongodb-lens": { "command": "/path/to/npx", "args": [ "-y", "mongodb-lens@latest" ] } } }

Tutorial: 4. Consultas de ejemplo

Con su cliente MCP en ejecución y conectado a MongoDB Lens, pruebe las siguientes consultas de ejemplo:

Consultas de ejemplo: Operaciones básicas de bases de datos

  • "Listar todas las bases de datos" ➥ Utiliza la herramienta list-databases
  • "¿Qué base de datos estoy usando actualmente?" ➥ Utiliza la herramienta current-database
  • "Cambiar a la base de datos sample_mflix" ➥ Utiliza la herramienta use-database
  • "Crear una nueva base de datos llamada test_db" ➥ Utiliza la herramienta create-database
  • "Crea otra base de datos llamada analytics_db y cámbiate a ella" ➥ Utiliza la herramienta create-database con switch=true
  • "Drop test_db" ➥ Utiliza la herramienta drop-database (con confirmación)

Consultas de ejemplo: Gestión de colecciones

  • "¿Qué colecciones hay en la base de datos actual?" ➥ Utiliza la herramienta list-collections
  • "Crear colección de registros de usuario" ➥ Utiliza la herramienta create-collection
  • "Cambiar el nombre de user_logs a system_logs" ➥ Utiliza la herramienta rename-collection
  • "Eliminar registros del sistema" ➥ Utiliza la herramienta drop-collection (con confirmación)
  • "Verificar la consistencia de los datos en la colección de películas" ➥ Utiliza la herramienta validate-collection

Consultas de ejemplo: Gestión de usuarios

  • "Crear un usuario de solo lectura para análisis" ➥ Utiliza la herramienta create-user
  • "Eliminar la cuenta inactive_user" ➥ Utiliza la herramienta drop-user (con confirmación)

Consultas de ejemplo: Consulta de datos

  • "Contar todos los documentos de la colección de películas" ➥ Utiliza la herramienta count-documents
  • Encuentra las 5 mejores películas con la calificación más alta en IMDB ➥ Utiliza la herramienta de find-documents
  • "Muéstrame datos agregados de películas agrupadas por década" ➥ Utiliza la herramienta aggregate-data
  • "Enumera todos los países únicos donde se produjeron películas" ➥ Utiliza la herramienta distinct-values
  • "Buscar películas que contengan "El Padrino" en su título" ➥ Utiliza la herramienta text-search
  • "Buscar usuarios alemanes con el apellido Müller usando la intercalación adecuada" ➥ Utiliza la herramienta collation-query

Consultas de ejemplo: análisis de esquemas

  • "¿Cuál es la estructura del esquema de la colección de películas?" ➥ Utiliza la herramienta analyze-schema
  • "Comparar esquemas de usuarios y comentarios" ➥ Utiliza la herramienta compare-schemas
  • "Generar un validador de esquema para la colección de películas" ➥ Utiliza la herramienta generate-schema-validator
  • Analizar patrones de consulta comunes para la colección de películas ➥ Utiliza la herramienta analyze-query-patterns

Consultas de ejemplo: Modificación de datos

  • "Insertar nuevo documento de película: " ➥ Utiliza la herramienta insert-document
  • "Actualizar todas las películas desde 1994 para añadir una bandera 'clásica'" ➥ Utiliza la herramienta update-document
  • "Eliminar todas las películas con cero calificaciones" ➥ Utiliza la herramienta delete-document (con confirmación)
  • "Ejecute estas operaciones masivas en la colección de películas: " ➥ Utiliza la herramienta bulk-operations

[!TIP] Para operaciones especializadas de MongoDB (como operaciones de matriz, operaciones bit a bit u otras actualizaciones complejas), utilice los operadores nativos de MongoDB a través de los parámetros update y options de la herramienta update-document .

Consultas de ejemplo: Rendimiento y gestión de índices

  • "Crear un índice en el campo de título en la colección de películas" ➥ Utiliza la herramienta create-index
  • Eliminar el índice ratings_idx ➥ Utiliza la herramienta de drop-index (con confirmación)
  • "Explica el plan de ejecución para encontrar películas de 1995" ➥ Utiliza la herramienta explain-query
  • "Obtener estadísticas para la base de datos actual" ➥ Utiliza la herramienta get-stats con target=database
  • "Mostrar estadísticas de la colección de películas" ➥ Utiliza la herramienta get-stats con el objetivo = colección

Consultas de ejemplo: operaciones geoespaciales y especiales

  • "Cambiar a la base de datos sample_geospatial y luego buscar todos los naufragios en un radio de 10 km de las coordenadas [-80.12, 26.46]" ➥ Utiliza la herramienta geo-query
  • "Cambiar a la base de datos sample_analytics, luego ejecutar una transacción para mover fondos entre cuentas: " ➥ Utiliza la herramienta transaction
  • "Crear una colección de series temporales para las lecturas de los sensores" ➥ Utiliza la herramienta create-timeseries
  • "Observar cambios en la colección de usuarios durante 30 segundos" ➥ Utiliza la herramienta de watch-changes
  • "Enumerar todos los archivos en el depósito de imágenes GridFS" ➥ Utiliza la herramienta gridfs-operation con operation=list

Consultas de ejemplo: Exportación, administración y otras funciones

  • "Cambie a la base de datos sample_mflix y luego exporte las 20 mejores películas según 'tomatoes.critic.rating' como un archivo CSV con títulos, años y clasificaciones (salida en un solo bloque de código)" ➥ Utiliza la herramienta export-data
  • "Cambiar a la base de datos sample_analytics y luego verificar su estado de fragmentación" ➥ Utiliza la herramienta shard-status
  • "Borrar la caché de colecciones" ➥ Utiliza la herramienta clear-cache con el objetivo = colecciones
  • "Borrar todos los cachés" ➥ Utiliza la herramienta de clear-cache
  • "Cambie a la base de datos sample_weatherdata y luego genere un informe interactivo sobre su estado actual" ➥ Utiliza numerosas herramientas

Consultas de ejemplo: Gestión de conexiones

  • "Conectarse a mongodb://localhost:27018" ➥ Utiliza la herramienta connect-mongodb
  • "Conectarse a mongodb+srv://nombreusuario: contraseña@cluster.mongodb.net /mydb" ➥ Utiliza la herramienta connect-mongodb
  • "Conectarse de nuevo a la instancia original de MongoDB" ➥ Utiliza la herramienta connect-original
  • "Conectarse al conjunto de réplicas sin validar la conexión: <detalles del conjunto de réplicas>" ➥ Utiliza la herramienta connect-mongodb con validateConnection=false
  • "Agregar alias de conexión 'prod' para mongodb://nombreusuario:contraseña@servidor-prod:27017/mydb" ➥ Utiliza la herramienta add-connection-alias

Tutorial: 5. Cómo trabajar con la protección de confirmación

MongoDB Lens incluye un mecanismo de seguridad para operaciones potencialmente destructivas. Así es como funciona en la práctica:

  1. Solicitud para dar de baja una colección:
    "Drop the collection named test_collection"
  2. MongoDB Lens responde con un token de advertencia y confirmación:
    ⚠️ DESTRUCTIVE OPERATION WARNING ⚠️ You've requested to drop the collection 'test_collection'. This operation is irreversible and will permanently delete all data in this collection. To confirm, you must type the 4-digit confirmation code EXACTLY as shown below: Confirmation code: 9876 This code will expire in 5 minutes for security purposes.
  3. Confirme la operación enviando el token de confirmación:
    "9876"
  4. MongoDB Lens ejecuta la operación:
    Collection 'test_collection' has been permanently deleted.

Este proceso de dos pasos evita la pérdida accidental de datos al requerir una confirmación explícita.

[!NOTA] Si está trabajando en un entorno controlado donde la pérdida de datos es aceptable, puede configurar MongoDB Lens para omitir la confirmación y realizar operaciones destructivas de inmediato.

Conjunto de pruebas

MongoDB Lens incluye un conjunto de pruebas para verificar la funcionalidad en herramientas, recursos y avisos.

Conjunto de pruebas: Ejecución de pruebas

El conjunto de pruebas requiere una variable de entorno CONFIG_MONGO_URI que se puede configurar como:

  • una cadena de conexión MongoDB (por ejemplo mongodb://localhost:27017 )
  • mongodb-memory-server (para pruebas en memoria)
# Run Tests with MongoDB Connection String CONFIG_MONGO_URI=mongodb://localhost:27017 node mongodb-lens.test.js # Run Tests with In-Memory MongoDB (requires mongodb-memory-server) CONFIG_MONGO_URI=mongodb-memory-server node mongodb-lens.test.js

Para mayor comodidad, los siguientes scripts están disponibles para ejecutar pruebas:

npm test # Fails if no CONFIG_MONGO_URI provided npm run test:localhost # Uses mongodb://localhost:27017 npm run test:localhost:verbose # Runs with DEBUG=true for verbose output npm run test:in-memory # Uses mongodb-memory-server npm run test:in-memory:verbose # Runs with DEBUG=true for verbose output

[!NOTA] El conjunto de pruebas crea bases de datos y colecciones temporales que se limpian una vez finalizada la prueba.

Conjunto de pruebas: opciones de línea de comandos

OpciónDescripción
--listEnumere todas las pruebas disponibles sin ejecutarlas
--test=<n>Ejecutar pruebas específicas por nombre (separado por comas)
--group=<n>Ejecutar todas las pruebas en grupos específicos (separados por comas)
--pattern=<glob>Ejecutar pruebas que coincidan con el(los) patrón(es) (separados por comas)

Conjunto de pruebas: ejemplos

# List All Available Tests npm test -- --list # Run Only Connection-Related Tests (:27017) npm run test:localhost -- --group=Connection\ Tools # Test Specific Database Operations (In-Memory) npm run test:in-memory -- --test=create-database\ Tool,drop-database\ Tool # Test All Document-Related Tools (:27017) npm run test:localhost -- --pattern=document # Run Resource Tests Only (In-Memory) npm run test:in-memory -- --group=Resources # Run Specific Tests Only (In-Memory) npm run test:in-memory -- --test=aggregate-data\ Tool,find-documents\ Tool

Descargo de responsabilidad

Lente MongoDB:

  • está licenciado bajo la licencia MIT .
  • no está afiliado ni respaldado por MongoDB, Inc.
  • Está escrito con la ayuda de IA y puede contener errores.
  • Está destinado únicamente a fines educativos y experimentales.
  • Se proporciona tal cual, sin garantía. Úselo bajo su propio riesgo.

Apoyo

Si MongoDB Lens le ha resultado útil, considere apoyar mi trabajo a través de:

Invítame a un café | Patrocinio de GitHub

Las contribuciones me ayudan a seguir desarrollando y mejorando esta herramienta, lo que me permite dedicar más tiempo a agregar nuevas funciones y garantizar que siga siendo un recurso valioso para la comunidad.

ID: hniehmvmgn