Skip to main content
Glama
gwdmnn

db-mcp-server

by gwdmnn

db-mcp-server

Un servidor MCP local que brinda a un asistente de codificación con IA (p. ej. Claude Code) acceso aislado de credenciales a tus bases de datos PostgreSQL. El asistente envía solo SQL y recibe solo filas: los nombres de usuario, contraseñas y claves SSH de la base de datos nunca entran en el contexto del modelo ni en la transcripción de la conversación.

Por qué

Conectar un asistente de IA a una base de datos normalmente implica poner cadenas de conexión y contraseñas en algún lugar donde el modelo (y su transcripción) pueda leerlas. Este servidor mantiene ese límite: posee las credenciales cifradas y los túneles SSH, expone una pequeña superficie de herramientas solo SQL y, por defecto, es de solo lectura.

Related MCP server: Postgres Scout MCP

Cómo funciona

  • Catálogo (registry.yaml) — enrutamiento no secreto. Organizado como clientes → entornos → servicios; cada servicio se asigna a un nombre de base de datos y a un secret_ref (un puntero a la bóveda, nunca una credencial).

  • Bóveda (vault.enc) — AES-256-GCM con una clave derivada de scrypt. Contiene las credenciales de la base de datos, descifradas en memoria una vez al inicio usando una frase de contraseña.

  • Grupo de túneles — un túnel SSH por (cliente, entorno) mediante sshtunnel, vinculado a un puerto efímero 127.0.0.1.

  • Ejecutorpsycopg. run_query se ejecuta en una transacción de PostgreSQL SOLO LECTURA (el motor rechaza cualquier escritura); run_write_query requiere confirm=true.

Instalar

python -m venv .venv
# Windows PowerShell: .venv\Scripts\Activate.ps1   (bash: source .venv/Scripts/activate)
pip install -e ".[dev]"

Configurar

La configuración proviene de variables de entorno; los valores predeterminados se resuelven en relación con la raíz del proyecto.

Variable

Propósito

Predeterminado

DB_MCP_PASSPHRASE

Frase de contraseña de la bóveda (requerida para ejecutar el servidor)

DB_MCP_REGISTRY

Ruta a registry.yaml

./registry.yaml

DB_MCP_VAULT

Ruta a vault.enc

./vault.enc

DB_MCP_KEYS_DIR

Directorio que contiene las claves PEM de SSH

./keys

DB_MCP_BOOTSTRAP

Ruta a bootstrap.yaml

./bootstrap.yaml

Aprovisionamiento (configuración inicial)

  1. Copia la plantilla y completa los valores reales:

    cp bootstrap.example.yaml bootstrap.yaml
  2. Coloca tus claves privadas SSH en keys/ (los nombres de archivo deben coincidir con los campos pem_key del catálogo).

  3. Genera el catálogo no secreto y la bóveda cifrada (solicita la frase de contraseña que reutilizarás para ejecutar el servidor):

    python -m db_mcp_server.bootstrap --dry-run   # preview, writes nothing
    python -m db_mcp_server.bootstrap             # writes registry.yaml + vault.enc
    python -m db_mcp_server.vault_admin verify     # expect {"ok": true}

bootstrap.yaml contiene credenciales en texto plano — está en git-ignore; elimínalo o mantenlo fuera de línea una vez que exista la bóveda.

Herramientas de línea de comandos

Comando

Propósito

db-mcp-server

El servidor MCP (stdio). Lo lanza el cliente MCP, no manualmente.

db-vault

Administra credenciales en la bóveda: set / rm / list / verify.

db-bootstrap

Divide bootstrap.yaml en registry.yaml + vault.enc.

(Los comandos de consola existen después de pip install -e .; la forma python -m db_mcp_server.<module> siempre funciona.)

Herramientas expuestas al asistente

  • list_databases() — el catálogo (clientes → entornos → servicios); sin secretos.

  • run_query(customer, environment, service, sql, max_rows?) — solo lectura.

  • run_write_query(customer, environment, service, sql, confirm) — escritura controlada.

Los fallos de dominio se devuelven como un {error_code, message} estructurado en lugar de una excepción, para que el asistente pueda reaccionar.

Registro con un cliente MCP

Ejemplo de .mcp.json (ajusta las rutas). Usa ${DB_MCP_PASSPHRASE} para que la frase de contraseña se lea del shell en lugar de escribirse en el archivo:

{
  "mcpServers": {
    "db": {
      "command": "/absolute/path/to/db-mcp-server/.venv/Scripts/python.exe",
      "args": ["-m", "db_mcp_server.server"],
      "env": {
        "DB_MCP_PASSPHRASE": "${DB_MCP_PASSPHRASE}"
      }
    }
  }
}

Notas de seguridad

  • vault.enc, keys/, bootstrap.yaml, *.env y *.pem están en git-ignore — nunca los confirmes.

  • La frase de contraseña de la bóveda se suministra mediante DB_MCP_PASSPHRASE (o un aviso) — nunca se almacena en registry.yaml, argv o registros.

  • db-vault lee la contraseña de la base de datos mediante un aviso oculto (getpass), nunca mediante argv.

  • run_query es de solo lectura a nivel del motor de PostgreSQL; las escrituras requieren confirm=true.

Pruebas

pip install -e ".[dev]" && python -m pytest -q

La prueba de integración de la base de datos se omite a menos que DB_MCP_TEST_DSN apunte a un PostgreSQL accesible.

Hoja de ruta (no en esta versión)

Registro de auditoría persistente, operación multiusuario, respaldo de administrador de secretos externo, herramientas de introspección de esquema y una lista de denegación de permisos para convertir el aislamiento de credenciales en un límite estricto.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to interact with PostgreSQL databases using natural language queries, providing secure read-only access to database schemas and SQL translation capabilities.
    6
    7
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to safely explore, analyze, and maintain PostgreSQL databases with read-only mode by default, SQL injection prevention, query performance analysis, and optional write operations.
    90
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to interact with PostgreSQL databases through MCP, supporting multi-database and schema access with security controls like read-only mode and SQL auditing.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to query SQL databases safely with read-only access, allowing schema discovery and SELECT queries while blocking writes and DDL operations.

View all related MCP servers

Related MCP Connectors

  • Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.

  • Generate realistic, FK-consistent synthetic test data for your databases from your AI assistant.

  • Comprehensive PostgreSQL documentation and best practices, including ecosystem tools

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gwdmnn/keyward-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server