PostgreSQL多数据库连接服务器

PostgreSQL MCP服务器支持多数据库访问,通过单一服务器实例连接PostgreSQL主机上的所有数据库,无需为每个数据库运行单独的服务器。

  • by Rejke
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 Rejke/repgsql-mcp

使用说明

repgsql-mcp

PostgreSQL MCP服务器,支持多数据库。一个服务器实例连接到PostgreSQL主机上的所有数据库——不需要为每个数据库运行单独的服务器。

特性

  • 多数据库 --单个连接字符串,按名称访问任何数据库
  • 延迟连接池 --在第一次查询时创建的池,在空闲5分钟后自动驱逐
  • 智能错误提示 --错桌子?显示可用表格。列错了?显示具有类型的列。数据库错误?显示所有数据库
  • 连接错误时自动重试 --EOF/连接重置时透明重新连接
  • 访问模式 — readonly (默认)或 unrestricted

工具

工具 说明
list_databases 列出服务器上的所有数据库
list_schemas(database) 列出数据库中的架构
list_objects(database, schema, type?) 列出表、视图、序列或扩展
get_object_details(database, schema, object) 列、约束、索引和大小
explain_query(database, sql, analyze?) 解释查询计划
execute_sql(database, sql) 执行SQL(尊重访问模式)

快速开始

码头工人

docker run -i --rm \
  -e DATABASE_URI="postgresql://user:pass@host:5432/postgres" \
  rejke/repgsql-mcp:latest \
  --access-mode=unrestricted

npx

DATABASE_URI="postgresql://user:pass@host:5432/postgres" npx repgsql-mcp

克劳德代码/光标/风帆

添加 .mcp.json:

{
  "mcpServers": {
    "pg": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "DATABASE_URI",
        "rejke/repgsql-mcp:latest",
        "--access-mode=unrestricted"
      ],
      "env": {
        "DATABASE_URI": "postgresql://user:pass@host:5432/postgres"
      }
    }
  }
}

环境变量

变量 必填 描述
DATABASE_URI 是 PostgreSQL连接字符串。URI中的数据库用于初始连接;所有数据库都可以通过 database 每个工具中的参数
SOFT_ERRORS 否 设置为 "true" 返回丰富的错误,而无需 isError 标志(允许并行工具调用继续)。违约: "false"

CLI参数

参数 描述
--access-mode=readonly 仅允许SELECT/WITH查询(默认)
--access-mode=unrestricted 允许任何SQL查询

错误富集

当查询失败时,服务器会自动提供上下文以帮助代理进行自我更正:

错误 提示
database "X" does not exist 列出所有可用数据库
relation "schema.table" does not exist 列出该架构(如果架构存在)或可用架构中的表
column "X" does not exist 列出查询中引用的所有表的类型列
在中找不到表 get_object_details 列出架构中的可用表
空结果 list_objects 列出可用架构
连接断开(EOF,重置) 使用新连接池自动重试

从源代码构建

npm install
npm run build
node dist/index.js

Docker构建

docker build -t repgsql-mcp .

许可证

麻省理工学院