核心功能
本页聚焦 src/postgres 目录的实际配置:启动参数就是一条 postgresql:// 连接串,可直接携带用户名与密码;用 Docker 连宿主机数据库时地址要换成 host.docker.internal。服务器据此暴露只读查询工具与每张表的结构资源。该目录已随参考实现一并归档。
功能亮点
连接串即配置
数据库地址、账号密码与库名全部通过一个命令行参数传入,无需额外配置文件。
容器网络写法
容器内访问宿主库时,要把连接串里的 localhost 换成宿主机专用域名。
表结构资源
每张表对应一条资源地址,返回列名与类型的 JSON,方便先看结构再写查询。
编辑器集成
VS Code 支持在 mcp.json 中用输入提示,启动时弹窗询问连接串。
适用场景
• 给模型接一个只读的业务库
• 让模型先读表结构再生成 SQL
• 容器化部署避免污染本地环境
• 在 VS Code 中按需输入连接串
安装配置
bash
# Docker 方式(claude_desktop_config.json)
{
"mcpServers": {
"postgres": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"mcp/postgres",
"postgresql://host.docker.internal:5432/mydb"
]
}
}
}
# 带账号密码的连接串写法
postgresql://user:password@host:port/db-name
# macOS 上容器访问宿主机数据库时用 host.docker.internal 代替 localhost
# VS Code .vscode/mcp.json:用输入提示避免把连接串写死
{
"inputs": [
{ "type": "promptString", "id": "pg_url", "description": "PostgreSQL URL (e.g. postgresql://user:pass@localhost:5432/mydb)" }
],
"servers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "${input:pg_url}"]
}
}
}
# 自建镜像
docker build -t mcp/postgres -f src/postgres/Dockerfile .使用方法
bash
调用 query 工具:
{ "sql": "SELECT status, count(*) FROM orders GROUP BY status" }
服务端在 READ ONLY 事务中执行,INSERT / UPDATE / DDL 语句不会生效。
读取 schema 资源:
postgres://<host>/<table>/schema
返回该表的列名与数据类型,建议先读资源确认字段命名,再拼接 SQL 交给 query,避免模型凭空猜列名。
连接串排错顺序:先用 psql 验证同一串能连通,再确认容器场景下主机地址是否需要替换。关键指标
尚未核验对标产品,此处只列本工具自身指标,不做对比结论。
指标PostgreSQL MCP Server
价格免费
开源是
上手难度入门
相关工具
优点
- 一条连接串即完成接入,服务端不需要额外账号映射
- 表结构以资源形式提供,模型可先读 schema 再写 SQL
- 官方提供 Dockerfile,可把服务器跑在隔离网络中
- VS Code 输入提示让连接串不必硬编码进仓库配置
缺点
- src/postgres 已随参考实现归档,配置仍可用但不会再更新
- 只读能力有限:仅支持查询,DDL 与写入一律不可用
- 连接串含明文密码时会落在客户端配置文件里
- README 只说明了 macOS 下容器访问宿主库的写法,其他平台需自行调整
- 文档未提供结果集大小或查询超时的限制参数