Simple MySQL MCP Server

Un servidor MCP simple para MySQL, que demuestra conceptos fundamentales del protocolo MCP. Requiere una conexión a una base de datos MySQL configurada mediante variables de entorno.

Documentación

Servidor MCP MySQL Optimizado

Servidor MCP (Model Context Protocol) para MySQL con arquitectura limpia y principios SOLID.

🆕 Mejoras en la v1.1.0

✨ Arquitectura Optimizada

  • Separación de Responsabilidades: Clases especializadas para cada función
  • Principios SOLID: Código más mantenible y extensible
  • Arquitectura Limpia: Estructura modular y testeable

🔒 Seguridad Mejorada

  • Validación de Consultas: Protección contra operaciones peligrosas
  • Sanitización: Nombres de tablas validados
  • Protección contra Inyección SQL: Parámetros seguros

🚀 Rendimiento y Fiabilidad

  • Conexión Reutilizada: Gestión eficiente de recursos
  • Manejo de Errores: Mensajes consistentes e informativos
  • Apagado Controlado: Cierre controlado de conexiones

🏗️ Arquitectura

MySQLMCPServer
├── DatabaseConfig (Configurações)
├── DatabaseConnection (Conexão MySQL)
├── QueryValidator (Validação e Segurança)
├── ResponseFormatter (Formatação)
├── ToolsHandler (Ferramentas)
├── ResourcesHandler (Recursos)
└── PromptsHandler (Templates)

🎯 Conceptos MCP Implementados

1. Tools (Herramientas)

  • execute_query: Ejecuta consultas SQL con validación
  • describe_table: Describe la estructura de tablas

2. Resources (Recursos)

  • mysql://databases: Lista de bases de datos disponibles
  • mysql://tables: Tablas de la base de datos actual
  • mysql://schema: Esquema completo

3. Prompts (Plantillas)

  • analyze_table: Análisis detallado de tabla
  • find_large_tables: Tablas con más registros
  • database_overview: Vista general de la base de datos

🚀 Instalación y Uso

1. Instalar Dependencias

npm install

2. Configurar MySQL

Crea un archivo .env:

MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=sua_senha
MYSQL_DATABASE=seu_banco

3. Compilar y Ejecutar

# Compilar
npm run build

# Executar
npm start

# Desenvolvimento
npm run dev

4. Probar Conexión

npm run test:connection

🔧 Configuración de Claude Desktop

Añade a claude_desktop_config.json:

{
  "mcpServers": {
    "mysql-optimized": {
      "command": "node",
      "args": ["/caminho/para/dist/index.js"],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "sua_senha",
        "MYSQL_DATABASE": "seu_banco"
      }
    }
  }
}

🛡️ Seguridad

Validaciones Implementadas:

  • ✅ Bloqueo de DROP DATABASE/TABLE
  • ✅ Protección contra DELETE ... WHERE 1=1
  • ✅ Sanitización de nombres de tablas
  • ✅ Validación de consultas vacías
  • ✅ Manejo seguro de parámetros

Prácticas de Seguridad:

  • 🔒 Conexiones controladas
  • 🔒 Registros de errores seguros
  • 🔒 Aislamiento de responsabilidades
  • 🔒 Validación de entrada

📊 Ejemplo de Uso

// Executar query segura
{
  "name": "execute_query",
  "arguments": {
    "query": "SELECT * FROM usuarios LIMIT 5",
    "database": "meu_banco"
  }
}

// Analisar tabela
{
  "name": "describe_table",
  "arguments": {
    "table_name": "usuarios"
  }
}

🔍 Depuración y Registros

El servidor proporciona registros informativos:

  • ✅ Conexión establecida
  • 🔄 Consultas ejecutadas
  • ❌ Errores con detalles
  • 🔚 Apagado controlado

📈 Hoja de Ruta

  • Caché de resultados
  • Métricas de rendimiento
  • Pool de conexiones
  • Soporte para transacciones
  • Interfaz web de monitoreo

🤝 Contribución

  1. Haz un fork del proyecto
  2. Crea una rama (git checkout -b feature/nova-funcionalidade)
  3. Haz commit de tus cambios (git commit -m 'Adiciona nova funcionalidade')
  4. Haz push a la rama (git push origin feature/nova-funcionalidade)
  5. Abre un Pull Request

📝 Registro de Cambios

v1.1.0 (2025-01-XX)

  • ✨ Arquitectura optimizada con SOLID
  • 🔒 Validación y seguridad mejoradas
  • 🚀 Rendimiento mejorado
  • 📚 Documentación ampliada

v1.0.0 (2025-01-XX)

  • 🎉 Versión inicial
  • 🔧 Implementación básica de MCP
  • 🗄️ Soporte completo de MySQL

📄 Licencia

Licencia MIT: consulta el archivo LICENSE para más detalles.


Creado con ❤️ para demostrar el protocolo MCP de Anthropic