使用说明
项目概述
本项目是一个基于MCP的MySQL数据库查询系统,通过Streamlit提供图形界面。通过MCP接口使用自然语言实现和数据库系统间的交互,查询相关信息,同时实现了一系列的加强功能和安全控制处理。
目录
功能特点
核心功能
- MCP 服务运行:通过MCP服务联通Mysql实例
- 自然语言转SQL:通过MCP接口将自然语言转换为精确的SQL查询
- 数据库结构可视化:直观展示表结构和查询结果信息
- GUI和CLI查询界面:实现了 CLI 和 GUI(Streamlit) 查询界面
高级特性
- SQL安全防护:内置SQL注入检测、敏感字段过滤和只读SQL白名单过滤
- 表结构简化输出:支持按表名过滤返回 schema
- 查询结果分页:支持长结果在GUI下的自动分页返回
- 查询性能优化:自动优化生成的SQL语句
- 查询日志记录:MCP Server记录每次执行的SQL和时间戳
- 数据导出:一键导出查询结果为CSV格式
安装与运行
前置要求
- Python 3.10
- MySQL 8.0+ 数据库
- API密钥
安装步骤
1.克隆仓库
git clone https://github.com/Dr-NIJIKA/MCP_MYSQL.git
cd mcp-mysql
2.设置虚拟环境
# Windows
python -m venv venv
venv\Scripts\activate
# 建议使用Conda(Anaconda/Miniconda)
3.安装依赖
pip install -r requirements.txt
5.配置环境
创建.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
6.运行应用
# 使用GUI界面
streamlit run streamlit_app.py
# 使用CLI界面
python mcp_service.py # 启动服务
python cli.py # 使用cli界面
使用指南
1.连接数据库
- 在侧边栏输入数据库名称(默认为college)
- 测试连接确保配置正确
2.执行查询
- 在输入框中输入想要查询的内容
示例查询:- "显示历史系的学生"
- "查询所有拥有前置课程的课"
3.结果浏览
- 输出生成的SQL语句
- 使用分页控件浏览数据
- 可以在侧边栏选择所需的分页页面大小
- 可以选择上(下)一页 或 输入页码跳转来进行页面的转换
4.表结构查看:
- 勾选"显示表结构"查看详细字段信息
- 输入所需要查看的表名,获取表结构
5.结果导出:
- 点击“导出全部结果为CSV”,即可保存所得结果
技术架构
核心组件:
- 前端界面::基于Streamlit构建的响应式GUI
- LLM API交互: Deepseek自然语言处理
- MCP服务:基于MCP的服务器,与Mysql数据库进行交互