
MySQL查询服务器

2025.04.08
6
Python数据库查询数据库管理数据库
MySQL查询服务器是一个基于MCP(Model-Controller-Provider)框架的MySQL查询服务器,提供了通过SSE(Server-Sent Events)进行MySQL数据库操作的功能。该服务器支持实时数据传输、完整的日志记录系统、自动事务管理以及SQL安全检查机制,适用于需要安全、高效地操作MySQL数据库的场景。
View on GitHub
Overview
基本能力
产品定位
MySQL查询服务器是一个基于MCP框架的MySQL数据库操作工具,提供安全、高效的数据库查询和管理功能。
核心功能
- 基于FastMCP框架构建
- 支持SSE(Server-Sent Events)实时数据传输
- 提供MySQL数据库查询接口
- 完整的日志记录系统
- 自动事务管理(提交/回滚)
- 环境变量配置支持
- SQL安全检查机制
- 风险等级控制
- SQL注入防护
- 危险操作拦截
- WHERE子句强制检查
- 自动返回修改操作影响的行数
- 敏感信息保护机制
- 自动对元数据查询结果进行格式化和增强
适用场景
- 需要实时查询MySQL数据库的应用
- 需要安全执行SQL操作的场景
- 需要自动化管理MySQL数据库的任务
- 需要保护敏感信息的数据库操作
工具列表
- 基础查询工具
-
mysql_query
: 执行任意SQL查询,支持参数化查询 -
元数据查询工具
mysql_show_tables
: 获取数据库中的表列表,支持模式匹配和限制结果数量mysql_show_columns
: 获取表的列信息mysql_describe_table
: 描述表结构-
mysql_show_create_table
: 获取表的创建语句 -
数据库信息查询工具
mysql_show_databases
: 获取所有数据库列表,支持过滤系统数据库mysql_show_variables
: 获取MySQL服务器变量-
mysql_show_status
: 获取MySQL服务器状态信息 -
表结构高级查询工具
mysql_show_indexes
: 获取表的索引信息mysql_show_table_status
: 获取表状态信息mysql_show_foreign_keys
: 获取表的外键约束信息mysql_paginate_results
: 提供结果分页功能
常见问题解答
- DELETE操作未执行成功
- 检查DELETE操作是否包含WHERE条件
- 无WHERE条件的DELETE操作被标记为CRITICAL风险级别
- 确保环境变量ALLOWED_RISK_LEVELS中包含CRITICAL(如果需要执行该操作)
-
检查影响行数返回值,确认操作是否实际影响了数据库
-
环境变量未生效
- 确保在server.py中的load_dotenv()调用发生在导入其他模块之前
- 重启应用以确保环境变量被正确加载
-
检查日志中"从环境变量读取到的风险等级设置"的输出
-
操作被安全机制拒绝
- 检查操作的风险级别是否在允许的范围内
- 如果需要执行高风险操作,相应地调整ALLOWED_RISK_LEVELS
-
对于不带WHERE条件的UPDATE或DELETE,可以添加条件(即使是WHERE 1=1)降低风险级别
-
无法查看敏感信息
- 在开发环境中,设置ALLOW_SENSITIVE_INFO=true
- 在生产环境中,敏感信息默认会被隐藏,这是安全特性
使用教程
使用依赖
- 确保已安装Python 3.6+和MySQL服务器
- 安装依赖包:
pip install mysql-connector-python python-dotenv mcp
安装教程
- 克隆项目到本地:
git clone [项目地址]
cd mysql-query-server
- 安装依赖包:
pip install -r requirements.txt
- 配置环境变量:
- 复制
.env.example
文件并重命名为.env
- 根据实际情况修改
.env
文件中的配置
调试方式
- 启动服务器:
python src/server.py
- 检查日志输出,确保服务器正常运行
- 使用工具进行查询,验证功能是否正常