一句话定位:把索引调优和健康检查交给 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 会编出不存在的列名,读过的能一次写对,尤其在做多表关联查询时。
使用上手
- 选安装方式:Docker 拉
crystaldba/postgres-mcp(环境问题少),或pipx install postgres-mcp/uv pip install postgres-mcp(需 Python 3.12+)。 - 先开只读试:用
--access-mode=restricted连生产,DATABASE_URI用只读账号,双重保险。 - 写客户端配置:把下方 JSON 填进配置,把
DATABASE_URI换成你的连接串;Docker 方式访问本机库时注意localhost需重映射(macOS/Windows 为host.docker.internal,Linux 为172.17.0.1)。 - 开扩展拿完整能力:在库里执行
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;和CREATE EXTENSION IF NOT EXISTS hypopg;,否则慢查询排行与虚拟索引不可用。 - 先体检再调优:先跑
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 更快)。
下载与访问
- 仓库:https://github.com/crystaldba/postgres-mcp
- Docker 镜像:
crystaldba/postgres-mcp - PyPI 包:
postgres-mcp - 官方站点:https://www.crystaldba.ai
许可证与获取
| 项目 | 说明 |
|---|---|
| 许可证 | MIT |
| 传输方式 | stdio(默认)、SSE、streamable-http |
| 安装 | Docker / pipx / uv,Python 3.12+ |
| 安全模式 | --access-mode=unrestricted(开发)、restricted(生产只读) |
本文属于「连接器」分类的 AI 资源专栏,更多评测见分类页。
评论 0
还没有评论,来说两句吧。