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
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
| Motor | TypeScript (npm) | Python (PyPI) |
|---|---|---|
| SQLite | @database-mcp/sqlite | database-mcp-sqlite |
| libSQL | @database-mcp/libsql | database-mcp-libsql |
| MySQL | @database-mcp/mysql | database-mcp-mysql |
| MariaDB | @database-mcp/mariadb | database-mcp-mariadb |
| Postgres | @database-mcp/postgres | database-mcp-postgres |
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_objectsrevela 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.