MCP SQL聊天机器人和仪表板
一个Streamlit应用程序,允许用户使用自然语言与SQL数据库交互,并可视化数据库趋势。该应用程序利用MCP(模块化控制协议)连接到SQL服务器,执行查询并生成交互式仪表板。
特性
- 自然语言界面: 用简单的英语询问有关数据库的问题。
- SQL查询生成: 自动将自然语言问题转换为SQL查询。
- 交互式仪表板: 从数据库生成可视化和见解。
- 实时结果: 立即获得对您的询问的回复。
- 可下载的仪表板: 将仪表板导出为HTML文件。
先决条件
- Python 3.10或更高版本
- UV包管理器
- 访问SQL数据库
- OpenAI或Groq的API密钥
环境变量
在中设置以下环境变量 .env 项目根目录中的文件:
MODEL_API_KEY:OpenAI或Groq的API密钥MODEL_ID:要使用的型号ID(例如,Groq的“llama-3.3-70b-university”或OpenAI的“gpt-4”)DB_HOST:数据库服务器的主机名或IP地址DB_USER:数据库的用户名DB_PASSWORD:数据库的密码DB_NAME:数据库的名称
设置和安装
- 克隆存储库:
git clone https://github.com/mcanalescl/MCP-SQL-Chatbot-Dashboard
cd MCP-SQL-Chatbot-Dashboard- 使用UV安装依赖项:
uv sync此命令将:
- 创建虚拟环境(如果不存在) - 安装中列出的所有依赖项 pyproject.toml 文件
- 创建
.env文件:
创建一个 .env 在项目根目录中创建文件并添加环境变量:
DB_HOST=your_db_host
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_NAME=your_db_name
MODEL_API_KEY=your_api_key
MODEL_ID=your_model_id运行应用程序
- 激活虚拟环境:
source .venv/bin/activate # On Linux/macOS
.venv\Scripts\activate # On Windows- 运行Streamlit应用程序:
streamlit run app.py- 访问应用程序:
打开网络浏览器,转到终端中提供的URL(通常 http://localhost:8501).
用法
聊天机器人选项卡
- 提问: 在“聊天机器人”选项卡中,用自然语言键入您对数据库的问题(例如,“列出所有员工”,“最畅销的产品是什么?”)。
- 查看结果: 聊天机器人将以数据的自然语言摘要进行响应。
仪表板选项卡
- 生成仪表板: 在“仪表板”选项卡中,单击“生成仪表板”按钮。
- 查看仪表板: 该应用程序将分析数据库模式,并生成一个带有图表和表格的交互式HTML仪表板。
- 下载仪表板: 单击“下载仪表板HTML”按钮将仪表板另存为HTML文件。
关键组件
agent.py:
- 定义处理自然语言到SQL转换的代理 - 使用MCP工具包与SQL数据库交互 - 实现异步操作以实现高效的数据库通信 - 返回查询结果的自然语言摘要
dashboard_agent.py:
- 处理仪表板生成和可视化 - 分析数据库模式以确定关键指标 - 根据数据类型生成适当的可视化 - 使用Chart.js和Tailwind CSS创建交互式HTML仪表板
app.py:
- 主Streamlit应用程序 - 为聊天机器人和仪表板提供用户界面 - 使用持久事件循环管理异步操作 - 处理会话状态和用户交互
技术细节
- 异步操作: 该应用程序使用Python的asyncio进行高效的数据库操作
- 事件循环管理: 为了Streamlit兼容性,维护了一个持久的事件循环
- MCP集成: 使用最新的MCP库进行SQL server通信
- 型号支持: 兼容OpenAI和Groq语言模型
贡献
欢迎投稿!请随时打开问题或提交pull请求。
许可证
麻省理工学院
