项目介绍
项目概述
该项目是一个基于MCP的MySQL数据库查询系统,通过Streamlit提供图形用户界面。通过MCP接口,使用自然语言与数据库系统进行交互,查询相关信息,并实现一系列增强功能和安全控制处理。
目录
功能特点
核心功能
- MCP服务操作:通过MCP服务连接MySQL实例
- 自然语言到SQL转换:通过MCP接口将自然语言转换成精确的SQL查询
- 数据库结构可视化:直观显示表结构和查询结果信息
- GUI和CLI查询界面:实现了CLI和GUI(Streamlit)查询界面
高级功能
- SQL安全防护:内置SQL注入检测、敏感字段过滤和只读SQL白名单过滤
- 简化表结构输出:支持按表名过滤返回模式
- 查询结果分页:支持在GUI中自动分页并返回长结果
- 查询性能优化:自动优化生成的SQL语句
- 查询日志记录:MCP服务器记录每次执行的SQL和时间戳
- 数据导出:一键导出查询结果至CSV格式
安装与运行
前置条件
- Python 3.10
- MySQL 8.0+数据库
- API Key
安装步骤
一克隆仓库
git clone https://github.com/Dr-NIJIKA/MCP_MYSQL.git
cd mcp-mysql
二设置虚拟环境
# Windows
python -m venv venv
venv\Scripts\activate
# 建议使用Conda(Anaconda/Miniconda)
三安装依赖
pip install -r requirements.txt
五配置环境
创建.env文件:
# 数据库配置
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=college # 默认
# Deepseek API配置
DEEPSEEK_API_KEY=your_api_key
POOL_SIZE=5
六运行应用
# 使用GUI界面
streamlit run streamlit_app.py
# 使用CLI界面
python mcp_service.py # 启动服务
python cli.py # 使用cli界面
用户指南
一连接数据库
- 在侧边栏输入数据库名称(默认是college)
- 测试连接以确保正确配置
二执行查询
三浏览结果
- 输出生成的SQL语句
- 使用分页控件浏览数据
- 您可以在侧边栏选择所需的分页大小
- 您可以选择向上(向下)或输入页码跳转到下一页进行页面转换
四查看表结构:
- 勾选“显示表结构”以查看详细的字段信息
- 输入要查看的表名并获取表结构
五结果导出:
技术架构
核心组件:
- 前端界面:基于Streamlit构建的响应式GUI
- LLM API交互:Deepseek自然语言处理
- MCP服务:基于MCP的服务器与MySQL数据库交互
参考项目:
meanands/mysql-mcp