mcpField
P
PostgreSQL Model Context Protocol (PG-MCP) Server

PostgreSQL Model Context Protocol (PG-MCP) Server

本地服务
github.com/tanster1234数据库076 周前更新

关于 PostgreSQL Model Context Protocol (PG-MCP) Server

PG-MCP 是面向 PostgreSQL 数据库的 MCP 服务,供 AI Agent 使用。它支持多个数据库连接,并提供架构与扩展信息、只读查询及查询计划分析。

主要功能

  1. 01管理连接池与数据库连接
  2. 02执行只读 SQL 查询
  3. 03检查架构、表、列和索引
  4. 04抽样表数据并估算行数
  5. 05分析查询执行计划
  6. 06提供 PostgreSQL 扩展上下文

适用场景

  1. 01分析前探索数据库架构
  2. 02对多个数据库执行只读查询
  3. 03检查查询计划以分析性能

MCP 相关

向 MCP 客户端提供 PostgreSQL 连接、查询和查询计划工具,以及架构与数据资源。连接详情通过不透明 ID 标识。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

PostgreSQL 模型上下文协议(PG-MCP)服务

为 PostgreSQL 数据库提供的模型上下文协议(MCP)服务,具备面向 AI Agent 的增强功能。

概述

PG-MCP 是面向 PostgreSQL 数据库的 模型上下文协议 服务实现。它通过 MCP 面向资源的架构,为 AI Agent 提供全面的 API,以发现、连接、查询和了解 PostgreSQL 数据库。

此实现基于 Postgres MCP 参考实现构建并进行了扩展,新增了多项重要功能:

  1. 完整的服务实现:构建为支持 SSE 传输的完整服务,可用于生产环境
  2. 多数据库支持:可同时连接多个 PostgreSQL 数据库
  3. 丰富的目录信息:从数据库目录中提取并公开表和列的描述
  4. 扩展上下文:提供基于 YAML 的详细知识,介绍 PostGIS 和 pgvector 等 PostgreSQL 扩展
  5. 查询解释:提供专用工具,用于分析查询执行计划
  6. 稳健的连接管理:提供完善的数据库连接生命周期管理,并安全处理连接 ID

功能

连接管理
  • 连接工具:注册 PostgreSQL 连接字符串并获取安全的连接 ID
  • 断开连接工具:使用完毕后显式关闭数据库连接
  • 连接池:通过连接池高效管理连接
查询工具
  • pg_query:使用连接 ID 执行只读 SQL 查询
  • pg_explain:以 JSON 格式分析查询执行计划
架构发现资源
  • 列出包含描述的架构
  • 列出包含描述和行数的表
  • 获取包含数据类型和描述的列详情
  • 查看表约束和索引
  • 探索数据库扩展
数据访问资源
  • 获取表数据样本(支持分页)
  • 获取近似行数
扩展上下文

内置以下 PostgreSQL 扩展的上下文信息:

  • PostGIS:空间数据类型、函数和示例
  • pgvector:向量相似性搜索函数和最佳实践

还可以通过 YAML 配置文件轻松添加其他扩展。

安装

先决条件
  • Python 3.13+
  • PostgreSQL 数据库
使用 Docker
# Clone the repository
git clone https://github.com/stuzero/pg-mcp.git
cd pg-mcp

# Build and run with Docker Compose
docker-compose up -d
手动安装
# Clone the repository
git clone https://github.com/stuzero/pg-mcp.git
cd pg-mcp

# Create and activate a virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install using uv
uv sync --frozen

# Run the server
python -m server.app

用法

测试服务

仓库中包含用于验证服务功能的测试脚本:

# Basic server functionality test
python test.py "postgresql://username:password@hostname:port/database"

# Claude-powered natural language to SQL conversion
python client/claude_cli.py "Show me the top 5 customers by total sales"

claude_cli.py 脚本需要以下环境变量:

# .env file
DATABASE_URL=postgresql://username:password@hostname:port/database
ANTHROPIC_API_KEY=your-anthropic-api-key
PG_MCP_URL=http://localhost:8000/sse
面向 AI Agent

供 Agent 使用的提示词示例:

Use the PostgreSQL MCP server to analyze the database. 
Available tools:
- connect: Register a database connection string and get a connection ID
- disconnect: Close a database connection
- pg_query: Execute SQL queries using a connection ID
- pg_explain: Get query execution plans

You can explore schema resources via:
pgmcp://{conn_id}/schemas
pgmcp://{conn_id}/schemas/{schema}/tables
pgmcp://{conn_id}/schemas/{schema}/tables/{table}/columns

架构

此服务基于以下组件构建:

  • MCP:模型上下文协议基础
  • FastMCP:用于 MCP 的 Python 库
  • asyncpg:异步 PostgreSQL 客户端
  • YAML:用于扩展上下文信息

安全注意事项

  • 服务默认以只读模式运行(通过事务设置强制执行)
  • 连接详情不会在资源 URL 中公开,只会使用不透明的连接 ID
  • 数据库凭据只需在初次连接时发送一次

贡献

欢迎贡献!可扩展的方向包括:

  • 添加更多 PostgreSQL 扩展上下文文件
  • 添加更多架构内省资源
  • 提供查询优化建议

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。