mcp-dbs

by cuongtl1992
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Provides a way for users to support the project through Buy Me A Coffee donations, with a QR code and direct link included in the README.

  • Enables connection to PostgreSQL databases, with support for querying, schema exploration, and data operations through environment variable configuration.

  • Provides tools for connecting to SQLite databases, executing queries, and managing database schema with options for automatic database creation.

Servidor de base de datos MCP

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 servidor de base de datos MCP se puede utilizar 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 punto final SSE en http://localhost:3001/mcp .

Puerto personalizado

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

npx mcp-dbs --port 8080

Modo STDIO

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

npx mcp-dbs --stdio

Integración de escritorio de Claude

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 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 sus propios detalles de conexión de 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 adecuadas para su tipo de base de datos (consulte la sección de variables de entorno a continuación)
  • Puede utilizar variables de entorno para cualquiera de las bases de datos compatibles (SQLite, PostgreSQL, SQL Server o MongoDB)

Usando con Claude

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

  • Conéctese a su base de datos
  • Ejecutar consultas y obtener resultados
  • Explora el esquema de tu base de datos
  • Trabajar con tablas y datos

Herramientas

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

Recursos

  • esquema-de-base-de-datos : Obtener el esquema completo de la base de datos
  • table-schema : Obtener el esquema para 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 utilizando 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"

Servidor SQL

# 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 de conexión a la base de datos.

Herramientas MCP

El servidor expone las siguientes herramientas MCP:

conectar-base de datos

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" }

desconectar la base de datos

Desconectarse de una base de datos.

Parámetros:

  • connectionId : El ID de conexión para desconectar

ejecutar consulta

Ejecutar una consulta que devuelva resultados.

Parámetros:

  • connectionId : El ID de conexión
  • query : consulta SQL o canalización de agregación de MongoDB (como cadena JSON)
  • params : (Opcional) Matriz de parámetros para la consulta. En 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 incorporada):

{ "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 de referencia de colección directa):

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

Ejemplo para MongoDB (comando sin formato):

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

ejecutar-actualizar

Ejecutar una consulta que no devuelve resultados (INSERTAR, ACTUALIZAR, ELIMINAR).

Parámetros:

  • connectionId : El ID de conexión
  • query : consulta SQL o comando MongoDB (como cadena JSON)
  • params : (Opcional) Matriz de parámetros para la consulta. En 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 incorporada):

{ "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 de referencia de colección directa):

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

Ejemplo para MongoDB (comando sin formato):

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

Recursos de 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, incluidas todas las tablas y sus columnas.

Esquema de tabla

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

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

Lista de tablas

URI: database://{connectionId}/tables

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

Desarrollo

Pruebas

Ejecutar las pruebas:

npm test

Apoya el proyecto

Si este proyecto te resulta útil, ¡considera comprarme un café!

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

Licencia

Instituto Tecnológico de Massachusetts (MIT)

ID: tvpshb3f1n