项目简介

这是一个基于 Model Context Protocol (MCP) 的后端服务实现,专门用于将大语言模型(LLM)与 PostgreSQL 数据库连接起来。它将数据库的查询和操作功能封装成 MCP 标准的“工具”,供兼容 MCP 的 LLM 客户端调用,从而允许 LLM 安全、受控地访问和处理数据库数据。

主要功能点

  • 查询表结构: 允许 LLM 获取指定 PostgreSQL 表的详细结构信息(字段名、数据类型、是否可空等)。
  • 查询表数据: 支持 LLM 对指定表进行基础查询,获取所有行数据。
  • 条件查询表数据: 支持 LLM 对指定表进行带条件(WHERE 子句)的查询。
  • 插入数据: 支持 LLM 向指定表插入新的数据记录。

安装步骤

  1. 克隆仓库: 将项目代码克隆到本地机器。
    git clone https://github.com/QuantumFiree/MCPServer_PGSQL.git
    cd MCPServer_PGSQL
  2. 安装依赖: 使用 npm 或 yarn 安装项目所需的依赖包。
    npm install
    # 或者 yarn install
  3. 准备 PostgreSQL 数据库: 确保你有一个正在运行的 PostgreSQL 数据库实例,并记录连接信息(主机、端口、数据库名、用户名、密码)。
  4. 配置数据库连接: 编辑 'main.ts' 文件,更新其中的 PostgreSQL 连接池配置,填入你的数据库连接详情。
  5. 构建或运行:
    • 推荐先构建项目:'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 本身的能力。

信息

分类

数据库与文件