PostgreSQL模型上下文协议(PG-MCP)服务器
PostgreSQL数据库的模型上下文协议(MCP)服务器,具有增强的AI代理功能。
概述
PG-MCP是 模型上下文协议 PostgreSQL数据库。它通过MCP面向资源的架构,为人工智能代理发现、连接、查询和理解PostgreSQL数据库提供了一个全面的API。
此实现建立并扩展了 参考Postgres MCP实现 有几个关键的增强功能:
- 完整服务器实施:作为具有SSE传输的完整服务器构建,用于生产使用
- 多数据库支持:同时连接到多个PostgreSQL数据库
- 丰富的目录信息:从数据库目录中提取并公开表/列描述
- 扩展上下文:提供有关PostgreSQL扩展(如PostGIS和pgvector)的详细基于YAML的知识
- 查询说明:包括一个用于分析查询执行计划的专用工具
- 强健的连接管理:具有安全连接ID处理的数据库连接的正确生命周期
特性
连接管理
- 连接工具:注册PostgreSQL连接字符串并获取安全连接ID
- 断开工具:完成后显式关闭数据库连接
- 连接池:通过池化实现高效的连接管理
查询工具
- pg_query:使用连接ID执行只读SQL查询
- pg_解释:以JSON格式分析查询执行计划
架构发现资源
- 列出带有描述的模式
- 列出带有描述和行数的表
- 获取包含数据类型和描述的列详细信息
- 查看表约束和索引
- 探索数据库扩展
数据访问资源
- 示例表数据(带分页)
- 获取近似行数
扩展上下文
PostgreSQL扩展的内置上下文信息,如:
- PostGIS:空间数据类型、函数和示例
- pg载体:矢量相似性搜索功能和最佳实践
可以通过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代理
与代理一起使用的示例提示:
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建筑
此服务器构建于:
- 主控程序:模型上下文协议基础
- FastMCP:MCP的Python库
- asyncpg:异步PostgreSQL客户端
- 格式:有关扩展上下文信息
安全考虑
- 默认情况下,服务器以只读模式运行(通过事务设置强制执行)
- 连接详细信息永远不会在资源URL中公开,只有不透明的连接ID
- 在初始连接期间只需要发送一次数据库凭据
贡献
欢迎投稿!扩展区域:
- 其他PostgreSQL扩展上下文文件
- 更多模式自检资源
- 查询优化建议
