SQL生成服务

一个基于FastAPI和Ollama AI的本地开发环境,能够将用户问题转换为安全的SQL查询并在PostgreSQL数据库中执行。

  • by smolyakov26
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 smolyakov26/mcp

使用说明

项目概述

该项目使用Docker建立了一个本地开发环境 编写,包括:-带初始化脚本的PostgreSQL数据库- Ollama AI模型服务器-基于FastAPI的自定义MCP服务器,可生成 通过Ollama执行SQL并安全执行


📦 服务

1.PostgreSQL(db)

  • 官方运行 postgres:16 图像
  • 暴露端口 5432
  • 使用来自的SQL脚本初始化数据库 db-init/
  • 包括健康检查,以确保在依赖服务之前做好准备 开始

2.奥拉马(奥拉马)

  • 跑 ollama/ollama:latest
  • 暴露端口 11434
  • 将下载的模型存储在Docker卷中

3.MCP服务器(FastAPI)

  • 由……建立 mcp/Dockerfile
  • 取决于数据库服务是否正常
  • 暴露端口 3001
  • 自动启动时:
    • 等待Ollama
    • 确保模型 qwen2.5-coder 被拉动

🚀 安装说明

运行安装脚本:

./setup.sh

这将:1。构建2。 在后台启动服务3。短暂等待并显示服务状态


🔗 服务URL

  • MCP API根: http://localhost:3001
  • 健康检查: http://localhost:3001/health
  • API Ollama: http://localhost:11434
  • PostgreSQL: 本地主机:5432

🧪 示例测试请求

curl -X POST http://localhost:3001/ask   -H "Content-Type: application/json"   -d '{"question": "Show me all users"}'

📁 重要文件

docker-compose.yaml

定义所有服务、卷、网络和依赖关系。

setup.sh

自动重建+启动+健康信息。

db-init/init.sql

创建一个 users 表并插入示例用户(Alice、Bob、Charlie)。

mcp/Dockerfile

安装了依赖项的最小Python映像。

mcp/server.py

FastAPI服务器:-等待Ollama并确保所需型号 已下载-显示 /ask 终结点:-转换用户 向SQL提问-仅确保 SELECT 允许查询-执行 PostgreSQL上的SQL并返回JSON结果


✅ 特性

  • 安全SQL执行(仅限SELECT)
  • 自动模型拉取
  • 自动数据库初始化
  • 健康端点验证DB+Ollama

🛠️ 未来的增强功能

  • 添加日志中间件
  • 支持其他表或模式
  • 允许Ollama的流式响应