使用说明
mcp_mysql_server_pro
引言
mcp_mysql_server_pro不仅涉及mysql CRUD操作,还包括数据库异常分析功能,使开发人员易于使用自定义工具进行扩展。
- 支持所有模型上下文协议(MCP)传输模式(STDIO、SSE、流式Http)
- 支持OAuth2.0
- 支持多个SQL执行,用“;”分隔
- 支持根据表注释查询数据库表名和字段
- 支持SQL执行计划分析
- 支持中文字段到拼音的转换
- 支持表锁分析
- 支持数据库运行状况分析
- 支持三种角色的权限控制:只读、写入和管理员
"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 - 支持提示模板调用
刀具清单
| 工具名称 | 描述 |
|---|---|
| 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中构造工具的链式调用(不是常用的固定工具,您需要修改代码才能启用它,有关详细信息,请参阅此类) |
提示列表
| 提示名称 | 描述 |
|---|---|
| analysis mysql提示符 | 这是一个用于分析mysql相关问题的提示符 |
| 查询表数据提示 | 这是使用工具查询表数据的提示。如果描述为空,则将其初始化为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"
}
}
}
}
基于流式Http模式的本地开发
- 使用uv启动服务
将以下内容添加到您的mcp客户端工具中,如游标、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客户端工具中,如游标、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客户端工具中,如游标、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方法
-
将新工具导入 初始化.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