MySQL SQL执行计划分析
新增了对STDIO模式和SSE模式的支持 新增了对多条SQL执行的支持,以";"分隔 新增了基于表注释查询数据库表名和字段的功能 新增了SQL执行计划分析功能 新增了中文字段转拼音的功能
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"mysql": {
"args": [
"--from",
"mysql_mcp_server_pro",
"mysql_mcp_server_pro",
"--mode",
"stdio"
],
"command": "uvx",
"env": {
"MYSQL_DATABASE": "a_llm",
"MYSQL_HOST": "192.168.x.xxx",
"MYSQL_PASSWORD": "root",
"MYSQL_PORT": "3306",
"MYSQL_ROLE": "admin",
"MYSQL_USER": "root"
}
},
"mysql_mcp_server_pro": {
"description": "",
"headers": {
"authorization": "bearer TOKEN_VALUE"
},
"isActive": true,
"name": "mysql_mcp_server_pro",
"type": "streamableHttp",
"url": "http://localhost:3000/mcp/"
}
}
}
该服务需要配置环境变量:MYSQL_DATABASE、MYSQL_HOST、MYSQL_PASSWORD、MYSQL_PORT、MYSQL_USER
可用工具 (5 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
execute_sql 1 个参数 需填 1 项
在MySQL5.6s数据库上执行SQL
必填参数:query
get_chinese_initials 1 个参数 需填 1 项
创建表结构时,将中文字段名转换为拼音首字母字段
必填参数:text
get_table_name 1 个参数 需填 1 项
根据表中文名搜索数据库中对应的表名
必填参数:text
get_table_desc 1 个参数 需填 1 项
根据表名搜索数据库中对应的表结构,支持多表查询
必填参数:text
get_table_index 1 个参数 需填 1 项
根据表名搜索数据库中对应的表索引,支持多表查询
必填参数:text
服务介绍
mcp_mysql_server
介绍
mcp_mysql_server_pro 不仅仅支持 MySQL 的 CRUD 操作,还包含了数据库异常分析能力,并且让开发者能够方便地通过自定义工具进行扩展。
- 支持 STDIO 和 SSE 两种模式
- 支持多条 SQL 执行,以 ";" 分隔
- 支持根据表注释查询数据库表名和字段
- 支持 SQL 执行计划分析
- 支持中文字段转拼音
- 支持表锁分析
- 支持数据库健康状态分析
- 支持三种角色权限控制:只读、写入者和管理员
"readonly": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN"], # 只读权限 "writer": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE"], # 读写权限 "admin": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", "DROP", "TRUNCATE"] # 管理员权限
工具列表
| 工具名称 | 描述 |
|---|---|
| execute_sql | SQL 执行工具,可以根据权限配置执行 ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", "DROP", "TRUNCATE"] 命令 |
| get_chinese_initials | 将中文字段名转换为拼音首字母 |
| get_db_health_running | 分析 MySQL 健康状态(连接状态、事务状态、运行状态、锁状态检测) |
| get_table_desc | 根据表名在数据库中搜索表结构,支持多表查询 |
| get_table_index | 根据表名在数据库中搜索表索引,支持多表查询 |
| get_table_lock | 检查当前 MySQL 服务器是否存在行级锁或表级锁 |
| get_table_name | 根据表注释和描述在数据库中搜索表名 |
使用说明
SSE 模式
- 使用 uv 启动服务
将以下内容添加到您的 mcp 客户端工具中,例如 cursor, cline 等。
mcp json 如下:
{
"mcpServers": {
"operateMysql": {
"name": "operateMysql",
"description": "",
"isActive": true,
"baseUrl": "http://localhost:9000/sse"
}
}
}
修改 .env 文件内容,更新数据库连接信息为您自己的数据库详情:
# 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, admin
启动命令:
# Download dependencies
uv sync
# Start
uv run server.py
STDIO 模式
由于原文档没有提供具体的 #0、#1 和 #2 部分的内容,这些部分被保持原样。请根据实际情况填写这些部分的具体内容。
将下面的内容添加到你的mcp客户端工具中,例如cursor、cline等。
mcp json如下所示:
{
"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
}
}
}
}
自定义工具扩展
-
在handles包中添加一个新的工具类,继承自BaseHandler,并实现get_tool_description和run_tool方法。
-
在__init__.py中导入新工具,使其在服务器中可用。
示例
- 创建新表并插入数据,提示格式如下:
# 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 creation
- 根据表注释查询数据,提示如下:
Query Zhang San's data from the user information table
- 分析慢SQL,提示如下:
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
- 分析SQL死锁问题,提示如下:
update t_admin_rms_zzjg set sfyx = '0' where xh = '1' is stuck, please analyze the cause
- 分析健康状态提示如下:
Check the current health status of MySQL