servidor mcp_mysql
Introducción
mcp_mysql_server_pro no solo trata sobre operaciones CRUD de MySQL, sino que también incluye capacidades de análisis de anomalías de bases de datos y permite que los desarrolladores puedan ampliarlas con herramientas personalizadas.
Admite los modos STDIO y SSE
Admite ejecución múltiple de SQL, separada por ";"
Admite la consulta de nombres y campos de tablas de bases de datos en función de los comentarios de las tablas.
Admite el análisis del plan de ejecución de SQL
Admite la conversión de campos chinos a pinyin
Admite análisis de bloqueo de tabla
Admite el análisis del estado de salud de la base de datos
Admite 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 permissionsAdmite la invocación de plantillas de solicitud
Related MCP server: SQL Server Express MCP Server
Lista de herramientas
Nombre de la herramienta | Descripción |
ejecutar_sql | Herramienta de ejecución de SQL que puede ejecutar comandos ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", "DROP", "TRUNCATE"] según la configuración de permisos |
obtener_iniciales_chinas | Convertir nombres de campos chinos a iniciales pinyin |
obtener_salud_de_la_base_de_datos_en_ejecución | Analizar el estado de salud de MySQL (estado de conexión, estado de transacción, estado de ejecución, detección de estado de bloqueo) |
obtener_desc_tabla | Busque estructuras de tablas en la base de datos según los nombres de las tablas, admitiendo consultas de múltiples tablas |
obtener_índice_de_tabla | Busque índices de tablas en la base de datos según los nombres de las tablas, admitiendo consultas de múltiples tablas |
obtener_bloqueo_de_tabla | Comprueba si hay bloqueos a nivel de fila o bloqueos a nivel de tabla en el servidor MySQL actual |
obtener_nombre_de_tabla | Busque nombres de tablas en la base de datos basándose en comentarios y descripciones de las tablas |
obtener_uso_del_índice_de_salud_de_la_base_de_datos | Obtenga el uso del índice de la base de datos MySQL actualmente conectada, incluidas las situaciones de índice redundantes, las situaciones de índice de bajo rendimiento y las 5 principales situaciones de índice sin uso con tiempos de consulta superiores a 30 segundos |
Lista de indicaciones
Nombre del aviso | Descripción |
analizando-el-prompt-de-mysql | Este es un mensaje para analizar problemas relacionados con MySQL. |
solicitud de datos de la tabla de consulta | Este es un mensaje para consultar datos de tablas mediante herramientas. Si la descripción está vacía, se inicializará como un asistente de consulta de bases de datos MySQL. |
Instrucciones de uso
Modo SSE
Utilice uv para iniciar el servicio
Agregue el siguiente contenido a sus herramientas de cliente mcp, como cursor, cline, etc.
mcp json de la siguiente manera:
{
"mcpServers": {
"operateMysql": {
"name": "operateMysql",
"description": "",
"isActive": true,
"baseUrl": "http://localhost:9000/sse"
}
}
}Modifique el contenido del archivo .env para actualizar la información de conexión de la base de datos con los detalles de su 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=readonly # Optional, default is 'readonly'. Available values: readonly, writer, adminComandos de inicio:
# Download dependencies
uv sync
# Start
uv run server.pyModo STDIO
Agregue el siguiente contenido a sus herramientas de cliente mcp, como cursor, cline, etc.
mcp json de la siguiente manera:
{
"mcpServers": {
"operateMysql": {
"isActive": true,
"name": "operateMysql",
"command": "uv",
"args": [
"--directory",
"G:\\python\\mysql_mcp\\src", # Replace this with your project path
"run",
"server.py",
"--stdio"
],
"env": {
"MYSQL_HOST": "192.168.xxx.xxx",
"MYSQL_PORT": "3306",
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "root",
"MYSQL_DATABASE": "a_llm",
"MYSQL_ROLE": "readonly" # Optional, default is 'readonly'. Available values: readonly, writer, admin
}
}
}
} Extensiones de herramientas personalizadas
Agregue una nueva clase de herramienta en el paquete handles, herede de BaseHandler e implemente los métodos get_tool_description y run_tool
Importe la nueva herramienta en init .py para que esté disponible en el servidor
Ejemplos
Cree una nueva tabla e inserte datos, con el siguiente formato:
# Task
Create an organizational structure table with the following structure: department name, department number, parent department, is valid.
# Requirements
- Table name: t_admin_rms_zzjg
- Field requirements: string type uses 'varchar(255)', integer type uses 'int', float type uses 'float', date and time type uses 'datetime', boolean type uses 'boolean', text type uses 'text', large text type uses 'longtext', large integer type uses 'bigint', large float type uses 'double'
- Table header needs to include primary key field, serial number XH varchar(255)
- Table must include these fixed fields at the end: creator-CJR varchar(50), creation time-CJSJ datetime, modifier-XGR varchar(50), modification time-XGSJ datetime
- Field naming should use tool return content
- Common fields need indexes
- Each field needs comments, table needs comment
- Generate 5 real data records after creationConsultar datos en función de los comentarios de la tabla, con el siguiente mensaje:
Query Zhang San's data from the user information tableAnalice SQL lento, solicite lo 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 recommendationsAnalice los problemas de bloqueo de SQL, solicite lo siguiente:
update t_admin_rms_zzjg set sfyx = '0' where xh = '1' is stuck, please analyze the causeAnalice el mensaje de estado de salud de la siguiente manera
Check the current health status of MySQLAppeared in Searches
- Developing and redeveloping web frontend and Python backend projects, including frontend-backend integration and debugging
- Using Laravel Helper Functions and Resolving MySQL Table Query Errors
- A platform for managing code repositories and DevOps workflows
- Frontend Development Tool for Detecting Errors
- Searching for Reddit discussions about server-sent events (SSE)