内容
# 阿里云瑶池数据库MCP服务端
瑶池数据库AI原生MCP服务端 — 一个MCP服务端管理所有阿里云数据库。
[](LICENSE)
[](https://python.org)
[English README](README.md)
## 什么是瑶池数据库MCP服务端?
一款基于[模型上下文协议(MCP)](https://modelcontextprotocol.io)的数据库工具服务,使AI编码助手(Cursor, Claude Desktop, Qoder等)可以直接操作阿里云数据库。
**核心场景**:AI编写代码后,自动创建数据库→创建表→执行SQL验证→调用瑶池数据库Agent进行性能诊断 — 所有操作无需离开IDE。
## 支持的数据库引擎
| 引擎 | 操作 |
|--------|------------|
| **RDS MySQL** | 创建实例,执行SQL,临时账户模式 |
| **PolarDB MySQL** | 创建集群,执行SQL,临时账户模式 |
| **MongoDB** | 创建副本集,执行MongoDB命令 |
| **Tair(Redis)** | 创建实例,执行Redis命令 |
## 瑶池数据库Agent
内置AI数据库顾问,基于阿里云官方文档和专家知识驱动:
- **知识问答** — 即时回答数据库使用问题,减少支持工单
- **智能诊断** — 自动执行性能诊断,通过OpenAPI精准定位问题
- **最佳实践** — 提供架构建议和优化建议,针对您的负载进行定制
支持多轮对话,覆盖所有阿里云数据库引擎(RDS, PolarDB, MongoDB, Tair, Lindorm等)。
## 可用工具
| 工具 | 描述 |
|------|-------------|
| `ask_yaochi_agent` | 瑶池数据库Agent — AI数据库顾问(诊断,最佳实践,架构) |
| `create_instance` | 创建数据库实例 |
| `list_instances` | 列出已有实例 |
| `execute_instance_sql` | 通过实例ID执行SQL(临时账户,无需密码) |
| `execute_mysql` | 直接连接MySQL/PolarDB,执行SQL |
| `execute_mongo` | 直接连接MongoDB,执行命令 |
| `execute_redis` | 直接连接Tair/Redis,执行命令 |
| `search_database` | 在DMS中搜索数据库 |
| `execute_sql` | 通过DMS执行SQL |
| `register_to_dms` | 将实例注册到DMS |
## 快速开始
### 安装
```bash
git clone http://gitlab.alibaba-inc.com/cloudmon/alibabacloud-yaochi-db-mcp-server.git
cd alibabacloud-yaochi-db-mcp-server
python3 -m venv .venv
source .venv/bin/activate
pip install .
```
### 验证
```bash
yaochi-db-mcp-server
```
成功后进入stdio等待模式(无输出)。按`Ctrl+C`退出。
### 配置AI客户端
在AI客户端的MCP配置中添加:
```json
{
"mcpServers": {
"yaochi-db": {
"command": "<project-path>/alibabacloud-yaochi-db-mcp-server/.venv/bin/yaochi-db-mcp-server",
"env": {
"ALIBABA_CLOUD_ACCESS_KEY_ID": "your-ak",
"ALIBABA_CLOUD_ACCESS_KEY_SECRET": "your-sk",
"ALIBABA_CLOUD_REGION_ID": "cn-hangzhou",
"YAOCHI_ENABLE_WRITE_SQL": "true",
"YAOCHI_ENABLE_DDL_SQL": "true"
}
}
}
}
```
## 环境变量
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `ALIBABA_CLOUD_ACCESS_KEY_ID` | — | 阿里云AccessKey ID(必填) |
| `ALIBABA_CLOUD_ACCESS_KEY_SECRET` | — | 阿里云AccessKey Secret(必填) |
| `ALIBABA_CLOUD_REGION_ID` | `cn-hangzhou` | 默认地域 |
| `YAOCHI_ENABLE_WRITE_SQL` | `true` | 允许INSERT/UPDATE/DELETE |
| `YAOCHI_ENABLE_DDL_SQL` | `false` | 允许CREATE/ALTER DDL |
| `YAOCHI_PUBLIC_IP` | 自动检测 | 手动指定公网IP |
## 安全特性
- **临时账户**:自动创建/销毁临时数据库账户,执行SQL时 — 无持久凭证
- **SQL安全检查**:阻止DROP/TRUNCATE等危险操作;禁止注释和多语句
- **限制性白名单**:自动开通公网访问,当前IP-only(/32),不影响现有规则
- **写入控制**:通过环境变量实现细粒度DML/DDL权限控制
## 使用示例
```
用户:创建PolarDB MySQL集群,构建orders表,并设置Tair缓存
AI自动:
1. create_instance(engine="polardb-mysql")
→ 返回instance_id="pc-bp1xxx"
2. execute_instance_sql(instance_id="pc-bp1xxx", engine="polardb-mysql", database="testdb",
sql="CREATE TABLE orders (id BIGINT PRIMARY KEY, amount DECIMAL(10,2))", force=true)
→ 自动开通公网访问 + 白名单 + 创建数据库 + 创建表
3. create_instance(engine="tair")
→ 返回instance_id="r-bp1xxx"
4. execute_redis(host="r-bp1xxx.redis.rds.aliyuncs.com", port=6379, password="xxx",
command="SET order:1001 '{\"amount\":99.9}'")
→ OK
5. ask_yaochi_agent(query="PolarDB集群pc-bp1xxx性能诊断")
→ 返回瑶池数据库Agent的优化建议
```
## 许可证
[Apache License 2.0](LICENSE)
## 贡献
欢迎提交Issues和Pull Requests。
## 链接
- [MCP协议文档](https://modelcontextprotocol.io)
- [阿里云RAM控制台](https://ram.console.aliyun.com/manage/ak)
- [DMS控制台](https://dms.aliyun.com)