MCP数据库助手是一款由人工智能驱动的多数据库助手,它基于OpenAI的GPT模型和模型上下文协议(MCP)构建。该项目展示了如何创建一个智能数据库查询接口,该接口能够理解自然语言请求,并在具备完整模式感知的情况下,跨MySQL、Oracle和SQLite数据库执行SQL查询。
.python-version 中指定).db)macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows:
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
替代方法(通过pip):
pip install uv
git clone https://github.com/sharansahu/mcp-sql
cd mcp-sql
# 创建虚拟环境并安装依赖项
uv sync
在项目根目录创建一个 .env 文件,并进行数据库配置:
对于SQLite:
# OpenAI配置
OPENAI_API_KEY=your_openai_api_key_here
# 数据库配置
DB_TYPE=sqlite
DB_PATH=./dod_synthetic.db
对于MySQL:
# OpenAI配置
OPENAI_API_KEY=your_openai_api_key_here
# 数据库配置
DB_TYPE=mysql
DB_HOST=localhost
DB_PORT=3306
DB_NAME=your_database_name
DB_USER=your_username
DB_PASSWORD=your_password
对于Oracle:
# OpenAI配置
OPENAI_API_KEY=your_openai_api_key_here
# 数据库配置
DB_TYPE=oracle
DB_USER=your_username
DB_PASSWORD=your_password
DB_DSN=hostname:port/service_name
uv run python mcp_client.py
该AI助手可以处理各种类型的数据库查询:
MCP服务器提供了几个强大的数据库交互工具:
get_schema() - 获取包含示例数据的完整数据库模式list_tables() - 列出所有可用的表describe_table(table_name) - 获取详细的表信息,包括列和示例数据search_tables(keyword) - 通过关键字查找表/列query_data(sql) - 安全地执行SQL查询Flask应用程序提供了几个REST API端点:
GET / - 提供主网页界面POST /api/query - 处理自然语言查询(返回详细状态)POST /api/chat - 替代查询端点(返回简化响应)POST /api/clear - 清除聊天会话历史记录GET /api/history - 检索聊天历史记录GET /health - 健康检查端点DB_TYPE 环境变量加载适当的MCP服务器“Invalid DB_TYPE”错误
DB_TYPE 设置为 sqlite、mysql 或 oracle 之一.env 文件格式是否正确“No module named 'openai'”
uv sync # 重新安装依赖项
“OPENAI_API_KEY not found”
.env 文件存在并包含API密钥数据库连接错误
DB_PATH 是否指向数据库文件DB_HOST、DB_PORT、DB_NAME、DB_USER 和 DB_PASSWORDDB_USER、DB_PASSWORD 和 DB_DSN 格式网页界面无法加载
static/ 目录中MySQL连接问题:
Oracle连接问题:
使用额外的日志运行:
FLASK_DEBUG=True uv run python mcp_client.py
.env 文件当前设置针对使用Flask开发服务器的本地开发进行了优化。
本项目采用MIT许可证 - 详情请参阅 LICENSE 文件。