MySQL MCP服务器分析数据库
英语| 中文
MySQL MCP服务器的AnalyticDB是AI代理和 MySQL分析数据库它提供两类能力:
- OpenAPI工具 (
openapi组):通过阿里云OpenAPI管理集群、白名单、帐户、网络、监控、诊断和审计日志。 - SQL工具和资源 (
sql组):直接连接到ADB MySQL集群以执行SQL、查看执行计划和浏览数据库元数据。
只读工具带有注释 ToolAnnotations(readOnlyHint=True) 根据MCP协议,允许客户端将它们与变异操作区分开来。
一、Prerequisites
- Python>=3.13
- 紫外线 (推荐包管理器和运行器)
- 阿里云AccessKey(OpenAPI工具需要)
- 可选:ADB MySQL连接凭据(用于直接连接模式下的SQL工具)
二、Quick Start
2.1使用 樱桃工作室 (推荐)
配置A——仅限SQL工具(执行查询、查看计划、浏览元数据):
{
"mcpServers": {
"adb-mysql-mcp-server": {
"name": "adb-mysql-mcp-server",
"type": "stdio",
"isActive": true,
"command": "uv",
"args": [
"--directory",
"/path/to/alibabacloud-adb-mysql-mcp-server",
"run",
"adb-mysql-mcp-server"
],
"env": {
"ADB_MYSQL_HOST": "your_adb_mysql_host",
"ADB_MYSQL_PORT": "3306",
"ADB_MYSQL_USER": "your_username",
"ADB_MYSQL_PASSWORD": "your_password",
"ADB_MYSQL_DATABASE": "your_database"
}
}
}
}配置B——OpenAPI工具(集群管理、诊断、监控):
备注:请设置ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET您的阿里云AccessKey凭据。
{
"mcpServers": {
"adb-mysql-mcp-server": {
"name": "adb-mysql-mcp-server",
"type": "stdio",
"isActive": true,
"command": "uv",
"args": [
"--directory",
"/path/to/alibabacloud-adb-mysql-mcp-server",
"run",
"adb-mysql-mcp-server"
],
"env": {
"ALIBABA_CLOUD_ACCESS_KEY_ID": "your_access_key_id",
"ALIBABA_CLOUD_ACCESS_KEY_SECRET": "your_access_key_secret"
}
}
}
}您可以通过将所有环境变量设置在一起来组合这两种配置。当AK/SK未配置时,OpenAPI工具会自动禁用,只有SQL工具保持活动状态。
2.2使用克劳德代码
从GitHub下载并同步依赖关系:
git clone https://github.com/aliyun/alibabacloud-adb-mysql-mcp-server
cd alibabacloud-adb-mysql-mcp-server
uv sync将以下配置添加到Claude Code MCP配置文件(项目级别: .mcp.json 在项目根或用户级别: ~/.claude/settings.json):
stdio传输:
{
"mcpServers": {
"adb-mysql-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/alibabacloud-adb-mysql-mcp-server",
"run",
"adb-mysql-mcp-server"
],
"env": {
"ALIBABA_CLOUD_ACCESS_KEY_ID": "your_access_key_id",
"ALIBABA_CLOUD_ACCESS_KEY_SECRET": "your_access_key_secret",
"ALIBABA_CLOUD_SECURITY_TOKEN": "",
// Uncomment the following lines to enable SQL tools for direct database connection:
// "ADB_MYSQL_HOST": "your_adb_mysql_host",
// "ADB_MYSQL_PORT": "3306",
// "ADB_MYSQL_USER": "your_username",
// "ADB_MYSQL_PASSWORD": "your_password",
// "ADB_MYSQL_DATABASE": "your_database"
}
}
}
}SSE运输 --首先启动服务器,然后配置客户端:
export ALIBABA_CLOUD_ACCESS_KEY_ID="your_access_key_id"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="your_access_key_secret"
# Uncomment the following lines to enable SQL tools for direct database connection:
# export ADB_MYSQL_HOST="your_adb_mysql_host"
# export ADB_MYSQL_PORT="3306"
# export ADB_MYSQL_USER="your_username"
# export ADB_MYSQL_PASSWORD="your_password"
# export ADB_MYSQL_DATABASE="your_database"
export SERVER_TRANSPORT=sse
export SERVER_PORT=8000
uv --directory /path/to/alibabacloud-adb-mysql-mcp-server run adb-mysql-mcp-server{
"mcpServers": {
"adb-mysql-mcp-server": {
"url": "http://localhost:8000/sse"
}
}
}可流式HTTP传输 --首先启动服务器,然后配置客户端:
export ALIBABA_CLOUD_ACCESS_KEY_ID="your_access_key_id"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="your_access_key_secret"
# Uncomment the following lines to enable SQL tools for direct database connection:
# export ADB_MYSQL_HOST="your_adb_mysql_host"
# export ADB_MYSQL_PORT="3306"
# export ADB_MYSQL_USER="your_username"
# export ADB_MYSQL_PASSWORD="your_password"
# export ADB_MYSQL_DATABASE="your_database"
export SERVER_TRANSPORT=streamable_http
export SERVER_PORT=8000
uv --directory /path/to/alibabacloud-adb-mysql-mcp-server run adb-mysql-mcp-server{
"mcpServers": {
"adb-mysql-mcp-server": {
"url": "http://localhost:8000/mcp"
}
}
}备注:何时ADB_MYSQL_USER和ADB_MYSQL_PASSWORD未配置,但AK/SK可用,通过OpenAPI自动创建一个临时数据库帐户用于SQL执行,并在之后进行清理。
2.3使用Cline
设置环境变量并运行MCP服务器:
export ALIBABA_CLOUD_ACCESS_KEY_ID="your_access_key_id"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="your_access_key_secret"
export SERVER_TRANSPORT=sse
export SERVER_PORT=8000
uv --directory /path/to/alibabacloud-adb-mysql-mcp-server run adb-mysql-mcp-server然后配置Cline远程服务器:
remote_server = "http://127.0.0.1:8000/sse"三、环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
ALIBABA_CLOUD_ACCESS_KEY_ID | 是(OpenAPI工具) | 阿里云AccessKey ID |
ALIBABA_CLOUD_ACCESS_KEY_SECRET | 是(OpenAPI工具) | 阿里云AccessKey密钥 |
ALIBABA_CLOUD_SECURITY_TOKEN | 否 | STS临时安全令牌 |
ADB_MYSQL_HOST | 否 | 数据库主机(直接连接模式) |
ADB_MYSQL_PORT | 否 | 数据库端口,默认3306(直接连接模式) |
ADB_MYSQL_USER | 否 | 数据库用户名(直接连接模式) |
ADB_MYSQL_PASSWORD | 否 | 数据库密码(直接连接模式) |
ADB_MYSQL_DATABASE | 否 | 默认数据库名称(直接连接模式) |
ADB_MYSQL_CONNECT_TIMEOUT | 否 | 数据库连接超时(秒),默认值2 |
ADB_API_CONNECT_TIMEOUT | 否 | OpenAPI连接超时(毫秒),默认值为10000(10秒) |
ADB_API_READ_TIMEOUT | 否 | OpenAPI读取超时(毫秒),默认300000(5分钟) |
SERVER_TRANSPORT | 否 | 传输协议: stdio (默认), sse, streamable_http |
SERVER_PORT | 否 | SSE/HTTP服务器端口,默认8000 |
四、刀具清单
4.1集群管理(组: openapi)
| 工具 | 说明 |
|---|---|
describe_db_clusters | 列出某个地区的ADB MySQL集群 |
describe_db_cluster_attribute | 获取详细的集群属性 |
describe_cluster_access_whitelist | 获取群集IP白名单 |
modify_cluster_access_whitelist | 修改群集IP白名单 |
describe_accounts | 列出群集中的数据库帐户 |
describe_cluster_net_info | 获取群集网络连接信息 |
get_current_time | 获取当前服务器时间 |
4.2诊断和监测(组: openapi)
| 工具 | 说明 |
|---|---|
describe_db_cluster_performance | 查询集群性能指标(CPU、内存、QPS等) |
describe_db_cluster_health_status | 查询群集运行状况 |
describe_diagnosis_records | 查询SQL诊断摘要记录 |
describe_diagnosis_sql_info | 获取SQL执行详细信息(计划、运行时信息) |
describe_bad_sql_detection | 检测影响群集稳定性的错误SQL |
describe_sql_patterns | 查询SQL模式列表 |
describe_table_statistics | 查询表级统计 |
4.3管理和审计(组: openapi)
| 工具 | 说明 |
|---|---|
create_account | 创建数据库帐户 |
modify_db_cluster_description | 修改集群描述 |
describe_db_cluster_space_summary | 获取群集存储空间摘要 |
describe_audit_log_records | 查询SQL审核日志记录 |
4.4高级诊断(组: openapi)
| 工具 | 说明 |
|---|---|
describe_executor_detection | 计算节点诊断 |
describe_worker_detection | 存储节点诊断 |
describe_controller_detection | 访问节点诊断 |
describe_available_advices | 获取优化建议 |
kill_process | 终止正在运行的查询进程 |
describe_db_resource_group | 获取资源组配置 |
describe_excessive_primary_keys | 检测主键过多的表 |
describe_oversize_non_partition_table_infos | 检测超大的非分区表 |
describe_table_partition_diagnose | 诊断表分区问题 |
describe_inclined_tables | 检测数据倾斜的表 |
4.5 SQL工具(组: sql)
| 工具 | 说明 |
|---|---|
execute_sql | 在ADB MySQL集群上执行SQL |
get_query_plan | 获取EXPLAIN执行计划 |
get_execution_plan | 获取解释分析实际执行计划 |
4.6 MCP资源(组: sql)
| 资源URI | 描述 |
|---|---|
adbmysql:///databases | 列出所有数据库 |
adbmysql:///{database}/tables | 列出数据库中的所有表 |
adbmysql:///{database}/{table}/ddl | 获取表DDL |
adbmysql:///config/{key}/value | 获取配置键值 |
五、本地开发
git clone https://github.com/aliyun/alibabacloud-adb-mysql-mcp-server
cd alibabacloud-adb-mysql-mcp-server
uv sync运行测试:
uv run python -m pytest test/ -v使用MCP检查器进行调试:
npx @modelcontextprotocol/inspector \
-e ALIBABA_CLOUD_ACCESS_KEY_ID=your_ak \
-e ALIBABA_CLOUD_ACCESS_KEY_SECRET=your_sk \
uv --directory /path/to/alibabacloud-adb-mysql-mcp-server run adb-mysql-mcp-server六、SKILL
除了上面的MCP服务器,这个项目还提供了一个 独立 技能下 skill/ 目录。该技能可以直接部署到Claude Code,而无需依赖此MCP服务器(它通过以下方式调用ADB MySQL OpenAPI call_adb_api.py 在SKILL目录中)。
该技能涵盖了集群信息查询、性能监控、慢速查询诊断、SQL模式分析和SQL执行,并为常见场景提供了内置的指导性诊断工作流。
有关设置和使用的详细信息,请参阅 skill/skill_readme.md.
备注:此技能的演变将与我们未来的下一代代理保持一致。敬请期待。
许可证
Apache许可证2.0
