MySQL Mcp
Servidor MCP seguro para producción que otorga a los agentes de IA acceso directo a bases de datos MySQL.
Documentación
mysql-mcp
Un servidor de Model Context Protocol (MCP) que brinda a los agentes de IA acceso directo a bases de datos MySQL.
Qué Puede Hacer
Consulta y Mutación de Datos
execute_query— Ejecuta sentencias SELECT, INSERT, UPDATE o DELETE con soporte de consultas parametrizadas (placeholders?)execute_transaction— Ejecuta múltiples sentencias como un lote atómico; si alguna falla, toda la transacción se revierte automáticamente
Gestión de Esquemas
create_table— Crea una nueva tablaalter_table— Agrega/elimina columnas, renombra columnas, agrega índices y másdrop_table— Elimina una tabla (requiereALLOW_DESTRUCTIVE_DDL=true)show_tables— Lista todas las tablas en una base de datosdescribe_table— Muestra la estructura de columnas de una tabla
Gestión de Bases de Datos
list_databases— Lista todas las bases de datos de usuario (excluye las bases de datos del sistema)create_database— Crea una nueva base de datos con juego de caracteres y cotejamiento opcionalesdrop_database— Elimina una base de datos (requiereALLOW_DESTRUCTIVE_DDL=true)
Introspección
ping— Verifica el estado de la conexión MySQLshow_columns— Muestra información detallada de columnas para una tablaget_server_info— Devuelve la versión de MySQL, el juego de caracteres y el cotejamiento (solo lectura)
Soporte Multi-Base de Datos
Cada herramienta acepta un parámetro database. Puedes consultar diferentes bases de datos dentro de la misma sesión sin configuración adicional.
Qué No Puede Hacer
Las siguientes operaciones están bloqueadas permanentemente por el filtro de seguridad y no se pueden eludir bajo ninguna circunstancia:
| Categoría | Comandos Bloqueados |
|---|---|
| Configuración de MySQL | SET GLOBAL, SET @@global.*, SET @@SESSION.sql_mode |
| Gestión de usuarios | CREATE USER, DROP USER, ALTER USER, RENAME USER |
| Gestión de privilegios | GRANT, REVOKE |
| Comandos del sistema | FLUSH, KILL, SHUTDOWN |
| Replicación | RESET MASTER/REPLICA, START/STOP SLAVE/REPLICA, CHANGE MASTER |
| Acceso a archivos | LOAD DATA INFILE, SELECT INTO OUTFILE/DUMPFILE |
| Plugins | INSTALL PLUGIN, UNINSTALL PLUGIN |
Restricciones adicionales:
- Múltiples sentencias separadas por
;en una sola llamada no están permitidas — usaexecute_transactionen su lugar drop_tableydrop_databaseestán deshabilitados por defecto y devolverán un error a menos queALLOW_DESTRUCTIVE_DDL=trueesté configurado- Los resultados de consultas están limitados a
MAX_ROWSfilas (por defecto: 1000); agrega una cláusulaLIMITpara tablas grandes
Instalación
Requisitos: Node.js 20+
git clone https://github.com/turkeryildirim/mysql-mcp
cd mysql-mcp
npm install
npm run build
Copia el archivo de entorno de ejemplo y completa tus credenciales:
cp .env.example .env
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=mcp_user
MYSQL_PASSWORD=your_password
# Optional
MYSQL_DATABASE=default_db
MYSQL_POOL_SIZE=10
MAX_ROWS=1000
ALLOW_DESTRUCTIVE_DDL=false
Crear un Usuario MySQL Dedicado (Recomendado)
Crea un usuario MySQL con privilegios mínimos para el servidor MCP:
CREATE USER 'mcp_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX
ON *.* TO 'mcp_user'@'localhost';
FLUSH PRIVILEGES;
No otorgues
SUPER,FILE,RELOADniGRANT OPTION.
Integración con Claude Desktop
Abre el archivo de configuración de Claude Desktop:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Agrega el siguiente bloque bajo mcpServers:
{
"mcpServers": {
"mysql": {
"command": "node",
"args": ["/absolute/path/to/mysql-mcp/dist/index.js"],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "mcp_user",
"MYSQL_PASSWORD": "your_password",
"MYSQL_DATABASE": "",
"MAX_ROWS": "1000",
"ALLOW_DESTRUCTIVE_DDL": "false"
}
}
}
}
Reinicia Claude Desktop. Deberías ver el servidor mysql listado en el panel de herramientas.
Integración con Claude CLI
Opción 1: .mcp.json — Alcance de proyecto (Recomendado)
Crea un archivo .mcp.json en la raíz de tu proyecto:
{
"mcpServers": {
"mysql": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/mysql-mcp/dist/index.js"],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "mcp_user",
"MYSQL_PASSWORD": "your_password",
"ALLOW_DESTRUCTIVE_DDL": "false"
}
}
}
}
El servidor se carga automáticamente cada vez que ejecutas claude desde ese directorio.
Opción 2: Configuración global
claude mcp add mysql -- node /absolute/path/to/mysql-mcp/dist/index.js
Para incluir variables de entorno:
claude mcp add mysql \
-e MYSQL_HOST=localhost \
-e MYSQL_USER=mcp_user \
-e MYSQL_PASSWORD=your_password \
-- node /absolute/path/to/mysql-mcp/dist/index.js
Verifica la configuración:
claude mcp list
claude mcp get mysql
Ejemplos de Prompts
Una vez conectado, puedes indicar al agente en lenguaje natural:
Show me the structure of the users table in testdb
Fetch the last 10 orders from testdb.orders
Create a products table in testdb with id, name, price, and stock columns
Run the following two INSERTs as a single transaction: ...
Desarrollo
npm run dev # Watch mode (rebuilds on change)
npm test # Unit tests (no MySQL connection required)
npm run build # Production build → dist/