MCP Database Server

Se conecta e interactúa con varios sistemas de bases de datos como SQLite, PostgreSQL, SQL Server y MongoDB.

Documentación

MseeP.ai Security Assessment Badge

MCP Database Server

Una implementación del Protocolo de Contexto de Modelo (MCP) para conectarse y trabajar con varios sistemas de bases de datos.

Bases de datos compatibles

  • SQLite
  • PostgreSQL
  • Microsoft SQL Server
  • MongoDB

Instalación

npm install -g mcp-dbs

Uso

El MCP Database Server se puede usar en dos modos:

Modo SSE (predeterminado)

De forma predeterminada, el servidor se ejecuta en modo SSE (Eventos enviados por el servidor) en el puerto 3001:

npx mcp-dbs

Esto iniciará un servidor HTTP con un endpoint SSE en http://localhost:3001/mcp.

Puerto personalizado

Puede especificar un puerto personalizado usando la opción --port:

npx mcp-dbs --port 8080

Modo STDIO

Para herramientas que se comunican a través de entrada/salida estándar, puede usar la opción --stdio:

npx mcp-dbs --stdio

Integración con Claude Desktop

Puede integrar mcp-dbs con Claude Desktop agregándolo a su archivo de configuración de Claude.

Pasos de configuración

  1. Abra o cree su archivo de configuración de Claude Desktop
  2. Agregue la configuración de mcp-dbs a la sección mcpServers:
{
  "mcpServers": {
    "mcp-dbs": {
      "command": "node",
      "args": [
        "/path/to/your/mcp-dbs/dist/cli.js",
        "--stdio"
      ],
      "env": {
        "MCP_MONGODB_URI": "mongodb://localhost:27017",
        "MCP_MONGODB_DATABASE": "your-database-name"
      }
    }
  }
}

Reemplace las variables de entorno con los detalles de conexión de su propia base de datos.

Notas

  • El command debe ser node
  • En args, proporcione la ruta absoluta al archivo cli.js en su instalación de mcp-dbs
  • Configure las variables de entorno apropiadas para su tipo de base de datos (consulte la sección de variables de entorno a continuación)
  • Puede usar variables de entorno para cualquiera de las bases de datos compatibles (SQLite, PostgreSQL, SQL Server o MongoDB)

Uso con Claude

Una vez configurado, Claude podrá acceder a su base de datos usando las herramientas MCP descritas a continuación. Puede pedirle a Claude que:

  • Se conecte a su base de datos
  • Ejecute consultas y obtenga resultados
  • Explore el esquema de su base de datos
  • Trabaje con tablas y datos

Herramientas

  • connect-database: Conectarse a una base de datos
  • disconnect-database: Desconectarse de una base de datos
  • execute-query: Ejecutar una consulta y devolver resultados
  • execute-update: Ejecutar una consulta sin devolver resultados

Recursos

  • database-schema: Obtener el esquema completo de la base de datos
  • table-schema: Obtener el esquema de una tabla específica
  • tables-list: Obtener una lista de todas las tablas

Uso de variables de entorno para la configuración

Puede configurar sus conexiones de base de datos usando variables de entorno:

SQLite

# Set these environment variables before connecting
export MCP_SQLITE_FILENAME="path/to/database.db"
export MCP_SQLITE_CREATE_IF_NOT_EXISTS="true"

PostgreSQL

# Set these environment variables before connecting
export MCP_POSTGRES_HOST="your-postgres-host"
export MCP_POSTGRES_PORT="5432"
export MCP_POSTGRES_DATABASE="your-database-name"
export MCP_POSTGRES_USER="your-username"
export MCP_POSTGRES_PASSWORD="your-password"
export MCP_POSTGRES_SSL="false"

SQL Server

# Set these environment variables before connecting
export MCP_MSSQL_SERVER="your-server-address"
export MCP_MSSQL_PORT="1433"
export MCP_MSSQL_DATABASE="your-database-name"
export MCP_MSSQL_USER="your-username"
export MCP_MSSQL_PASSWORD="your-password"
export MCP_MSSQL_ENCRYPT="true"
export MCP_MSSQL_TRUST_SERVER_CERTIFICATE="true"

MongoDB

# Set these environment variables before connecting
export MCP_MONGODB_URI="mongodb://localhost:27017"
export MCP_MONGODB_DATABASE="your-database-name"
export MCP_MONGODB_MAX_POOL_SIZE="10"
export MCP_MONGODB_USE_UNIFIED_TOPOLOGY="true"

Estas variables de entorno tendrán prioridad sobre cualquier configuración pasada a la herramienta connect-database.

Herramientas MCP

El servidor expone las siguientes herramientas MCP:

connect-database

Conectarse a una base de datos.

Parámetros:

  • connectionId: Un identificador único para la conexión
  • type: Tipo de base de datos (sqlite, postgres, mssql o mongodb)

