项目简介
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 安装 (推荐)
- 克隆仓库到本地:
git clone https://github.com/stuzero/pg-mcp-server.git cd pg-mcp-server - 使用 Docker Compose 启动服务:
docker-compose up -d
手动安装
- 克隆仓库到本地:
git clone https://github.com/stuzero/pg-mcp-server.git cd pg-mcp-server - 创建并激活 Python 虚拟环境:
python -m venv .venv source .venv/bin/activate # Linux/macOS .venv\Scripts\activate # Windows - 使用 uv 安装项目依赖:
uv sync --frozen - 运行服务器:
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。
基本使用方法
- 启动 PG-MCP Server: 根据上述安装步骤启动服务器。
- 配置 MCP 客户端: 在您的 MCP 客户端应用中,配置上述 JSON 信息,确保客户端能够连接到 PG-MCP Server 的 'baseUrl'。
- 连接数据库: 客户端通过调用 'connect' 工具,并提供 PostgreSQL 数据库连接字符串来注册数据库连接。服务器会返回一个连接 ID ('conn_id')。
- 访问数据库资源: 使用 '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 下安装的扩展信息。
- 执行 SQL 查询: 客户端可以使用 'pg_query' 工具执行 SQL 查询,需要提供 'conn_id' 和 SQL 查询语句。
- 分析查询计划: 客户端可以使用 'pg_explain' 工具获取 SQL 查询的执行计划,用于优化查询性能。
- 断开数据库连接: 当不再需要访问数据库时,客户端可以调用 'disconnect' 工具,并提供 'conn_id' 来断开数据库连接。
请参考仓库中的 'test.py', 'claude_cli.py', 和 'gemini-agent-cli.py' 示例,了解更详细的使用方法和 API 调用方式。
信息
分类
数据库与文件