Database MCP Server

Servidores MCP que brindan a los clientes de IA acceso seguro y estructurado a bases de datos SQL. Un paquete instalable por motor de base de datos. Cada paquete expone la misma superficie mínima de dos herramientas, execute_sql y search_objects, con protecciones activadas por defecto: modo de solo lectura, límites de filas y tiempos de espera de declaraciones.

Documentación

database-mcp

CI License: MIT npm PyPI Node >= 20

Servidores MCP que brindan a los clientes de IA acceso seguro y estructurado a bases de datos SQL.

Un paquete instalable por motor de base de datos, en TypeScript (npm) y Python (PyPI). Cada paquete expone la misma superficie mínima de dos herramientas, execute_sql y search_objects, con protecciones activadas por defecto: modo de solo lectura, límites de filas y tiempos de espera de declaraciones.

Paquetes

MotorTypeScript (npm)Python (PyPI)
SQLite@database-mcp/sqlite npmdatabase-mcp-sqlite PyPI
libSQL@database-mcp/libsql npmdatabase-mcp-libsql PyPI
MySQL@database-mcp/mysql npmdatabase-mcp-mysql PyPI
MariaDB@database-mcp/mariadb npmdatabase-mcp-mariadb PyPI
Postgres@database-mcp/postgres npmdatabase-mcp-postgres PyPI

Ambas líneas se publican y pasan la misma suite de conformidad independiente del lenguaje contra bases de datos reales en CI, por lo que el comportamiento es idéntico independientemente del lenguaje. Cada motor también está listado en el Registro MCP con ambas opciones de instalación.

Se planean implementaciones en Go y Rust.

Principios de diseño

  • Dos herramientas, nada más. Una superficie de herramientas mínima mantiene limpia la ventana de contexto del modelo. search_objects revela el esquema progresivamente: llámala sin argumentos para listar tablas, con un nombre de tabla para obtener columnas, índices y claves foráneas.
  • Seguro por defecto. El modo de solo lectura se aplica en dos capas: un guardián SQL conservador, más un ajuste de solo lectura a nivel de sesión en la propia base de datos. Las filas están limitadas (por defecto 1000) y las declaraciones tienen tiempo de espera (por defecto 30s).
  • Configurado al inicio, nunca a través del chat. Los detalles de conexión provienen de banderas, un archivo de configuración YAML o variables de entorno. Las credenciales nunca se aceptan a través de una llamada de herramienta.
  • Los secretos nunca aparecen en los registros. Las contraseñas viven en tipos de secretos no imprimibles, los DSN se sanitizan antes de registrar, y un filtro de redacción protege el límite de los registros.

Inicio rápido

Elige el paquete de tu motor; cada README tiene la superficie de configuración completa. SQLite vía npm:

{
  "mcpServers": {
    "sqlite": {
      "command": "npx",
      "args": ["-y", "@database-mcp/sqlite", "--dsn", "/absolute/path/to/database.db"]
    }
  }
}

O vía PyPI: usa "command": "uvx" y "args": ["database-mcp-sqlite", "--dsn", "/absolute/path/to/database.db"]. Las banderas, variables de entorno y configuración YAML son idénticas en ambas líneas.

Los motores en red toman credenciales del entorno (MYSQL_*, MARIADB_*, POSTGRES_*/DATABASE_URL, LIBSQL_URL/LIBSQL_AUTH_TOKEN), *_FILE secretos montados, o un archivo YAML vía --config. Nunca de un prompt de chat.

Contribuciones

Ver CONTRIBUTING.md. La versión corta: la suite de conformidad es la definición de hecho. Un cambio es fusionable solo cuando conformance/run.mjs pasa contra cada servidor afectado.

Licencia

MIT