一句话定位:把索引调优和健康检查交给 AI,不只是执行 SQL 那么简单。

Postgres 的 MCP 服务器不止一个,但大多数只做到“能把 SQL 发过去”。Postgres MCP Pro 想做的是 DBA 的活:查最慢的查询、分析负载、推荐索引、模拟加索引后的执行计划、体检缓存命中率与 vacuum 状态。它来自 Crystal DBA,MIT 许可证,约 3.5k 星(以 GitHub 为准),支持 stdio、SSE 和 streamable-http 三种传输。真正有差异的是它把「确定性算法」和「LLM」拼在一起——索引建议来自搜索算法,不是模型凭空想的。

核心能力

一、确定性健康检查,结果可复现
analyze_db_health 一次跑完:缓冲区缓存命中率、连接健康度、约束验证、索引健康(重复索引 / 未使用索引 / 无效索引)、序列上限、vacuum 状态。价值在于可复现:同一库两次跑结果一致,而不是每次给你一段不同措辞的“建议”。交接或上线前跑一次,比凭感觉判断“库应该还行”牢靠。

二、索引调优用工业级搜索,不是模型猜
analyze_workload_indexes 会分析工作负载、找出资源消耗大的查询,再用搜索算法探索大量索引组合给出推荐;analyze_query_indexes 则针对你指定的最多 10 条查询推荐索引。做报表库优化时,模型自己“想”出来的索引经常重复已有索引或方向错,而算法路径会考虑到索引维护成本与组合效应。

三、虚拟索引模拟,先看效果再建
explain_query 能取执行计划,配合虚拟索引模拟“假如加这个索引会怎样”。这在生产环境非常实用:大表上建一个错索引要锁表、要回滚,先在虚拟层验证一遍成本低得多。前提是目标库装了 hypopg 扩展。

四、只读模式不是开关,是两层防护
Postgres 本身不支持把连接设为只读,所以它的 Restricted 模式做了两层:先开只读事务,再用 pglast 解析 SQL,拒绝任何包含 commit / rollback 的语句——因为一个 ROLLBACK; DROP TABLE users; 能绕过单纯的事务级只读。这个细节说明作者真的试过绕过。生产环境建议一律用 --access-mode=restricted。

五、schema 感知的 SQL 生成
list_schemas、list_objects、get_object_details 让它先看清楚表结构、列、约束和索引再写 SQL。实际差别很明显:不读 schema 的 Agent 会编出不存在的列名,读过的能一次写对,尤其在做多表关联查询时。

使用上手

  1. 选安装方式:Docker 拉 crystaldba/postgres-mcp(环境问题少),或 pipx install postgres-mcp / uv pip install postgres-mcp(需 Python 3.12+)。
  2. 先开只读试:用 --access-mode=restricted 连生产,DATABASE_URI 用只读账号,双重保险。
  3. 写客户端配置:把下方 JSON 填进配置,把 DATABASE_URI 换成你的连接串;Docker 方式访问本机库时注意 localhost 需重映射(macOS/Windows 为 host.docker.internal,Linux 为 172.17.0.1)。
  4. 开扩展拿完整能力:在库里执行 CREATE EXTENSION IF NOT EXISTS pg_stat_statements; 和 CREATE EXTENSION IF NOT EXISTS hypopg;,否则慢查询排行与虚拟索引不可用。
  5. 先体检再调优:先跑 analyze_db_health 看基本盘,再用 get_top_queries 找慢查询,最后用 analyze_workload_indexes 拿建议,不要在健康度未知时就动索引。

优点与不足

优点:

  • 索引建议与健康检查都是确定性结果,可复现、可对比。
  • Restricted 模式的 SQL 解析拦截考虑到了绕过手段,生产可用。
  • 支持 streamable-http,多客户端可共享一个实例。
  • 工具边界清晰,九个工具各自职责明确。

不足:

  • 只支持 PostgreSQL,MySQL / SQL Server 用户不适用。
  • 完整调优能力依赖 pg_stat_statements 与 hypopg,云托管环境可能需要先确认能否装扩展。
  • 官方测试重点在 Postgres 15/16/17,更旧版本兼容性需自行验证。
  • 无限制模式下的写权限很强,误操作风险需要靠账号权限拦。

适合谁

  • 手上有一条变慢的 Postgres,想知道到底哪个查询、该加什么索引的后端与运维。
  • 想让 Agent 安全地读生产库(只读 + 解析拦截)的团队。
  • 不适合:非 Postgres 用户;以及只需要偶尔跑一句 SQL 的人(装个 pgAdmin 更快)。

下载与访问

许可证与获取

项目说明
许可证MIT
传输方式stdio(默认)、SSE、streamable-http
安装Docker / pipx / uv,Python 3.12+
安全模式--access-mode=unrestricted(开发)、restricted(生产只读)

本文属于「连接器」分类的 AI 资源专栏,更多评测见分类页。