# Alibaba Cloud Yaochi DB MCP Server Yaochi Database AI Native MCP Server — One MCP Server to manage all Alibaba Cloud databases. [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) [![Python](https://img.shields.io/badge/Python-3.10%2B-green.svg)](https://python.org) [中文版 README](README_CN.md) ## What is Yaochi DB MCP Server? A database tool service built on [Model Context Protocol (MCP)](https://modelcontextprotocol.io), enabling AI coding assistants (Cursor, Claude Desktop, Qoder, etc.) to directly operate Alibaba Cloud databases. **Core Scenario**: After AI writes code, it automatically creates a database → creates tables → executes SQL to verify → calls Yaochi Database Agent for performance diagnosis — all without leaving the IDE. ## Supported Database Engines | Engine | Operations | |--------|------------| | **RDS MySQL** | Create instance, execute SQL, ephemeral account mode | | **PolarDB MySQL** | Create cluster, execute SQL, ephemeral account mode | | **MongoDB** | Create replica set, execute MongoDB commands | | **Tair (Redis)** | Create instance, execute Redis commands | ## Yaochi Database Agent Built-in AI database advisor powered by Alibaba Cloud’s official documentation and expert knowledge: - **Knowledge Q&A** — Instantly answers database usage questions, reducing support tickets - **Intelligent Diagnosis** — Auto-executes performance diagnostics via OpenAPI, pinpointing issues - **Best Practices** — Provides architecture recommendations and optimization suggestions tailored to your workload Supports multi-turn conversations and covers all Alibaba Cloud database engines (RDS, PolarDB, MongoDB, Tair, Lindorm, etc.). ## Available Tools | Tool | Description | |------|-------------| | `ask_yaochi_agent` | Yaochi Database Agent — AI database advisor (diagnosis, best practices, architecture) | | `create_instance` | Create a database instance | | `list_instances` | List existing instances | | `execute_instance_sql` | Execute SQL via instance ID (ephemeral account, no password needed) | | `execute_mysql` | Direct connect to MySQL/PolarDB and execute SQL | | `execute_mongo` | Direct connect to MongoDB and execute commands | | `execute_redis` | Direct connect to Tair/Redis and execute commands | | `search_database` | Search databases in DMS | | `execute_sql` | Execute SQL via DMS | | `register_to_dms` | Register instance to DMS | ## Quick Start ### Installation ```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 . ``` ### Verify ```bash yaochi-db-mcp-server ``` It enters stdio waiting mode (no output) on success. Press `Ctrl+C` to exit. ### Configure AI Client Add to your AI client's MCP configuration: ```json { "mcpServers": { "yaochi-db": { "command": "/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" } } } } ``` ## Environment Variables | Variable | Default | Description | |----------|---------|-------------| | `ALIBABA_CLOUD_ACCESS_KEY_ID` | — | Alibaba Cloud AccessKey ID (required) | | `ALIBABA_CLOUD_ACCESS_KEY_SECRET` | — | Alibaba Cloud AccessKey Secret (required) | | `ALIBABA_CLOUD_REGION_ID` | `cn-hangzhou` | Default region | | `YAOCHI_ENABLE_WRITE_SQL` | `true` | Allow INSERT/UPDATE/DELETE | | `YAOCHI_ENABLE_DDL_SQL` | `false` | Allow CREATE/ALTER DDL | | `YAOCHI_PUBLIC_IP` | Auto-detect | Manually specify public IP | ## Security Features - **Ephemeral Accounts**: Automatically creates/destroys temporary database accounts per SQL execution — no persistent credentials - **SQL Safety Checks**: Blocks DROP/TRUNCATE and other dangerous operations; disallows comments and multi-statements - **Restrictive Whitelist**: Auto-provisions public access with current IP only (/32), without affecting existing rules - **Write Control**: Fine-grained DML/DDL permissions via environment variables ## Usage Example ``` User: Create a PolarDB MySQL cluster, build an orders table, and set up a Tair cache AI automatically: 1. create_instance(engine="polardb-mysql") → Returns 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) → Auto-provisions public access + whitelist + creates DB + creates table 3. create_instance(engine="tair") → Returns 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 cluster pc-bp1xxx performance diagnosis") → Returns optimization suggestions from Yaochi Database Agent ``` ## License [Apache License 2.0](LICENSE) ## Contributing Issues and Pull Requests are welcome. ## Links - [MCP Protocol Documentation](https://modelcontextprotocol.io) - [Alibaba Cloud RAM Console](https://ram.console.aliyun.com/manage/ak) - [DMS Console](https://dms.aliyun.com)