MCP-MySQL-Ops

Estás trabajando con el MCP MySQL Operations Server, una herramienta potente que proporciona capacidades integrales de monitoreo y análisis de bases de datos MySQL a través de consultas en lenguaje natural. Este servidor ofrece 19 herramientas especializadas para administración de bases de datos, monitoreo de rendimiento y análisis del sistema.

Documentación

Servidor MCP para Operaciones y Monitoreo de MySQL

License: MIT Python Docker Pulls MySQL BuyMeACoffee

Deploy to PyPI with tag PyPI PyPI - Downloads


Arquitectura e Internals (DeepWiki)

Ask DeepWiki


Resumen

Estás trabajando con el Servidor de Operaciones MySQL MCP, una herramienta potente que proporciona capacidades integrales de monitoreo y análisis de bases de datos MySQL mediante consultas en lenguaje natural. Este servidor ofrece 19 herramientas especializadas para administración de bases de datos, monitoreo de rendimiento y análisis del sistema. Aprovecha el Performance Schema y el Information Schema de MySQL para obtener información profunda sobre las operaciones de la base de datos y las métricas de rendimiento.


Características

  • Configuración Cero: Funciona con MySQL 5.7.9+ y 8.0+ de forma inmediata con detección automática de versión.
  • Lenguaje Natural: Haz preguntas como "Muéstrame consultas lentas" o "Analiza tamaños de tablas".
  • Seguro para Producción: Operaciones de solo lectura, compatible con AWS RDS/Aurora MySQL con permisos de usuario regulares.
  • Integración con Performance Schema: Análisis avanzado de consultas utilizando el Performance Schema integrado de MySQL.
  • Monitoreo Integral de Bases de Datos: Análisis del motor de almacenamiento, monitoreo de conexiones e información de rendimiento.
  • Análisis Inteligente de Consultas: Identificación del rendimiento de consultas mediante estadísticas del Performance Schema.
  • Descubrimiento de Esquemas y Estructuras: Exploración de la estructura de la base de datos con análisis detallado de tablas e índices.
  • Inteligencia del Motor de Almacenamiento: Monitoreo de InnoDB, recomendaciones de optimización de tablas.
  • Operaciones Multi-Base de Datos: Análisis y monitoreo sin problemas entre bases de datos.
  • Listo para Empresas: Operaciones seguras de solo lectura con compatibilidad con AWS RDS/Aurora MySQL.
  • Amigable para Desarrolladores: Código base simple para fácil personalización y extensión de herramientas.

🔧 Capacidades Avanzadas

  • Monitoreo y análisis de consultas basado en Performance Schema.
  • Monitoreo de conexiones y procesos en tiempo real.
  • Análisis del estado del motor de almacenamiento y optimización.
  • Análisis de capacidad de la base de datos y tamaño de tablas.
  • Seguimiento de uso y eficiencia de índices.

Ejemplos de Uso de Herramientas


MCP-MySQL-Ops Usage Screenshot


MCP-MySQL-Ops Usage Screenshot


⭐ Inicio Rápido (5 minutos)

Nota: El contenedor mysql incluido en docker-compose.yml está destinado únicamente para pruebas de inicio rápido. Puedes conectarte a tu propia instancia de MySQL ajustando las variables de entorno según sea necesario.

Si deseas usar tu propia instancia de MySQL en lugar del contenedor de prueba integrado:

  • Actualiza la información de conexión de MySQL de destino en tu archivo .env (consulta MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE).
  • En docker-compose.yml, comenta (desactiva) los contenedores mysql y mysql-init-data para evitar iniciar la base de datos de prueba integrada.

Diagrama de Flujo del Inicio Rápido/Tutorial

Flow Diagram of Quickstart/Tutorial

1. Configuración del Entorno

Nota: El sistema maneja automáticamente los permisos de usuario: tanto los usuarios root como los usuarios regulares son compatibles con el control de acceso adecuado.

git clone https://github.com/call518/MCP-MySQL-Ops.git
cd MCP-MySQL-Ops

# Copy and check environment configuration
cp .env.example .env

Configuración predeterminada (funciona de inmediato):

#### MySQL Root Configuration for Docker:
MYSQL_ROOT_HOST=%
MYSQL_ROOT_PASSWORD=changeme!@34

#### MySQL Host Configuration:
MYSQL_HOST=host.docker.internal
MYSQL_PORT=13306
MYSQL_USER=root
MYSQL_PASSWORD=${MYSQL_PASSWORD}
MYSQL_DATABASE=test_ecommerce

Para tu propio servidor MySQL:

# Edit .env file with your MySQL connection details
MYSQL_HOST=your-mysql-server.com
MYSQL_PORT=3306
MYSQL_USER=your_username     # Will auto-grant permissions on test DBs
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_default_db

# Then disable built-in containers in docker-compose.yml
# Comment out: mysql and mysql-init-data services

Nota: El contenedor MySQL está configurado con un mapeo de volúmenes adecuado para la persistencia de datos y la configuración inicial de la base de datos.

Recursos Adicionales:

2. Ejecutar el Stack de Docker

# Start all services (MySQL + MCP server + test interfaces)
docker-compose up -d

# Check container status
docker-compose ps

# Watch the logs (Ctrl+C to exit)
docker-compose logs -f mysql-init-data

⏱️ Secuencia de Inicio de Contenedores y Tiempo de Espera:

  • Contenedor MySQL: Se inicia primero e inicializa la base de datos (~30-60 segundos)
  • Datos de Inicialización de MySQL: Genera datos de prueba automáticamente (~1-2 minutos)
  • Servidor MCP: Se inicia después de que MySQL esté listo (~10-20 segundos)
  • OpenWebUI: Se inicia al final para asegurar que todos los servicios estén disponibles (~10-30 segundos)

💡 Espera de 2 a 3 minutos para que todos los contenedores se inicialicen completamente antes de acceder a la interfaz web. Puedes monitorear el progreso de inicio con:

# Monitor all container logs
docker-compose logs -f

# Check if all containers are healthy
docker-compose ps

3. Generación Automática de Datos de Prueba

🎉 ¡No se requiere configuración manual! Los datos de prueba se generan automáticamente durante el primer inicio mediante el contenedor mysql-init-data.

Lo que sucede automáticamente:

  • ✅ Se crean 4 bases de datos de prueba integrales (test_ecommerce, test_analytics, test_inventory, test_hr)
  • ✅ ~2,745 registros realistas con relaciones de clave foránea adecuadas
  • ✅ Los permisos de usuario se configuran automáticamente para tu MYSQL_USER (desde .env)
  • ✅ Se crean usuarios y roles de prueba para diferentes escenarios de acceso

