MCP Database Server
Se conecta e interactúa con varios sistemas de bases de datos como SQLite, PostgreSQL, SQL Server y MongoDB.
Documentación
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
- Abra o cree su archivo de configuración de Claude Desktop
- 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
commanddebe sernode - 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óntype: Tipo de base de datos (sqlite,postgres,mssqlomongodb)
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ónquery: 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ónquery: 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é!
Escanee el código QR anterior o haga clic aquí para apoyar el desarrollo de este proyecto.
Licencia
MIT
