MySQL Server
Proporciona acceso de solo lectura a bases de datos MySQL, permitiendo a los LLMs inspeccionar esquemas y ejecutar consultas.
Documentación
Servidor MCP para MySQL basado en NodeJS

Un servidor de Model Context Protocol que proporciona acceso de solo lectura a bases de datos MySQL. Este servidor permite a los LLM inspeccionar esquemas de bases de datos y ejecutar consultas de solo lectura.
Instalación
Usando Smithery
La forma más fácil de instalar y configurar este servidor MCP es a través de Smithery:
# Install the MCP server
npx -y @smithery/cli@latest install @benborla29/mcp-server-mysql --client claude
Durante la configuración, se le pedirá que ingrese los detalles de conexión de MySQL. Smithery automáticamente:
- Configurará las variables de entorno correctas
- Configurará su aplicación LLM para usar el servidor MCP
- Probará la conexión a su base de datos MySQL
- Proporcionará ayuda útil si es necesario
Usando MCP Get
También puede instalar este paquete usando MCP Get:
npx @michaellatman/mcp-get@latest install @benborla29/mcp-server-mysql
MCP Get proporciona un registro centralizado de servidores MCP y simplifica el proceso de instalación.
Usando NPM/PNPM
Para instalación manual:
# Using npm
npm install -g @benborla29/mcp-server-mysql
# Using pnpm
pnpm add -g @benborla29/mcp-server-mysql
Después de la instalación manual, deberá configurar su aplicación LLM para usar el servidor MCP (consulte la sección de Configuración a continuación).
Componentes
Herramientas
- mysql_query
- Ejecutar consultas SQL de solo lectura contra la base de datos conectada
- Entrada:
sql(cadena): La consulta SQL a ejecutar - Todas las consultas se ejecutan dentro de una transacción de SOLO LECTURA
- Soporta declaraciones preparadas para el manejo seguro de parámetros
- Tiempos de espera de consulta configurables y paginación de resultados
- Estadísticas de ejecución de consultas integradas
Recursos
El servidor proporciona información completa de la base de datos:
- Esquemas de Tablas
- Información de esquema JSON para cada tabla
- Nombres de columnas y tipos de datos
- Información de índices y restricciones
- Relaciones de claves foráneas
- Estadísticas y métricas de tablas
- Descubiertas automáticamente a partir de los metadatos de la base de datos
Características de Seguridad
- Prevención de inyección SQL mediante declaraciones preparadas
- Capacidades de listas blancas/negras de consultas
- Limitación de velocidad para la ejecución de consultas
- Análisis de complejidad de consultas
- Cifrado de conexión configurable
- Aplicación de transacciones de solo lectura
Optimizaciones de Rendimiento
- Agrupación de conexiones optimizada
- Caché de resultados de consultas
- Transmisión de conjuntos de resultados grandes
- Análisis del plan de ejecución de consultas
- Tiempos de espera de consulta configurables
Monitoreo y Depuración
- Registro completo de consultas
- Recopilación de métricas de rendimiento
- Seguimiento y reporte de errores
- Puntos finales de verificación de salud
- Estadísticas de ejecución de consultas
Configuración
Configuración Automática con Smithery
Si instaló usando Smithery, su configuración ya está lista. Puede verla o modificarla con:
smithery configure @benborla29/mcp-server-mysql
Configuración Manual para Claude Desktop App
Para configurar manualmente el servidor MCP para Claude Desktop App, agregue lo siguiente a su archivo claude_desktop_config.json (generalmente ubicado en su directorio de usuario):
{
"mcpServers": {
"mcp_server_mysql": {
"command": "npx",
"args": [
"-y",
"@benborla29/mcp-server-mysql"
],
"env": {
"MYSQL_HOST": "127.0.0.1",
"MYSQL_PORT": "3306",
"MYSQL_USER": "root",
"MYSQL_PASS": "",
"MYSQL_DB": "db_name"
}
}
}
}
Reemplace db_name con el nombre de su base de datos o déjelo en blanco para acceder a todas las bases de datos.
Opciones de Configuración Avanzada
Para tener más control sobre el comportamiento del servidor MCP, puede usar estas opciones de configuración avanzada:
{
"mcpServers": {
"mcp_server_mysql": {
"command": "/path/to/npx/binary/npx",
"args": [
"-y",
"@benborla29/mcp-server-mysql"
],
"env": {
// Basic connection settings
"MYSQL_HOST": "127.0.0.1",
"MYSQL_PORT": "3306",
"MYSQL_USER": "root",
"MYSQL_PASS": "",
"MYSQL_DB": "db_name",
"PATH": "/path/to/node/bin:/usr/bin:/bin",
// Performance settings
"MYSQL_POOL_SIZE": "10",
"MYSQL_QUERY_TIMEOUT": "30000",
"MYSQL_CACHE_TTL": "60000",
// Security settings
"MYSQL_RATE_LIMIT": "100",
"MYSQL_MAX_QUERY_COMPLEXITY": "1000",
"MYSQL_SSL": "true",
// Monitoring settings
"MYSQL_ENABLE_LOGGING": "true",
"MYSQL_LOG_LEVEL": "info",
"MYSQL_METRICS_ENABLED": "true"
}
}
}
}
Variables de Entorno
Conexión Básica
MYSQL_HOST: host del servidor MySQL (predeterminado: "127.0.0.1")MYSQL_PORT: puerto del servidor MySQL (predeterminado: "3306")MYSQL_USER: nombre de usuario de MySQL (predeterminado: "root")MYSQL_PASS: contraseña de MySQLMYSQL_DB: nombre de la base de datos de destino
Configuración de Rendimiento
MYSQL_POOL_SIZE: tamaño del grupo de conexiones (predeterminado: "10")MYSQL_QUERY_TIMEOUT: tiempo de espera de consulta en milisegundos (predeterminado: "30000")MYSQL_CACHE_TTL: tiempo de vida de caché en milisegundos (predeterminado: "60000")
Configuración de Seguridad
MYSQL_RATE_LIMIT: máximo de consultas por minuto (predeterminado: "100")MYSQL_MAX_QUERY_COMPLEXITY: puntuación máxima de complejidad de consulta (predeterminado: "1000")MYSQL_SSL: habilitar cifrado SSL/TLS (predeterminado: "false")
Configuración de Monitoreo
MYSQL_ENABLE_LOGGING: habilitar registro de consultas (predeterminado: "false")MYSQL_LOG_LEVEL: nivel de registro (predeterminado: "info")MYSQL_METRICS_ENABLED: habilitar métricas de rendimiento (predeterminado: "false")
Pruebas
Configuración de la Base de Datos
Antes de ejecutar las pruebas, debe configurar la base de datos de prueba y sembrarla con datos de prueba:
-
Crear Base de Datos y Usuario de Prueba
-- Connect as root and create test database CREATE DATABASE IF NOT EXISTS mcp_test; -- Create test user with appropriate permissions CREATE USER IF NOT EXISTS 'mcp_test'@'localhost' IDENTIFIED BY 'mcp_test_password'; GRANT ALL PRIVILEGES ON mcp_test.* TO 'mcp_test'@'localhost'; FLUSH PRIVILEGES; -
Ejecutar Script de Configuración de Base de Datos
# Run the database setup script pnpm run setup:test:dbEsto creará las tablas necesarias y los datos de siembra. El script se encuentra en
scripts/setup-test-db.ts -
Configurar Entorno de Prueba Cree un archivo
.env.testen la raíz del proyecto:MYSQL_HOST=127.0.0.1 MYSQL_PORT=3306 MYSQL_USER=mcp_test MYSQL_PASS=mcp_test_password MYSQL_DB=mcp_test -
Actualizar Scripts de package.json Agregue estos scripts a su package.json:
{ "scripts": { "setup:test:db": "ts-node scripts/setup-test-db.ts", "pretest": "pnpm run setup:test:db", "test": "vitest run", "test:watch": "vitest", "test:coverage": "vitest run --coverage" } }
Ejecución de Pruebas
El proyecto incluye un conjunto completo de pruebas para garantizar funcionalidad y confiabilidad:
# First-time setup
pnpm run setup:test:db
# Run all tests
pnpm test
Solución de Problemas
Usando Smithery para Solución de Problemas
Si instaló con Smithery, puede usar sus diagnósticos integrados:
# Check the status of your MCP server
smithery status @benborla29/mcp-server-mysql
# Run diagnostics
smithery diagnose @benborla29/mcp-server-mysql
# View logs
smithery logs @benborla29/mcp-server-mysql
Usando MCP Get para Solución de Problemas
Si instaló con MCP Get:
# Check the status
mcp-get status @benborla29/mcp-server-mysql
# View logs
mcp-get logs @benborla29/mcp-server-mysql
Problemas Comunes
-
Problemas de Conexión
- Verifique que el servidor MySQL esté en ejecución y sea accesible
- Verifique las credenciales y permisos
- Asegúrese de que la configuración SSL/TLS sea correcta si está habilitada
- Intente conectarse con un cliente MySQL para confirmar el acceso
-
Problemas de Rendimiento
- Ajuste el tamaño del grupo de conexiones
- Configure los valores de tiempo de espera de consulta
- Habilite el caché de consultas si es necesario
- Verifique la configuración de complejidad de consultas
- Monitoree el uso de recursos del servidor
-
Restricciones de Seguridad
- Revise la configuración de limitación de velocidad
- Verifique la configuración de listas blancas/negras de consultas
- Verifique la configuración SSL/TLS
- Asegúrese de que el usuario tenga los permisos MySQL adecuados
-
Resolución de Rutas Si encuentra un error "Could not connect to MCP server mcp-server-mysql", establezca explícitamente la ruta de todos los binarios requeridos:
{
"env": {
"PATH": "/path/to/node/bin:/usr/bin:/bin"
}
}
- Problemas de Autenticación
- Para MySQL 8.0+, asegúrese de que el servidor soporte el complemento de autenticación
caching_sha2_password - Verifique si su usuario de MySQL está configurado con el método de autenticación correcto
- Intente crear un usuario con autenticación heredada si es necesario:
CREATE USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
- Para MySQL 8.0+, asegúrese de que el servidor soporte el complemento de autenticación
Contribuciones
¡Las contribuciones son bienvenidas! No dude en enviar una Pull Request a https://github.com/benborla/mcp-server-mysql
Configuración de Desarrollo
- Clone el repositorio
- Instale las dependencias:
pnpm install - Compile el proyecto:
pnpm run build - Ejecute las pruebas:
pnpm test
Hoja de Ruta del Proyecto
Estamos trabajando activamente en mejorar este servidor MCP. Consulte nuestro CHANGELOG.md para obtener detalles sobre las funciones planificadas, incluyendo:
- Capacidades de consulta mejoradas con declaraciones preparadas
- Características de seguridad avanzadas
- Optimizaciones de rendimiento
- Monitoreo integral
- Información de esquema ampliada
Si desea contribuir a cualquiera de estas áreas, revise los problemas en GitHub o abra uno nuevo para discutir sus ideas.
Envío de Cambios
- Haga un fork del repositorio
- Cree una rama de características:
git checkout -b feature/your-feature-name - Haga commit de sus cambios:
git commit -am 'Add some feature' - Haga push a la rama:
git push origin feature/your-feature-name - Envíe una pull request
Licencia
Este servidor MCP está licenciado bajo la Licencia MIT. Consulte el archivo LICENSE para obtener más detalles.