SQL数据库自然语言查询工具

一个基于MCP的桥接工具,提供自然语言到SQL的转换、执行和结果总结功能,适用于Microsoft SQL Server数据库。

  • by prateek200445
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 prateek200445/mcp_client_for_sql

使用说明

MSSQL MCP服务器--自述

概述

  • 此项目提供了一个基于MCP的小型桥接器,用于连接Microsoft SQL Server数据库:
    • server.py --MCP服务器提供列出模式和执行SQL的工具。
    • main_client.py --CLI客户端管道:NL→ SQL(Gemini)→ 执行→ 总结。
    • api.py --FastAPI包装器,用于保存长寿命的MCP ClientSession并公开端点。
    • stream_app.py --Streamlit聊天UI,将用户问题转换为SQL,运行查询并总结结果。

先决条件

  • Python 3.8+
  • 用于SQL Server和 pyodbc 已安装/配置。
  • 所需的Python包(示例):
    • streamlit、fastapi、uvicorn、python dotenv、pyodbc、谷歌生成人工智能(genai)、mcp
  • A. .env 为DB和API键设置的文件或环境变量。

所需的环境变量

  • GOOGLE_API_KEY-Gemini/生成AI API密钥。
  • MSSQL_HOST--SQL Server主机(或IP)。
  • MSSQL_USER--数据库用户名。
  • MSSQL_PASSWORD——数据库密码。
  • MSSQL_DATABASE--数据库名称。 可选:
  • MSSQL_DRIVER(默认值:“SQL Server”)
  • TrustServerCertificate(默认:“是”)
  • Trusted_Connection(默认值:“否”)

快速启动(从包目录 .../src/mssql_mcp_server)

  1. 安装依赖项(示例):

    • pip安装-r要求.txt
    • 或者pip安装streamlit fastapi uvicorn python dotenv pyodbc谷歌生成ai mcp
  2. 配置环境:

    • 创建一个 .env 使用上述变量创建文件,或将其导出到您的环境中。
  3. 启动MCP服务器(在终端中)

    • python服务器.py
    • 服务器通过stdio公开MCP工具(客户端使用 python server.py).
  4. 运行FastAPI服务器(可选)

    • uvicorn api:应用程序--重新加载--端口8000
    • 终点:
      • GET/健康
      • GET/模式
      • POST/nl2sql{“提示”:“…”}
      • POST/执行{“query”:“…”}
      • POST/query{“prompt”:“…”}--完整管道:NL→ SQL → 执行→ 总结
  5. 运行Streamlit聊天UI

    • streamlit运行stream_app.py
    • Streamlit应用程序将生成一个启动的短期MCP客户端 server.py 如果需要的话。确保 server.py 可以从工作目录访问。

注意事项和提示

  • 该项目使用Gemini(谷歌生成人工智能)。确保 GOOGLE_API_KEY 已设置并具有所需的配额/权限。
  • ODBC驱动程序:在Windows上使用用于SQL Server的Microsoft ODBC驱动程序。在Linux上,安装相应的unixODBC和Microsoft驱动程序包。
  • 连接错误:
    • 验证中的ODBC连接字符串值 .env.
    • 检查驾驶员姓名--调整 MSSQL_DRIVER 如果需要的话。
  • 安全:永不承诺 .env 持有证书。使用秘密经理进行生产。

故障排除

  • 如果API报告“MCP ClientSession not ready”(MCP客户端会话未就绪),请检查服务器日志并确保 server.py 可以连接到数据库。
  • 如果Gemini调用失败,请验证网络访问和API密钥。
  • 对于pyodbc问题,请尝试运行一个简单的pyodbc连接脚本来验证ODBC驱动程序和凭据。

参考文献(关键文件)

  • server.py--MCP服务器:公开 get_schema 和 execute_sql.
  • main_client.py--NL→SQL和使用Gemini总结助手;也是CLI管道。
  • api.py——创建持久化MCP ClientSession和HTTP端点的FastAPI包装器。
  • stream_app.py——利用管道的Streamlit聊天界面。

许可/归属

  • 此存储库包含集成胶水和示例代码。确保第三方库(如Gemini/genai)按照其条款使用。