使用自然语言处理与数据库交互的模型上下文协议
该项目提供了一个 MCP(模型上下文协议)服务器 它连接到PostgreSQL数据库,自动记录模式,并启用 自然语言→ SQL 通过使用严格的模式验证,以最小的幻觉进行查询。
MCP服务器的自述文件
此MCP服务器使用 FastMCP, SQL炼金术,以及 OpenAI模型 致:
- 检查并记录你的PostgreSQL模式。
- 通过MCP公开模式资源(表、列、示例)。
- 将自然语言查询转换为安全、经过验证的SQL。
需求
- PostgreSQL 12+
- Python 3.10+
- 康达或文维 用于环境设置
依赖关系(requirements.txt):
fastmcp
sqlalchemy
psycopg2-binary
openai
uvicorn安装说明
- 克隆存储库
git clone https://github.com//MCP_NLP2SQL.git
cd nlp2sql-mcp环境设置
要创建和激活 康达 本项目的环境:
# Create the environment
conda create -n env python=3.10 -y激活环境
conda activate env3.安装依赖项
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.pyMCP资源
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→ 查询超时
