MCP数据库服务器和聊天机器人
该项目提供了一个基于FastAPI的服务器,用于与MySQL数据库交互,以及一个简化的命令行聊天机器人来查询数据库。
项目理念
核心思想是提供一个用户友好的界面来访问和检索MySQL数据库中的数据,而不需要直接的SQL知识。FastAPI服务器提供了一个强大的API,聊天机器人充当客户端,将用户命令转换为API调用。
功能
FastAPI服务器(main.py, database.py)
FastAPI服务器为数据库操作提供RESTful API:
database.py:使用SQLAlchemy处理MySQL数据库连接,管理会话,检索表模式,列出表名,并执行原始SQL查询。
main.py:使用以下端点定义FastAPI应用程序:
- GET /tables:列出连接数据库中所有可用的表名。 - GET /tables/{table_name}/schema:返回指定表的架构(列名和类型)。 - POST /sql:允许执行原始SQL查询(主要用于高级/内部使用)。 - GET /query/{table_name}:主要数据检索端点。它支持: - 按列值过滤记录(例如。, status=active). - 限制结果数量(limit=X). - 抵消分页结果(offset=Y). - 订购结果(order_by=column DESC/ASC). - 选择特定列 (columns=col1,col2). - 筛选器的列名匹配不区分大小写。
聊天机器人(chatbot.py)
命令行聊天机器人充当FastAPI服务器的客户端,支持交互式数据库查询:
- 简化交互聊天机器人完全基于显式命令运行,没有自然语言处理(NLP)或LLM集成。
- 命令:
- help:显示所有可用命令及其用法的列表。 - list tables:显示数据库中的所有表名。 - list schemas:显示所有表名及其完整架构(列和类型)。 - get schema [table_name]:提供特定表的架构。 - query:数据检索的主要命令,提供两种模式: - 交互模式:打字 query 没有参数会启动一个引导过程来选择表、应用过滤器和选择特定列。它还允许切换表或退出查询会话。 - 直接命令模式:允许用户在一行中指定所有查询参数。支持灵活的列选择(例如。, query email,name user_table limit=3 或 query user_table columns=email,name limit=3).
设置和运行
- 克隆存储库:
git clone https://github.com/ARehman-Nets/mcp_server_from_db.git
cd mcp_server_from_db- 设置Python虚拟环境:
python -m venv venv
./venv/Scripts/activate # On Windows
# source venv/bin/activate # On Linux/macOS- 再进行:
pip install -r requirements.txt- 配置环境变量:
- 创建一个 .env 使用MySQL数据库凭据在项目根目录中创建文件:
DB_HOST=your_db_host
DB_PORT=your_db_port
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_NAME=your_db_name- 创建一个 .env.chatbot 项目根目录中具有FastAPI服务器URL的文件:
MCP_SERVER_URL=http://localhost:8000- 运行FastAPI服务器:
uvicorn main:app --reload服务器通常运行在 http://127.0.0.1:8000.
- 运行聊天机器人:
python chatbot.py然后,您可以使用以下命令 help, list tables, list schemas, get schema [table_name],以及 query 与您的数据库进行交互。
未来的增强功能
- 重新集成LLM以进行自然语言查询,可能会使用更强大的工具调用框架。
- 在FastAPI服务器中添加对更复杂的分析查询和报告功能的支持。
- 通过适当的访问控制实现数据修改(INSERT、UPDATE、DELETE)功能。
