项目简介

PG-MCP Server 是一个实现了 Model Context Protocol (MCP) 的 PostgreSQL 数据库服务器,旨在为 AI Agent 提供结构化的数据库访问能力和丰富的上下文信息。它扩展了标准的 MCP 协议,为 AI 应用提供了更强大的 PostgreSQL 数据库集成方案。

主要功能点

  • 多数据库支持: 支持同时连接和管理多个 PostgreSQL 数据库。
  • 丰富的 Schema 信息: 提供数据库 Schema 的详细描述,包括表、列、约束、索引和扩展信息。
  • 扩展上下文: 内置对 PostgreSQL 扩展(如 PostGIS, pgvector)的 YAML 格式上下文信息支持,方便 AI Agent 理解和使用扩展功能。
  • 查询工具: 提供 SQL 查询执行和查询计划分析工具,辅助 AI Agent 进行高效的数据操作。
  • 资源化访问: 通过 MCP 资源 URL (pgmcp://...) 访问数据库 Schema 和数据信息。
  • 安全连接管理: 使用连接 ID 管理数据库连接,保障数据库连接信息的安全。
  • SSE 传输: 使用 Server-Sent Events (SSE) 作为默认传输协议,支持生产环境应用。

安装步骤

前提条件

  • Python 3.13+
  • PostgreSQL 数据库服务

Docker 安装 (推荐)

  1. 克隆仓库到本地:
    git clone https://github.com/stuzero/pg-mcp-server.git
    cd pg-mcp-server
  2. 使用 Docker Compose 启动服务:
    docker-compose up -d

手动安装

  1. 克隆仓库到本地:
    git clone https://github.com/stuzero/pg-mcp-server.git
    cd pg-mcp-server
  2. 创建并激活 Python 虚拟环境:
    python -m venv .venv
    source .venv/bin/activate   # Linux/macOS
    .venv\Scripts\activate      # Windows
  3. 使用 uv 安装项目依赖:
    uv sync --frozen
  4. 运行服务器:
    python -m server.app

服务器配置

MCP 客户端需要配置以下 JSON 信息来连接 PG-MCP Server。以下为典型的配置示例,请根据实际情况调整 'baseUrl' 等参数。

{
  "serverName": "pg-mcp-server",
  "command": "python",
  "args": ["-m", "server.app"],
  "transport": "sse", // 指定使用 Server-Sent Events (SSE) 传输协议
  "baseUrl": "http://localhost:8000/sse" // PG-MCP Server 的 SSE 端点 URL,客户端通过此 URL 与服务器建立连接
}

配置参数说明:

  • 'serverName': 服务器名称,可以自定义,用于客户端识别。
  • 'command': 启动服务器的命令,这里使用 'python'。
  • 'args': 启动命令的参数,'-m server.app' 表示运行 'server/app.py' 模块。
  • 'transport': 传输协议,必须设置为 'sse' (Server-Sent Events)。
  • 'baseUrl': 服务器的根 URL,指向 SSE 端点。默认情况下,PG-MCP Server 在 'http://localhost:8000/sse' 提供服务。如果服务器部署在不同的主机或端口,请相应修改此 URL。

基本使用方法

  1. 启动 PG-MCP Server: 根据上述安装步骤启动服务器。
  2. 配置 MCP 客户端: 在您的 MCP 客户端应用中,配置上述 JSON 信息,确保客户端能够连接到 PG-MCP Server 的 'baseUrl'。
  3. 连接数据库: 客户端通过调用 'connect' 工具,并提供 PostgreSQL 数据库连接字符串来注册数据库连接。服务器会返回一个连接 ID ('conn_id')。
  4. 访问数据库资源: 使用 'pgmcp://{conn_id}/...' 格式的 URL 访问数据库 Schema 和数据资源。例如:
    • 'pgmcp://{conn_id}/schemas':列出所有 Schema。
    • 'pgmcp://{conn_id}/schemas/{schema}/tables':列出指定 Schema 下的所有表。
    • 'pgmcp://{conn_id}/schemas/{schema}/tables/{table}/columns':获取指定表的列信息。
    • 'pgmcp://{conn_id}/schemas/{schema}/extensions':获取指定 Schema 下安装的扩展信息。
  5. 执行 SQL 查询: 客户端可以使用 'pg_query' 工具执行 SQL 查询,需要提供 'conn_id' 和 SQL 查询语句。
  6. 分析查询计划: 客户端可以使用 'pg_explain' 工具获取 SQL 查询的执行计划,用于优化查询性能。
  7. 断开数据库连接: 当不再需要访问数据库时,客户端可以调用 'disconnect' 工具,并提供 'conn_id' 来断开数据库连接。

请参考仓库中的 'test.py', 'claude_cli.py', 和 'gemini-agent-cli.py' 示例,了解更详细的使用方法和 API 调用方式。

信息

分类

数据库与文件