MySQL Server Pro
Un servidor MySQL con operaciones CRUD, análisis de anomalías en bases de datos y soporte para SSE y STDIO.
Documentación
mcp_mysql_server_pro
Introducción
mcp_mysql_server_pro no solo se trata de operaciones CRUD de MySQL, sino que también incluye capacidades de análisis de anomalías en bases de datos y facilita a los desarrolladores la extensión con herramientas personalizadas.
- Soporta todos los modos de transferencia del Model Context Protocol (MCP) (STDIO, SSE, Streamable Http)
- Soporta OAuth2.0
- Soporta la ejecución de múltiples sentencias SQL, separadas por ";"
- Soporta la consulta de nombres de tablas y campos basados en comentarios de tablas
- Soporta el análisis de planes de ejecución SQL
- Soporta la conversión de campos chinos a pinyin
- Soporta el análisis de bloqueos de tablas
- Soporta el análisis del estado de salud de la base de datos
- Soporta control de permisos con tres roles: solo lectura, escritor y administrador
"readonly": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN"], # Read-only permissions "writer": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE"], # Read-write permissions "admin": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", "DROP", "TRUNCATE"] # Administrator permissions - Soporta la invocación de plantillas de prompts
Lista de Herramientas
| Nombre de Herramienta | Descripción |
|---|---|
| execute_sql | Herramienta de ejecución SQL que puede ejecutar comandos ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", "DROP", "TRUNCATE"] según la configuración de permisos |
| get_chinese_initials | Convierte nombres de campos chinos a iniciales en pinyin |
| get_db_health_running | Analiza el estado de salud de MySQL (estado de conexión, estado de transacciones, estado de ejecución, detección de estado de bloqueos) |
| get_table_desc | Busca estructuras de tablas en la base de datos según nombres de tablas, soporta consultas de múltiples tablas |
| get_table_index | Busca índices de tablas en la base de datos según nombres de tablas, soporta consultas de múltiples tablas |
| get_table_lock | Verifica si hay bloqueos a nivel de fila o bloqueos a nivel de tabla en el servidor MySQL actual |
| get_table_name | Busca nombres de tablas en la base de datos según comentarios y descripciones de tablas |
| get_db_health_index_usage | Obtiene el uso de índices de la base de datos MySQL actualmente conectada, incluyendo situaciones de índices redundantes, situaciones de índices con bajo rendimiento y las 5 principales situaciones de índices no utilizados con tiempos de consulta superiores a 30 segundos |
| optimize_sql | Herramienta profesional de optimización de rendimiento SQL, que proporciona sugerencias de optimización expertas basadas en planes de ejecución de MySQL, información de estructura de tablas, volumen de datos de tablas e índices de tablas. |
| use_prompt_queryTableData | Utiliza prompts integrados para que el modelo construya una llamada en cadena de herramientas en mcp (no es una herramienta fija de uso común, necesitas modificar el código para habilitarla, consulta esta clase para más detalles) |
Lista de Prompts
| Nombre de Prompt | Descripción |
|---|---|
| analyzing-mysql-prompt | Este es un prompt para analizar problemas relacionados con MySQL |
| query-table-data-prompt | Este es un prompt para consultar datos de tablas usando herramientas. Si la descripción está vacía, se inicializará como un asistente de consulta de bases de datos MySQL |
Instrucciones de Uso
Instalación y Configuración
- Instalar el Paquete
pip install mysql_mcp_server_pro
- Configurar Variables de Entorno
Crea un archivo
.envcon el siguiente contenido:
# MySQL Database Configuration
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database
# Optional, default is 'readonly'. Available values: readonly, writer, admin
MYSQL_ROLE=readonly
- Ejecutar el Servicio
# SSE mode
mysql_mcp_server_pro --mode sse --envfile /path/to/.env
## Streamable Http mode (default)
mysql_mcp_server_pro --envfile /path/to/.env
# Streamable Http oauth Authentication
mysql_mcp_server_pro --oauth true
- Cliente mcp
ve a ver "Usa uv para iniciar el servicio" ^_^
Nota:
- El archivo
.envdebe colocarse en el directorio donde ejecutas el comando o usar el parámetro --envfile para especificar la ruta - También puedes establecer estas variables directamente en tu entorno
- Asegúrate de que la configuración de la base de datos sea correcta y pueda conectarse
Ejecutar con uvx, Configuración del Cliente
- Este método se puede usar directamente en clientes compatibles con MCP, sin necesidad de descargar el código fuente. Por ejemplo, el plugin Tongyi Qianwen, el editor trae, etc.
{
"mcpServers": {
"mysql": {
"command": "uvx",
"args": [
"--from",
"mysql_mcp_server_pro",
"mysql_mcp_server_pro",
"--mode",
"stdio"
],
"env": {
"MYSQL_HOST": "192.168.x.xxx",
"MYSQL_PORT": "3306",
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "root",
"MYSQL_DATABASE": "a_llm",
"MYSQL_ROLE": "admin"
}
}
}
}
Desarrollo Local con modo Streamable Http
- Usa uv para iniciar el servicio
Agrega el siguiente contenido a tus herramientas de cliente mcp, como cursor, cline, etc.
El json de mcp es el siguiente:
{
"mcpServers": {
"mysql_mcp_server_pro": {
"name": "mysql_mcp_server_pro",
"type": "streamableHttp",
"description": "",
"isActive": true,
"url": "http://localhost:3000/mcp/"
}
}
}
Modifica el contenido del archivo .env para actualizar la información de conexión de la base de datos con los detalles de tu base de datos:
# MySQL Database Configuration
MYSQL_HOST=192.168.xxx.xxx
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_DATABASE=a_llm
MYSQL_ROLE=admin
Comandos de inicio:
# Download dependencies
uv sync
# Start
uv run -m mysql_mcp_server_pro.server
# Custom env file location
uv run -m mysql_mcp_server_pro.server --envfile /path/to/.env
# oauth Authentication
uv run -m mysql_mcp_server_pro.server --oauth true
Desarrollo Local con modo SSE
- Usa uv para iniciar el servicio
Agrega el siguiente contenido a tus herramientas de cliente mcp, como cursor, cline, etc.
El json de mcp es el siguiente:
{
"mcpServers": {
"mysql_mcp_server_pro": {
"name": "mysql_mcp_server_pro",
"description": "",
"isActive": true,
"url": "http://localhost:9000/sse"
}
}
}
Modifica el contenido del archivo .env para actualizar la información de conexión de la base de datos con los detalles de tu base de datos:
# MySQL Database Configuration
MYSQL_HOST=192.168.xxx.xxx
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_DATABASE=a_llm
MYSQL_ROLE=admin
Comandos de inicio:
# Download dependencies
uv sync
# Start
uv run -m mysql_mcp_server_pro.server --mode sse
# Custom env file location
uv run -m mysql_mcp_server_pro.server --mode sse --envfile /path/to/.env
Desarrollo Local con modo STDIO
Agrega el siguiente contenido a tus herramientas de cliente mcp, como cursor, cline, etc.
El json de mcp es el siguiente:
{
"mcpServers": {
"operateMysql": {
"isActive": true,
"name": "operateMysql",
"command": "uv",
"args": [
"--directory",
"/Volumes/mysql_mcp_server_pro/src/mysql_mcp_server_pro", # Replace this with your project path
"run",
"-m",
"mysql_mcp_server_pro.server",
"--mode",
"stdio"
],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "123456",
"MYSQL_DATABASE": "a_llm",
"MYSQL_ROLE": "admin"
}
}
}
}
Extensiones de Herramientas Personalizadas
-
Agrega una nueva clase de herramienta en el paquete handles, hereda de BaseHandler, e implementa los métodos get_tool_description y run_tool
-
Importa la nueva herramienta en init.py para que esté disponible en el servidor
Autenticación OAuth2.0
- Inicia el servicio de autenticación. Por defecto, utiliza la autenticación integrada de modo contraseña OAuth 2.0. Puedes modificar la dirección de tu propio servicio de autenticación en el archivo env.
uv run -m mysql_mcp_server_pro.server --oauth true
-
Visita el servicio de autenticación en http://localhost:3000/login. El nombre de usuario y la contraseña predeterminados están configurados en el archivo env.
-
Copia el token y agrégalo a los encabezados de la solicitud, por ejemplo:
{
"mcpServers": {
"mysql_mcp_server_pro": {
"name": "mysql_mcp_server_pro",
"type": "streamableHttp",
"description": "",
"isActive": true,
"url": "http://localhost:3000/mcp/",
"headers": {
"authorization": "bearer TOKEN_VALUE"
}
}
}
}
Ejemplos
- Crear una nueva tabla e insertar datos, el formato del prompt es el siguiente:
# Task
Create an organizational structure table with the following structure: department name, department number, parent department, is valid.
# Requirements
- Table name: department
- Common fields need indexes
- Each field needs comments, table needs comment
- Generate 5 real data records after creation
- Consultar datos basados en comentarios de tablas, el prompt es el siguiente:
Search for data with Department name 'Executive Office' in Department organizational structure table
- Analizar SQL lento, el prompt es el siguiente:
select * from t_jcsjzx_hjkq_cd_xsz_sk xsz
left join t_jcsjzx_hjkq_jcd jcd on jcd.cddm = xsz.cddm
Based on current index situation, review execution plan and provide optimization suggestions in markdown format, including table index status, execution details, and optimization recommendations
- Analizar problemas de deadlock en SQL, el prompt es el siguiente:
update t_admin_rms_zzjg set sfyx = '0' where xh = '1' is stuck, please analyze the cause
- Analizar el estado de salud, el prompt es el siguiente:
Check the current health status of MySQL
