db-mcp-server
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 comoclientes → entornos → servicios; cada servicio se asigna a un nombre de base de datos y a unsecret_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)mediantesshtunnel, vinculado a un puerto efímero127.0.0.1.Ejecutor —
psycopg.run_queryse ejecuta en una transacción de PostgreSQL SOLO LECTURA (el motor rechaza cualquier escritura);run_write_queryrequiereconfirm=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 |
| Frase de contraseña de la bóveda (requerida para ejecutar el servidor) | — |
| Ruta a |
|
| Ruta a |
|
| Directorio que contiene las claves PEM de SSH |
|
| Ruta a |
|
Aprovisionamiento (configuración inicial)
Copia la plantilla y completa los valores reales:
cp bootstrap.example.yaml bootstrap.yamlColoca tus claves privadas SSH en
keys/(los nombres de archivo deben coincidir con los campospem_keydel catálogo).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 |
| El servidor MCP (stdio). Lo lanza el cliente MCP, no manualmente. |
| Administra credenciales en la bóveda: |
| Divide |
(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,*.envy*.pemestá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 enregistry.yaml, argv o registros.db-vaultlee la contraseña de la base de datos mediante un aviso oculto (getpass), nunca mediante argv.run_queryes de solo lectura a nivel del motor de PostgreSQL; las escrituras requierenconfirm=true.
Pruebas
pip install -e ".[dev]" && python -m pytest -qLa 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.
This server cannot be installed
Maintenance
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
- FlicenseAqualityDmaintenanceEnables AI assistants to interact with PostgreSQL databases using natural language queries, providing secure read-only access to database schemas and SQL translation capabilities.67
- AlicenseNot gradedqualityDmaintenanceEnables 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.90Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables 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
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to query SQL databases safely with read-only access, allowing schema discovery and SELECT queries while blocking writes and DDL operations.
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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