数据库

Postgres MCP Pro:让智能体查慢 SQL、给出索引建议

不只是连上 Postgres 跑 SQL。智能体能做健康检查、看执行计划、模拟假设索引并推荐最优方案,只读模式可用于生产库。

项目与安装文档

查看项目

https://github.com/crystaldba/postgres-mcp

AI 生成的 ORM 代码跑起来很慢,问题多半出在缺索引或查询写法上,可让智能体光看代码猜不出来。Postgres MCP Pro 把数据库自己的统计信息交给智能体:哪些查询最慢、执行计划长什么样、加一个索引后计划会怎么变。它由 Crystal DBA 团队开发,截至 2026-10-06 约 3,400 star。

能做什么

  • 健康检查:analyze_db_health 一次查看索引健康(重复、未用、失效)、连接、缓存命中率、vacuum、序列上限和复制延迟。
  • 找慢查询:get_top_queries 基于 pg_stat_statements 列出总耗时最高的 SQL。
  • 索引调优:analyze_workload_indexes 针对整体负载推荐索引,analyze_query_indexes 针对最多 10 条指定查询;explain_query 可以带上假设索引,看加索引后的计划。
  • 结构与执行:list_schemas、list_objects、get_object_details 读结构,execute_sql 执行语句。

适合谁

  • 用 Cursor 或 Claude Code 写后端、想让智能体顺手把慢查询和索引问题一起修掉的开发者。
  • 没有专职 DBA、需要定期给 Postgres 做体检的小团队。

接入方式

需要数据库连接串,以及 Docker 或 Python 3.12+。索引调优要在库里启用 pg_stat_statements 和 hypopg 扩展。用 uvx 配置:

{
  "mcpServers": {
    "postgres": {
      "command": "uvx",
      "args": ["postgres-mcp", "--access-mode=unrestricted"],
      "env": {
        "DATABASE_URI": "postgresql://username:password@localhost:5432/dbname"
      }
    }
  }
}

编辑点评

能跑 SQL 的 Postgres 服务很多,这个的区别是带着 DBA 的工具箱:索引推荐用的是搜索候选索引组合的算法,配合 hypopg 模拟,不靠模型凭感觉。权限上分两档,unrestricted 可读写、适合开发库;restricted 只读并限制执行时间,会解析 SQL 拦截 COMMIT、ROLLBACK 这类绕过只读事务的写法,连生产库请务必换成它。作者也承认只读保护在启用了不安全存储过程语言时可能被绕过,最稳的仍是只读数据库账号。仓库最近一次提交在 2026 年 8 月,更新节奏不算快。许可证为 MIT。