使用说明

项目简介

本项目实现了一个MCP服务器,允许LLM客户端通过标准的MCP协议与PostgreSQL数据库进行交互。它提供资源管理和工具调用功能,使得LLM可以获取数据库的表结构信息,并执行SQL查询来获取数据。

主要功能点

  • 资源发现: LLM可以列出PostgreSQL数据库中的所有表,并将每个表视为一个资源。
  • Schema读取: LLM可以读取表的schema信息(列名和数据类型),用于理解数据结构。
  • SQL查询工具: 提供 "query" 工具执行只读SQL查询,以及 "execute" 工具执行可修改数据的SQL命令。
  • 数据访问: LLM可以通过执行SQL查询,获取数据库中的数据内容。

安装步骤

  1. 安装Docker: 确保你的机器上已安装 Docker 和 Docker Compose (如果需要,根据实际情况判断是否需要Docker Compose)。
  2. 克隆仓库: 从 GitHub 克隆 'ai-agents' 仓库到本地。
    git clone https://github.com/quickbooks2018/ai-agents
    cd ai-agents
  3. 构建Docker镜像: 进入 PostgreSQL 服务器代码目录,并构建 Docker 镜像。假设 Dockerfile 位于 'docker/database/postgres/ReadWrite/postgres' 目录(如果仓库中没有 Dockerfile,则需要自行创建,根据 'index.ts' 文件内容,可能需要 Node.js 环境和 'pg' 包,并参考 'modelcontextprotocol/servers' 仓库中类似服务的 Dockerfile)。
    cd docker/database/postgres/ReadWrite/postgres
    docker build -t postgres-mcp-server .
    cd ../../../.. # 返回仓库根目录
  4. 准备数据库连接: 你需要一个可访问的 PostgreSQL 数据库,并获取数据库连接 URL。

服务器配置

在 MCP 客户端(如 VSCode, Claude, Cursor, Codium Windsurf 等)的 MCP 服务器配置中,添加以下配置信息。请将 '<database_url>' 替换为你的 PostgreSQL 数据库连接 URL。

{
  "postgres-mcp": {
    "command": "docker",
    "args": [
      "run",
      "-i",
      "--rm",
      "--init",
      "-e",
      "DOCKER_CONTAINER=true",
      "postgres-mcp-server",
      "<database_url>"
      // <database_url>: 你的PostgreSQL数据库连接URL,例如 "postgresql://用户名:密码@主机:端口/数据库名"
    ]
  }
}

参数说明:

  • 'postgres-mcp': 服务器名称,可以自定义。
  • 'command': 启动服务器的命令,这里使用 'docker' 运行容器。
  • 'args': 传递给 'docker run' 命令的参数列表:
    • 'run -i --rm --init -e DOCKER_CONTAINER=true': Docker 运行参数,保持不变。
    • 'postgres-mcp-server': Docker 镜像名称,与构建镜像时 '-t' 参数指定的名称一致。
    • '<database_url>': 重要参数,PostgreSQL 数据库的连接 URL,需要替换为实际的数据库连接信息。

基本使用方法

  1. 启动服务器: 在 MCP 客户端中配置并启动名为 'postgres-mcp' 的服务器。
  2. 客户端交互: 在 MCP 客户端中,可以使用以下方式与 PostgreSQL MCP 服务器交互:
    • 列出资源: 客户端可以请求列出可用的资源,服务器会返回数据库中的表列表。
    • 读取资源: 客户端可以请求读取特定表的资源,服务器会返回该表的 schema 信息(JSON 格式)。
    • 调用工具: 客户端可以调用 "query" 工具执行只读 SQL 查询,或调用 "execute" 工具执行 SQL 命令,并通过参数 'sql' 传递 SQL 查询语句。服务器会执行 SQL 并将结果返回给客户端。

注意:

  • 请确保数据库连接 URL 的安全性,避免泄露敏感信息。
  • "execute" 工具允许执行修改数据的 SQL 命令,请谨慎使用,并确保 LLM 的指令是安全可靠的。

信息

分类

数据库与文件