PostgreSQL自然语言查询服务

该服务通过集成LLM和MCP服务器,允许用户使用自然语言查询PostgreSQL数据库,适用于数据探索和交互式分析场景。

  • by CleverCloud
  • JavaScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 CleverCloud/mcp-pg-example

使用说明

Clever Cloud上的PostgreSQL MCP服务器与LLM聊天示例

概述

此存储库演示了如何在上部署Node.js应用程序 聪明的云 它使用PostgreSQL的模型上下文协议(MCP)服务器以及语言模型来实现PostgreSQL数据库的自然语言查询。

该应用程序允许用户使用自然语言查询与PostgreSQL数据库交互,这些查询使用LLM转换为SQL,然后使用MCP服务器对数据库执行。

实际应用程序的屏幕截图,显示PostgreSQL数据库的自然语言查询

示例数据:RAGmonsters

此示例使用 RAG制造商 数据集作为样本数据。RAGmonsters是一个开放的数据集,旨在测试和演示检索增强生成(RAG)系统。它包含有关具有丰富属性、能力和关系的虚构怪物的信息,使其非常适合自然语言查询演示。

PostgreSQL版本的RAGmonsters提供了一个结构良好的关系数据库,具有多个表和关系,允许复杂的查询,展示了通过MCP将自然语言处理与结构化数据库访问相结合的能力。

先决条件

项目结构

├── .env.example        # Example environment variables
├── package.json        # Node.js project configuration
├── README.md           # This documentation
├── img/                # Images for documentation
│   └── screenshot.jpg  # Application screenshot
├── scripts/
│   ├── initializeDb.js # Script to initialize the database with RAGmonsters data
│   └── testMCP.js      # Script to test MCP server with LLM integration
├── src/
│   ├── index.js        # Main application server
│   ├── llm.js          # LangChain integration for LLM
│   ├── mcp-client.js   # MCP client for PostgreSQL
│   └── public/         # Web interface files
│       └── index.html  # Chat interface

特性

  • 使用自然语言探索PostgreSQL数据库
  • MCP服务器与PostgreSQL官方实现的集成
  • 用于LLM交互的LangChain.js集成
  • 与数据库聊天的简单web界面
  • 带有API端点的Express.js后端

地方发展

  1. 克隆此存储库
  2. 安装依赖项:
npm install
  1. 通过复制配置环境变量 .env.example 向 .env 并更新这些值:
cp .env.example .env
  1. 更新 .env 带有PostgreSQL连接详细信息和LLM API密钥的文件。

  2. 使用RAGmonsters示例数据初始化数据库:

node scripts/initializeDb.js

此脚本将克隆RAGmonsters存储库,并用示例数据填充PostgreSQL数据库。

  1. 测试MCP服务器和LLM集成:
node scripts/testMCP.js

此脚本将使用MCP服务器连接到PostgreSQL数据库,并使用LLM将自然语言查询转换为SQL。它展示了没有web界面的应用程序的核心功能。

  1. 启动开发服务器:
npm run dev

您的申请将在http://localhost:8080(或您指定的端口 .env 文件)。

运作原理

  1. 应用程序使用提供的连接详细信息连接到PostgreSQL数据库
  2. MCP服务器提供了一种与数据库交互的标准化方式
  3. 当你用自然语言提问时,应用程序:
    • 使用MCP服务器检索数据库架构
    • 将您的问题与模式一起发送给LLM
    • LLM生成适当的SQL查询
    • 使用MCP服务器对数据库执行查询
    • 结果显示在web界面中

使用testMCP.js进行测试

这 testMCP.js 脚本演示了没有web界面的应用程序的核心功能:

  1. 环境设置:从加载环境变量 .env 文件,包括PostgreSQL连接URI和LLM API密钥
  2. MCP服务器初始化:使用StdioClientTransport将PostgreSQL MCP服务器作为子进程启动
  3. LLM集成:使用PostgreSQL语法的详细说明配置ChatOpenAI模型
  4. 代理创建:设置一个LangChain ReAct代理,将LLM与MCP工具相结合
  5. 查询执行:处理自然语言查询,将其转换为SQL,并对数据库执行
  6. 结果显示:以格式化的响应显示结果

此脚本可用于:

  • 测试数据库连接
  • 验证MCP服务器是否正常工作
  • 确保LLM能够生成有效的PostgreSQL查询
  • 在没有web界面的情况下探索数据库模式和数据

部署到Clever Cloud

使用Clever Cloud CLI

  1. 安装Clever Cloud命令行界面:

    npm install -g clever-tools
    
  2. 登录您的Clever Cloud帐户:

    clever login
    
  3. 创建新应用程序:

    clever create --type node <APP_NAME>
    
  4. 添加您的域名(可选但推荐):

    clever domain add <YOUR_DOMAIN_NAME>
    
  5. 创建一个PostgreSQL插件并将其链接到您的应用程序:

    clever addon create <APP_NAME>-pg --plan dev
    clever service link-addon <APP_NAME>-pg
    

    这将自动设置 POSTGRESQL_ADDON_URI 应用程序中的环境变量。

  6. 设置所需的环境变量:

    clever env set LLM_API_KEY "your-openai-api-key"
    clever env set LLM_API_MODEL "gpt-4o-mini" # Optional, defaults to gpt-4o-mini
    clever env set LLM_API_URL "https://api.your-llm-provider.com" # Optional, for alternative OpenAI-compatible providers
    
  7. 部署您的应用程序:

    clever deploy
    
  8. 打开您的应用程序:

    clever open
    

使用Clever Cloud控制台

您还可以直接从 聪明的云控制台:

  1. 在控制台中创建新应用程序
  2. 选择Node.js作为运行时
  3. 创建PostgreSQL插件并将其链接到您的应用程序
  4. 在控制台中设置所需的环境变量:
    • LLM_API_KEY:您的OpenAI API密钥
    • LLM_API_MODEL:(可选)要使用的型号,默认为gpt-4o-mini
  5. 使用Git或GitHub集成部署您的应用程序

重要提示

  • 这 POSTGRESQL_ADDON_URI 当您将PostgreSQL插件链接到应用程序时,Clever Cloud会自动设置环境变量
  • 该应用程序需要Node.js 20或更高版本,这在Clever Cloud上可用
  • 该应用程序将自动在8080端口上运行,这是Clever Cloud上Node.js应用程序的默认端口

环境变量

以下环境变量用于配置应用程序:

变量 描述 示例值 必填
POSTGRESQL_ADDON_URI PostgreSQL连接URI(由Clever Cloud自动提供) postgresql://user:password@host:port/database 是的
PORT 服务器将侦听的端口 8080 否(默认为8080)
LLM_API_KEY OpenAI服务的API密钥 sk-... 是的
LLM_API_MODEL LLM服务使用的模型 gpt-4o-mini 否(默认为gpt-4o-mini)
LLM_API_URL 与OpenAI兼容的API的基本URL https://api.openai.com/v1 否(默认为OpenAI)

故障排除

如果您遇到问题:

  1. 检查应用程序日志: clever logs
  2. 验证所有环境变量是否设置正确: clever env
  3. 确保您的应用程序正在运行: clever status

资源

许可证

此示例是根据MIT许可条款提供的。