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=unrestrictednpx
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.jsDocker构建
docker build -t repgsql-mcp .许可证
麻省理工学院
