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
Arquitectura e Internals (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


⭐ Inicio Rápido (5 minutos)
Nota: El contenedor
mysqlincluido endocker-compose.ymlestá 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 contenedoresmysqlymysql-init-datapara evitar iniciar la base de datos de prueba integrada.
Diagrama de Flujo del Inicio Rápido/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:
- Características de Herramientas MCP (Swagger): http://localhost:8004/docs
- Documentación de la API del Proxy MCPO: http://localhost:8004/mysql-ops/docs
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 -dpara 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.
- Inicia sesión en OpenWebUI con una cuenta de administrador
- Ve a "Configuración" → "Herramientas" desde el menú superior.
- Ingresa la dirección de la herramienta
mysql-ops(por ejemplo,http://localhost:8004/mysql-ops) para conectar las herramientas MCP. - 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
- modo stdio (Predeterminado): Acceso solo local, no se necesita autenticación
- streamable-http + REMOTE_AUTH_ENABLE=false: Acceso remoto sin autenticación ⚠️ NO RECOMENDADO para producción
- 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 (stdioostreamable-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
| Variable | Descripción | Predeterminado | Predeterminado del Proyecto |
|---|---|---|---|
PYTHONPATH | Ruta de búsqueda de módulos de Python para importaciones del servidor MCP | - | /app/src |
MCP_LOG_LEVEL | Nivel de verbosidad del registro del servidor (DEBUG, INFO, WARNING, ERROR) | INFO | INFO |
FASTMCP_TYPE | Protocolo de transporte MCP (stdio para CLI, streamable-http para web) | stdio | streamable-http |
FASTMCP_HOST | Dirección de enlace del servidor HTTP (0.0.0.0 para todas las interfaces) | 127.0.0.1 | 0.0.0.0 |
FASTMCP_PORT | Puerto del servidor HTTP para comunicación MCP | 8000 | 8000 |
REMOTE_AUTH_ENABLE | Habilitar 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) | false | false |
REMOTE_SECRET_KEY | Clave 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_HOST | Nombre de host o dirección IP del servidor MySQL | 127.0.0.1 | host.docker.internal |
MYSQL_PORT | Número de puerto del servidor MySQL | 3306 | 13306 |
MYSQL_USER | Nombre de usuario para autenticación en el servidor MySQL | root | root |
MYSQL_PASSWORD | Contraseña para autenticación en el servidor MySQL | - | changeme!@34 |
MYSQL_DATABASE | Nombre de la base de datos MySQL de destino predeterminada | - | test_ecommerce |
DOCKER_EXTERNAL_PORT_OPENWEBUI | Mapeo de puerto del host para el contenedor Open WebUI | 8080 | 3004 |
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 esfalseREMOTE_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:
REMOTE_AUTH_ENABLEestá explícitamente establecido a un valor verdadero (true/1/yes/on)REMOTE_SECRET_KEYestá 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:
| Suite | Archivo | Requiere Docker |
|---|---|---|
| Pruebas unitarias (lógica de compatibilidad de versiones) | tests/test_version_compat.py | No |
| Pruebas de integración (todas las herramientas × MySQL 5.7 / 8.0 / 8.4) | tests/test_tools_integration.py | Sí |
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) y3384(8.4) en127.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 datos | Propósito | Tablas | Escala |
|---|---|---|---|
| test_ecommerce | Sistema de comercio electrónico | categories, products, customers, orders, order_items | 10 categorías, 500 productos, 100 clientes, 1000 pedidos, 2500 artículos de pedido |
| test_analytics | Análisis y reportes | page_views, sales_summary | 500 vistas de página, 30 resúmenes de ventas |
| test_inventory | Gestión de almacén | suppliers, inventory_items, purchase_orders | 10 proveedores, 100 artículos, 50 órdenes de compra |
| test_hr | Gestión de RRHH | departments, employees, payroll | 5 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 Herramienta | Versiones de MySQL | Características | Fuente de Información |
|---|---|---|---|
get_server_info | MySQL 5.7.9+ / 8.0+ | ✅ Versión del servidor, configuración, variables de estado | SHOW VERSION, INFORMATION_SCHEMA |
get_database_list | MySQL 5.7.9+ / 8.0+ | ✅ Tamaños de bases de datos, conjuntos de caracteres, collations | INFORMATION_SCHEMA.SCHEMATA, information_schema.tables |
get_table_list | MySQL 5.7.9+ / 8.0+ | ✅ Información de tablas, motores de almacenamiento, conteos de filas | INFORMATION_SCHEMA.TABLES |
get_table_schema_info | MySQL 5.7.9+ / 8.0+ | ✅ Columnas, índices, restricciones, claves externas | INFORMATION_SCHEMA.COLUMNS, INFORMATION_SCHEMA.STATISTICS |
get_database_overview | MySQL 5.7.9+ / 8.0+ | ✅ Resumen de bases de datos, conteos de tablas, tamaños | INFORMATION_SCHEMA.TABLES, estadísticas agregadas |
get_user_list | MySQL 5.7.9+ / 8.0+ | ✅ Usuarios de MySQL, hosts, privilegios, estado de cuentas | mysql.user, INFORMATION_SCHEMA.USER_PRIVILEGES |
get_active_connections | MySQL 5.7.9+ / 8.0+ | ✅ Conexiones activas, detalles de conexión, lista de procesos | performance_schema.processlist |
get_server_status | MySQL 5.7.9+ / 8.0+ | ✅ Variables de estado del servidor, contadores de rendimiento | SHOW STATUS, variables de estado del sistema |
get_table_size_info | MySQL 5.7.9+ / 8.0+ | ✅ Tamaños de tablas, tamaños de índices, proporciones datos/índice | INFORMATION_SCHEMA.TABLES (DATA_LENGTH, INDEX_LENGTH) |
get_database_size_info | MySQL 5.7.9+ / 8.0+ | ✅ Tamaños de bases de datos, análisis de uso de almacenamiento | Datos agregados de INFORMATION_SCHEMA.TABLES |
get_index_usage_stats | MySQL 5.7.9+ / 8.0+ | ✅ Uso de índices, cardinalidad, análisis de eficiencia | INFORMATION_SCHEMA.STATISTICS, SHOW INDEX |
🚀 Herramientas Mejoradas de Performance Schema (8 Herramientas Adicionales)
| Nombre de la Herramienta | Versiones de MySQL | Características | Fuente de Información |
|---|---|---|---|
get_mysql_config | MySQL 5.7.9+ / 8.0+ | ✅ Variables y ajustes de configuración de MySQL | SHOW VARIABLES, configuración del sistema |
get_slow_queries | MySQL 5.7.9+ / 8.0+ | ✅ Análisis de consultas lentas y perspectivas de rendimiento | Performance Schema, registro de consultas lentas |
get_table_io_stats | MySQL 5.7.9+ / 8.0+ | ✅ Estadísticas de E/S de tablas y patrones de acceso | Monitoreo de E/S de Performance Schema |
get_lock_monitoring | MySQL 5.7.9+ / 8.0+ | ✅ Análisis de bloqueos y monitoreo de contención | Tablas de bloqueo de Performance Schema |
get_all_databases_tables | MySQL 5.7.9+ / 8.0+ | ✅ Resumen y análisis de tablas entre bases de datos | Consultas INFORMATION_SCHEMA de múltiples bases de datos |
get_all_databases_table_sizes | MySQL 5.7.9+ / 8.0+ | ✅ Análisis global de tamaños de tablas entre bases de datos | Estadísticas de tamaño agregadas |
get_connection_info | MySQL 5.7.9+ / 8.0+ | ✅ Detalles de conexión e información de sesión | performance_schema.processlist |
get_current_database_info | MySQL 5.7.9+ / 8.0+ | ✅ Contexto y detalles de la base de datos actual | Información de la base de datos activa |
🚀 Mejoras Sensibles a la Versión
| Característica | MySQL 5.7.9+ | MySQL 8.0+ | Capacidades Mejoradas |
|---|---|---|---|
| Performance Schema | ✅ Básico | ✅ Mejorado | MySQL 8.0+: Monitoreo avanzado de consultas, tablas mejoradas de Performance Schema |
| Information Schema | ✅ Estándar | ✅ Mejorado | MySQL 8.0+: Tablas de metadatos adicionales y estadísticas mejoradas |
| Información del Motor de Almacenamiento | ✅ Enfoque InnoDB | ✅ Multi-Motor | MySQL 8.0+: Estadísticas y monitoreo mejorados del motor de almacenamiento |
| Soporte JSON | ✅ Básico | ✅ Avanzado | MySQL 8.0+: Funciones JSON mejoradas y capacidades de indexación |
| Gestión de Usuarios | ✅ Tradicional | ✅ Basado en Roles | MySQL 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 porget_active_connections,get_connection_infoyget_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."

"Dibujar relaciones como un diagrama Mermaid"

(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
| Variable | Descripción | Predeterminado | Predeterminado del Proyecto |
|---|---|---|---|
PYTHONPATH | Ruta de búsqueda de módulos de Python para importaciones del servidor MCP | - | /app/src |
MCP_LOG_LEVEL | Nivel de verbosidad del registro del servidor (DEBUG, INFO, WARNING, ERROR) | INFO | INFO |
FASTMCP_TYPE | Protocolo de transporte MCP (stdio para CLI, streamable-http para web) | stdio | streamable-http |
FASTMCP_HOST | Dirección de enlace del servidor HTTP (0.0.0.0 para todas las interfaces) | 127.0.0.1 | 0.0.0.0 |
FASTMCP_PORT | Puerto del servidor HTTP para la comunicación MCP | 8000 | 8000 |
MYSQL_VERSION | Versión principal de MySQL para la selección de imagen Docker | 8.0 | 8.0 |
MYSQL_HOST | Nombre de host o dirección IP del servidor MySQL | 127.0.0.1 | host.docker.internal |
MYSQL_PORT | Número de puerto del servidor MySQL | 3306 | 13306 |
MYSQL_USER | Nombre de usuario de conexión MySQL (permisos otorgados automáticamente en bases de datos de prueba) | root | testuser |
MYSQL_PASSWORD | Contraseña del usuario MySQL (admite caracteres especiales) | changeme!@34 | testpass |
MYSQL_DATABASE | Nombre de base de datos predeterminado para conexiones | information_schema | testdb |
MYSQL_ROOT_HOST | Patrón de acceso al host root de MySQL para contenedor Docker | % | % |
MYSQL_ROOT_PASSWORD | Contraseña root de MySQL para la inicialización del contenedor Docker | changeme!@34 | changeme!@34 |
DOCKER_EXTERNAL_PORT_OPENWEBUI | Mapeo de puerto del host para el contenedor Open WebUI | 8080 | 3004 |
DOCKER_EXTERNAL_PORT_MCP_SERVER | Mapeo de puerto del host para el contenedor del servidor MCP | 8000 | 18004 |
DOCKER_EXTERNAL_PORT_MCPO_PROXY | Mapeo de puerto del host para el contenedor proxy MCPO | 8000 | 8004 |
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_namedebe 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_namedebe especificarse - 💡 Uso: Deje
table_namevací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_namedebe 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_namepara 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_namepara 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
- Verifique el estado del servidor MySQL
- Verifique los parámetros de conexión en el archivo
.env - Asegure la conectividad de red
- Verifique los permisos de usuario y la autenticación
Problemas de Configuración
-
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'@'%'; -
"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.
-
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; -
Aplicar cambios de configuración:
- Autogestionado: Agregue configuraciones a
my.cnfy reinicie el servidor - Servicios gestionados: Use
SET GLOBALpara variables dinámicas o Parameter Groups - Pruebas temporales: Use
SET SESSIONsolo para la sesión actual
- Autogestionado: Agregue configuraciones a
Problemas de Rendimiento
- Use parámetros
limitpara reducir el tamaño de los resultados - Ejecute el monitoreo durante horas de baja demanda
- Verifique la carga de la base de datos antes de ejecutar análisis
- Considere configurar
information_schema_stats_expirypara estadísticas en caché
Problemas de Compatibilidad de Versiones
Para más detalles, consulte la ## Matriz de Compatibilidad de Herramientas
-
Ejecute primero la verificación de compatibilidad:
# "Use get_server_info to check version and available features" -
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.processlistno está disponible
-
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
- Verifique la versión de MySQL:
Problemas Específicos de Docker
-
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
-
Problemas de inicio del contenedor: Verifique los registros de Docker
docker-compose logs mysql docker-compose logs mcp-server -
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:
- Configure bases de datos de prueba: Diferentes versiones de MySQL (5.7, 8.0, 8.1+)
- Ejecute pruebas de compatibilidad: Apunte a cada versión y verifique el comportamiento de las herramientas
- Verifique la detección de funciones: Asegure la detección adecuada de versiones y la disponibilidad de funciones
- 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

Licencia
Úselo, modifíquelo y distribúyalo libremente bajo la Licencia MIT.
⭐ Otros Proyectos
Otros servidores MCP del mismo autor: