MySQL数据库 MCP 服务
这是一个专为 Cursor 设计的MySQL数据库 MCP (Model Context Protocol) 服务,提供表结构查询、文档生成和数据查询功能。
功能特性
- Cursor 专用集成: 专为 Cursor MCP 协议设计的数据库服务
- 多种安全模式: 支持只读、限制写入、完全访问三种安全级别
- 表结构查询: 获取数据库表的详细结构信息
- 文档生成: 生成 Markdown、JSON、SQL 格式的表结构文档
- 数据库概览: 生成整个数据库的概览文档
- SQL 查询执行: 根据安全模式执行不同级别的 SQL 操作
- 查询缓存: 自动缓存查询结果,提升性能
安全模式
1. 只读模式 (readonly) - 默认模式
- 仅允许 SELECT、SHOW、DESCRIBE、EXPLAIN 等查询操作
- 禁止所有写入和危险操作
- 适用于数据分析和报表查询
2. 限制写入模式 (limited_write)
- 允许 SELECT、INSERT、UPDATE 操作
- 禁止 DELETE、DROP、CREATE、ALTER 等危险操作
- 适用于需要数据录入但要保护结构的场景
3. 完全访问模式 (full_access)
- 允许所有 SQL 操作
- 谨慎使用,仅在完全信任的环境中启用
- 适用于数据库管理和维护
安装和配置
1. 本地安装依赖
cd mysql-mcp
pip install -r requirements.txt
2. 在 Cursor 中配置
在 Cursor 的设置中找到 MCP 配置,添加以下内容:
{
"mcpServers": {
"mysql-mcp": {
"command": "python",
"args": ["F:/path/to/mysql-mcp/main.py"],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USERNAME": "your_username",
"MYSQL_PASSWORD": "your_password",
"MYSQL_DATABASE": "your_database",
"MYSQL_SECURITY_MODE": "readonly",
"MYSQL_ALLOWED_SCHEMAS": "*",
"MYSQL_ENABLE_QUERY_LOG": "false"
}
}
}
}
3. 环境变量说明
必需环境变量:
MYSQL_HOST: 数据库主机地址MYSQL_PORT: 数据库端口MYSQL_USERNAME: 数据库用户名MYSQL_PASSWORD: 数据库密码MYSQL_DATABASE: 数据库名称
可选环境变量:
MYSQL_SECURITY_MODE: 安全模式 (readonly/limited_write/full_access,默认:readonly)MYSQL_ALLOWED_SCHEMAS: 允许访问的数据库列表,支持三种配置方式:"*": 允许访问所有有权限的数据库(推荐)"auto": 自动发现有权限的数据库"db1,db2,db3": 明确指定数据库列表(逗号分隔)
MYSQL_CONNECT_TIMEOUT: 连接超时时间(秒,默认:30)MYSQL_QUERY_TIMEOUT: 查询超时时间(秒,默认:60)MYSQL_MAX_RETRIES: 最大重试次数(默认:3)MYSQL_ENABLE_QUERY_LOG: 是否启用查询日志(true/false,默认:false)MYSQL_MAX_RESULT_ROWS: 最大返回行数(默认:1000)
使用示例
获取安全信息
在 Cursor 中输入:
@mysql-mcp 获取当前安全配置信息
查看可访问的数据库
@mysql-mcp 获取所有可访问的数据库
查询表列表
@mysql-mcp 列出 mydb 数据库中的所有表
查看表结构
@mysql-mcp 描述 users 表的结构
执行查询(只读模式)
@mysql-mcp 查询用户表前10条记录
生成表文档
@mysql-mcp 为users表生成Markdown文档
生成数据库概览
@mysql-mcp 生成mydb数据库的概览文档
可用工具
| 工具名称 | 功能描述 | 主要参数 |
|---|---|---|
test_connection | 测试数据库连接 | - |
get_security_info | 获取安全配置信息 | - |
list_tables | 获取数据库表列表 | database(可选) |
describe_table | 获取表详细结构 | table_name, database(可选) |
generate_table_doc | 生成表文档 | table_name, format, database(可选) |
generate_database_overview | 生成数据库概览 | database(可选) |
execute_query | 执行SQL语句 | sql |
list_schemas | 获取可用数据库列表 | - |
文档生成说明
文档生成功能会将生成的文档保存为实际文件:
- 保存位置: mysql-mcp目录下的
docs/文件夹 - 文件命名:
{database}_{table_name}_{timestamp}.{ext}格式 - 支持格式: Markdown (.md)、JSON (.json)、SQL (.sql)
示例输出:
✅ 文档生成成功!
📁 保存路径: docs/mydb_users_20250110_142000.md
📂 MCP服务目录: F:/path/to/mysql-mcp
📊 表名: mydb.users
📝 格式: markdown
⏰ 生成时间: 2025-01-10 14:20:00
缓存管理
该服务提供查询缓存功能,自动缓存只读查询的结果:
# 获取缓存统计信息
@mysql-mcp 获取查询缓存统计信息
# 清空缓存
@mysql-mcp 清空查询缓存
安全注意事项
- 生产环境建议使用
readonly模式 - 敏感环境中避免使用
full_access模式 - 密码安全:避免在配置中使用弱密码
- 网络安全:确保数据库连接使用安全的网络通道
- 权限最小化:数据库用户只应获得必要的最小权限
错误处理
- 配置错误: 检查 Cursor MCP 配置中的环境变量设置
- 连接失败: 验证数据库连接参数和网络连通性
- 权限不足: 检查数据库用户权限和安全模式设置
- SQL 被拒绝: 当前安全模式不允许执行该类型的 SQL 操作
技术架构
核心模块
main.py: MCP服务主程序config.py: 环境变量配置模块database.py: 数据库操作和安全控制模块document_generator.py: 文档生成模块
安全控制
- 多级安全模式验证
- SQL语句类型检查
- 数据库访问权限控制
- 查询结果行数限制
- 连接超时和重试机制
MySQL适配
- 使用 mysql-connector-python 驱动连接
- 适配MySQL系统表查询语法
- 支持MySQL约束类型识别
- 适配MySQL数据类型映射
许可证
本项目基于 MIT 许可证 开源发布。
- ✅ 自由使用: 允许任何人免费使用、复制、修改本软件
- ✅ 商业友好: 支持商业使用和分发
- ✅ 修改自由: 可以修改源代码并发布衍生作品
- ✅ 最小限制: 只需保留版权声明即可
版本: 1.0.0
更新时间: 2025-01-10
设计目标: 专为MySQL数据库和 Cursor MCP 集成优化
