安装
npx -y @modelcontextprotocol/server-postgres postgresql://localhost/mydb适合谁
适合需要让模型查看 PostgreSQL 库表结构、并跑只读 SQL 的人。证据写明:这台 MCP 提供对 PostgreSQL 的只读访问,用来检查 schema 和执行只读查询。
你必须能提供一条可连接的 postgresql:// URL,并且接受模型会读到表结构与查询结果。只读事务不是「零风险」:它仍要连库、仍会读数据,URL 里还可以带用户名和密码。
证据没有列出客户端名单。官方页面在 servers-archived 目录树,证据没有另写维护状态,不要默认它仍是现行主推实现。
3 分钟完成第一次尝试
走 NPX 主路径,不要把 Docker 当主安装。在客户端 MCP 配置中使用:
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://localhost/mydb"
]
把最后的 URL 换成你有权只读访问的数据库。用户名密码可按证据写成 postgresql://user:password@host:port/db-name。不要把生产写账号或完整密码贴进对话。
前置条件:本机有 npx;数据库允许来自该进程的连接;第一次只检查 schema 或跑一条不会改数据的查询。
配置位置:客户端 MCP 服务器的 command / args。第三个参数就是连接串。
低风险第一次调用:先读资源 postgres://<host>/<table>/schema 查看某一张表的列名与类型;或调用工具 query,输入 sql 字符串,证据保证它在 READ ONLY 事务中执行。不要尝试 INSERT/UPDATE/DELETE 来「验证只读」。
成功信号:客户端连上后能列出表 schema 资源,或 query 返回只读结果。若连接失败,先改 URL(本机库、端口、库名),不要换成 Docker 再猜。证据对 Docker 只补充:macOS 上若服务在宿主机,用 host.docker.internal。
使用案例
案例 1:弄清某张表有哪些列。读取 postgres://<host>/<table>/schema。证据写明这是从数据库元数据自动发现的 JSON schema,包含列名与数据类型。没有给出表名枚举 API;<host> 与 <table> 需按你的实际连接替换。看不到的表不要编造。
案例 2:对已确认存在的表跑一条只读查询。调用 query,参数只有 sql。证据保证在 READ ONLY 事务中执行,没有写结果分页、超时或可执行的 SQL 方言范围。因此能确认的是:这条 SQL 被当作只读查询送进已连接的库;不要假设能写临时表或调用会改状态的函数。
使用边界
这是只读访问,不是可恢复的写操作:证据没有给出 undo。连接串可含密码,属于凭据与数据面暴露。工具只有 query。Docker 与 NPX 是不同路径,主路径保持 NPX。证据没有写连接池、SSL、只读角色强制,也没有说 READ ONLY 事务能挡住所有副作用(例如有的 SQL 函数仍可能有外部效应,但页面没有展开)。页面位于归档仓库树,证据没有提供替代包或迁移说明。