Skip to main content
Glama
2506013878

MySQL MCP Server

by 2506013878
README.md


# MySQL MCP Server 安全版

一个基于 Model Context Protocol (MCP) 的 MySQL 数据库管理工具,提供了一系列用于与 MySQL 数据库交互的工具。

## 功能特性

- 🔌 **数据库连接管理** - 自动管理 MySQL 数据库连接
- 📊 **数据库信息查询** - 获取数据库列表、表信息、视图、函数等
- 🔍 **表结构分析** - 查看表字段、索引等结构信息
- ✏️ **表结构操作** - 支持创建新表、修改表结构(添加/修改字段)
- 🐳 **Docker 部署支持** - 提供 Dockerfile 和 docker-compose 配置


## MCP 工具

| 工具名称 | 功能描述 |
|---------|---------|
| `get_databases` | 获取所有数据库列表 |
| `get_tables(database_name)` | 获取指定数据库中的所有表 |
| `get_columns(database_name, table_name)` | 获取指定表的字段信息 |
| `get_indexes(database_name, table_name)` | 获取指定表的索引信息 |
| `get_views(database_name)` | 获取指定数据库中的所有视图 |
| `get_functions(database_name)` | 获取指定数据库中的所有函数 |
| `create_table(database_name, table_name, columns)` | 在指定数据库中创建新表 |
| `alter_table(database_name, table_name, action, column_name, column_definition)` | 修改数据表字段 |

## 安装部署

### 环境要求

- Python 3.12+
- MySQL 5.7+ / 8.0+
- pip

### 本地安装

1. 克隆项目并进入目录:

```bash
git clone https://gitee.com/MZ11/mcp_mysql.git
cd mcp_mysql
```

2. 安装依赖:

```bash
pip install -r requirements.txt
```

3. 配置数据库连接(复制 `.env.example` 为 `.env` 并修改):

```bash
cp .env.example .env
# 编辑 .env 文件,填入数据库连接信息
```

4. 运行服务:

```bash
python main.py
```


### Docker 部署

1. 构建镜像:

```bash
docker build -t mcp_mysql .
```

2. 运行容器:

```bash
docker run -p 8991:8991 mcp_mysql
# 注意 拼接数据库相关参数 
```

或使用 docker-compose:

```bash
docker-compose up -d
#注意:修改 `docker-compose.yml` 文件中的 数据库配置信息
```


## 配置说明

在 `.env` 文件中配置数据库连接信息:

```env
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
```

## 使用示例

### TRAE、Qorde开发工具使用MCP服务
设置 >> MCP >> 手动配置
```aiignore
 {
  "mcpServers": {
    "mysql_mcp": {
      "url": "http://yourhost:8991/sse"
    }
  }
}
```

### 获取所有数据库

```python
# 调用 MCP 工具
result = get_databases()
```

### 获取指定表的字段信息

```python
# 获取 mysql 数据库中 user 表的字段信息
columns = get_columns(database_name="mysql", table_name="user")
```

### 创建新表

```python
# 在 test_db 中创建新表
create_table(
    database_name="test_db",
    table_name="users",
    columns="id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100), email VARCHAR(100)"
)
```

### 修改表结构

```python
# 在 users 表中添加 age 字段
alter_table(
    database_name="test_db",
    table_name="users",
    action="add",
    column_name="age",
    column_definition="INT"
)
```

## 项目结构

```
mcp_mysql/
├── main.py              # MCP 服务器主程序
├── requirements.txt     # Python 依赖
├── Dockerfile          # Docker 镜像构建文件
├── docker-compose.yml  # Docker Compose 配置
├── .env.example        # 环境变量示例
└── README.md           # 项目说明文档
```

## 许可证

本项目遵循开源协议。