O

OllamaPostgres 语义查询

@rajeevchandra/mcp-ollama-postgres
0 Stars 29 次浏览 rajeevchandra 更新于 2026-08-23

一个FastMCP服务器,通过集成LLM实现对PostgreSQL数据库的自然语言查询功能,允许用户用简单的英语生成SQL查询并可视化结果。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

🚀 基于 MCP 的 Streamlit 仪表板,结合 Ollama + PostgreSQL

一个现代化的数据分析工具,允许您:

  • 用自然语言查询您的 PostgreSQL 数据库
  • 手动运行 SQL 或使用 LLMs(Ollama)生成 SQL
  • 通过图表、统计数据和导出到 CSV 来分析数据

🧠 提示转 SQL 流程

graph TD
    A[🧑 User types a data question] --> B[Streamlit sends prompt to Ollama API]
    B --> C[Ollama generates SQL query as text]
    C --> D[Streamlit extracts the SQL]
    D --> E[Streamlit sends SQL to MCP server]
    E --> F[MCP executes query on PostgreSQL]
    F --> G[Results returned to Streamlit]
    G --> H[📊 Results shown + Chart + CSV Export]

📦 架构

  • Streamlit – 用户界面 + 图表
  • MCP (FastMCP) – 用于 SQL 查询和表格列表的工具/资源
  • PostgreSQL – 存储您的公司数据
  • Ollama – 将自然语言提示转换为 SQL 的大语言模型

📌 功能

✅ 自然语言 → SQL
✅ 图表(条形图/折线图/时间序列)
✅ CSV 下载
✅ 统计摘要
✅ 提示可解释性及原始输出
✅ 自动检测日期/时间字段
✅ 与 llama3 的 LLM 集成(可配置)


🛠️ 快速开始

git clone <this-repo>
cd postgres-mcp-server
docker-compose up --build

⚙️ 环境配置

MCP_API_URL=http://mcp-server:3333/mcp
OLLAMA_URL=http://ollama:11434/api/generate

📤 提示示例

“列出平均工资大于 50000 的部门”

👉 转换为 SQL:

SELECT department, AVG(salary) FROM employees GROUP BY department HAVING AVG(salary) > 50000;

为什么这是一个适合 MCP 的好案例?

🔗 MCP 使将结构化的工具如 SQL 查询暴露给 LLM 变得极其简单。
🎯 代理可以发现并调用您的工具而无需硬编码逻辑。
💬 您可以同时获得最佳体验——可解释性、灵活性和控制力。

无论您是在构建内部工具、研究仪表板还是智能代理——这种模式都是可重用的、安全的,并且完全本地化。

📄 许可证

MIT