Postgres for Agent
PostgreSQL MCP(两个口味)/ DBHub 通用数据库 MCP / Neon serverless Postgres / Supabase MCP — agent 要的 SQL 接口全这了。
这个 pack 装了什么
这个包收齐了 agent 真要读写 Postgres 的五种 SQL 接口。两个 stdio MCP 服务器,指向自己的 DSN。一个通用 MCP,能同时管 Postgres / MySQL / SQLite / DuckDB。最后两个是云端托管 Postgres,自带 agent 集成。
| # | 资产 | 类型 | 适合场景 |
|---|---|---|---|
| 1 | PostgreSQL MCP(官方参考) | stdio MCP | 本地/自建 Postgres |
| 2 | PostgreSQL MCP(社区版) | stdio MCP | 多了 explain / 索引建议 |
| 3 | DBHub | 通用 MCP | 一个服务多种 DB |
| 4 | Neon serverless | 云端 + MCP | 给 agent 任务做分支 |
| 5 | Supabase MCP | 云端 + MCP | 全套 BaaS(auth/存储/RLS) |
参考版 PostgreSQL MCP 在官方 modelcontextprotocol/servers 仓库里,最简单的 stdio 绑定:query / list_tables / describe_table。社区版加了 explain / index_advice 和带参写入。DBHub 把连接层抽象掉,一个 MCP 装好可以同时打 Postgres / MySQL / SQLite / DuckDB。Neon 和 Supabase 各自带 MCP,超越纯 SQL —— Neon 把分支创建做成工具(一个 agent 任务一个数据库),Supabase 把 auth / 存储 / 行级权限全暴露。
为什么 agent 配 Postgres 这么重要
大多数「agent + 数据库」演示都在作弊:临时 SQLite、手写 fixture、零并发。真实应用跑在 Postgres 上,几百张表 + RLS 策略 + JSON 列 + 已有连接池。把 LLM 直接接进去就是 DELETE 不带 WHERE 的事故现场。
这五个服务器把现实层面都处理了:
- 默认只读,五个都带 read-only 开关或能力作用域
- schema 内省,agent 可以问 describe_table,不用猜列名
- 连接池,每个服务器都重用 pool,避免每查询重连
- 分支/沙箱,Neon 分支工具让每个 agent 任务获得自己的临时库(200ms 出生)
一条命令装齐
# 装整个 pack,把 MCP 配置写进对应工具的 config
tokrepo install pack/postgres-for-agents
# 或单独装
tokrepo install postgres-mcp
tokrepo install dbhub
tokrepo install neon-mcp
tokrepo install supabase-mcp
TokRepo CLI 会把配置写到每个工具该去的位置 —— Claude Code 写 claude_desktop_config.json,Cursor 写 mcp.json,Codex CLI 写 AGENTS.md。连接串放环境变量,配置只带服务器名。
几个常见坑
- 第一天别开写权限,先
--read-only,看 agent 安全跑几百次读再放写 - 用专用 role,不要用 postgres 超级用户,建个
mcp_agentrole,只给真要暴露的 schema 上 SELECT;RLS 也要对它生效 - schema dump 成本要看着,500 张表 list_tables 一发把 agent context 撑爆 — 限定单 schema 或允许列表
- 分支要真用才起作用,Neon 分支很便宜 —— 每个 agent 任务起一个,把 MCP 指向分支 DSN,用完丢
- Supabase RLS 不是可选项,service role key 会绕过 RLS。涉及用户数据的任务用 anon + JWT
与其他 pack 的关系
这个 pack 是结构化数据层。语义 / 非结构化检索(相似度搜、文档 RAG)用 向量数据库横评 pack —— Chroma / Qdrant / Weaviate / Pinecone。更广义的 MCP 工具(文件系统 / 浏览器 / GitHub)见 MCP 服务器全家桶。线上 agent 通常每个 pack 各取一个:Postgres 装事务态,向量库装 embedding,MCP 栈装工具面。
5 个资产打包就绪
常见问题
官方 PostgreSQL MCP 服务器是免费的吗?
是的 —— MIT 开源,放在官方 modelcontextprotocol/servers 仓库里,除了你自己数据库的额度没有任何限制。你只为数据库本身付钱(Neon 和 Supabase 免费额度都很慷慨;自建 Postgres 完全免费)。MCP 层零成本零遥测。
DBHub 跟开多个 PostgreSQL MCP 实例比怎么样?
DBHub 是一个 MCP 进程前置多个 DSN —— Postgres / MySQL / SQLite / DuckDB。如果 agent 要打三个库,DBHub 一个 slot 三个命名连接搞定。开多个 PostgreSQL MCP 也行,但每个吃一个 MCP 槽,schema 缓存也不共享。多 DB 工作流用 DBHub,单 DB 精细控制用原生 PostgreSQL MCP。
Claude Code 或 Cursor 都能用吗?
两个都能,再加 Codex CLI / Gemini CLI / Cline / Roo Code / Windsurf / Copilot。MCP 是标准,TokRepo CLI 只是把对应配置写进每个工具该去的位置。Neon 和 Supabase MCP 用法一样;Neon 还出了 Cursor 扩展自动做 branch-per-task。
这个 pack 跟向量数据库横评的区别?
Postgres 装结构化行 —— 订单 / 用户 / 用 SELECT WHERE 查的那种数据。向量库装 embedding 相似度 —— 「找出语义近似 X 的文档」。两者互补。真实 RAG 应用两个都跑:Postgres 装事实,Qdrant 或 Chroma 装语义召回,靠 metadata 里的外键串起来。
Supabase service role key 的坑是什么?
service role key 会绕过行级权限。如果你把 MCP 接到这个 key,agent 能读到所有用户数据 —— 不止当前用户的。涉及用户数据的任务永远用 anon key + 每会话 JWT,service role 留给后台管理任务,前面再放一道人工审批关。