Token导航 LogoToken导航TokenDH.com
Pg Python MCP logo
数据服务stdio官方级别未说明来源级核验

Pg Python MCP

MCP Server

一个基于Python的PostgreSQL MCP服务器,提供安全的数据库操作,包括内置安全检查、AST-based SQL解析和JSON输出。

工具数

4

提示词数

0

GitHub Stars

0

资源数

0
数据分析PythonClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

hexonal

提供方

hexonal

最后核验

2026/5/17 20:19

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uvx --from git+https://github.com/hexonal/pg-python-mcp-.git pg-python-mcp

详细介绍

PostgreSQL Python MCP服务器

中文文档 |英语

一个基于Python的PostgreSQL MCP服务器,提供安全的数据库操作,内置安全检查和基于AST的SQL解析。

特性

  • 🔍 数据库列表:列出PostgreSQL实例中的所有数据库
  • 📋 表列表:查看已配置数据库中的所有表
  • 🔍 表描述:详细的表结构信息
  • 📊 安全查询:执行SQL查询(默认情况下仅限SELECT)
  • 🛡️ 安全边界:配置的数据库内有严格的操作限制
  • ⚙️ 可配置的:支持通过环境变量启用其他操作
  • 📋 JSON输出:针对AI消费优化的结构化JSON响应
  • 🌳 基于AST的安全:使用抽象语法树进行高级SQL解析,准确率达到100%

安全特性

默认安全模式

  • 只允许 SELECT, SHOW, DESCRIBE, EXPLAIN 查询
  • 阻止所有 WITH 语句,因为它们可以包装写操作
  • 阻止危险操作,如 DROP, DELETE, UPDATE, INSERT
  • 将操作严格限制在配置的数据库范围内
  • 使用基于AST的分析防止SQL注入攻击
  • 检测嵌套的危险操作和基于UNION的攻击

高级模式(可选)

设置环境变量 PG_ALLOW_DANGEROUS=true 以启用:

  • 完整的CRUD操作
  • 扩展数据库管理功能

配置

环境变量

变量描述必填
PG_HOSTPostgreSQL主机地址和端口(格式:主机:端口或主机)
PG_USERPostgreSQL用户名
PG_PASSWORDPostgreSQL密码
PG_DATABASE目标数据库名称
PG_ALLOW_DANGEROUS允许危险操作(true/false)否(默认值:false)

Claude桌面配置示例

添加到您的Claude Desktop配置文件中:

{
  "mcpServers": {
    "postgresql": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/hexonal/pg-python-mcp-.git",
        "pg-python-mcp"
      ],
      "env": {
        "PG_HOST": "your-postgres-host:5432",
        "PG_USER": "your-username",
        "PG_PASSWORD": "your-password",
        "PG_DATABASE": "your-database"
      }
    }
  }
}

可用工具

1.列表_数据库

列出PostgreSQL实例中的所有数据库(突出显示当前配置的数据库)。

2.列表表

列出当前配置的数据库中的所有表。

3.描述表

描述指定表的结构,包括列名、类型、空约束和键信息。

参数:

  • table_name (string):要描述的表的名称

4.execute_query

执行SQL查询语句并以JSON格式返回结果。

参数:

  • query (string):要执行的SQL语句

安全约束:

  • 默认模式只允许查询操作(SELECT、SHOW、DESCRIBE、EXPLAIN)
  • WITH 在安全模式下,语句总是被拒绝
  • 使用AST解析自动检测和阻止危险操作
  • 操作仅限于配置的数据库范围
  • 检测SQL注入尝试的准确率为100%

JSON输出格式:

{
  "status": "success",
  "message": "Query executed successfully, returned 2 rows",
  "columns": ["id", "name", "email"],
  "data": [
    {
      "id": 1,
      "name": "User 1", 
      "email": "user1@example.com"
    },
    {
      "id": 2,
      "name": "User 2",
      "email": "user2@example.com"
    }
  ]
}

安装和使用

使用uvx(推荐)

# Install from Git
uvx --from git+https://github.com/hexonal/pg-python-mcp-.git pg-python-mcp

# Or for local development
uvx pg-python-mcp

手动安装

# Clone repository
git clone https://github.com/hexonal/pg-python-mcp-.git
cd pg-python-mcp

# Install dependencies
pip install -e .

# Run server
python -m pg_mcp

使用示例

列出所有数据库

Tool: list_databases

列出当前数据库中的表

Tool: list_tables

描述表格结构

Tool: describe_table
Parameters: {"table_name": "users"}

执行查询

Tool: execute_query  
Parameters: {"query": "SELECT * FROM users LIMIT 10"}

发展

项目结构

pg-python-mcp/
├── pg_mcp/
│   ├── __init__.py          # Main MCP server entry point
│   ├── __main__.py          # Run script
│   └── pg_handler.py        # PostgreSQL handler with AST security
├── test_ast_security.py     # AST security validation tests
├── test_stdio.py           # MCP protocol testing
├── pyproject.toml          # Project configuration
├── README.md               # English documentation
└── README_zh.md            # Chinese documentation

本地开发

# Clone project
git clone https://github.com/hexonal/pg-python-mcp-.git
cd pg-python-mcp

# Install development dependencies
pip install -e ".[dev]"

# Run security tests
python test_ast_security.py

# Test MCP protocol
python test_stdio.py

# Code formatting
black pg_mcp/
isort pg_mcp/

# Type checking
mypy pg_mcp/

技术栈

  • FastMCP 2.0:具有基于装饰器的工具注册的现代MCP框架
  • asyncpg:异步PostgreSQL数据库操作
  • SQL解析:用于安全分析的SQL抽象语法树解析
  • Python 3.8+:广泛的兼容性支持

安全实施

基于AST的SQL分析

服务器使用抽象语法树解析来实现SQL安全检查的100%准确率:

def is_query_safe(self, query: str) -> tuple[bool, str]:
    """Check query safety using AST parsing"""
    try:
        parsed = sqlparse.parse(query)
        for statement in parsed:
            is_safe, error_msg = self._check_statement_safety(statement)
            if not is_safe:
                return False, error_msg
        return True, ""

安全测试结果

  • ✅ 安全查询:8/8(100%)
  • 🛡️ 被阻止的危险查询:10/10(100%)
  • 🎯 总体准确度: 100%

许可证

MIT许可证

安全通告

⚠️ 重要安全指南:

  • 所有环境变量都是必需的,没有不安全的默认值
  • 确保生产环境中PostgreSQL用户的最低权限
  • 定期轮换数据库密码
  • 避免在配置中使用管理数据库用户
  • 在隔离环境中运行此MCP服务器
  • 默认安全模式提供基本保护,但不能取代全面的安全策略

故障排除

常见问题

  1. 连接失败:检查PostgreSQL服务是否正在运行和网络连接
  2. 环境变量错误:验证所有必需的环境变量是否已正确设置
  3. 权限错误:确认PostgreSQL用户有访问指定数据库的权限
  4. 查询被拒绝:检查查询是否包含禁止的关键字,或考虑启用高级模式
  5. MCP协议问题:确保您使用的是与FastMCP 2.0兼容的配置

获取帮助

  • 检查 中文文档 有关更多详细信息
  • 查看测试文件以获取使用示例
  • 检查AST安全测试是否支持查询模式

目录标签

目录标签

数据分析PythonClaude数据库管理本地部署SQL安全PostgreSQLAST解析

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP