PostgreSQL MCP服务器

一个提供PostgreSQL数据库访问的MCP服务器,包含数据分析工具、资源和提示。

  • by CyprianFusi
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 CyprianFusi/MCP-server-postgres

使用说明

PostgreSQL MCP服务器

通过 BINATI A分析

MCP(模型上下文协议)服务器,通过资源、工具和数据分析提示提供对PostgreSQL数据库的访问。

屏幕截图

特性

资源

  • postgres://info -服务器信息和快速参考

工具

  • list_tables -列出数据库中的所有表
  • get_table_schema -获取特定表的详细架构
  • execute_query -执行只读SQL查询(SELECT、WITH、SHOW)
  • get_table_stats -获取表的统计信息(行数、大小、索引)

提示

  • 分析表 -为特定表生成全面的分析提示
  • 查找关系 -分析数据库以查找表之间的关系
  • 数据质量检查 -进行全面的数据质量检查

安装

此项目使用 紫外线 用于包管理。

# Install dependencies
uv sync

配置

创建一个 .env 使用您的数据库凭据创建文件。您可以:

选项1:单个组件(推荐)

DATABASE_HOST=localhost
DATABASE_USER=postgres
DATABASE_PASSWORD=your_password
DATABASE_PORT=5432
DATABASE_NAME=your_database

选项2:完整连接URL

DATABASE_URL=postgresql://postgres:password@localhost:5432/mydb

注意:如果使用SQLAlchemy格式 postgresql+psycopg://,它将自动转换为psycopg格式 postgresql://.

如果未提供DATABASE_URL,服务器将自动从各个组件构建连接URL。

用法

发展模式

使用MCP检查器测试服务器:

uv run mcp dev main.py

这将在您的浏览器中启动MCP检查器,您可以在其中:

  • 浏览可用资源
  • 具有不同参数的测试工具
  • 尝试提示

安装到Claude桌面

要将此服务器与Claude Desktop一起使用,请执行以下操作:

uv run mcp install main.py --name "PostgreSQL Server"

直接执行

直接运行服务器:

uv run python main.py

示例用法

使用资源

  1. 获取服务器信息:
    • 资源URI: postgres://info
    • 返回:服务器信息和可用操作

使用工具

  1. 列出所有表格:

    Tool: list_tables
    Returns: {"tables": [...], "count": 4}
    
  2. 获取表架构:

    {
      "table_name": "users"
    }
    Returns: {"table_name": "users", "columns": [...], "column_count": 5}
    
  3. 执行查询:

    {
      "query": "SELECT * FROM users LIMIT 10"
    }
    

    返回:包含行、行计数和列的JSON

  4. 获取表格统计信息:

    {
      "table_name": "users"
    }
    

    返回:包含row_count、total_size、table_size和indexes_size的JSON

使用提示

  1. 分析表:

    • 为特定表生成全面的分析工作流
    • 参数: table_name
  2. 查找关系:

    • 生成提示以分析和记录表关系
  3. 数据质量检查:

    • 生成全面数据质量分析提示

安全

  • 只读查询:The execute_query 该工具仅允许SELECT、WITH和SHOW语句
  • SQL注入保护:所有查询在适用的情况下都使用参数化语句
  • 连接管理:数据库连接通过生命周期上下文进行管理

发展

代码质量

该项目遵循严格的开发准则:

# Format code
uv run --frozen ruff format .

# Check linting
uv run --frozen ruff check .

# Fix linting issues
uv run --frozen ruff check . --fix

# Type checking
uv run --frozen pyright

测试

# Run tests
uv run --frozen pytest

建筑

服务器使用:

  • FastMCP:高级MCP服务器框架
  • psycopg:Python异步PostgreSQL适配器
  • 寿命管理:数据库连接在服务器启动时建立,在关闭时关闭
  • 类型安全性:整个代码库中的完整类型提示

许可证

麻省理工学院