Skip to main content
Glama
kobramantra-debug

mcp-database-universal

Servidor de Base de Datos MCP

Una interfaz de razonamiento para bases de datos para agentes de IA compatibles con MCP — no un envoltorio SQL simple.

mcp-database-universal proporciona a los agentes de IA un conjunto de 7 herramientas de razonamiento para explorar y consultar una base de datos de forma segura, comprender su esquema y la forma de los datos, ejecutar preguntas en lenguaje natural y visualizar relaciones — todo sin exponer los detalles internos de la conexión.

Características

  • 7 herramientas de razonamiento diseñadas para agentes de IA: probar conexión, listar tablas, inspeccionar una tabla, ejecutar SQL parametrizado, hacer preguntas en lenguaje natural, perfilar datos y renderizar un diagrama ER.

  • Multi-motor: SQLite (integrado) más PostgreSQL, MySQL y MSSQL opcionales.

  • Seguridad ante todo: solo lectura por defecto, consultas parametrizadas, validación de sentencias, límites de filas/tiempo/salida.

  • Salida amigable para LLM: tipos traducidos, NULLs manejados, resultados formateados en tablas Markdown con contexto.

  • Introspección de esquema: descubrimiento automático de tablas, columnas, índices, claves foráneas y relaciones.

  • Consultas en lenguaje natural: traduce preguntas en texto plano a SQL y devuelve resultados.

Related MCP server: database-explorer-mcp

Motores compatibles

Motor

Requisito

Extra de instalación

SQLite

integrado

—

PostgreSQL

psycopg

pip install "mcp-database-universal[postgres]"

MySQL

PyMySQL

pip install "mcp-database-universal[mysql]"

MSSQL

pyodbc + controlador ODBC

pip install "mcp-database-universal[mssql]"

todos

—

pip install "mcp-database-universal[all]"

Instalación

pip install mcp-database-universal

# With optional engines:
pip install "mcp-database-universal[postgres]"
pip install "mcp-database-universal[mysql]"
pip install "mcp-database-universal[mssql]"
# or everything:
pip install "mcp-database-universal[all]"

Inicio rápido

Ejecuta el servidor sobre STDIO (el transporte por defecto para clientes MCP):

DATABASE_URL=sqlite:///app.db python -m mcp_database_universal

URLs de conexión:

sqlite:///path/to/db.db              SQLite (file)
sqlite:///:memory:                   SQLite (in-memory)
postgresql://user:pass@host:5432/db  PostgreSQL
mysql://user:pass@host:3306/db       MySQL
mssql://user:pass@host:1433/db       MSSQL (uses ODBC Driver 18)

Docker

docker build -t mcp-db .

# Mount a SQLite database read-only:
docker run --rm -i \
  -v /host/path/app.db:/data/app.db:ro \
  -e DATABASE_URL=sqlite:////data/app.db \
  mcp-db

# Or in-memory:
docker run --rm -i -e DATABASE_URL=sqlite:///:memory: mcp-db

Configuración

Toda la configuración se realiza mediante variables de entorno.

Variable

Por defecto

Descripción

DATABASE_URL

(obligatorio)

URL de conexión a la base de datos.

DATABASE_READ_ONLY

true

Forzar modo de solo lectura (bloquea escrituras incluso si DATABASE_WRITE_ENABLED está activado).

DATABASE_WRITE_ENABLED

false

Permitir sentencias de escritura cuando DATABASE_READ_ONLY=false.

DATABASE_MAX_ROWS

1000

Máximo de filas devueltas por consulta.

DATABASE_MAX_QUERY_TIME

30

Tiempo de espera de la consulta en segundos.

DATABASE_MAX_OUTPUT_BYTES

50000

Límite del tamaño de la carga útil de resultados.

DATABASE_SAMPLE_SIZE

5

Número de filas de muestra mostradas en estadísticas de tabla/columna.

DATABASE_PROFILE_TOP_N

10

Entradas de distribución de valores Top-N en el perfilado.

OPENAI_API_KEY

—

Clave API para el modo natural_query respaldado por LLM.

ANTHROPIC_API_KEY

—

Clave API para el modo natural_query respaldado por LLM.

Herramientas

Herramienta

Descripción

test_connection

Probar la conectividad de la base de datos; informar motor, versión, nombre, tamaño, número de tablas.

list_tables

Resumen de todas las tablas con recuentos de filas, recuentos de columnas, relaciones de claves foráneas.

inspect_table

Estructura completa de una tabla: columnas, tipos, índices, claves foráneas, datos de muestra.

query

Ejecutar una consulta SQL segura y parametrizada y obtener resultados en Markdown.

natural_query

Hacer una pregunta en texto plano; obtener SQL generado + resultados.

profile_database

Perfil de datos: distribuciones, tasas de NULL, relaciones, tamaños.

schema_graph

Diagrama ER Mermaid de las relaciones entre tablas.

Ejemplo: query con parámetros

{
  "sql": "SELECT * FROM users WHERE id = :id AND active = :active",
  "params": "{\"id\": 42, \"active\": true}"
}

Los parámetros usan marcadores de posición :name; pasa los valores como una cadena JSON en params.

Ejemplo: natural_query

question: "How many users are there?"
-> SELECT COUNT(*) FROM users
question: "Show me all orders"
-> SELECT * FROM orders LIMIT 100

Un ejemplo funcional contra una pequeña base de datos de muestra está en examples/ junto con fragmentos de configuración listos para usar para clientes MCP comunes.

Configuración de clientes MCP

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "database": {
      "command": "python",
      "args": ["-m", "mcp_database_universal"],
      "env": {"DATABASE_URL": "sqlite:///C:/data/app.db"}
    }
  }
}

Cursor / otros clientes basados en CLI

{
  "mcpServers": {
    "database": {
      "command": "uvx",
      "args": ["mcp-database-universal"],
      "env": {"DATABASE_URL": "sqlite:///C:/data/app.db"}
    }
  }
}

Nota para Windows: el controlador Postgres asíncrono requiere el bucle de eventos selector de Windows. El paquete establece esta política automáticamente en win32, por lo que no se necesita configuración adicional.

Desarrollo

pip install -e ".[dev]"
pytest

Las pruebas de integración para PostgreSQL/MySQL usan Docker Compose y se omiten automáticamente si los servidores no son accesibles:

docker compose -f tests/integration/docker-compose.yml up -d
pytest

Modelo de seguridad

  • El servidor es de solo lectura por defecto; INSERT/UPDATE/DELETE/DROP/ALTER y otras sentencias de escritura están bloqueadas.

  • Las escrituras solo son posibles cuando el operador establece explícitamente DATABASE_READ_ONLY=false y DATABASE_WRITE_ENABLED=true.

  • Los resultados de las consultas están limitados por recuento de filas, tiempo de espera y tamaño de salida — se previenen consultas descontroladas.

Licencia

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Connect AI agents to SQL databases (SQLite, PostgreSQL, MySQL) with a unified interface for querying data, exploring schemas, inserting rows, and exporting results to CSV. Includes safety features like dangerous query blocking and write guards.
    5 npm
    40 PyPI
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to connect to and interact with PostgreSQL, MySQL, SQLite, and MongoDB databases through natural language, supporting schema exploration, query execution, data export, and more.
    13
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with PostgreSQL or MySQL databases using natural language. Supports SQL queries, schema discovery, and pre-built aggregations without writing SQL.
    139 npm
    MIT