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

概述
此存储库演示了如何在上部署Node.js应用程序 聪明的云 它使用PostgreSQL的模型上下文协议(MCP)服务器以及语言模型来实现PostgreSQL数据库的自然语言查询。
该应用程序允许用户使用自然语言查询与PostgreSQL数据库交互,这些查询使用LLM转换为SQL,然后使用MCP服务器对数据库执行。
Application Screenshot *实际应用程序的屏幕截图,显示PostgreSQL数据库的自然语言查询*
示例数据:RAGmonsters
此示例使用 RAG制造商 数据集作为样本数据。RAGmonsters是一个开放的数据集,旨在测试和演示检索增强生成(RAG)系统。它包含有关具有丰富属性、能力和关系的虚构怪物的信息,使其非常适合自然语言查询演示。
PostgreSQL版本的RAGmonsters提供了一个结构良好的关系数据库,具有多个表和关系,允许复杂的查询,展示了通过MCP将自然语言处理与结构化数据库访问相结合的能力。
先决条件
- A. 聪明的云 账户
- Clever Tools命令行界面 已安装并配置
- Node.js 23或更高版本
- PostgreSQL数据库
- 访问LLM API(例如,OpenAI)
项目结构
├── .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后端
地方发展
- 克隆此存储库
- 安装依赖项:
npm install- 通过复制配置环境变量
.env.example向.env并更新这些值:
cp .env.example .env- 更新
.env带有PostgreSQL连接详细信息和LLM API密钥的文件。
- 使用RAGmonsters示例数据初始化数据库:
node scripts/initializeDb.js此脚本将克隆RAGmonsters存储库,并用示例数据填充PostgreSQL数据库。
- 测试MCP服务器和LLM集成:
node scripts/testMCP.js此脚本将使用MCP服务器连接到PostgreSQL数据库,并使用LLM将自然语言查询转换为SQL。它展示了没有web界面的应用程序的核心功能。
- 启动开发服务器:
npm run dev您的申请将在http://localhost:8080(或您指定的端口 .env 文件)。
运作原理
- 应用程序使用提供的连接详细信息连接到PostgreSQL数据库
- MCP服务器提供了一种与数据库交互的标准化方式
- 当你用自然语言提问时,应用程序:
- 使用MCP服务器检索数据库架构 - 将您的问题与模式一起发送给LLM - LLM生成适当的SQL查询 - 使用MCP服务器对数据库执行查询 - 结果显示在web界面中
使用testMCP.js进行测试
这 testMCP.js 脚本演示了没有web界面的应用程序的核心功能:
- 环境设置:从加载环境变量
.env文件,包括PostgreSQL连接URI和LLM API密钥 - MCP服务器初始化:使用StdioClientTransport将PostgreSQL MCP服务器作为子进程启动
- LLM集成:使用PostgreSQL语法的详细说明配置ChatOpenAI模型
- 代理创建:设置一个LangChain ReAct代理,将LLM与MCP工具相结合
- 查询执行:处理自然语言查询,将其转换为SQL,并对数据库执行
- 结果显示:以格式化的响应显示结果
此脚本可用于:
- 测试数据库连接
- 验证MCP服务器是否正常工作
- 确保LLM能够生成有效的PostgreSQL查询
- 在没有web界面的情况下探索数据库模式和数据
部署到Clever Cloud
使用Clever Cloud CLI
- 安装Clever Cloud命令行界面:
npm install -g clever-tools- 登录您的Clever Cloud帐户:
clever login- 创建新应用程序:
clever create --type node - 添加您的域名(可选但推荐):
clever domain add - 创建一个PostgreSQL插件并将其链接到您的应用程序:
clever addon create -pg --plan dev
clever service link-addon -pg这将自动设置 POSTGRESQL_ADDON_URI 应用程序中的环境变量。
- 设置所需的环境变量:
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- 部署您的应用程序:
clever deploy- 打开您的应用程序:
clever open使用Clever Cloud控制台
您还可以直接从 聪明的云控制台:
- 在控制台中创建新应用程序
- 选择Node.js作为运行时
- 创建PostgreSQL插件并将其链接到您的应用程序
- 在控制台中设置所需的环境变量:
- LLM_API_KEY:您的OpenAI API密钥 - LLM_API_MODEL:(可选)要使用的型号,默认为gpt-4o-mini
- 使用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) |
故障排除
如果您遇到问题:
- 检查应用程序日志:
clever logs - 验证所有环境变量是否设置正确:
clever env - 确保您的应用程序正在运行:
clever status
资源
许可证
此示例是根据MIT许可条款提供的。
