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 # 项目说明文档
```
## 许可证
本项目遵循开源协议。