项目简介
这是一个基于 Model Context Protocol (MCP) 的后端服务实现,专门用于将大语言模型(LLM)与 PostgreSQL 数据库连接起来。它将数据库的查询和操作功能封装成 MCP 标准的“工具”,供兼容 MCP 的 LLM 客户端调用,从而允许 LLM 安全、受控地访问和处理数据库数据。
主要功能点
- 查询表结构: 允许 LLM 获取指定 PostgreSQL 表的详细结构信息(字段名、数据类型、是否可空等)。
- 查询表数据: 支持 LLM 对指定表进行基础查询,获取所有行数据。
- 条件查询表数据: 支持 LLM 对指定表进行带条件(WHERE 子句)的查询。
- 插入数据: 支持 LLM 向指定表插入新的数据记录。
安装步骤
- 克隆仓库: 将项目代码克隆到本地机器。
git clone https://github.com/QuantumFiree/MCPServer_PGSQL.git cd MCPServer_PGSQL - 安装依赖: 使用 npm 或 yarn 安装项目所需的依赖包。
npm install # 或者 yarn install - 准备 PostgreSQL 数据库: 确保你有一个正在运行的 PostgreSQL 数据库实例,并记录连接信息(主机、端口、数据库名、用户名、密码)。
- 配置数据库连接: 编辑 'main.ts' 文件,更新其中的 PostgreSQL 连接池配置,填入你的数据库连接详情。
- 构建或运行:
- 推荐先构建项目:'npm run build' 或 'yarn build'。这会生成可执行的 JavaScript 文件(通常在 'dist' 目录下)。
- 然后运行构建后的文件:'node dist/main.js'。
- 你也可以直接使用 'ts-node' 运行 TypeScript 文件(适合开发测试):'npx ts-node main.ts'。
服务器配置
MCP 客户端需要配置如何启动这个 MCP 服务器进程。通常,这通过一个 JSON 结构来完成,指定服务器的名称、启动命令及其参数。对于这个项目,一个典型的 MCP 客户端配置可能看起来像这样(JSON 格式):
{ "serverName": "example-servers/postgres", "command": "node", "args": ["/path/to/your/cloned/repo/dist/main.js"] }
- 'serverName': 服务器向客户端声明的名称,客户端通过此名称识别服务器。根据项目代码,这个名称是 '"example-servers/postgres"'。
- 'command': 启动服务器进程的命令。如果运行的是构建后的 JavaScript 文件,通常是 '"node"'。如果直接运行 TypeScript 文件(使用 ts-node),可能是 '"npx"' 或 '"ts-node"'。
- 'args': 传递给启动命令的参数列表。通常第一个参数是服务器主程序的路径。请替换 '/path/to/your/cloned/repo/dist/main.js' 为你本地实际的项目路径(如果是构建后运行,指向 'dist' 目录下的 'main.js';如果直接运行 TypeScript,指向 'main.ts')。
基本使用方法
启动 MCP 服务器后,一个支持 MCP 的 LLM 客户端即可连接。LLM 可以通过调用服务器提供的工具与 PostgreSQL 数据库进行交互:
- LLM 可以请求列出可用的工具,获取数据库操作的能力列表。
- LLM 可以调用“Action Table Scheme”工具,例如询问“请告诉我表 'users' 的结构”,服务器将返回表结构信息。
- LLM 可以调用“Action Select”或“Action Select Where”工具,例如询问“请查询表 'orders' 中 customer_id 等于 100 的所有记录”,服务器将执行查询并将结果返回给 LLM。
- LLM 可以调用“Action Insert”工具,例如指示“请向表 'products' 插入一条新记录:name='Laptop', price=1200”,服务器将执行插入操作。
请注意,LLM 是否能正确理解和调用这些工具,取决于 LLM 客户端和 LLM 本身的能力。
信息
分类
数据库与文件