# database-mcp [Health: Active]

**Category:** 🗄️ Databases  
**Repository:** https://github.com/cocaxcode/database-mcp  
**GitHub Stars:** 2  
**npm Downloads (last month):** 426  
**Views:** 2  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/database-mcp

## Description
MCP server for database connectivity. Multi-DB (PostgreSQL, MySQL, SQLite), 19 tools.

## Tools
Capabilities this server exposes over MCP:

- **conn_create** — Crea una nueva conexion a base de datos (PostgreSQL, MySQL o SQLite). SIEMPRE pregunta al usuario a que grupo pertenece.
- **conn_list** — Lista todas las conexiones disponibles e indica cual esta activa.
- **conn_get** — Obtiene los detalles de una conexion. El password se muestra enmascarado.
- **conn_set** — Actualiza un campo de una conexion existente.
- **conn_switch** — Cambia la conexion activa (de sesion). Para cambiar el default permanente usa conn_set_default.
- **conn_rename** — Renombra una conexion existente.
- **conn_delete** — Elimina una conexion. IMPORTANTE: pide confirmacion al usuario antes de llamar esta tool con confirm=true.
- **conn_duplicate** — Duplica una conexion existente con un nuevo nombre.
- **conn_test** — Prueba la conexion a una base de datos. Ejecuta SELECT 1 y mide la latencia.
- **conn_project_list** — Lista todos los proyectos con conexiones especificas asignadas.
- **conn_project_clear** — Elimina la asociacion de conexion especifica de un proyecto.
- **conn_export** — Exporta conexiones a JSON. Por defecto enmascara passwords — usa include_secrets=true para incluirlos.
- **conn_import** — Importa conexiones desde un JSON exportado. Omite conexiones que ya existen (usa overwrite=true para reemplazar).
- **conn_group_create** — Crea un nuevo grupo de conexiones. Luego añade scopes (directorios) con conn_group_add_scope.
- **conn_group_list** — Lista todos los grupos con sus scopes, default y conexiones.
- **conn_group_delete** — Elimina un grupo. Las conexiones del grupo NO se eliminan pero quedaran huerfanas.
- **conn_group_add_scope** — Añade un directorio (scope) a un grupo. Las conexiones del grupo seran accesibles desde ese directorio.
- **conn_group_remove_scope** — Quita un directorio (scope) de un grupo.
- **conn_set_default** — Marca una conexion como el default de su grupo. El default se activa automaticamente al entrar al proyecto.
- **conn_set_group** — Asigna o cambia el grupo de una conexion existente.
- **search_schema** — Busca tablas/vistas en el schema de la base de datos. Soporta 3 niveles de detalle: names (solo nombres), summary (nombres + columnas), full (todo + FK + indices).
- **execute_query** — Ejecuta una consulta de lectura (SELECT, SHOW, etc.). Inyecta LIMIT automaticamente. El result se comprime por defecto (verbosity=normal, celdas truncadas a 500 bytes) para ahorrar tokens; usa inspect_last_query con el call_id para recuperar el result completo sin re-ejecutar.
- **execute_mutation** — Ejecuta una mutacion (INSERT, UPDATE, DELETE, DDL). Pide confirmacion y crea snapshot para rollback. El result se comprime por defecto — para mutations usa verbosity=minimal si solo te interesa affectedRows.
- **explain_query** — Muestra el plan de ejecucion de una consulta (EXPLAIN). Sin ANALYZE por defecto.
- **rollback_list** — Lista los rollback snapshots disponibles. Muestra las mutaciones recientes que se pueden revertir.
- **rollback_apply** — Revierte una mutacion usando un rollback snapshot. IMPORTANTE: confirma con el usuario antes de ejecutar con confirm=true.
- **history_list** — Lista el historial de consultas ejecutadas. Filtrable por tipo, conexion y estado.
- **history_clear** — Limpia el historial de consultas. Opcionalmente solo las anteriores a una fecha.
- **config_get** — Muestra la configuracion actual del servidor (limites de rollback e historial).
- **config_set** — Modifica la configuracion del servidor. Los cambios se guardan permanentemente.
- **db_dump** — Exporta la base de datos a un archivo SQL. Flujo conversacional: primero pregunta si exportar todas las tablas o personalizar, luego que contenido incluir (estructura, datos o todo).
- **db_restore** — Restaura un dump SQL en la base de datos activa. IMPORTANTE: esta operacion es destructiva (DROP TABLE + CREATE TABLE). Pide confirmacion al usuario antes de ejecutar con confirm=true.
- **db_dump_list** — Lista los dumps disponibles en el proyecto actual.
- **inspect_last_query** — Recupera el result completo (sin celdas truncadas, sin row cap) de un execute_query / execute_mutation / explain_query previo. Usa el call_id que aparece en la response comprimida. Sin call_id devuelve el más reciente. NO re-ejecuta el SQL.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "database-mcp": {
    "command": "npx",
    "args": ["-y","@cocaxcode/database-mcp@latest"]
  }
}
```

## Documentation

## What database-mcp does

The database-mcp MCP server gives an MCP-compatible client one interface for PostgreSQL, MySQL, and SQLite. It supports named connections organized into groups, allowing a project directory to determine which connections are visible. Groups can have a default connection that persists between sessions and an active connection used only for the current session.

Its database workflow covers more than sending SQL. The server can inspect schemas, execute reads and writes, record query history, capture snapshots before mutations, reverse changes for rollback, and create or restore database dumps. Destructive operations require confirmation, and read queries can receive automatic LIMIT handling. The repository describes 33 tools across the three supported database engines.

## How it works

The database-mcp MCP server runs locally and communicates with the host client through stdio. Credentials and database access remain on the local machine. Connections are created and managed by name rather than re-entered for every session.

Schema information is available through MCP Resources. A general schema resource identifies tables, while a table-specific resource provides columns, foreign keys, and indexes. An agent can use that information to construct queries and joins before execution. Group scopes associate directories with their database connections, so entering a project can select its configured group and default connection.

The active connection can be changed for a session without changing the saved default. A separate default-setting operation is needed when the new choice should remain after restart. The first connection added to a group becomes its default automatically.

## Setup and configuration

The package requires Node.js 20 or newer. Install it through npx or install the package globally. A stdio entry can be added to the configuration for Claude Desktop, Cursor, Windsurf, or VS Code. Claude Code, Codex CLI, and Gemini CLI each provide their own MCP registration commands or configuration files.

Install only the database drivers required by the deployment:

- `postgres` for PostgreSQL
- `mysql2` for MySQL
- `sql.js` for SQLite

With npx, these drivers must be installed globally. When the server itself is installed globally, drivers may be installed locally or globally. No environment variables are specified in the provided setup instructions.

## Tools and capabilities

The database-mcp MCP server provides capabilities for:

- Creating, listing, switching, and configuring named database connections
- Creating groups, assigning directory scopes, and selecting group defaults
- Connecting to PostgreSQL, MySQL, and SQLite
- Listing tables and inspecting schemas at different levels of detail
- Running queries with query history and execution timing
- Applying automatic LIMIT handling to reads
- Capturing pre-mutation snapshots and reversing supported changes
- Confirming destructive operations before execution
- Dumping database structure and data to SQL files
- Restoring databases from dumps
- Publishing schema details through MCP Resources

SQLite runs in-process through `sql.js`, avoiding native bindings according to the installation notes.

## Limitations and notes

The available database engine depends on installing its corresponding driver. Connection switching is session-scoped unless a new default is explicitly saved.

Destructive requests require a second call with confirmation, and rollback behavior depends on the snapshots and reverse SQL generated for the mutation.

_Full upstream README: https://allmcps.com/mcp/database-mcp/readme_

