npm package: @shuwu/mcp-mysql-server
Description: Model Context Protocol (MCP) server for MySQL - enables AI assistants like Cursor and Claude to query MySQL databases
Author: shuwu Team
Latest version: 2.0.2

# MCP MySQL Server

[![npm version](https://img.shields.io/npm/v/@shuwu/mcp-mysql-server.svg)](https://www.npmjs.com/package/@shuwu/mcp-mysql-server)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

Model Context Protocol (MCP) server for MySQL - 让 AI 助手（Cursor、Claude Desktop）能够安全地查询 MySQL 数据库。

[English](#english) | [中文](#chinese)

---

## <a name="chinese"></a>🇨🇳 中文文档

### 功能特性

- ✅ 支持 SQL 查询（SELECT、SHOW、DESCRIBE）
- ✅ 列出数据库所有表
- ✅ 查看表结构
- ✅ 安全检查（禁止 DDL 操作）
- ✅ 可选的写操作控制
- ✅ 连接池管理
- ✅ 环境变量配置

### 快速开始

#### 方法 1：通过 npm 全局安装（推荐）

```bash
# 全局安装
npm install -g @shuwu/mcp-mysql-server

# 或使用 npx（无需安装）
npx @shuwu/mcp-mysql-server
```

#### 方法 2：本地开发安装

```bash
# 克隆或下载项目
git clone https://github.com/your-username/mcp-mysql-server.git
cd mcp-mysql-server

# 安装依赖
npm install
```

### 配置数据库

创建 `.env` 文件：

```env
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=your_database
ALLOW_WRITE=false
```

### 测试运行

```bash
npm start
```

看到以下输出表示成功：
```
[MCP MySQL] 连接池已创建: localhost:3306/your_database
[MCP MySQL] 数据库连接成功 ✓
[MCP MySQL] 服务器已启动，等待请求...
[MCP MySQL] 写操作: 禁止
```

## 配置 Cursor AI

### 方法 1：使用全局安装的包（推荐）

如果你通过 `npm install -g` 全局安装了包，配置更简单：

**Windows 配置：**

编辑配置文件：`%APPDATA%\Cursor\User\globalStorage\settings.json`

```json
{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "args": ["@shuwu/mcp-mysql-server"],
      "env": {
        "DB_HOST": "localhost",
        "DB_PORT": "3306",
        "DB_USER": "root",
        "DB_PASSWORD": "your_password",
        "DB_NAME": "your_database",
        "ALLOW_WRITE": "false"
      }
    }
  }
}
```

**macOS/Linux 配置：**

编辑配置文件：`~/.config/Cursor/User/globalStorage/settings.json`

```json
{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "args": ["@shuwu/mcp-mysql-server"],
      "env": {
        "DB_HOST": "localhost",
        "DB_PORT": "3306",
        "DB_USER": "root",
        "DB_PASSWORD": "your_password",
        "DB_NAME": "your_database",
        "ALLOW_WRITE": "false"
      }
    }
  }
}
```

### 方法 2：使用本地项目路径

如果你是本地开发安装，需要指定完整路径：

**Windows 配置：**

```json
{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": ["C:\\path\\to\\mcp-mysql-server\\index.js"],
      "env": {
        "DB_HOST": "localhost",
        "DB_PORT": "3306",
        "DB_USER": "root",
        "DB_PASSWORD": "your_password",
        "DB_NAME": "your_database"
      }
    }
  }
}
```

**macOS/Linux 配置：**

```json
{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": ["/path/to/mcp-mysql-server/index.js"],
      "env": {
        "DB_HOST": "localhost",
        "DB_USER": "root",
        "DB_PASSWORD": "your_password",
        "DB_NAME": "your_database"
      }
    }
  }
}
```

### 重启 Cursor

配置完成后，重启 Cursor 使配置生效。

## 使用示例

配置完成后，在 Cursor 中可以直接询问 AI：

```
# 查询用户表
查询 sys_user 表的前 10 条数据

# 列出所有表
数据库有哪些表？

# 查看表结构
ai_character 表的结构是什么？

# 复杂查询
查询最近 7 天创建的角色，并按创建时间倒序排列
```

AI 助手会自动调用 MCP 服务查询数据库并返回结果。

## 可用工具

MCP 服务器提供以下工具：

### 1. `query` - 执行 SQL 查询

```javascript
{
  "name": "query",
  "arguments": {
    "sql": "SELECT * FROM sys_user LIMIT 10"
  }
}
```

### 2. `list_tables` - 列出所有表

```javascript
{
  "name": "list_tables"
}
```

### 3. `describe_table` - 查看表结构

```javascript
{
  "name": "describe_table",
  "arguments": {
    "table": "ai_character"
  }
}
```

## 安全说明

### 默认安全策略

- ✅ 允许：SELECT、SHOW、DESCRIBE（只读查询）
- ❌ 禁止：INSERT、UPDATE、DELETE（需手动开启）
- ❌ 禁止：CREATE、DROP、ALTER、TRUNCATE（DDL 操作）

### 开启写操作

如需允许 AI 执行写操作（谨慎使用），修改 `.env`：

```env
ALLOW_WRITE=true
```

### 推荐：创建只读用户

建议为 MCP 服务创建专用的只读数据库用户：

```sql
-- 创建只读用户
CREATE USER 'shuwu_readonly'@'localhost' IDENTIFIED BY 'your_password';

-- 授予只读权限
GRANT SELECT ON shuwu.* TO 'shuwu_readonly'@'localhost';

-- 刷新权限
FLUSH PRIVILEGES;
```

然后修改 `.env`：
```env
DB_USER=shuwu_readonly
DB_PASSWORD=your_password
```

## 故障排查

### 1. 连接失败

检查：
- MySQL 是否正在运行：`mysql -u root -p`
- `.env` 中的用户名密码是否正确
- 防火墙是否阻止连接

### 2. Cursor 无法识别

检查：
- 配置文件路径是否正确（使用绝对路径）
- Windows 路径使用双反斜杠 `\\`
- 是否重启了 Cursor

### 3. 权限错误

检查：
- 数据库用户是否有足够权限
- 是否需要开启 `ALLOW_WRITE`

## 开发模式

使用自动重载（修改代码自动重启）：

```bash
npm run dev
```

## 技术栈

- **Node.js**: 22+
- **@modelcontextprotocol/sdk**: MCP 协议实现
- **mysql2**: MySQL 数据库驱动
- **dotenv**: 环境变量管理

## 相关链接

- [Model Context Protocol 官方文档](https://modelcontextprotocol.io/)
- [MCP SDK GitHub](https://github.com/modelcontextprotocol/typescript-sdk)
- [MySQL2 文档](https://github.com/sidorares/node-mysql2)

## 许可证

MIT License

---

## <a name="english"></a>🇬🇧 English Documentation

### Features

- ✅ Support SQL queries (SELECT, SHOW, DESCRIBE)
- ✅ List all database tables
- ✅ View table structure
- ✅ Safety checks (prohibit DDL operations)
- ✅ Optional write operation control
- ✅ Connection pool management
- ✅ Environment variable configuration

### Quick Start

#### Method 1: Install via npm (Recommended)

```bash
# Global installation
npm install -g @shuwu/mcp-mysql-server

# Or use npx (no installation needed)
npx @shuwu/mcp-mysql-server
```

#### Method 2: Local Development

```bash
git clone https://github.com/your-username/mcp-mysql-server.git
cd mcp-mysql-server
npm install
```

### Database Configuration

Create a `.env` file:

```env
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=your_database
ALLOW_WRITE=false
```

### Configure Cursor AI

Edit configuration file and add:

**Windows:** `%APPDATA%\Cursor\User\globalStorage\settings.json`  
**macOS/Linux:** `~/.config/Cursor/User/globalStorage/settings.json`

```json
{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "args": ["@shuwu/mcp-mysql-server"],
      "env": {
        "DB_HOST": "localhost",
        "DB_PORT": "3306",
        "DB_USER": "root",
        "DB_PASSWORD": "your_password",
        "DB_NAME": "your_database",
        "ALLOW_WRITE": "false"
      }
    }
  }
}
```

Restart Cursor after configuration.

### Usage Examples

After configuration, you can ask AI directly in Cursor:

```
# Query user table
Show me the first 10 rows from sys_user table

# List all tables
What tables are in the database?

# View table structure
What's the structure of the users table?

# Complex query
Find all active users created in the last 7 days
```

---

**Powered by Model Context Protocol**  
Built with ❤️ by shuwu Team