返回市场
postgresql分析器mcp

postgresql分析器mcp

作者:rameshv292 星标更新:2025-06-03

项目介绍

PostgreSQL 分析器 MCP

这是一个用于 PostgreSQL 数据库性能分析和优化的 Model Context Protocol (MCP) 服务器。

概述

PostgreSQL 分析器 MCP 是一个强大的工具,利用人工智能帮助数据库管理员和开发者优化他们的 PostgreSQL 数据库。它提供了对数据库结构、查询性能、索引使用情况以及配置设置的全面分析,并提供改进的实际建议。

此工具作为远程 MCP 服务器运行,使用可流传输的 HTTP 协议,允许集中部署并被任何兼容 MCP 的客户端访问,包括 Amazon Q 开发者 CLI、Claude 和其他支持 MCP 协议的 AI 助手。

⚠️ 免责声明

实验性:该项目是实验性的,旨在展示使用 MCP 和 PostgreSQL 所能实现的功能。在任何生产环境中实施之前,应对所有建议和代码进行仔细审查。

非官方:这是一个个人项目,与我工作或贡献的任何组织无关,未得到它们的认可或代表。所有观点和方法都是我个人的。

无责任:本工具“按现状”提供,不附带任何形式的保证。自行承担风险使用。作者不对因使用本软件而产生的任何损害或问题负责。

特性

  • 数据库结构分析:分析表、列、索引和外键
  • 查询性能分析:分析执行计划并识别瓶颈
  • 索引建议:根据查询模式获得新索引的建议
  • 查询优化:接收查询重写的建议以提高性能
  • 慢查询识别:查找并分析运行缓慢的查询
  • 数据库健康仪表板:获取数据库健康指标的综合概述
  • 索引使用分析:识别未使用的、重复的或膨胀的索引
  • 只读查询执行:安全地执行只读查询以进行验证

安全性

此工具默认以只读模式运行。所有数据库连接都通过 SET TRANSACTION READ ONLY 建立,以防止意外修改您的数据库。查询执行功能严格限制为 SELECT、EXPLAIN 和 SHOW 命令。

安装

预备条件

  • Python 3.12+(或 Docker)
  • Amazon Aurora 或 RDS PostgreSQL 数据库
  • AWS 账户(用于 Secrets Manager,可选)

设置

方案 1:本地设置

  1. 克隆仓库:

    git clone https://github.com/yourusername/postgres-performance-mcp.git
    cd postgres-performance-mcp
    
  2. 创建虚拟环境并安装依赖项:

    python -m venv venv
    source venv/bin/activate 
    pip install -r requirements.txt
    

方案 2:Docker 设置

  1. 克隆仓库:

    git clone https://github.com/yourusername/postgres-performance-mcp.git
    cd postgres-performance-mcp
    
  2. 构建 Docker 镜像:

    docker build -t postgres-analyzer-mcp -f Dockerfile .
    
  3. 运行 Docker 容器:

    docker run -p 8000:8000 postgres-analyzer-mcp
    

    对于 AWS 凭据(如果使用 Secrets Manager):

    docker run -p  8000:8000 \
      -e AWS_ACCESS_KEY_ID=your_access_key \
      -e AWS_SECRET_ACCESS_KEY=your_secret_key \
      -e AWS_DEFAULT_REGION=your_region \
      postgres-analyzer-mcp
    
  4. 配置您的数据库凭据:

    • 方案 1:将凭据存储在 AWS Secrets Manager 中(推荐)
    • 方案 2:直接在使用工具时提供凭据

使用

启动服务器

本地:

python src/main.py --host 0.0.0.0 --port 8000

Docker:

# 当运行容器时,服务器会自动启动
docker run -p 8000:8000 postgres-analyzer-mcp

配置 MCP 客户端

要连接到远程 MCP 服务器,请配置您的 MCP 客户端如下:

服务器 URL: http://your-server-address:8000/mcp
传输方式: 可流传输的 HTTP

