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

smithery badge

Demo

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 MySQL
  • MYSQL_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:

  1. 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;
    
  2. Ejecutar Script de Configuración de Base de Datos

    # Run the database setup script
    pnpm run setup:test:db
    

    Esto creará las tablas necesarias y los datos de siembra. El script se encuentra en scripts/setup-test-db.ts

  3. Configurar Entorno de Prueba Cree un archivo .env.test en 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
    
  4. 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

  1. 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
  2. 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
  3. 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
  4. 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"
  }
}
  1. 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';
      

Contribuciones

¡Las contribuciones son bienvenidas! No dude en enviar una Pull Request a https://github.com/benborla/mcp-server-mysql

Configuración de Desarrollo

  1. Clone el repositorio
  2. Instale las dependencias: pnpm install
  3. Compile el proyecto: pnpm run build
  4. 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

  1. Haga un fork del repositorio
  2. Cree una rama de características: git checkout -b feature/your-feature-name
  3. Haga commit de sus cambios: git commit -am 'Add some feature'
  4. Haga push a la rama: git push origin feature/your-feature-name
  5. Envíe una pull request

Licencia

Este servidor MCP está licenciado bajo la Licencia MIT. Consulte el archivo LICENSE para obtener más detalles.