项目简介

PostgreSQL MCP Server 是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在让 LLM 客户端(如 Claude Desktop)能够与 PostgreSQL 数据库进行交互。此仓库基于 modelcontextprotocol/servers 的 PostgreSQL MCP Server 进行了扩展,增加了创建表、插入数据、更新数据、删除数据和删除表的功能,从而为 LLM 提供了更全面的数据库操作能力。

主要功能点

  • 查询 (query): 执行只读 SQL 查询,从数据库中检索数据。
  • 创建表 (create_table): 动态创建新的数据库表,需要指定表名和列定义。
  • 插入数据 (insert_entry): 向指定表中插入新的数据记录。
  • 更新数据 (update_entry): 根据条件更新表中已有的数据记录。
  • 删除数据 (delete_entry): 根据条件删除表中的数据记录。
  • 删除表 (delete_table): 删除数据库中已有的表。
  • 资源 (Table Schemas): 提供数据库中表的结构信息(schema),LLM 可以获取表的列名和数据类型等元数据。

安装步骤

  1. 安装 Docker 和 Claude Desktop: 确保你的系统上已安装 Docker 和 Claude Desktop 应用。
  2. 克隆仓库: 使用 'git clone https://github.com/vignesh-codes/ai-agents-mcp-pg.git' 命令克隆仓库到本地。
  3. 运行 PostgreSQL Docker 容器: 执行以下命令启动 PostgreSQL Docker 容器。这将创建一个名为 'postgres-container' 的容器,并暴露 5432 端口。
    docker run --name postgres-container -e POSTGRES_USER=admin -e POSTGRES_PASSWORD=admin_password -e POSTGRES_DB=mydatabase -p 5432:5432 -d postgres:latest
  4. 构建 MCP 服务器 Docker 镜像: 进入克隆的仓库目录,执行以下命令构建 MCP 服务器的 Docker 镜像。
    docker build -t mcp/postgres -f src/Dockerfile .
  5. 配置 Claude Desktop: 打开 Claude Desktop 的配置文件 'claude_desktop_config.json',在 'mcpServers' 字段中添加以下配置以连接到 PostgreSQL MCP 服务器。

服务器配置

以下 JSON 配置信息用于配置 Claude Desktop 连接到 PostgreSQL MCP 服务器。你需要将此配置添加到 Claude Desktop 的 'claude_desktop_config.json' 文件中的 'mcpServers' 字段下。

{
  "mcpServers": {
    "postgres": {  // 服务器名称,可以自定义
      "command": "docker",  // 启动服务器的命令,这里使用 Docker
      "args": [  // 传递给命令的参数
        "run",
        "-i",  // 以交互模式运行容器
        "--rm", // 容器退出后自动删除
        "mcp/postgres", // 使用之前构建的 mcp/postgres 镜像
        "postgresql://username:[email protected]:5432/mydatabase" // PostgreSQL 数据库连接 URL,需要替换为你的数据库连接信息
        // username: 数据库用户名
        // password: 数据库密码
        // host.docker.internal:  Docker 容器连接宿主机 PostgreSQL 服务的地址 (macOS Docker 特殊域名,Linux 和 Windows Docker 可能需要使用 127.0.0.1 或 localhost)
        // 5432: PostgreSQL 默认端口
        // mydatabase: 数据库名称,与 Docker 启动命令中设置的 POSTGRES_DB 环境变量一致
      ]
    }
  }
}

注意:

  • 请根据你的 PostgreSQL 数据库实际配置,修改连接 URL 中的 'username', 'password', 'host', 'port' 和 'mydatabase'。
  • 如果在 macOS 上使用 Docker,并且 PostgreSQL 服务运行在宿主机上,请使用 'host.docker.internal' 作为 host。在 Linux 或 Windows 上,可能需要使用 '127.0.0.1' 或 'localhost'。
  • 配置完成后,请重启 Claude Desktop 应用以使配置生效。

基本使用方法

配置完成后,在 Claude Desktop 中,你可以通过自然语言指令指示 LLM 使用 PostgreSQL MCP Server 进行数据库操作。例如:

  • 查询数据: "查询 users 表中所有用户的姓名和邮箱"
  • 创建表: "创建一个名为 products 的表,包含 id (整数类型,主键), name (文本类型), price (浮点数类型) 三列"
  • 插入数据: "向 products 表中插入一条数据,name 为 '笔记本电脑', price 为 1200.50"
  • 更新数据: "将 products 表中 name 为 '笔记本电脑' 的 price 更新为 1250.00"
  • 删除数据: "删除 products 表中 id 为 1 的数据"
  • 删除表: "删除 products 表"

LLM 会将这些自然语言指令转换为 MCP 协议的请求,发送给 PostgreSQL MCP Server 执行,并将结果返回给你。 你可以参考仓库 README.md 文件中的 SampleDB ENTRIES 部分,了解更详细的输入输出示例。

信息

分类

数据库与文件