MySQL性能调优MCP
](https://pypi.org/project/mysqltuner-mcp/) ](https://pypi.org/project/mysqltuner-mcp/)  ](https://pypi.org/project/mysqltuner-mcp/) ](https://hub.docker.com/r/dog830228/mysqltuner_mcp)
用于MySQL性能调优和分析的模型上下文协议(MCP)服务器。
概述
mysqltuner_mcp 通过模型上下文协议提供人工智能驱动的MySQL数据库性能分析。它提供了查询优化、索引推荐、健康监测等工具
特性
性能分析
- 慢速查询检测:从performance_schema中识别慢速查询
- 查询分析:获取详细的解释计划和建议
- 表统计:分析表大小、行数和碎片
- 报表分析:分析临时表、排序和完整扫描的SQL语句
指标优化
- 索引建议:基于查询模式的人工智能建议
- 未使用的索引查找器:识别从不读取的索引
- 重复检测:查找冗余和重叠的索引
- 索引统计:基数、选择性和使用指标
健康监测
- 健康检查:带评分的综合数据库健康评估
- 活动查询:实时查询监控
- 等待事件分析:识别I/O并锁定瓶颈
- 配置审查:设置分析和建议
存储引擎分析
- 发动机统计:分析存储引擎的使用和分布
- 碎片检测:使用OPTIMIZE建议查找碎片表
- 自动增量分析:检测接近溢出限制的列
InnoDB分析
- InnoDB状态:分析SHOW ENGINE INNODB状态
- 缓冲池分析:按模式和表详细说明缓冲池使用情况
- 交易分析:监视事务、锁等待和死锁
内存分析
- 内存计算:计算每个线程和全局缓冲区的使用情况
- 按主机/用户划分的内存:按连接源细分内存使用情况
- 表缓存分析:分析表打开缓存效率
复制监控
- 主/从状态:监视复制运行状况和延迟
- 加莱拉星团:MariaDB/Percona的完整Galera集群状态
- 组复制:MySQL组复制监控
证券分析
- 安全审计:检查匿名用户、弱密码、危险权限
- 用户权限:分析各级用户权限
- 审计日志:检查审核日志记录配置
资源和提示
- 内置最佳实践文档
- 常见调优任务的预配置提示
- 指数优化指南
- 配置优化指南
安装
来源
git clone https://github.com/yourusername/mysqltuner_mcp.git
cd mysqltuner_mcp
pip install -e .使用pip(发布时)
pip install mysqltuner_mcp配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
MYSQL_URI | MySQL连接URI(必需) | - |
MYSQL_POOL_SIZE | 连接池大小 | 5 |
MYSQL_SSL | 启用SSL/TLS连接 | false |
MYSQL_SSL_CA | CA证书文件的路径 | - |
MYSQL_SSL_CERT | 客户端证书文件的路径 | - |
MYSQL_SSL_KEY | 客户端私钥文件的路径 | - |
MYSQL_SSL_VERIFY_CERT | 验证服务器证书 | true |
MYSQL_SSL_VERIFY_IDENTITY | 验证服务器主机名是否与证书匹配 | false |
连接URI格式
环境变量
export MYSQL_URI="mysql://user:password@host:3306/database"
export MYSQL_SSL=true
export MYSQL_SSL_CA="/path/to/ca.pem" # Optional: CA certificate for verification连接URI查询参数
export MYSQL_URI="mysql://user:password@host:3306/database?ssl=true&ssl_ca=/path/to/ca.pem"用法
运行服务器
服务器支持三种传输模式: 标准 (默认), 上海证券交易所,以及 可流式传输http.
# As a module
python -m mysqltuner_mcp
# Using the entry point
mysqltuner-mcp
# Explicitly specifying stdio mode
python -m mysqltuner_mcp --mode stdioSSE模式(服务器发送事件)
使用服务器发送事件的HTTP传输,适用于基于web的MCP客户端:
# Start SSE server on default port 8080
python -m mysqltuner_mcp --mode sse
# Specify custom host and port
python -m mysqltuner_mcp --mode sse --host 127.0.0.1 --port 3000
# Enable debug mode
python -m mysqltuner_mcp --mode sse --debugSSE端点:
- `http://:
/sse` -SSE连接端点
- `http://:
/messages/` -消息发布端点
流式HTTP模式
具有会话管理的现代HTTP传输:
# Start streamable HTTP server (stateful, with session tracking)
python -m mysqltuner_mcp --mode streamable-http
# Start in stateless mode (fresh transport per request)
python -m mysqltuner_mcp --mode streamable-http --stateless
# Specify custom host and port
python -m mysqltuner_mcp --mode streamable-http --host 127.0.0.1 --port 3000可流式传输HTTP端点:
- `http://:
/mcp` -所有MCP通信的单一端点
命令行选项
| 选项 | 描述 | 默认值 |
|---|---|---|
--mode | 服务器模式: stdio, sse,或 streamable-http | stdio |
--host | 要绑定的主机(仅限HTTP模式) | 0.0.0.0 |
--port | 监听端口(仅限HTTP模式) | 8080 或 PORT 有人是。 |
--stateless | 在无状态模式下运行(仅限可流式传输的http) | false |
--debug | 启用调试日志记录 | false |
MCP客户端配置
添加到您的MCP客户端配置中(例如,Claude Desktop):
{
"mcpServers": {
"mysqltuner_mcp": {
"command": "python",
"args": ["-m", "mysqltuner_mcp"],
"env": {
"MYSQL_URI": "mysql://root:your_password@localhost:3306/your_database"
}
}
}
}启用SSL/TLS
{
"mcpServers": {
"mysqltuner_mcp": {
"command": "python",
"args": ["-m", "mysqltuner_mcp"],
"env": {
"MYSQL_URI": "mysql://root:your_password@localhost:3306/your_database",
"MYSQL_SSL": "true",
"MYSQL_SSL_CA": "/path/to/ca.pem"
}
}
}
}可用工具
性能工具
| 工具 | 说明 |
|---|---|
get_slow_queries | 使用详细统计信息从performance_schema检索慢速查询 |
analyze_query | 获取带有优化建议的查询的解释计划和分析 |
get_table_stats | 获取表统计信息,包括大小、行数、碎片和索引 |
索引工具
| 工具 | 说明 |
|---|---|
get_index_recommendations | 基于performance_schema查询模式的AI索引建议 |
find_unused_indexes | 使用DROP语句查找未使用、重复和冗余的索引 |
get_index_stats | 详细的索引统计信息,包括基数、选择性和使用度量 |
健康工具
| 工具 | 说明 |
|---|---|
check_database_health | 带评分的全面健康检查(连接、缓冲池、查询等) |
get_active_queries | 监控当前正在运行的查询,并识别长时间运行/被阻止的查询 |
review_settings | 使用最佳实践建议分析MySQL配置设置 |
analyze_wait_events | 识别等待事件瓶颈(I/O、锁、缓冲区、日志等待) |
存储引擎工具
| 工具 | 说明 |
|---|---|
analyze_storage_engines | 分析存储引擎的使用情况、统计数据和建议 |
get_fragmented_tables | 查找具有明显碎片和浪费空间的表 |
analyze_auto_increment | 检查自动递增列是否存在潜在的溢出问题 |
InnoDB工具
| 工具 | 说明 |
|---|---|
get_innodb_status | 解析和分析SHOW ENGINE INNODB STATUS输出 |
analyze_buffer_pool | 按模式和表对InnoDB缓冲池进行详细分析 |
analyze_innodb_transactions | 分析InnoDB事务、锁等待和死锁 |
内存工具
| 工具 | 说明 |
|---|---|
calculate_memory_usage | 计算MySQL内存使用情况(每个线程和全局缓冲区) |
get_memory_by_host | 按主机、用户或事件获取内存使用情况明细 |
get_table_memory_usage | 按表分析表缓存和InnoDB缓冲池 |
复制工具
| 工具 | 说明 |
|---|---|
get_replication_status | 获取主/从复制状态和运行状况 |
get_galera_status | 获取Galera集群状态(MariaDB/Percona XtraDB集群) |
get_group_replication_status | 获取MySQL组复制状态 |
安全工具
| 工具 | 说明 |
|---|---|
analyze_security | 全面的安全分析(用户、密码、SSL、权限) |
analyze_user_privileges | 分析特定用户或所有用户的权限 |
check_audit_log | 检查审核日志配置和状态 |
报表分析工具
| 工具 | 说明 |
|---|---|
analyze_statements | 从performance_schema进行全面的SQL语句分析 |
get_statements_with_temp_tables | 查找创建临时表(内存和磁盘)的语句 |
get_statements_with_sorting | 查找具有排序操作和文件排序的语句 |
get_statements_with_full_scans | 查找执行全表扫描的语句 |
get_statements_with_errors | 查找产生错误或警告的语句 |
可用提示
| 提示 | 描述 |
|---|---|
optimize_slow_query | 分析和优化慢速查询 |
health_check | 进行全面的健康评估 |
index_review | 查看数据库的索引 |
performance_audit | 全面绩效审计 |
需求
- Python 3.10+
- MySQL 5.7+或MySQL 8.0+
performance_schema已启用(用于完整功能)
MySQL权限
MySQL用户需要以下权限:
GRANT SELECT ON performance_schema.* TO 'your_user'@'%';
GRANT SELECT ON information_schema.* TO 'your_user'@'%';
GRANT PROCESS ON *.* TO 'your_user'@'%';
-- For EXPLAIN on user databases:
GRANT SELECT ON your_database.* TO 'your_user'@'%';发展
设置开发环境
git clone https://github.com/yourusername/mysqltuner_mcp.git
cd mysqltuner_mcp
python -m venv .venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
pip install -e .