关于 mcp_mysql_server
mcp_mysql_server_pro 是一个 MCP 服务,用于安全地与 MySQL 数据库交互,除常规增删改查外还提供数据库异常分析能力。它支持 STDIO、SSE 和 Streamable HTTP 传输模式,并可通过自定义工具进行扩展。
主要功能
- 01支持 STDIO、SSE、Streamable HTTP 传输模式
- 02支持 OAuth2.0 认证
- 03readonly、writer、admin 三级权限控制
- 04SQL 执行计划分析与优化建议
- 05数据库健康状态与表锁分析
- 06按表注释查询表名和字段
适用场景
- 01为 AI 助手提供受权限控制的 MySQL 查询能力
- 02分析慢 SQL 的执行计划与索引情况
- 03排查死锁、表锁等数据库异常
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp_mysql_server_pro
简介
mcp_mysql_server_pro 不仅支持 MySQL 的 CRUD 操作,还具备数据库异常分析能力,并方便开发者通过自定义工具进行扩展。
- 支持所有 Model Context Protocol(MCP)传输模式(STDIO、SSE、Streamable Http)
- 支持 OAuth2.0
- 支持执行多条 SQL 语句,语句之间以“;”分隔
- 支持根据表注释查询数据库表名和字段
- 支持 SQL 执行计划分析
- 支持将中文字段转换为拼音
- 支持表锁分析
- 支持数据库健康状态分析
- 支持三种角色的权限控制:readonly、writer 和 admin
"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 | 根据表注释和描述搜索数据库中的表名 |
| get_db_health_index_usage | 获取当前连接的 mysql 数据库的索引使用情况,包括冗余索引、性能不佳的索引,以及查询耗时超过 30 秒的未使用索引排名前 5 的情况 |
| optimize_sql | 专业 SQL 性能优化工具,可根据 MySQL 执行计划、表结构信息、表数据量和表索引提供专家级优化建议。 |
| use_prompt_queryTableData | 使用内置提示词让模型在 MCP 中构建工具链式调用(这不是常用的固定工具,需要修改代码才能启用,详情请参阅此类) |
提示词列表
| 提示词名称 | 描述 |
|---|---|
| analyzing-mysql-prompt | 用于分析 MySQL 相关问题的提示词 |
| query-table-data-prompt | 使用工具查询表数据的提示词。如果描述为空,则会将其初始化为 MySQL 数据库查询助手 |
使用说明
安装和配置
- 安装软件包
pip install mysql_mcp_server_pro
- 配置环境变量
创建一个
.env文件,内容如下:
# 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
- 运行服务
# 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
- MCP 客户端
前往查看“使用 uv 启动服务” ^_^
注意:
.env文件应放在运行命令的目录中,或者使用 --envfile 参数指定路径- 也可以直接在环境中设置这些变量
- 确保数据库配置正确且可以连接
使用 uvx 运行并配置客户端
- 此方法可直接用于支持 MCP 的客户端,无需下载源代码。例如,通义千问插件、trae 编辑器等。
{
"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"
}
}
}
}
使用 Streamable Http 模式进行本地开发
- 使用 uv 启动服务
将以下内容添加到 MCP 客户端工具中,例如 cursor、cline 等。
MCP JSON 如下:
{
"mcpServers": {
"mysql_mcp_server_pro": {
"name": "mysql_mcp_server_pro",
"type": "streamableHttp",
"description": "",
"isActive": true,
"url": "http://localhost:3000/mcp/"
}
}
}
修改 .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=admin
启动命令:
# 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
使用 SSE 模式进行本地开发
- 使用 uv 启动服务
将以下内容添加到 MCP 客户端工具中,例如 cursor、cline 等。
MCP JSON 如下:
{
"mcpServers": {
"mysql_mcp_server_pro": {
"name": "mysql_mcp_server_pro",
"description": "",
"isActive": true,
"url": "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=admin
启动命令:
# 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
使用 STDIO 模式进行本地开发
将以下内容添加到 MCP 客户端工具中,例如 cursor、cline 等。
MCP JSON 如下:
{
"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"
}
}
}
}
自定义工具扩展
-
在 handles 包中添加一个新的工具类,继承 BaseHandler,并实现 get_tool_description 和 run_tool 方法
-
在 init.py 中导入新工具,使其可在服务中使用
OAuth2.0 身份验证
- 启动身份验证服务。默认情况下,它使用内置的 OAuth 2.0 密码模式身份验证。你可以在 env 文件中修改身份验证服务地址。
uv run -m mysql_mcp_server_pro.server --oauth true
-
访问身份验证服务:http://localhost:3000/login。默认用户名和密码在 env 文件中配置。
-
复制令牌并将其添加到请求标头中,例如:
{
"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"
}
}
}
}
示例
- 创建新表并插入数据,提示词格式如下:
# 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
- 根据表注释查询数据,提示词如下:
Search for data with Department name 'Executive Office' in Department organizational structure 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
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
