MySQL MCP Server
by 664393425
README.md
# MySQL MCP Server
A feature-rich MySQL MCP (Model Context Protocol) server for AI coding assistants. Supports read/write operations, dynamic database/server switching, auto-config from Spring Boot projects, and more.
一个功能丰富的 MySQL MCP 服务,支持读写操作、动态切换数据库/服务器、自动读取 Spring Boot 项目配置等。
## ✨ Features
| Feature | Description |
|---------|-------------|
| 📖 **Read Queries** | SELECT, SHOW, DESCRIBE, EXPLAIN with auto LIMIT |
| ✏️ **Write Operations** | INSERT, UPDATE, DELETE, REPLACE |
| 🏗️ **DDL Support** | CREATE, ALTER, DROP, TRUNCATE |
| 🔄 **Dynamic Switch Database** | Switch database without restarting |
| 🌐 **Dynamic Switch Server** | Switch to a different MySQL server on the fly |
| 📋 **Show Tables** | List all tables with metadata, supports LIKE filter |
| 🔍 **Describe Table** | View column details and CREATE TABLE SQL |
| 🔗 **Connection Info** | View current connection details |
| 📚 **Show Databases** | List all available databases |
| ⚙️ **Auto Config** | Read DB config from Spring Boot `application.yml` |
| 🔁 **Auto Retry** | Automatic reconnection on connection loss |
| 🛡️ **Process Guard** | Prevents duplicate processes on startup |
| 📝 **Logging** | Daily rotating log files |
## 📦 Installation
```bash
git clone https://github.com/YOUR_USERNAME/mysql-mcp-server.git
cd mysql-mcp-server
npm install
```
**Requirements:** Node.js >= 18.0.0
## 🚀 Usage
### Option 1: Direct Connection Parameters
```bash
node index.js --host 127.0.0.1 --port 3306 --database mydb --user root --password yourpass
```
### Option 2: Auto-read from Spring Boot Project (Recommended for Java developers)
```bash
node index.js --project-dir /path/to/your/spring-boot-module
```
The server will automatically:
1. Read `application.yml` and detect `spring.profiles.active`
2. Load the corresponding `application-{profile}.yml`
3. Parse `spring.datasource` for connection info
### Option 3: Auto-read from `.gemini/settings.json`
If no arguments are provided, the server will search for `.gemini/settings.json` in the current directory and up to 5 parent directories to load the MySQL configuration.
## 🔧 MCP Tools
### `query` — Read-only queries
Execute SELECT / SHOW / DESCRIBE / EXPLAIN statements.
- `sql` (string, required): The SQL query
- `limit` (number, optional): Max rows to return (default: 200)
### `execute` — Write operations & DDL
Execute INSERT / UPDATE / DELETE / REPLACE / CREATE / ALTER / DROP / TRUNCATE.
- `sql` (string, required): The SQL statement
### `show_tables` — List tables
List all tables in the current database.
- `pattern` (string, optional): LIKE filter (e.g., `edu_%`)
### `describe_table` — Table structure
View column details and CREATE TABLE SQL.
- `table` (string, required): Table name
### `switch_database` — Switch database
Dynamically switch to a different database on the same server.
- `database` (string, required): Target database name
### `switch_connection` — Switch server
Dynamically switch to a different MySQL server without restarting.
- `host` (string, optional): MySQL host
- `port` (number, optional): MySQL port
- `user` (string, optional): Username
- `password` (string, optional): Password
- `database` (string, optional): Database name
Only pass the parameters you want to change; the rest will remain unchanged.
### `connection_info` — Current connection
View the current connection details (host, port, database, user, MySQL version).
### `show_databases` — List databases
List all available databases on the current MySQL server.
## ⚙️ IDE Configuration
### Antigravity / Gemini
Edit `~/.gemini/settings.json` or `~/.gemini/antigravity/mcp_config.json`:
```json
{
"mcpServers": {
"mysql": {
"command": "node",
"args": [
"/path/to/mysql-mcp-server/index.js",
"--host", "127.0.0.1",
"--port", "3306",
"--database", "mydb",
"--user", "root",
"--password", "yourpass"
]
}
}
}
```
### Claude Desktop
Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"mysql": {
"command": "node",
"args": [
"/path/to/mysql-mcp-server/index.js",
"--host", "127.0.0.1",
"--port", "3306",
"--database", "mydb",
"--user", "root",
"--password", "yourpass"
]
}
}
}
```
### Cursor
Edit `.cursor/mcp.json` in your project root:
```json
{
"mcpServers": {
"mysql": {
"command": "node",
"args": [
"/path/to/mysql-mcp-server/index.js",
"--project-dir",
"/path/to/your/spring-boot-module"
]
}
}
}
```
## 📝 Logging
Logs are written to the `logs/` directory with daily rotation:
```
logs/
├── 2026-03-15.log
├── 2026-03-16.log
└── ...
```
Each log entry includes timestamp, level (INFO/WARN/ERROR), message, and optional structured data.
## 🔒 Safety
- **Read queries** are restricted to SELECT, SHOW, DESCRIBE, and EXPLAIN
- **Write operations** require explicit use of the `execute` tool
- **DROP/TRUNCATE** operations include a danger warning
- **Failed switches** automatically rollback to the previous connection
- **SQL injection prevention** via parameterized table name sanitization
## 📄 License
MIT License - see [LICENSE](./LICENSE) for details.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues