PostgreSQL模型上下文协议服务器

PG-MCP是一个为PostgreSQL数据库设计的模型上下文协议服务器,提供AI代理发现、连接、查询和理解PostgreSQL数据库的全面API。

  • by stuzero
  • Python
  • 本地部署
  • 540 星标
  • 更新于
在 GitHub 查看 stuzero/pg-mcp-server

使用说明

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

PostgreSQL数据库的模型上下文协议(MCP)服务器,具有增强的AI代理功能。

有关pg-mcp项目的更多信息,请点击此处:

https://stuzero.github.io/pg-mcp/

概述

PG-MCP是 模型上下文协议 PostgreSQL数据库。它通过MCP面向资源的架构,为人工智能代理发现、连接、查询和理解PostgreSQL数据库提供了一个全面的API。

此实现建立并扩展了 参考Postgres MCP实现 有几个关键的增强功能:

  1. 完整服务器实施:作为具有SSE传输的完整服务器构建,用于生产使用
  2. 多数据库支持:同时连接到多个PostgreSQL数据库
  3. 丰富的目录信息:从数据库目录中提取并公开表/列描述
  4. 扩展上下文:提供有关PostgreSQL扩展(如PostGIS和pgvector)的详细基于YAML的知识
  5. 查询说明:包括一个用于分析查询执行计划的专用工具
  6. 强健的连接管理:具有安全连接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-server.git
cd pg-mcp-server

# Build and run with Docker Compose
docker-compose up -d

手动安装

# Clone the repository
git clone https://github.com/stuzero/pg-mcp-server.git
cd pg-mcp-server

# Install dependencies and create a virtual environment ( .venv )
uv sync

# Activate the virtual environment
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# 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 example-clients/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

A comprehensive database description is available at this resource:
pgmcp://{conn_id}/

建筑

此服务器构建于:

  • 主控程序:模型上下文协议基础
  • FastMCP:MCP的Python库
  • asyncpg:异步PostgreSQL客户端
  • 格式:有关扩展上下文信息

安全考虑

  • 默认情况下,服务器以只读模式运行(通过事务设置强制执行)
  • 连接详细信息永远不会在资源URL中公开,只有不透明的连接ID
  • 在初始连接期间只需要发送一次数据库凭据

贡献

欢迎投稿!扩展区域:

  • 其他PostgreSQL扩展上下文文件
  • 更多模式自检资源
  • 查询优化建议