使用 MCP 客户端

使用任何兼容 MCP 的客户端连接到服务器并使用可用工具:

analyze_database_structure(secret_name="my-postgres-db-credentials", region_name="us-west-2")

可用工具

  • analyze_database_structure:分析数据库架构并提供优化建议
  • get_slow_queries:识别数据库中的慢查询
  • analyze_query:分析 SQL 查询并提供优化建议
  • recommend_indexes:为给定的 SQL 查询推荐索引
  • suggest_query_rewrite:建议 SQL 查询的优化重写
  • database_health_dashboard:生成数据库的综合健康仪表板
  • query_optimization_wizard:交互式向导逐步优化 SQL 查询
  • analyze_index_usage:分析索引使用模式并识别未使用或低效的索引
  • execute_read_only_query:执行只读 SQL 查询并返回结果
  • show_postgresql_settings:显示 PostgreSQL 配置设置,可选过滤
  • health_check:检查服务器是否正在运行且响应

自定义

此工具的强大之处在于可以根据您的特定环境进行定制:

  • 添加针对您数据库使用模式的自定义分析规则
  • 与您的监控系统集成
  • 根据您组织的最佳实践定制建议
  • 添加关于数据模型的专业知识
  • 根据需要扩展附加工具

AWS Secrets Manager 设置

要使用 AWS Secrets Manager 存储数据库凭据:

  1. 在 AWS Secrets Manager 中创建一个具有以下键的秘密:

    • host:数据库主机名
    • port:数据库端口(通常是 5432)
    • dbname:数据库名称
    • username:数据库用户名
    • password:数据库密码
  2. 确保您的 AWS 凭据已配置并具有适当的权限来访问该秘密。

  3. 在调用工具时使用秘密名称:

    analyze_query(query="SELECT * FROM users WHERE user_id = 123", secret_name="my-postgres-db-credentials")
    

PostgreSQL 配置

为了最佳性能分析,我们建议启用以下扩展:

CREATE EXTENSION pg_stat_statements;
CREATE EXTENSION pg_buffercache;

并在您的 postgresql.conf 中添加这些设置:

shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.track = all

示例

分析数据库结构

analyze_database_structure(secret_name="my-postgres-db-credentials")

分析查询

analyze_query(
    query="SELECT * FROM orders JOIN customers ON orders.customer_id = customers.id WHERE orders.status = 'pending'",
    secret_name="my-postgres-db-credentials"
)

获取索引建议

recommend_indexes(
    query="SELECT * FROM products WHERE category = 'electronics' AND price < 100",
    secret_name="my-postgres-db-credentials"
)

执行只读查询

execute_read_only_query(
    query="SELECT schemaname, relname, n_live_tup FROM pg_stat_user_tables ORDER BY n_live_tup DESC LIMIT 10",
    secret_name="my-postgres-db-credentials"
)

部署到远程服务器

要将 MCP 服务器部署到远程机器:

  1. 在远程服务器上安装 Docker
  2. 将项目文件复制到服务器或从您的仓库克隆
  3. 构建并运行 Docker 容器:
    docker build -t postgres-analyzer-mcp -f Dockerfile .
    docker run -d -p 8000:8000 postgres-analyzer-mcp
    
  4. 考虑使用进程管理器如 docker-composesystemd 来确保容器在服务器重启时重新启动

为了安全访问,考虑设置:

  • 带有 SSL/TLS 的反向代理(如 Nginx 或 Traefik)
  • 认证中间件
  • 防火墙规则以限制访问

贡献

欢迎贡献!请随时提交拉取请求。

许可证

本项目采用 MIT 许可证 - 详情见 LICENSE 文件。

致谢

  • PostgreSQL 社区提供的文档
  • MCP 协议开发者使 AI 驱动的工具成为可能
  • 本项目使用了 vibe 编码 - 一种结合人类专业知识和 AI 能力的 AI 辅助开发方法,以创建强大且易于维护的软件解决方案。 </中文翻译>