Ejecución manual (si es necesario):

# Force regenerate test data (optional)
docker-compose run --rm mysql-init-data /scripts/create-test-data.sh

# Check generation logs
docker logs mcp-mysql-ops-mysql-init-data

Verificación:

# Connect and verify test databases exist
docker exec -it mcp-mysql-ops-mysql-8 mysql -u [your_mysql_user] -p -e "SHOW DATABASES;"

4. Acceso a OpenWebUI

🌐 Interfaz Web: http://localhost:3004/

⏳ Importante: Espera 2-3 minutos después de ejecutar docker-compose up -d para que todos los contenedores se inicialicen completamente. OpenWebUI se inicia al final para asegurar que todos los servicios backend (MySQL, generación de datos de prueba, servidor MCP) estén listos.

Verificación Rápida de Estado:

# Verify all containers are running
docker-compose ps

# If any container shows "starting" or "unhealthy", wait a bit longer
# You can watch the startup logs:
docker-compose logs -f

5. Registro de la Herramienta en OpenWebUI

📌 Nota: Las instrucciones de configuración de la interfaz web se basan en OpenWebUI v0.6.22. Las ubicaciones de los menús y la configuración pueden diferir en versiones más recientes.

  1. Inicia sesión en OpenWebUI con una cuenta de administrador
  2. Ve a "Configuración" → "Herramientas" desde el menú superior.
  3. Ingresa la dirección de la herramienta mysql-ops (por ejemplo, http://localhost:8004/mysql-ops) para conectar las herramientas MCP.
  4. Configura Ollama u OpenAI.

6. ¡Completado!

¡Felicidades! Tu servidor de Operaciones MySQL MCP está listo para usar. Puedes comenzar a explorar tus bases de datos con consultas en lenguaje natural.

🚀 Prueba Estas Consultas de Ejemplo:

  • "Muéstrame las conexiones activas actuales"
  • "¿Cuáles son el estado y la configuración actuales del servidor?"
  • "Analiza los tamaños de las tablas y la eficiencia de almacenamiento"
  • "Muéstrame información sobre el tamaño de la base de datos"
  • "¿Qué tablas tienen más filas?"

Seguridad y Autenticación

Autenticación con Token Bearer

Para el modo streamable-http, este servidor MCP admite autenticación con token Bearer para asegurar el acceso remoto. Esto es especialmente importante cuando se ejecuta el servidor en entornos de producción.

Configuración

Habilitar Autenticación:

# In .env file
REMOTE_AUTH_ENABLE=true
REMOTE_SECRET_KEY=your-secure-secret-key-here

O mediante CLI:

python -m mcp_mysql_ops --type streamable-http --auth-enable --secret-key your-secure-secret-key-here

Niveles de Seguridad

  1. modo stdio (Predeterminado): Acceso solo local, no se necesita autenticación
  2. streamable-http + REMOTE_AUTH_ENABLE=false: Acceso remoto sin autenticación ⚠️ NO RECOMENDADO para producción
  3. streamable-http + REMOTE_AUTH_ENABLE=true: Acceso remoto con autenticación de token Bearer ✅ RECOMENDADO para producción

Configuración del Cliente

Cuando la autenticación está habilitada, los clientes MCP deben incluir el token Bearer en el encabezado Authorization:

{
  "mcpServers": {
    "mcp-mysql-ops": {
      "type": "streamable-http",
      "url": "http://your-server:8000/mcp",
      "headers": {
        "Authorization": "Bearer your-secure-secret-key-here"
      }
    }
  }
}

Mejores Prácticas de Seguridad

  • Habilita siempre la autenticación al usar el modo streamable-http en producción
  • Usa claves secretas fuertes y generadas aleatoriamente (se recomiendan 32+ caracteres)
  • Usa HTTPS cuando sea posible (configura un proxy inverso con SSL/TLS)
  • Restringe el acceso a la red mediante firewalls o políticas de red
  • Rota las claves secretas regularmente para mayor seguridad
  • Monitorea los registros de acceso para detectar intentos de acceso no autorizado

Manejo de Errores

Cuando la autenticación falla, el servidor devuelve:

  • 401 No autorizado para tokens faltantes o inválidos
  • Mensajes de error detallados en formato JSON para depuración

🐛 Uso y Configuración

Este servidor MCP admite dos modos de conexión: stdio (tradicional) y streamable-http (basado en Docker). Puedes configurar el modo de transporte usando argumentos de CLI o variables de entorno.

Prioridad de Configuración: Argumentos de CLI > Variables de entorno > Valores predeterminados

Argumentos de CLI

  • --type (-t): Tipo de transporte (stdio o streamable-http) - Predeterminado: stdio
  • --host: Dirección del host para transporte HTTP - Predeterminado: 127.0.0.1
  • --port (-p): Número de puerto para transporte HTTP - Predeterminado: 8000
  • --auth-enable: Habilitar autenticación de token Bearer para el modo streamable-http - Predeterminado: false
  • --secret-key: Clave secreta para autenticación de token Bearer (requerida cuando la autenticación está habilitada)

Variables de Entorno

VariableDescripciónPredeterminadoPredeterminado del Proyecto
PYTHONPATHRuta de búsqueda de módulos de Python para importaciones del servidor MCP-/app/src
MCP_LOG_LEVELNivel de verbosidad del registro del servidor (DEBUG, INFO, WARNING, ERROR)INFOINFO
FASTMCP_TYPEProtocolo de transporte MCP (stdio para CLI, streamable-http para web)stdiostreamable-http
FASTMCP_HOSTDirección de enlace del servidor HTTP (0.0.0.0 para todas las interfaces)127.0.0.10.0.0.0
FASTMCP_PORTPuerto del servidor HTTP para comunicación MCP80008000
REMOTE_AUTH_ENABLEHabilitar autenticación de token Bearer para el modo streamable-http. Si no está definido/vacío, el valor predeterminado es false. Acepta: true/false, 1/0, yes/no, on/off (sin distinción de mayúsculas)falsefalse
REMOTE_SECRET_KEYClave secreta para autenticación de token Bearer. Si no está definida/vacía, la autenticación se deshabilitará incluso si REMOTE_AUTH_ENABLE=true. Recomendado: cadena aleatoria de 32+ caracteres"" (vacío)your-secret-key-here
MYSQL_HOSTNombre de host o dirección IP del servidor MySQL127.0.0.1host.docker.internal
MYSQL_PORTNúmero de puerto del servidor MySQL330613306
MYSQL_USERNombre de usuario para autenticación en el servidor MySQLrootroot
MYSQL_PASSWORDContraseña para autenticación en el servidor MySQL-changeme!@34
MYSQL_DATABASENombre de la base de datos MySQL de destino predeterminada-test_ecommerce
DOCKER_EXTERNAL_PORT_OPENWEBUIMapeo de puerto del host para el contenedor Open WebUI80803004

Configuración del Entorno

Copia .env.example a .env y configura tu entorno:

cp .env.example .env
# Edit .env file with your specific configuration

Política de Valores Predeterminados de Variables de Entorno

Variables de Autenticación:

  • REMOTE_AUTH_ENABLE: Si no está definida, comentada o vacía → el valor predeterminado es false
  • REMOTE_SECRET_KEY: Si no está definida, comentada o vacía → el valor predeterminado es "" (cadena vacía)

Comportamiento de Seguridad:

  • La autenticación solo se habilita cuando se cumplen ambas condiciones:
    1. REMOTE_AUTH_ENABLE está explícitamente establecido a un valor verdadero (true/1/yes/on)
    2. REMOTE_SECRET_KEY está establecido a una cadena no vacía
  • Si alguna condición falla, el servidor se ejecuta sin autenticación
  • Esto garantiza valores predeterminados seguros y evita la omisión accidental de autenticación

Ejemplos de configuración:

# Authentication disabled (all equivalent)
# REMOTE_AUTH_ENABLE=            # undefined/commented
REMOTE_AUTH_ENABLE=false         # explicit false
REMOTE_AUTH_ENABLE=""           # empty string

# Authentication enabled (requires both)
REMOTE_AUTH_ENABLE=true         # or 1, yes, on
REMOTE_SECRET_KEY=my-secret-key # non-empty string

🛠️ Desarrollo Local e Instalación

Para desarrolladores que quieran ejecutar el servidor MCP localmente o integrarlo en sus propios proyectos:

Método 1: Script de Consola (Recomendado)

# Clone and install
git clone https://github.com/call518/MCP-MySQL-Ops.git
cd MCP-MySQL-Ops
pip install -e .

# Run with simple command
mcp-mysql-ops --type stdio
mcp-mysql-ops --type streamable-http --host 127.0.0.1 --port 8000

Método 2: Ejecución de Módulo

# Clone and set PYTHONPATH
git clone https://github.com/call518/MCP-MySQL-Ops.git
cd MCP-MySQL-Ops
export PYTHONPATH=$(pwd)/src

# Run as module
python -m mcp_mysql_ops --type stdio
python -m mcp_mysql_ops --type streamable-http --host 127.0.0.1 --port 8000

💡 Consejo Profesional: Usa el Método 1 (script de consola) para una integración más limpia. El Método 2 es útil cuando necesitas modificar el código fuente directamente.

Ejecución de Pruebas

Hay dos suites de pruebas disponibles:

SuiteArchivoRequiere Docker
Pruebas unitarias (lógica de compatibilidad de versiones)tests/test_version_compat.pyNo
Pruebas de integración (todas las herramientas × MySQL 5.7 / 8.0 / 8.4)tests/test_tools_integration.py

Ejecuta todo con un solo comando

uv run pytest inicia automáticamente los contenedores de prueba de Docker (MySQL 5.7, 8.0, 8.4), espera a que se inicialicen completamente (esquema + datos semilla + Performance Schema), ejecuta todas las pruebas y luego elimina todo.

# Install dev dependencies (one-time)
uv sync --extra dev

# Run all tests (unit + integration) — Docker is managed automatically
uv run pytest -v

# Unit tests only (no Docker needed)
uv run pytest tests/test_version_compat.py -v

# Integration tests only
uv run pytest tests/test_tools_integration.py -v

# Run against a specific MySQL version only
uv run pytest -v -k MySQL80

Nota: Docker debe estar en ejecución. La pila de pruebas utiliza los puertos 3357 (MySQL 5.7), 3380 (8.0) y 3384 (8.4) en 127.0.0.1.

Si los contenedores ya están en ejecución (por ejemplo, entre ejecuciones de depuración repetidas), el fixture de prueba los detecta y omite el ciclo de inicio/parada, útil para iteración rápida. Para iniciar manualmente:

docker compose -f tests/docker/docker-compose.test.yml up -d
uv run pytest -v   # reuses running containers, does not tear down

Integración Continua

Cada push a main y cada pull request activa .github/workflows/test.yml, que ejecuta la suite de pruebas unitarias y la matriz completa de integración MySQL 5.7 / 8.0 / 8.4 en runners alojados en GitHub.


(NOTA) Resumen de Datos de Prueba de Muestra

El sistema de generación de datos de prueba sigue el patrón del proyecto PostgreSQL MCP: utiliza un contenedor dedicado mysql-init-data que crea automáticamente bases de datos de prueba completas en el primer inicio.

🚀 Generación Automática de Datos de Prueba

El contenedor mysql-init-data (definido en docker-compose.yml) ejecuta automáticamente scripts/create-test-data.sh y scripts/create-test-data.sql en el primer inicio, generando datos de negocio realistas para las pruebas de herramientas MCP.

Base de datosPropósitoTablasEscala
test_ecommerceSistema de comercio electrónicocategories, products, customers, orders, order_items10 categorías, 500 productos, 100 clientes, 1000 pedidos, 2500 artículos de pedido
test_analyticsAnálisis y reportespage_views, sales_summary500 vistas de página, 30 resúmenes de ventas
test_inventoryGestión de almacénsuppliers, inventory_items, purchase_orders10 proveedores, 100 artículos, 50 órdenes de compra
test_hrGestión de RRHHdepartments, employees, payroll5 departamentos, 50 empleados, 150 registros de nómina

Total de registros: ~2,745 registros en todas las bases de datos de prueba

Usuarios de prueba creados: app_readonly, app_readwrite, analytics_user, backup_user

Gestión de permisos de usuario: El sistema crea automáticamente el MYSQL_USER especificado (desde .env) y otorga permisos completos solo en las 4 bases de datos de prueba, garantizando un control de acceso seguro.

Características para pruebas:

  • ✅ Relaciones de clave externa con integridad referencial adecuada
  • ✅ Varios motores de almacenamiento (optimización InnoDB)
  • ✅ Tipos de índice mixtos (usados/no usados para probar herramientas de análisis de índices)
  • ✅ Datos de series temporales para pruebas de análisis
  • ✅ Escenarios de negocio realistas en múltiples dominios
  • ✅ Entorno de prueba seguro con permisos de usuario aislados

📋 Patrón de Inicialización Estilo PostgreSQL

Similar al proyecto MCP-PostgreSQL-Ops, esta implementación de MySQL utiliza:

  • Contenedor de inicialización dedicado (mysql-init-data) para generación de datos única
  • Dependencias de verificación de salud que aseguran que MySQL esté listo antes de la creación de datos
  • Privilegios de root para la creación de bases de datos, luego delegación de permisos al usuario especificado
  • Registro y manejo de errores completo durante la inicialización

Matriz de Compatibilidad de Herramientas

Adaptación automática: Todas las herramientas funcionan de forma transparente en todas las versiones compatibles: ¡no se necesita configuración!

🟢 Herramientas Profesionales de MySQL (19 Herramientas Disponibles)

Nombre de la HerramientaVersiones de MySQLCaracterísticasFuente de Información
get_server_infoMySQL 5.7.9+ / 8.0+✅ Versión del servidor, configuración, variables de estadoSHOW VERSION, INFORMATION_SCHEMA
get_database_listMySQL 5.7.9+ / 8.0+✅ Tamaños de bases de datos, conjuntos de caracteres, collationsINFORMATION_SCHEMA.SCHEMATA, information_schema.tables
get_table_listMySQL 5.7.9+ / 8.0+✅ Información de tablas, motores de almacenamiento, conteos de filasINFORMATION_SCHEMA.TABLES
get_table_schema_infoMySQL 5.7.9+ / 8.0+✅ Columnas, índices, restricciones, claves externasINFORMATION_SCHEMA.COLUMNS, INFORMATION_SCHEMA.STATISTICS
get_database_overviewMySQL 5.7.9+ / 8.0+✅ Resumen de bases de datos, conteos de tablas, tamañosINFORMATION_SCHEMA.TABLES, estadísticas agregadas
get_user_listMySQL 5.7.9+ / 8.0+✅ Usuarios de MySQL, hosts, privilegios, estado de cuentasmysql.user, INFORMATION_SCHEMA.USER_PRIVILEGES
get_active_connectionsMySQL 5.7.9+ / 8.0+✅ Conexiones activas, detalles de conexión, lista de procesosperformance_schema.processlist
get_server_statusMySQL 5.7.9+ / 8.0+✅ Variables de estado del servidor, contadores de rendimientoSHOW STATUS, variables de estado del sistema
get_table_size_infoMySQL 5.7.9+ / 8.0+✅ Tamaños de tablas, tamaños de índices, proporciones datos/índiceINFORMATION_SCHEMA.TABLES (DATA_LENGTH, INDEX_LENGTH)
get_database_size_infoMySQL 5.7.9+ / 8.0+✅ Tamaños de bases de datos, análisis de uso de almacenamientoDatos agregados de INFORMATION_SCHEMA.TABLES
get_index_usage_statsMySQL 5.7.9+ / 8.0+✅ Uso de índices, cardinalidad, análisis de eficienciaINFORMATION_SCHEMA.STATISTICS, SHOW INDEX

🚀 Herramientas Mejoradas de Performance Schema (8 Herramientas Adicionales)

Nombre de la HerramientaVersiones de MySQLCaracterísticasFuente de Información
get_mysql_configMySQL 5.7.9+ / 8.0+✅ Variables y ajustes de configuración de MySQLSHOW VARIABLES, configuración del sistema
get_slow_queriesMySQL 5.7.9+ / 8.0+✅ Análisis de consultas lentas y perspectivas de rendimientoPerformance Schema, registro de consultas lentas
get_table_io_statsMySQL 5.7.9+ / 8.0+✅ Estadísticas de E/S de tablas y patrones de accesoMonitoreo de E/S de Performance Schema
get_lock_monitoringMySQL 5.7.9+ / 8.0+✅ Análisis de bloqueos y monitoreo de contenciónTablas de bloqueo de Performance Schema
get_all_databases_tablesMySQL 5.7.9+ / 8.0+✅ Resumen y análisis de tablas entre bases de datosConsultas INFORMATION_SCHEMA de múltiples bases de datos
get_all_databases_table_sizesMySQL 5.7.9+ / 8.0+✅ Análisis global de tamaños de tablas entre bases de datosEstadísticas de tamaño agregadas
get_connection_infoMySQL 5.7.9+ / 8.0+✅ Detalles de conexión e información de sesiónperformance_schema.processlist
get_current_database_infoMySQL 5.7.9+ / 8.0+✅ Contexto y detalles de la base de datos actualInformación de la base de datos activa

🚀 Mejoras Sensibles a la Versión

CaracterísticaMySQL 5.7.9+MySQL 8.0+Capacidades Mejoradas
Performance Schema✅ BásicoMejoradoMySQL 8.0+: Monitoreo avanzado de consultas, tablas mejoradas de Performance Schema
Information Schema✅ EstándarMejoradoMySQL 8.0+: Tablas de metadatos adicionales y estadísticas mejoradas
Información del Motor de Almacenamiento✅ Enfoque InnoDBMulti-MotorMySQL 8.0+: Estadísticas y monitoreo mejorados del motor de almacenamiento
Soporte JSON✅ BásicoAvanzadoMySQL 8.0+: Funciones JSON mejoradas y capacidades de indexación
Gestión de Usuarios✅ TradicionalBasado en RolesMySQL 8.0+: Control de acceso basado en roles y características de seguridad mejoradas

📋 Soporte de Versiones de MySQL: Requiere MySQL 5.7.9 o superior (se admiten 5.7.9, 8.0+, 8.4+). El mínimo está dictado por performance_schema.processlist, introducido en MySQL 5.7.9 y utilizado por get_active_connections, get_connection_info y get_lock_monitoring. La compatibilidad con MySQL 8.1+ y 8.2+ se agregará cuando alcancen el estado de versión estable.


Ejemplos de Uso

Integración con Claude Desktop

Método 1: MCP Local (transport="stdio")

{
  "mcpServers": {
    "mcp-mysql-ops": {
      "command": "uvx",
      "args": ["--python", "3.11", "mcp-mysql-ops"],
      "env": {
        "MYSQL_HOST": "127.0.0.1",
        "MYSQL_PORT": "13306",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "changeme!@34",
        "MYSQL_DATABASE": "test_ecommerce"
      }
    }
  }
}

Método 2: MCP Remoto (transport="streamable-http")

En el Host del Cliente MCP:

{
  "mcpServers": {
    "mcp-mysql-ops": {
      "type": "streamable-http",
      "url": "http://localhost:18004/mcp"
    }
  }
}

Con Autenticación de Token Bearer (Recomendado para producción):

{
  "mcpServers": {
    "mcp-mysql-ops": {
      "type": "streamable-http", 
      "url": "http://localhost:18004/mcp",
      "headers": {
        "Authorization": "Bearer your-secure-secret-key-here"
      }
    }
  }
}

"Mostrar capacidades del servidor MySQL e información de versión." Claude Desktop Integration

"Dibujar relaciones como un diagrama Mermaid" Claude Desktop Integration

(Opcional) Ejecutar con Código Fuente Local:

{
  "mcpServers": {
    "mcp-mysql-ops": {
      "command": "uv",
      "args": ["run", "python", "-m", "src.mcp_mysql_ops.mcp_main"],
      "env": {
        "PYTHONPATH": "/path/to/MCP-MySQL-Ops",
        "MYSQL_HOST": "127.0.0.1",
        "MYSQL_PORT": "13306",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "changeme!@34",
        "MYSQL_DATABASE": "test_ecommerce"
      }
    }
  }
}

Ejecutar MCP-Server como Standalone

/w Pypi y uvx (Recomendado)

# Stdio mode
uvx --python 3.11 mcp-mysql-ops \
  --type stdio

# HTTP mode
uvx --python 3.11 mcp-mysql-ops
  --type streamable-http \
  --host 127.0.0.1 \
  --port 8000 \
  --log-level DEBUG

(Opción) Configurar Múltiples Instancias de MySQL

{
  "mcpServers": {
    "MySQL-A": {
      "command": "uvx",
      "args": ["--python", "3.11", "mcp-mysql-ops"],
      "env": {
        "MYSQL_HOST": "a.foo.com",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "password",
        "MYSQL_DATABASE": "information_schema"
      }
    },
    "MySQL-B": {
      "command": "uvx",
      "args": ["--python", "3.11", "mcp-mysql-ops"],
      "env": {
        "MYSQL_HOST": "b.bar.com",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "password",
        "MYSQL_DATABASE": "information_schema"
      }
    }
  }
}

/w Código Fuente Local

# Method 1: Using installed console script (after pip install -e .)
mcp-mysql-ops --type stdio
mcp-mysql-ops --type streamable-http --host 127.0.0.1 --port 8000 --log-level DEBUG

# Method 2: Using module execution
PYTHONPATH=/path/to/MCP-MySQL-Ops/src
python -m mcp_mysql_ops --type stdio
python -m mcp_mysql_ops --type streamable-http --host 127.0.0.1 --port 8000 --log-level DEBUG

Variables de Entorno

VariableDescripciónPredeterminadoPredeterminado del Proyecto
PYTHONPATHRuta de búsqueda de módulos de Python para importaciones del servidor MCP-/app/src
MCP_LOG_LEVELNivel de verbosidad del registro del servidor (DEBUG, INFO, WARNING, ERROR)INFOINFO
FASTMCP_TYPEProtocolo de transporte MCP (stdio para CLI, streamable-http para web)stdiostreamable-http
FASTMCP_HOSTDirección de enlace del servidor HTTP (0.0.0.0 para todas las interfaces)127.0.0.10.0.0.0
FASTMCP_PORTPuerto del servidor HTTP para la comunicación MCP80008000
MYSQL_VERSIONVersión principal de MySQL para la selección de imagen Docker8.08.0
MYSQL_HOSTNombre de host o dirección IP del servidor MySQL127.0.0.1host.docker.internal
MYSQL_PORTNúmero de puerto del servidor MySQL330613306
MYSQL_USERNombre de usuario de conexión MySQL (permisos otorgados automáticamente en bases de datos de prueba)roottestuser
MYSQL_PASSWORDContraseña del usuario MySQL (admite caracteres especiales)changeme!@34testpass
MYSQL_DATABASENombre de base de datos predeterminado para conexionesinformation_schematestdb
MYSQL_ROOT_HOSTPatrón de acceso al host root de MySQL para contenedor Docker%%
MYSQL_ROOT_PASSWORDContraseña root de MySQL para la inicialización del contenedor Dockerchangeme!@34changeme!@34
DOCKER_EXTERNAL_PORT_OPENWEBUIMapeo de puerto del host para el contenedor Open WebUI80803004
DOCKER_EXTERNAL_PORT_MCP_SERVERMapeo de puerto del host para el contenedor del servidor MCP800018004
DOCKER_EXTERNAL_PORT_MCPO_PROXYMapeo de puerto del host para el contenedor proxy MCPO80008004

Nota: MYSQL_DATABASE sirve como base de datos objetivo predeterminada para operaciones cuando no se especifica una base de datos concreta. En entornos Docker, si se establece un nombre de base de datos personalizado, esta base de datos se creará automáticamente durante el inicio inicial de MySQL.

Gestión de Permisos de Usuario: Cuando se utiliza un MYSQL_USER que no es root, el proceso de inicialización automáticamente:

  • Crea el usuario especificado si no existe
  • Otorga permisos completos en las 4 bases de datos de prueba (test_ecommerce, test_analytics, test_inventory, test_hr)
  • Mantiene la seguridad restringiendo el acceso solo a las bases de datos necesarias
  • Habilita capacidades de monitoreo mediante acceso automático a information_schema/performance_schema

Requisitos Previos

Requisitos Mínimos

  • MySQL 5.7.9 o superior (se admiten 5.7.9+, 8.0+, 8.4+; probado con MySQL 8.0.37). Las versiones anteriores a 5.7.9 no son compatibles porque el servidor depende de performance_schema.processlist, introducido en 5.7.9.
  • Python 3.11+
  • Acceso de red al servidor MySQL
  • Permisos de lectura en las bases de datos del sistema (information_schema, performance_schema)

Configuración Recomendada de MySQL

⚠️ Configuraciones de Monitoreo de Rendimiento: Algunas herramientas MCP proporcionan funcionalidad mejorada con parámetros de configuración específicos de MySQL. Estos ajustes son opcionales pero recomendados para un monitoreo completo:

Herramientas mejoradas por estos ajustes:

  • get_server_status: Estadísticas más detalladas con Performance Schema habilitado
  • get_index_usage_stats: Mejorado con estadísticas de tablas de Performance Schema
  • get_connection_info: Seguimiento de conexiones mejorado con Performance Schema

Verificación: Después de aplicar cualquier cambio de configuración, verifique los ajustes:

SHOW VARIABLES LIKE 'performance_schema';
SHOW VARIABLES LIKE 'information_schema_stats_expiry';

+----------------------------------+-------+
| Variable_name                    | Value |
+----------------------------------+-------+
| performance_schema               | ON    |
| information_schema_stats_expiry  | 86400 |
+----------------------------------+-------+

Método 1: Configuración de my.cnf (Recomendado para MySQL Autogestionado)

Agregue lo siguiente a su my.cnf o my.ini:

[mysqld]
# Performance Schema (usually enabled by default in MySQL 8.0+)
performance_schema = ON

# Enhanced statistics collection
information_schema_stats_expiry = 0  # Real-time statistics (use 86400 for cached)

# Optional: Enhanced query logging (use carefully in production)
# slow_query_log = ON
# slow_query_log_file = /var/log/mysql/slow.log
# long_query_time = 2

Luego reinicie el servidor MySQL.

Método 2: Parámetros de Inicio de MySQL

Para el inicio de MySQL en Docker o desde línea de comandos:

# Docker example
docker run -d \
  -e MYSQL_ROOT_PASSWORD=mypassword \
  mysql:8.0 \
  --performance-schema=ON \
  --information-schema-stats-expiry=0

# Direct mysqld command
mysqld \
  --performance-schema=ON \
  --information-schema-stats-expiry=0

Método 3: Configuración Dinámica (MySQL 8.0+, AWS RDS, Azure, GCP)

Para servicios MySQL administrados donde no puede modificar my.cnf, use comandos SQL para cambiar los ajustes dinámicos:

-- Enable real-time statistics (requires SUPER privilege or SYSTEM_VARIABLES_ADMIN)
SET GLOBAL information_schema_stats_expiry = 0;

-- Verify Performance Schema status (usually enabled by default)
SHOW VARIABLES LIKE 'performance_schema';

-- Optional: Enable slow query log for enhanced monitoring
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;

Nota para pruebas a nivel de sesión:

-- Set for current session only (temporary)
SET SESSION information_schema_stats_expiry = 0;

Compatibilidad con RDS/Aurora MySQL

  • Este servidor es de solo lectura y funciona con roles estándar en AWS RDS MySQL y Aurora MySQL. Toda la funcionalidad principal está disponible a través del acceso estándar a Information Schema y Performance Schema.
  • Performance Schema está habilitado por defecto en instancias RDS/Aurora MySQL 8.0+.
  • Para capacidades de monitoreo mejoradas, considere la configuración del Parameter Group:
    -- Check Performance Schema status
    SHOW VARIABLES LIKE 'performance_schema';
    
    -- Verify Information Schema settings
    SHOW VARIABLES LIKE 'information_schema_stats_expiry';
    
    -- Recommended user permissions for monitoring
    GRANT SELECT ON *.* TO <monitoring_user>@'%';
    GRANT PROCESS ON *.* TO <monitoring_user>@'%';
    

Ejemplos de Consultas

🟢 Herramientas Principales de Monitoreo MySQL (Siempre Disponibles)

  • get_server_info

    • "Mostrar la versión del servidor MySQL y el estado de configuración."
    • "Verificar las variables del sistema y la configuración en tiempo de ejecución del servidor."
    • "Mostrar las capacidades del servidor MySQL y la información de versión."
    • 📋 Características: Versión del servidor, variables del sistema, estado de configuración, disponibilidad de funciones
    • 🔧 MySQL 5.7.9+/8.0+: Totalmente compatible, sin configuración adicional requerida
  • get_database_list

    • "Listar todas las bases de datos y sus tamaños."
    • "Mostrar la lista de bases de datos con conjuntos de caracteres e información de intercalación."
    • "Mostrar el uso de almacenamiento de bases de datos y el número de tablas."
    • 📋 Características: Tamaños de bases de datos, conjuntos de caracteres, intercalaciones, número de tablas, uso de almacenamiento
    • 🔧 MySQL 5.7.9+/8.0+: Utiliza Information Schema para información completa de bases de datos
  • get_table_list

    • "Listar todas las tablas en la base de datos test_ecommerce."
    • "Mostrar información de tablas con motores de almacenamiento y recuentos de filas."
    • "Mostrar fechas de creación de tablas y marcas de tiempo de actualización."
    • 📋 Características: Nombres de tablas, motores de almacenamiento, recuentos de filas, tamaños, tiempos de creación/actualización
    • ⚠️ Requerido: El parámetro database_name debe especificarse
    • 💡 Uso: Admite filtrado por patrones de nombre de tabla
  • get_table_schema_info

    • "Mostrar información detallada del esquema para la tabla customers en la base de datos test_ecommerce."
    • "Obtener detalles de columnas y restricciones para la tabla products en la base de datos test_ecommerce."
    • "Analizar la estructura de la tabla con índices y claves foráneas para la tabla orders en la base de datos test_ecommerce."
    • "Mostrar una visión general del esquema para todas las tablas en la base de datos test_inventory."
    • 📋 Características: Tipos de columnas, restricciones, índices, claves foráneas, metadatos de tablas
    • ⚠️ Requerido: El parámetro database_name debe especificarse
    • 💡 Uso: Deje table_name vacío para un análisis de esquema de toda la base de datos
  • get_database_overview

    • "Mostrar una visión general completa de la base de datos test_ecommerce."
    • "Obtener un resumen detallado de la estructura y estadísticas de la base de datos test_analytics."
    • "Analizar la visión general de la base de datos con recuentos de tablas y tamaños para la base de datos test_inventory."
    • "Mostrar un resumen de la estructura de la base de datos para test_hr."
    • 📋 Características: Visión general de la base de datos, estadísticas de tablas, resumen de almacenamiento, análisis de esquema
    • ⚠️ Requerido: El parámetro database_name debe especificarse
  • get_user_list

    • "Listar todos los usuarios de MySQL y sus privilegios."
    • "Mostrar cuentas de usuario con información de host y estado de cuenta."
    • "Mostrar un resumen de privilegios de usuario y detalles de autenticación."
    • 📋 Características: Cuentas de usuario, patrones de host, privilegios, estado de cuenta, información de autenticación
    • 🔧 MySQL 5.7.9+/8.0+: Información mejorada de gestión de usuarios en MySQL 8.0+
  • get_active_connections

    • "Mostrar todas las conexiones activas y sus detalles."
    • "Listar las conexiones actuales de la base de datos con información de usuario y host."
    • "Monitorear sesiones activas y sus operaciones actuales."
    • "Mostrar estadísticas de conexión e información de procesos."
    • 📋 Características: Conexiones activas, lista de procesos, detalles de conexión, información de sesión
    • 🔧 MySQL 5.7.9+/8.0+: Información de procesos mejorada con integración de Performance Schema
  • get_server_status

    • "Mostrar variables de estado del servidor MySQL y contadores de rendimiento."
    • "Mostrar métricas y estadísticas de rendimiento actuales del servidor."
    • "Monitorear el estado operativo del servidor e indicadores clave de rendimiento."
    • "Analizar métricas de salud del servidor y utilización de recursos."
    • 📋 Características: Variables de estado, contadores de rendimiento, estadísticas de conexión, métricas de recursos
    • 🔧 MySQL 5.7.9+/8.0+: Monitoreo integral del estado del servidor
  • get_table_size_info

    • "Mostrar análisis de tamaño de tablas e índices para la base de datos test_ecommerce."
    • "Encontrar las tablas más grandes por tamaño de datos e índices."
    • "Analizar la eficiencia de almacenamiento y la distribución de tamaños de tablas."
    • "Mostrar detalles de tamaño de tablas con proporciones de datos/índices."
    • 📋 Características: Tamaños de tablas, tamaños de índices, proporciones de datos/índices, análisis de eficiencia de almacenamiento
    • ⚠️ Requerido: El parámetro database_name para un análisis de tamaño preciso
  • get_database_size_info

    • "Mostrar análisis de capacidad de la base de datos y uso de almacenamiento."
    • "Encontrar las bases de datos más grandes por tamaño total."
    • "Mostrar estadísticas completas de tamaño de bases de datos."
    • "Analizar la distribución de almacenamiento entre bases de datos."
    • 📋 Características: Tamaños de bases de datos, recuentos de tablas, distribución de almacenamiento, análisis de capacidad
    • 🔧 MySQL 5.7.9+/8.0+: Cálculo preciso de tamaños usando Information Schema
  • get_index_usage_stats

    • "Analizar estadísticas de uso y eficiencia de índices."
    • "Mostrar información de cardinalidad y selectividad de índices."
    • "Encontrar índices potencialmente no utilizados o redundantes."
    • "Mostrar patrones de rendimiento y uso de índices."
    • 📋 Características: Estadísticas de índices, cardinalidad, selectividad, análisis de uso, recomendaciones de optimización
    • ⚠️ Requerido: El parámetro database_name para un análisis de índices específico
    • 💡 Mejorado con: Performance Schema habilitado para estadísticas más detalladas

🚀 Herramientas Mejoradas por Versión

  • get_server_info (¡Mejorado!)
    • "Mostrar la versión del servidor y las funciones avanzadas de MySQL 8.0."
    • "Verificar la compatibilidad del servidor y las mejoras disponibles."
    • "Mostrar capacidades y recomendaciones específicas de la versión de MySQL."
    • 📈 MySQL 8.0+: Soporte JSON mejorado, Performance Schema mejorado, soporte CTE, funciones de ventana
    • 📊 MySQL 5.7.9+: Funcionalidad principal con soporte JSON básico y Performance Schema

💡 Ejemplos de Consultas en Lenguaje Natural

Pruebe las herramientas con indicaciones realistas - nunca use nombres de funciones directamente:

  • ✅ "Muéstrame el estado actual del servidor y las métricas clave de rendimiento"
  • ❌ "Ejecutar get_server_status"

📊 Ejemplos de Monitoreo:

  • "¿Qué bases de datos existen y cuánto espacio usan?"
  • "Muéstrame todas las tablas en la base de datos ecommerce con sus tamaños"
  • "¿Qué tablas tienen más filas e índices más grandes?"
  • "Mostrar las conexiones actuales de la base de datos y su actividad"
  • "Analizar la estructura del esquema de la base de datos test_ecommerce"
  • "Muéstrame la configuración del servidor MySQL y el estado de rendimiento"
  • "Listar todos los usuarios y sus privilegios de base de datos"
  • "Encontrar tablas que podrían necesitar optimización de índices"

💡 Consejo Profesional: Todas las herramientas admiten operaciones de múltiples bases de datos usando el parámetro database_name. Esto permite a los usuarios root de MySQL analizar y monitorear múltiples bases de datos desde una sola instancia del servidor MCP.


Solución de Problemas

Problemas de Conexión

  1. Verifique el estado del servidor MySQL
  2. Verifique los parámetros de conexión en el archivo .env
  3. Asegure la conectividad de red
  4. Verifique los permisos de usuario y la autenticación

Problemas de Configuración

  1. Errores de "Acceso denegado": Verifique los privilegios de usuario

    SHOW GRANTS FOR 'username'@'host';
    

    Solución rápida para la configuración del usuario de monitoreo:

    -- Create monitoring user with necessary permissions
    CREATE USER 'monitoring'@'%' IDENTIFIED BY 'secure_password';
    GRANT SELECT ON *.* TO 'monitoring'@'%';
    GRANT PROCESS ON *.* TO 'monitoring'@'%';
    
  2. "La tabla no existe" para Performance Schema: Verifique el estado de Performance Schema

    SHOW VARIABLES LIKE 'performance_schema';  -- Should be 'ON'
    

    Nota: Performance Schema está habilitado por defecto en MySQL 8.0+ pero puede estar deshabilitado en algunas configuraciones.

  3. Información de base de datos faltante: Verifique el acceso a Information Schema

    SHOW VARIABLES LIKE 'information_schema_stats_expiry';
    SELECT COUNT(*) FROM information_schema.tables;
    

    Solución rápida para estadísticas en tiempo real:

    SET GLOBAL information_schema_stats_expiry = 0;
    
  4. Aplicar cambios de configuración:

    • Autogestionado: Agregue configuraciones a my.cnf y reinicie el servidor
    • Servicios gestionados: Use SET GLOBAL para variables dinámicas o Parameter Groups
    • Pruebas temporales: Use SET SESSION solo para la sesión actual

Problemas de Rendimiento

  1. Use parámetros limit para reducir el tamaño de los resultados
  2. Ejecute el monitoreo durante horas de baja demanda
  3. Verifique la carga de la base de datos antes de ejecutar análisis
  4. Considere configurar information_schema_stats_expiry para estadísticas en caché

Problemas de Compatibilidad de Versiones

Para más detalles, consulte la ## Matriz de Compatibilidad de Herramientas

  1. Ejecute primero la verificación de compatibilidad:

    # "Use get_server_info to check version and available features"
    
  2. Comprender la disponibilidad de funciones:

    • MySQL 8.0+: Todas las funciones disponibles con Performance Schema mejorado
    • MySQL 5.7.9+: Funcionalidad principal con soporte básico de Performance Schema
    • Versiones anteriores (< 5.7.9): No compatibles — performance_schema.processlist no está disponible
  3. Si las funciones parecen limitadas:

    • Verifique la versión de MySQL: SELECT VERSION();
    • Verifique Performance Schema: SHOW VARIABLES LIKE 'performance_schema';
    • Considere actualizar MySQL para capacidades de monitoreo mejoradas

Problemas Específicos de Docker

  1. Conflictos de puertos: El puerto MySQL predeterminado 3306 podría estar en uso

    • El proyecto usa el puerto 13306 por defecto para evitar conflictos
    • Verifique la disponibilidad del puerto: netstat -an | grep 13306
  2. Problemas de inicio del contenedor: Verifique los registros de Docker

    docker-compose logs mysql
    docker-compose logs mcp-server
    
  3. Persistencia de datos: Asegúrese de que los volúmenes montados funcionen

    docker volume ls
    docker volume inspect mcp-mysql-ops_mysql_data
    

🚀 Agregar Herramientas Personalizadas

Este servidor MCP está diseñado para una fácil extensibilidad. Siga estos 5 sencillos pasos para agregar sus propias herramientas personalizadas:

Guía Paso a Paso

1. Agregar Funciones Auxiliares (Opcional)

Agregue funciones de datos reutilizables a src/<package_name>/functions.py:

async def get_your_custom_data(target_resource: str = None) -> List[Dict[str, Any]]:
    """Your custom data retrieval function."""
    # Example implementation - adapt to your service
    data_source = await get_data_connection(target_resource)
    results = await fetch_data_from_source(
        source=data_source,
        filters=your_conditions,
        aggregations=["count", "sum", "avg"],
        sorting=["count DESC", "timestamp ASC"]
    )
    return results

2. Crear Su Herramienta MCP

Agregue su función de herramienta a src/<package_name>/mcp_main.py:

@mcp.tool()
async def get_your_custom_analysis(limit: int = 50, target_name: Optional[str] = None) -> str:
    """
    [Tool Purpose]: Brief description of what your tool does
    
    [Exact Functionality]:
    - Feature 1: Data aggregation and analysis
    - Feature 2: Resource monitoring and insights
    - Feature 3: Performance metrics and reporting
    
    [Required Use Cases]:
    - When user asks "your specific analysis request"
    - Your business-specific monitoring needs
    
    Args:
        limit: Maximum results (1-100)
        target_name: Target resource/service name
    
    Returns:
        Formatted analysis results
    """
    try:
        limit = max(1, min(limit, 100))  # Always validate input
        
        results = await get_your_custom_data(target_resource=target_name)
        
        if results:
            results = results[:limit]
        
        return format_table_data(results, f"Custom Analysis (Top {len(results)})")
        
    except Exception as e:
        logger.error(f"Failed to get custom analysis: {e}")
        return f"Error: {str(e)}"

3. Actualizar Importaciones (Si Es Necesario)

Agregue su función auxiliar a las importaciones en src/<package_name>/mcp_main.py:

from .functions import (
    # ...existing imports...
    get_your_custom_data,  # Add your new function
)

4. Actualizar la Plantilla de Indicaciones (Recomendado)

Agregue la descripción de su herramienta a src/<package_name>/prompt_template.md para un mejor reconocimiento de lenguaje natural:

### **Your Custom Analysis Tool**

### X. **get_your_custom_analysis**
**Purpose**: Brief description of what your tool does
**Usage**: "Show me your custom analysis" or "Get custom analysis for database_name"
**Features**: Data aggregation, resource monitoring, performance metrics
**Required**: `target_name` parameter for specific resource analysis

5. Probar Su Herramienta

# Local testing
./scripts/run-mcp-inspector-local.sh

# Or with Docker
docker-compose up -d
docker-compose logs -f mcp-server

# Test with natural language:
# "Show me your custom analysis"
# "Get custom analysis for target_name"

¡Eso es todo! Su herramienta personalizada está lista para usarse con consultas en lenguaje natural.


Desarrollo

Pruebas y Desarrollo

# Test with MCP Inspector
./scripts/run-mcp-inspector-local.sh

# Direct execution methods for debugging
# Method 1: Console script (after pip install -e .)
pip install -e .
mcp-mysql-ops --log-level DEBUG

# Method 2: Module execution
PYTHONPATH=src python -m mcp_mysql_ops --log-level DEBUG

# Test with different MySQL versions
# Modify MYSQL_HOST in .env to point to different MySQL instances

# Run tests (if you add any)
uv run pytest

Pruebas de Compatibilidad de Versiones

El servidor MCP se adapta automáticamente a las versiones de MySQL 5.7.9+ y 8.0+. Para probar entre versiones:

  1. Configure bases de datos de prueba: Diferentes versiones de MySQL (5.7, 8.0, 8.1+)
  2. Ejecute pruebas de compatibilidad: Apunte a cada versión y verifique el comportamiento de las herramientas
  3. Verifique la detección de funciones: Asegure la detección adecuada de versiones y la disponibilidad de funciones
  4. Verifique el rendimiento: Confirme el rendimiento óptimo en todas las versiones de MySQL

Notas de Seguridad

  • Todas las herramientas son de solo lectura - sin capacidades de modificación de datos
  • La información sensible (contraseñas) está enmascarada en las salidas
  • Sin ejecución directa de SQL - solo consultas predefinidas y seguras
  • Sigue el principio de privilegio mínimo
  • Compatible con las mejores prácticas de seguridad de MySQL

Contribuciones

🤝 ¿Tiene ideas? ¿Encontró errores? ¿Quiere agregar funciones interesantes?

Siempre estamos emocionados de dar la bienvenida a nuevos contribuyentes. Ya sea corregir un error tipográfico, agregar una nueva herramienta de monitoreo o mejorar la documentación - cada contribución hace que este proyecto sea mejor.

Formas de contribuir:

  • 🐛 Reportar problemas o errores
  • 💡 Sugerir nuevas funciones de monitoreo de MySQL
  • 📝 Mejorar la documentación
  • 🚀 Enviar solicitudes de extracción
  • ⭐ Marcar el repositorio con una estrella si le resulta útil

Consejo profesional: El código base está diseñado para ser muy amigable para agregar nuevas herramientas. Consulte las funciones existentes de @mcp.tool() en mcp_main.py.


Documentos Swagger de MCPO

[URL de Swagger de MCPO] http://localhost:8004/mysql-ops/docs

MCPO Swagger APIs


Licencia

Úselo, modifíquelo y distribúyalo libremente bajo la Licencia MIT.


⭐ Otros Proyectos

Otros servidores MCP del mismo autor: