Un servidor MCP (Model Context Protocol) es un software que actúa como intermediario entre aplicaciones (como editores de código o asistentes inteligentes) y bases de datos. Su función principal es recibir solicitudes (por ejemplo, ejecutar una consulta SQL), procesarlas y devolver los resultados de manera estructurada y segura.
- El servidor MCP se ejecuta en tu computadora o en un servidor remoto.
- Recibe comandos o consultas desde una aplicación cliente (por ejemplo, Claude Desktop, un editor de código como Cursor o Visual Studio Code, o una API).
- Procesa estos comandos, accediendo a la base de datos que tengas configurada (puede ser SQLite, SQL Server, PostgreSQL, MySQL, etc.).
- Devuelve los resultados al cliente en un formato fácil de usar (como JSON o CSV).
La finalidad principal de este proyecto es integrar el servidor MCP con editores de código como Cursor y Visual Studio Code. Esto permite a los usuarios interactuar con bases de datos utilizando modelos de inteligencia artificial (IA) y lenguaje natural. Así, puedes escribir instrucciones en español o inglés (por ejemplo, "muéstrame todos los usuarios registrados este mes") y el sistema las traduce en consultas SQL, facilitando el trabajo con bases de datos incluso si no dominas SQL.
A continuación, algunos recursos y enlaces oficiales para configurar MCP en los editores más populares:
-
Visual Studio Code:
-
Cursor:
- Documentación oficial del protocolo MCP (en inglés)
- Repositorio oficial de mcp-db-connect
- Guía de uso de Claude Desktop con MCP
Un servidor MCP (Model Context Protocol) que proporciona capacidades de acceso a bases de datos para Claude, soportando SQLite, SQL Server, PostgreSQL y MySQL.
- Soporte para múltiples motores de base de datos:
- SQLite
- SQL Server
- PostgreSQL
- MySQL
- Ejecución de consultas SQL (SELECT, INSERT, UPDATE, DELETE)
- Creación y modificación de tablas
- Exportación de resultados en formatos CSV y JSON
- Descripción de esquemas de tablas
- Listado de tablas disponibles
- Clonar el repositorio:
git clone https://github.com/caagudelo/mcp-db-connect.git
cd mcp-db-connect
- Instalar dependencias:
npm install
- Compilar el proyecto:
npm run build
- (Opcional) Ejecutar el CLI directamente con npx (sin instalación global):
npx -y @cagudelo/mcp-db-connect -- --sqlserver --host <host_sqlserver> --instance <nombre_instancia> --database <nombre_base_datos> --port <puerto> --user <usuario> --password <contraseña> --trustServerCertificate true
Importante: El doble guion
--
es necesario para que todos los argumentos sean pasados correctamente a tu script y no sean interpretados por npx.
Para configurar mcp-db-connect en tu editor, edita el archivo de configuración de Claude Desktop. Ejemplo moderno para MySQL:
{
"mcpServers": {
"mysql": {
"command": "node",
"args": [
"/ruta/absoluta/a/mcp-db-connect/dist/index.js",
"--mysql",
"--host", "<host_mysql>",
"--database", "<nombre_base_datos>",
"--port", "<puerto>",
"--user", "<usuario>",
"--password", "<contraseña>"
]
},
"sqlserver": {
"command": "node",
"args": [
"/ruta/absoluta/a/mcp-db-connect/dist/index.js",
"--sqlserver",
"--host", "<host_sqlserver>",
"--instance", "<nombre_instancia>",
"--database", "<nombre_base_datos>",
"--port", "<puerto>",
"--user", "<usuario>",
"--password", "<contraseña>",
"--trustServerCertificate", "true"
]
},
"postgresql": {
"command": "node",
"args": [
"/ruta/absoluta/a/mcp-db-connect/dist/index.js",
"--postgresql",
"--host", "<host_postgres>",
"--database", "<nombre_base_datos>",
"--port", "<puerto>",
"--user", "<usuario>",
"--password", "<contraseña>",
"--ssl", "true"
]
},
"sqlite": {
"command": "node",
"args": [
"/ruta/absoluta/a/mcp-db-connect/dist/index.js",
"--sqlite",
"--path", "/ruta/a/tu/base.db"
]
},
"sqlserver-npx": {
"command": "npx",
"args": [
"-y",
"@cagudelo/mcp-db-connect",
"--",
"--sqlserver",
"--host", "<host_sqlserver>",
"--instance", "<nombre_instancia>",
"--database", "<nombre_base_datos>",
"--port", "<puerto>",
"--user", "<usuario>",
"--password", "<contraseña>",
"--trustServerCertificate", "true"
]
}
}
}
Importante: Si usas
npx
en la configuración del editor, asegúrate de incluir el argumento--
antes de los parámetros de tu script y el flag-y
para evitar preguntas interactivas. Esto previene errores de interpretación de argumentos.
Ahora puedes usar argumentos nombrados para mayor claridad y flexibilidad. Ejemplo para MySQL:
node dist/index.js --mysql --host <host_mysql> --database <nombre_base_datos> --port <puerto> --user <usuario> --password "<contraseña>"
Puedes usar los siguientes flags según el motor:
--mysql
--sqlserver
--postgresql
--sqlite
node dist/index.js --sqlserver --host <host_sqlserver> --instance <nombre_instancia> --database <nombre_base_datos> --port <puerto> --user <usuario> --password "<contraseña>" --trustServerCertificate true
Nota: El parámetro
--instance
es opcional y solo se usa si necesitas conectarte a una instancia nombrada de SQL Server. Si no lo especificas, se conectará a la instancia predeterminada.
node dist/index.js --postgresql --host <host_postgres> --database <nombre_base_datos> --port <puerto> --user <usuario> --password "<contraseña>" --ssl true
node dist/index.js --sqlite --path /ruta/a/tu/base.db
A partir de la versión actual, el proyecto utiliza la librería minimist
para procesar los argumentos de la línea de comandos. Esto permite que los argumentos sean nombrados y opcionales, facilitando la configuración y el uso del servidor.
- El archivo principal (
src/index.ts
) importa y utilizaminimist
para convertir los argumentos en un objeto fácil de usar. - Esto permite que los parámetros como
--host
,--user
,--password
, etc., sean reconocidos automáticamente. - Si quieres modificar o extender los argumentos soportados, revisa la sección donde se usa
minimist
en el código fuente.
Nota: Si usas TypeScript, asegúrate de instalar los tipos de minimist con:
npm install --save-dev @types/minimist
- Puedes seguir usando el sistema antiguo de argumentos posicionales, pero se recomienda el uso de argumentos nombrados para mayor claridad y seguridad.
- Mantén seguras tus contraseñas y evita compartir archivos de configuración con datos sensibles.
- Considera el uso de variables de entorno o archivos de configuración seguros para manejar contraseñas en entornos de producción.
Herramienta | Descripción | Parámetros Requeridos |
---|---|---|
read_query |
Ejecutar consultas SELECT |
query : Consulta SQL SELECT |
write_query |
Ejecutar consultas INSERT, UPDATE, DELETE, CREATE, ALTER, EXEC, CALL, SP_ |
query : Consulta SQL de modificación |
create_table |
Crear nuevas tablas |
query : Sentencia CREATE TABLE |
alter_table |
Modificar esquema de tablas |
query : Sentencia ALTER TABLE |
drop_table |
Eliminar tablas |
table_name : Nombre de la tablaconfirm : Bandera de seguridad |
export_query |
Exportar resultados |
query : Consulta SQL SELECTformat : "csv" o "json" |
list_tables |
Listar todas las tablas | Ninguno |
list_procedures |
Listar todos los procedimientos almacenados | Ninguno |
describe_table |
Ver esquema de una tabla |
table_name : Nombre de la tabla |
append_insight |
Agregar un insight de negocio |
insight : Texto del insight |
list_insights |
Listar todos los insights de negocio | Ninguno |
list_views |
Listar todas las vistas (views) de la base de datos | Ninguno |
describe_view |
Ver la definición SQL de una vista específica |
view_name : Nombre de la vista |
list_indexes |
Listar todos los índices o los de una tabla específica |
table_name (opcional): Nombre de la tabla |
describe_index |
Ver la definición de un índice específico |
index_name : Nombre del índicetable_name (opcional): Nombre de la tabla |
search_in_database |
Buscar un valor en todas las tablas y columnas de la base de datos |
search : Valor a buscar |
Para ejecutar el servidor en modo desarrollo:
npm run dev
Puedes configurar el CLI en tu editor de diferentes maneras, según tus necesidades y preferencias:
Instala el paquete globalmente:
npm install -g @cagudelo/mcp-db-connect
Configura tu editor para usar el comando directamente:
"mysql": {
"command": "mcp-db-connect",
"args": [
"--mysql",
"--host", "<host_mysql>",
"--database", "<nombre_base_datos>",
"--port", "<puerto>",
"--user", "<usuario>",
"--password", "<contraseña>"
]
}
Puedes ejecutar el CLI directamente con npx. IMPORTANTE: Para evitar errores con los argumentos, agrega --
antes de los parámetros de tu script:
"mysql": {
"command": "npx",
"args": [
"@cagudelo/mcp-db-connect",
"--",
"--mysql",
"--host", "<host_mysql>",
"--database", "<nombre_base_datos>",
"--port", "<puerto>",
"--user", "<usuario>",
"--password", "<contraseña>"
]
}
Nota: Si ejecutas el comando desde la terminal, usa el doble guion
--
para separar los argumentos de npx y los de tu script. Ejemplo:npx -y @cagudelo/mcp-db-connect -- --sqlserver --host <host_sqlserver> --instance <nombre_instancia> --database <nombre_base_datos> --port <puerto> --user <usuario> --password <contraseña> --trustServerCertificate true
Esto asegura que todos los argumentos sean interpretados correctamente por tu script y no por npx.
-
Para usuarios finales o equipos: Instala globalmente y usa el comando (
mcp-db-connect
). -
Para pruebas rápidas: Usa
npx @cagudelo/mcp-db-connect ...
. - Para desarrollo local: Usa la ruta directa al archivo.