Ejemplo para SQLite:

{
  "connectionId": "my-sqlite-db",
  "type": "sqlite"
}

Ejemplo para PostgreSQL:

{
  "connectionId": "my-postgres-db",
  "type": "postgres"
}

Ejemplo para SQL Server:

{
  "connectionId": "my-mssql-db",
  "type": "mssql"
}

Ejemplo para MongoDB:

{
  "connectionId": "my-mongodb-db",
  "type": "mongodb"
}

disconnect-database

Desconectarse de una base de datos.

Parámetros:

  • connectionId: El ID de conexión para desconectar

execute-query

Ejecutar una consulta que devuelve resultados.

Parámetros:

  • connectionId: El ID de conexión
  • query: Consulta SQL o pipeline de agregación de MongoDB (como cadena JSON)
  • params: (Opcional) Matriz de parámetros para la consulta. Para MongoDB, el primer parámetro es el nombre de la colección.

Ejemplo para SQL:

{
  "connectionId": "my-postgres-db",
  "query": "SELECT * FROM users WHERE age > $1",
  "params": [21]
}

Ejemplo para MongoDB:

{
  "connectionId": "my-mongodb-db",
  "query": "[{\"$match\": {\"age\": {\"$gt\": 21}}}, {\"$sort\": {\"name\": 1}}]",
  "params": ["users"]
}

Ejemplo para MongoDB (nuevo formato con colección integrada):

{
  "connectionId": "my-mongodb-db",
  "query": "{\"collection\": \"users\", \"pipeline\": [{\"$match\": {\"age\": {\"$gt\": 21}}}, {\"$sort\": {\"name\": 1}}]}"
}

Ejemplo para MongoDB (sintaxis de shell):

{
  "connectionId": "my-mongodb-db",
  "query": "db.getCollection('users').find({\"age\": {\"$gt\": 21}})"
}

Ejemplo para MongoDB (sintaxis de shell con referencia directa a colección):

{
  "connectionId": "my-mongodb-db",
  "query": "db.users.find({\"age\": {\"$gt\": 21}})"
}

Ejemplo para MongoDB (comando sin procesar):

{
  "connectionId": "my-mongodb-db", 
  "query": "{\"find\": \"users\", \"filter\": {\"age\": {\"$gt\": 21}}}"
}

execute-update

Ejecutar una consulta que no devuelve resultados (INSERT, UPDATE, DELETE).

Parámetros:

  • connectionId: El ID de conexión
  • query: Consulta SQL o comando de MongoDB (como cadena JSON)
  • params: (Opcional) Matriz de parámetros para la consulta. Para MongoDB, el primer parámetro es el nombre de la colección.

Ejemplo para SQL:

{
  "connectionId": "my-postgres-db",
  "query": "INSERT INTO users (name, age) VALUES ($1, $2)",
  "params": ["John Doe", 30]
}

Ejemplo para MongoDB:

{
  "connectionId": "my-mongodb-db",
  "query": "{\"insertOne\": {\"name\": \"John Doe\", \"age\": 30}}",
  "params": ["users"]
}

Ejemplo para MongoDB (nuevo formato con colección integrada):

{
  "connectionId": "my-mongodb-db",
  "query": "{\"collection\": \"users\", \"operation\": {\"insertOne\": {\"name\": \"John Doe\", \"age\": 30}}}"
}

Ejemplo para MongoDB (sintaxis de shell):

{
  "connectionId": "my-mongodb-db",
  "query": "db.getCollection('users').insertOne({\"name\": \"John Doe\", \"age\": 30})"
}

Ejemplo para MongoDB (sintaxis de shell con referencia directa a colección):

{
  "connectionId": "my-mongodb-db",
  "query": "db.users.insertOne({\"name\": \"John Doe\", \"age\": 30})"
}

Ejemplo para MongoDB (comando sin procesar):

{
  "connectionId": "my-mongodb-db",
  "query": "{\"insert\": \"users\", \"documents\": [{\"name\": \"John Doe\", \"age\": 30}]}"
}

Recursos MCP

El servidor expone los siguientes recursos MCP:

Esquema de base de datos

URI: database://{connectionId}/schema

Devuelve información del esquema sobre la base de datos, incluyendo todas las tablas y sus columnas.

Esquema de tabla

URI: database://{connectionId}/tables/{tableName}

Devuelve información del esquema sobre una tabla específica, incluyendo sus columnas.

Lista de tablas

URI: database://{connectionId}/tables

Devuelve una lista de todas las tablas en la base de datos.

Desarrollo

Pruebas

Ejecute las pruebas:

npm test

Apoye el proyecto

Si encuentra útil este proyecto, ¡considere invitarme un café!

Buy Me A Coffee QR Code

Escanee el código QR anterior o haga clic aquí para apoyar el desarrollo de este proyecto.

Licencia

MIT