自然语言转SQL查询服务

MCP(模型上下文协议)服务器,连接PostgreSQL数据库,自动记录模式,并通过严格的模式验证将自然语言查询转换为安全的SQL查询。

  • by ashishvalentinealex
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 ashishvalentinealex/MCP_NLP2SQL

使用说明

使用自然语言处理与数据库交互的模型上下文协议

该项目提供了一个 MCP(模型上下文协议)服务器 它连接到PostgreSQL数据库,自动记录模式,并启用 自然语言→ SQL 通过使用严格的模式验证,以最小的幻觉进行查询。

MCP服务器的自述文件

此MCP服务器使用 FastMCP, SQL炼金术,以及 OpenAI模型 致:

  • 检查并记录你的PostgreSQL模式。
  • 通过MCP公开模式资源(表、列、示例)。
  • 将自然语言查询转换为安全、经过验证的SQL。

需求

  1. PostgreSQL 12+
  2. Python 3.10+
  3. 康达或文维 用于环境设置

依赖关系(requirements.txt):

fastmcp
sqlalchemy
psycopg2-binary
openai
uvicorn

安装说明

  1. 克隆存储库
git clone https://github.com/<your-org>/MCP_NLP2SQL.git
cd nlp2sql-mcp

环境设置

要创建和激活 康达 本项目的环境:

# Create the environment
conda create -n env python=3.10 -y

激活环境

conda activate env

3.安装依赖项

pip安装-r要求.txt

4.设置环境变量

导出DATABASE_URL=“postgresql://user:password@本地主机:5432/db“ 导出OPENAI_API_KEY=“sk-xxxxxxxxxxxxxxxxxxxxx”

使用说明

运行以下命令以设置和使用MCP服务器:

# Generate schema documentation
python generate_schema.py
# Start MCP server
python server.py

MCP资源

warehouse://tables → 列出所有表格

仓库://{表}/列→ 显示列详细信息

仓库://{table}/sample→ 表的前3行

MCP工具

使用JSON-RPC请求调用工具:

nlp2sql

{
  "method": "tools/call",
  "params": {
    "name": "nlp2sql",
    "arguments": { "user_query": "Show all products with quantity > 50" }
  }
}

table_info

{
  "method": "tools/call",
  "params": {
    "name": "table_info",
    "arguments": { "table": "products" }
  }
}

工作流示例

python generate_schema.py python服务器.py

然后用自然语言查询:

{
  "method": "tools/call",
  "params": {
    "name": "nlp2sql",
    "arguments": { "user_query": "List all suppliers and their contact emails" }
  }
}

SQL是安全生成、验证和执行的。

关键参数

ALLOW_WRITE_SQL=假→ 保持查询只读(默认)

最大行数=1000→ 限制查询结果大小

SQL_TIMEOUT_SECONDS=30→ 查询超时

如有疑问,请随时通过我的电子邮件联系我ashishvalentinealex@gmail.com