使用说明
MCP MySQL服务器
一种模型上下文协议(MCP)服务器,提供对MySQL数据库的安全访问。此服务器将MySQL数据库操作作为MCP工具公开,允许AI助手和其他MCP客户端安全地与您的数据库交互。
特性
- 安全查询执行:只读数据库访问只允许SELECT查询
- 数据库架构检查:列出表和查看表架构
- 令牌身份验证:内置基于令牌的身份验证中间件
- Docker支持:包括Docker Compose设置,便于MySQL部署
- FastMCP框架:基于FastMCP构建,实现高效的MCP服务器实施
可用工具
服务器公开了三个MCP工具:
- list_tables():列出已配置数据库中的所有表
- get_table_schema(表名):返回特定表的CREATE TABLE语句
- run_query(查询):对数据库执行SELECT查询(限制为100个结果)
先决条件
- Python 3.8+
- MySQL 8.0+(或使用附带的Docker Compose设置)
- 虚拟环境(推荐)
安装
- 克隆存储库:
git clone <repository-url>
cd mcp-mysql
- 创建并激活虚拟环境:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- 安装依赖项:
pip install -r requirements.txt
配置
使用环境变量配置服务器:
| 变量 | 描述 | 默认值 |
|---|---|---|
MYSQL_HOST |
MySQL服务器主机名 | localhost |
MYSQL_PORT |
MySQL服务器端口 | 3306 |
MYSQL_USER |
MySQL用户名 | root |
MYSQL_PASSWORD |
MySQL密码 | (空) |
MYSQL_DATABASE |
数据库名称 | (空) |
AUTH_TOKEN |
API访问的身份验证令牌 | (无) |
Docker快速入门
- 启动MySQL数据库:
docker-compose up -d
这将:
- 启动MySQL 8.0容器
- 创建测试数据库(
test_db) - 使用示例表(用户、产品、订单)进行初始化
- 暴露端口3306上的MySQL
- 运行MCP服务器:
./run_server.sh
或手动:
export MYSQL_HOST=localhost
export MYSQL_USER=root
export MYSQL_PASSWORD=password
export MYSQL_DATABASE=test_db
export AUTH_TOKEN=secret-token
python server.py
服务器将在端口8000上启动。
用法
作为MCP服务器
该服务器使用可流式HTTP传输作为HTTP MCP服务器运行。配置您的MCP客户端以连接到:
http://localhost:8000/mcp
在Authorization标头中包含身份验证令牌:
Authorization: Bearer <your-auth-token>
数据库操作示例
包含的示例数据库有三个表:
- 用户:用户信息(id、用户名、电子邮件、created_at)
- 产品:产品目录(id、名称、价格、库存)
- 订单:订单记录(id、user_id、total_amount、Order_date)
您可以运行的示例查询:
SELECT * FROM users;
SELECT name, price FROM products WHERE stock > 20;
SELECT u.username, o.total_amount FROM orders o JOIN users u ON o.user_id = u.id;
安全
- 查询限制:只允许使用SELECT语句来防止数据修改
- 令牌身份验证:所有MCP端点都需要承载令牌身份验证
- 连接处理:数据库连接得到正确管理,并在每次操作后关闭
- 错误处理:详细的错误消息,不暴露敏感信息
发展
项目结构
mcp-mysql/
├── server.py # Main MCP server implementation
├── requirements.txt # Python dependencies
├── run_server.sh # Server startup script
├── docker-compose.yml # Docker configuration for MySQL
└── docker-init/
└── init.sql # Database initialization script
依赖项
- 快速多通道处理:用于构建MCP服务器的FastMCP框架
- mysql连接器python:Python官方MySQL驱动程序
- 优维康:用于运行应用程序的ASGI服务器
- python dotenv:环境变量管理
故障排除
连接问题
如果你无法连接到MySQL:
- 验证Docker容器是否正在运行:
docker-compose ps - 检查MySQL日志:
docker-compose logs db - 确保端口3306尚未使用
- 如果在主机上运行服务器,请设置
MYSQL_HOST=127.0.0.1并验证MySQL是否正在监听MYSQL_PORT.
身份验证错误
如果您收到401未经授权:
- 验证AUTH_TOKEN是否设置正确
- 在授权标头中包含令牌:
Bearer <token> - 检查客户端和服务器上的令牌是否匹配
许可证
[在此处添加您的许可证]
贡献
[在此处添加贡献指南]