PostgreSQL MCP服务器

PostgreSQL MCP Server是一个为AI助手提供安全、只读访问PostgreSQL数据库的模型上下文协议服务器。

  • by AliQambari
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 AliQambari/PostgreSQL-MCP-Server

使用说明

PostgreSQL MCP 服务器

一个模型上下文协议(MCP)服务器,为像Claude Desktop这样的AI助手提供对PostgreSQL数据库的安全、只读访问。

特点/功能

  • 数据库模式资源访问表结构、关系和元数据
  • 只读SQL工具利用内置的安全控制安全地执行SELECT查询
  • 数据分析提示为常见数据库分析任务提供的预构建模板
  • 性能监控内置查询用于数据库性能分析
  • 数据质量报告全面的数据质量评估工具

快速入门:使用UV(紫外线)

1. 安装依赖项

# Install uv if you haven't already
pip install uv

# Install project dependencies
uv sync

2. 环境设置

创建一个 .env 项目根目录下的文件:

POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=your_database_name
POSTGRES_USER=your_username
POSTGRES_PASSWORD=your_password
POSTGRES_SSL=prefer

3. 启动服务器

# Run as HTTP server
uv run python -m fastmcp.server server:mcp --port 8000

# Or with specific database parameters
uv run python server.py --host localhost --port 5432 --database mydb --user postgres

MCP客户端配置

Claude 桌面版

将此配置添加到您的Claude桌面配置文件中:

位置:

  • macOS(苹果电脑操作系统): ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "fastapi-mcp": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://127.0.0.1:8000/mcp",
        "8080"
      ]
    }
  }
}

Cursor 集成开发环境(IDE)

对于Cursor或其他MCP客户端:

{
  "mcpServers": {
    "postgresql-mcp": {
      "command": "npx",
      "args": ["mcp-remote", "http://127.0.0.1:8000/mcp", "8080"]
    }
  }
}

远程服务器配置

对于使用HTTPS的远程服务器:

{
  "mcpServers": {
    "postgresql-mcp": {
      "command": "npx",
      "args": ["mcp-remote", "https://your-server.com:8000/mcp", "8080"]
    }
  }
}

可用资源

  • schema://tables - 列出所有数据库表
  • schema://table/{table_name} - 详细的表结构
  • schema://relationships - 外键关系

可用工具

  • execute_read_query(sql, limit) - 安全地执行SELECT查询
  • describe_table(table_name) - 获取表结构和示例数据
  • get_table_stats(table_name) - 表格数据的统计分析

可用提示

  • analyze_table_data(table_name) - 综合表格分析模板
  • performance_analysis() - 数据库性能监控查询
  • data_quality_report() - 数据质量评估框架

安全特性

  • 只读访问权限仅允许使用SELECT语句
  • 查询验证阻止危险的SQL关键字
  • 结果限制可配置的行数限制(最多1000行)
  • 连接池高效的数据库连接
  • 错误处理优雅的错误响应

故障排除

连接问题

  1. 验证数据库凭据 .env 文件
  2. 检查 PostgreSQL 服务器是否正在运行
  3. 确保与数据库主机的网络连接
  4. 验证SSL设置与您的数据库配置相匹配

权限问题

确保您的数据库用户对您想要查询的表具有SELECT权限:

GRANT SELECT ON ALL TABLES IN SCHEMA public TO your_user;

紫外线问题

# Update uv
pip install --upgrade uv

# Clear uv cache if needed
uv cache clean

# Reinstall dependencies
rm -rf .venv
uv sync

发展

运行测试

uv run python test_client.py

添加新功能

  1. 添加新的工具/资源到 server.py
  2. 用新功能更新此README文件
  3. 使用您的MCP客户端进行测试

要求

  • Python 3.13及以上版本
  • PostgreSQL 数据库
  • UV包管理器
  • 兼容MCP的客户端(如Claude Desktop、Cursor等)

依赖项

  • asyncpg - PostgreSQL 异步驱动程序
  • fastmcp - MCP服务器框架
  • mcp - 模型上下文协议库
  • python-dotenv - 环境变量管理

许可证

这个项目是开源的。详情请参见许可证文件。