MySQL MCP服务器
一种模型上下文协议(MCP)服务器,提供连接和查询通用MySQL数据库的工具。该服务器允许AI助手通过标准化的接口与MySQL数据库进行交互。
特性
- 数据库连接管理:具有可配置超时的安全连接池
- 查询执行:支持SELECT、INSERT、UPDATE、DELETE操作
- 架构检查:用于探索数据库结构和表模式的工具
- 连接测试:内置连接健康检查
- 查询说明:解释性能分析的查询支持
- 安全:参数化查询以防止SQL注入
可用工具
1. query_database
在MySQL数据库上执行SELECT查询。
- 输入:SQL SELECT查询和可选参数
- 输出:JSON格式的查询结果
2. update_database
执行INSERT、UPDATE、DELETE、CREATE、ALTER或DROP查询。
- 输入:SQL修改查询和可选参数
- 输出:受影响的行数
3. describe_table
获取特定表的详细架构信息。
- 输入:表名称
- 输出:列定义、数据类型、约束
4. list_tables
检索当前数据库中的所有表名。
- 输出:表名数组
5. list_databases
获取MySQL服务器上所有可用的数据库。
- 输出:数据库名称数组
6. test_connection
验证数据库连接是否正常工作。
- 输出:连接状态
7. explain_query
获取SELECT查询的执行计划。
- 输入:SQL SELECT查询和可选参数
- 输出:查询执行计划明细
安装
- 克隆或创建项目目录:
mkdir mysql-mcp-server
cd mysql-mcp-server- 安装依赖项:
pip install -r requirements.txt或者使用开发安装:
pip install -e .- 设置环境变量:
cp .env.example .env编辑 .env 使用MySQL数据库凭据:
DB_HOST=localhost
DB_PORT=3306
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=your_database_name配置
服务器使用环境变量进行配置。所有设置都可以在您的 .env 文件:
数据库设置
DB_HOST:MySQL服务器主机名(默认值:localhost)DB_PORT:MySQL服务器端口(默认:3306)DB_USER:MySQL用户名(必填)DB_PASSWORD:MySQL密码(必填)DB_NAME:默认数据库名称(可选)DB_CHARSET:字符集(默认值:utf8mb4)
连接池设置
DB_POOL_SIZE:池中的连接数(默认值:10)DB_MAX_OVERFLOW:最大池溢出(默认值:20)
超时设置
DB_CONNECT_TIMEOUT:连接超时(秒)(默认值:10)DB_READ_TIMEOUT:读取超时时间(秒)(默认值:30)DB_WRITE_TIMEOUT:写入超时(秒)(默认值:30)
用法
运行服务器
要运行MCP服务器,请执行以下操作:
python -m mysql_mcp_server.main与MCP客户端一起使用
此服务器实现了模型上下文协议,可以与任何兼容MCP的客户端一起使用。服务器通过stdio进行通信,并提供上面列出的工具。
查询示例
查询数据:
SELECT * FROM users WHERE age > 18 ORDER BY created_at DESC LIMIT 10插入数据:
INSERT INTO users (name, email, age) VALUES (%(name)s, %(email)s, %(age)s)更新数据:
UPDATE users SET last_login = NOW() WHERE id = %(user_id)s获取表结构: 使用 describe_table 表名为“users”的工具
安全注意事项
- 参数化查询:所有查询都支持参数化,以防止SQL注入
- 查询验证:基本验证确保每个工具都有适当的查询类型
- 连接池:具有自动清理功能的高效连接管理
- 错误处理:全面的错误处理和记录
发展
项目结构
mysql_mcp_server/
├── __init__.py # Package initialization
├── main.py # MCP server implementation
├── database.py # Database connection and operations
└── config.py # Configuration management运行测试
pytest tests/代码格式化
black mysql_mcp_server/
ruff mysql_mcp_server/需求
- Python 3.8+
- MySQL 5.7+或MariaDB 10.3+
- 所需的Python包(见requirements.txt):
- mcp>=1.0.0 - PyMySQL>=1.1.0 - python dotenv>=1.0.0 - 媒染剂>=2.0.0
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
贡献
- 复刻仓库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
故障排除
连接问题:
- 验证MySQL服务器是否正在运行且可访问
- 检查中的数据库凭据
.env文件 - 确保MySQL用户具有适当的权限
- 使用测试连接
test_connection工具
权限问题:
- 确保MySQL用户具有SELECT、INSERT、UPDATE、DELETE权限
- 对于模式检查,用户需要访问INFORMATION_schema
性能问题:
- 在配置中调整连接池设置
- 使用EXPLAIN工具分析查询性能
- 考虑为频繁查询的列添加数据库索引
