Skip to main content
Glama
README.md
# MCP SQL Server (Desarrollo)

Servidor **MCP profesional** para conectar cualquier LLM compatible con MCP a una base de datos SQL y ejecutar:

- **Consultas** (`SELECT`, `WITH`, `SHOW`, etc.)
- **DML** (`INSERT`, `UPDATE`, `DELETE`)
- **DDL** (`CREATE`, `ALTER`, y opcionalmente `DROP`/`TRUNCATE`)

> Este servidor está diseñado para **uso personal en desarrollo asistido**.

## Características

- Protocolo MCP vía stdio (compatible con clientes MCP).
- Conexión multi-motor mediante `SQLAlchemy` (`sqlite`, `postgresql`, `mysql`, `mssql`, etc.).
- Herramientas MCP enfocadas en operación diaria:
  - `sql_capabilities`
  - `sql_list_tables`
  - `sql_describe_table`
  - `sql_run`
  - `sql_run_script`
- Bloqueo de DDL destructivo por defecto (`DROP`/`TRUNCATE` bloqueados).
- Límite configurable de filas y de sentencias por script.

## Instalación

```bash
python -m venv .venv
source .venv/bin/activate
pip install -e .
```

## Configuración (variables de entorno)

Prefijo: `MCP_SQL_`

- `MCP_SQL_DATABASE_URL`: URL SQLAlchemy. Default: `sqlite:///./dev.db`
- `MCP_SQL_MAX_ROWS`: máximo de filas devueltas por consulta. Default: `200`
- `MCP_SQL_MAX_SCRIPT_STATEMENTS`: máximo de sentencias por script. Default: `100`
- `MCP_SQL_ALLOW_DESTRUCTIVE_DDL`: `true/false` para permitir `DROP` y `TRUNCATE`. Default: `false`

### Ejemplo

```bash
export MCP_SQL_DATABASE_URL='postgresql+psycopg://dev_user:dev_pass@localhost:5432/devdb'
export MCP_SQL_MAX_ROWS=500
export MCP_SQL_ALLOW_DESTRUCTIVE_DDL=false
```

## Ejecutar el servidor

```bash
mcp-sql-server
```

También puedes ejecutarlo como módulo:

```bash
python -m mcp_sql_server.server
```


## Inicio con doble click en Windows

Se incluye el archivo `start_mcp_sql_server.bat` para facilitar el arranque:

1. Crea `.venv` automáticamente (si no existe).
2. Instala/actualiza dependencias.
3. Levanta el servidor MCP.

Solo haz doble click en ese `.bat`.

## Configuración en un cliente MCP (ejemplo genérico)

```json
{
  "mcpServers": {
    "sql-dev": {
      "command": "mcp-sql-server",
      "env": {
        "MCP_SQL_DATABASE_URL": "sqlite:///./dev.db",
        "MCP_SQL_MAX_ROWS": "200",
        "MCP_SQL_ALLOW_DESTRUCTIVE_DDL": "false"
      }
    }
  }
}
```

## Flujo recomendado

1. `sql_capabilities` para verificar configuración activa.
2. `sql_list_tables` para explorar el esquema.
3. `sql_describe_table` para inspeccionar metadatos.
4. `sql_run` para consultas o DML puntual.
5. `sql_run_script` para lotes de cambios controlados.

## Buenas prácticas para desarrollo asistido

- Usa usuarios de base de datos con privilegios mínimos.
- Trabaja sobre una DB local de desarrollo o snapshot desechable.
- Mantén `MCP_SQL_ALLOW_DESTRUCTIVE_DDL=false` por defecto.
- Versiona cambios estructurales con migraciones.

## Nota de seguridad

Este proyecto **no** está endurecido para producción. Está orientado a productividad local en entornos de desarrollo.


## Guía Claude en VS Code

Revisa `README_CLAUDE_VSCODE.md` para un ejemplo completo de configuración y uso.

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: sql_capabilities provides metadata about the server, sql_describe_table describes a specific table's structure, sql_list_tables enumerates available tables/views, sql_run executes a single SQL statement, and sql_run_script handles multiple statements. There is no overlap or ambiguity between these functions.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with a 'sql_' prefix and descriptive verb_noun combinations (e.g., sql_list_tables, sql_run_script). This uniformity makes the tool set predictable and easy to understand.

Tool Count5/5

With 5 tools, the server is well-scoped for SQL operations. Each tool serves a specific, essential function in a database interaction workflow, from discovery (list_tables, describe_table) to execution (run, run_script), and configuration (capabilities). No tool feels redundant or missing.

Completeness4/5

The tool set covers core SQL operations effectively: listing and describing tables, running queries and scripts, and checking server capabilities. A minor gap is the lack of tools for schema modification (e.g., create/alter/drop tables) or transaction management, but agents can work around this using sql_run for such operations.

Maintenance

ActivityInactive
ResponsivenessNo issues