Token导航 LogoToken导航

MCP Server · 数据服务

Postgres Readonly MCP

一个提供安全只读访问PostgreSQL数据库的模型上下文协议(MCP)服务器,支持表结构查询、数据预览和只读SQL查询等功能。

未说明官方级别未说明来源级核验工具 6
数据分析PostgreSQLClaudeAI工具集成Claude Desktop

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
beydemirfurkan
提供方
beydemirfurkan

工具数量

6

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

1

仓库热度

收录来源

1 个

MCP World

选型结论

Postgres Readonly MCP 属于数据服务类 MCP Server,公开资料标注 6 个工具,通过传输方式未标注接入,适配 Claude Desktop、Claude,没有现成的安装命令;接入前先确认权限范围。

分类

数据服务

传输方式

未说明

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 6 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

公开资料仍需确认:安装命令

详细介绍

PostgreSQL只读MCP服务器

一种模型上下文协议(MCP)服务器,提供对PostgreSQL数据库的安全、只读访问。

此服务器向MCP客户端(如Claude Desktop)公开数据库工具(列表表、描述模式、预览行、运行只读查询、显示关系、统计数据)。

这个项目解决了什么

当人工智能工具需要数据库上下文时,直接访问SQL可能会有风险。 此服务器添加了一个受控层:

  • 只读查询验证
  • 基于工具的模式和数据访问
  • 查询结果限制和超时保护
  • 多数据库支持(db 和 db2)
  • 山宁泰错误消息(已编辑凭据)

特性

  • PostgreSQL的严格只读访问(SELECT 仅)
  • 表和模式检查
  • 具有行和文本截断限制的数据预览
  • 外键关系发现
  • 数据库级统计信息(大小、行估计数、最大表)
  • 两个逻辑数据库目标: db (主要)和 db2 (次要)

项目结构

src/index.ts -MCP服务器入口点和工具注册\ src/connection-manager.ts -连接池、环境解析、查询执行\ src/query-validator.ts -只读验证规则\ src/tools/*.ts -工具实现

需求

  • Node.js 18+
  • npm
  • 从您的计算机访问PostgreSQL网络

安装

git clone 
cd postgres-readonly-mcp
npm install
npm run build

快速入门(逐步)

1) 配置环境

创建一个 .env 项目根目录中的文件。

你可以使用其中一种模式。

选项A:两者都有一个URL db 和 db2
DATABASE_URL=postgresql://USER:PASSWORD@HOST:5432/DB_NAME?schema=public
选项B:单独的主机字段(为清楚起见建议使用)
# Primary database (db)
DB_HOST=127.0.0.1
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=your_password
DB_NAME=your_database
DB_SSL=true
DB_SSL_REJECT_UNAUTHORIZED=true

# Secondary database (db2)
DB2_HOST=127.0.0.1
DB2_PORT=5432
DB2_USER=postgres
DB2_PASSWORD=your_password
DB2_NAME=your_database_2
DB2_SSL=true
DB2_SSL_REJECT_UNAUTHORIZED=true
选项C:单独的URL
DB_URL=postgresql://USER:PASSWORD@HOST:5432/DB1
DB2_URL=postgresql://USER:PASSWORD@HOST:5432/DB2

2) 构建

npm run build

3) 快跑

npm start

开发模式:

npm run dev

4) 从克劳德桌面连接

将此添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "postgres-readonly": {
      "command": "node",
      "args": ["/absolute/path/to/postgres-readonly-mcp/dist/index.js"],
      "env": {
        "DB_HOST": "127.0.0.1",
        "DB_PORT": "5432",
        "DB_USER": "postgres",
        "DB_PASSWORD": "your_password",
        "DB_NAME": "your_database",
        "DB_SSL": "true",
        "DB_SSL_REJECT_UNAUTHORIZED": "true",
        "DB2_HOST": "127.0.0.1",
        "DB2_PORT": "5432",
        "DB2_USER": "postgres",
        "DB2_PASSWORD": "your_password",
        "DB2_NAME": "your_database_2",
        "DB2_SSL": "true",
        "DB2_SSL_REJECT_UNAUTHORIZED": "true"
      }
    }
  }
}

编辑配置后重新启动Claude Desktop。

环境变量参考

核心变量

  • DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME ->主要连接(db)
  • DB2_HOST, DB2_PORT, DB2_USER, DB2_PASSWORD, DB2_NAME ->次级连接(db2)
  • DB_SSL, DB_SSL_REJECT_UNAUTHORIZED ->TLS设置 db
  • DB2_SSL, DB2_SSL_REJECT_UNAUTHORIZED ->TLS设置 db2
  • DATABASE_URL ->两个数据库的回退URL
  • DB_URL, DB2_URL ->每个数据库的显式URL
  • DB_DATABASE_URL, DB2_DATABASE_URL ->还支持别名URL名称

DB_SSL 默认为 true 在严格模式下。

决议优先级

对于 db:

  1. DB_* 领域
  2. DB_URL 或 DB_DATABASE_URL
  3. DATABASE_URL
  4. 默认值(localhost, 5432, postgres、空密码, postgres)

对于 db2:

  1. DB2_* 领域
  2. DB2_URL 或 DB2_DATABASE_URL
  3. DATABASE_URL
  4. 回退到已解决 db 价值观

URL编码说明

如果您的密码包含特殊字符(/, @, :),URL将其编码为连接字符串。

例子:

  • 真实密码: my/pass
  • 在URL中: my%2Fpass
DATABASE_URL=postgresql://postgres:my%2Fpass@127.0.0.1:5432/your_database?schema=public

工具参考

所有工具均接受可选 database 值:

  • db (默认)
  • db2

1) list_tables

列出架构中的表/视图。

输入:

{
  "database": "db",
  "schema": "public"
}

返回以下数组:

  • name
  • type (BASE TABLE 或 VIEW)
  • rowCount (估计)
  • schema

2) describe_table

描述列、主键、外键和索引。

输入:

{
  "database": "db",
  "schema": "public",
  "table": "Mail"
}

3) preview_data

使用可选的列选择预览表中的行。

输入:

{
  "database": "db",
  "schema": "public",
  "table": "Mail",
  "columns": ["id", "subject", "createdAt"],
  "limit": 10
}

4) run_query

运行自定义只读SQL查询。

输入:

{
  "database": "db",
  "query": "SELECT id, subject FROM \"public\".\"Mail\" ORDER BY id DESC",
  "limit": 100
}

5) show_relations

显示表的外键关系(传入和传出)。

输入:

{
  "database": "db",
  "schema": "public",
  "table": "Mail"
}

6) db_stats

获取数据库大小和表统计信息。

输入:

{
  "database": "db"
}

退货:

  • database
  • totalTables
  • totalRows
  • totalSize
  • largestTables

只读和安全规则

允许的语句类型

  • SELECT

被屏蔽的关键字(示例)

  • INSERT, UPDATE, DELETE
  • DROP, ALTER, TRUNCATE, CREATE
  • GRANT, REVOKE, LOCK
  • COPY, VACUUM, ANALYZE, REINDEX, CLUSTER

额外的严格模式检查

  • 一个请求中的多个SQL语句被阻止
  • 某些有风险的函数调用被阻止(例如 pg_sleep, dblink,文件读取功能)
  • 最后一行上限是在服务器端强制执行的,即使您的SQL包含更大的行上限 LIMIT

执行限制

  • preview_data 违约: 10,最大值: 100
  • run_query 违约: 1000,最大值: 5000
  • 查询超时: 30s (statement_timeout 和 query_timeout)
  • 长文本截断: 200 字符

错误安全

对连接和运行时错误进行清理,以防止凭据泄漏。

常见用法示例

示例1:列出所有公共表

使用 list_tables 与:

{ "database": "db", "schema": "public" }

示例2:预览最近的邮件

使用 run_query 与:

{
  "database": "db",
  "query": "SELECT id, subject, \"createdAt\" FROM \"public\".\"Mail\" ORDER BY \"createdAt\" DESC",
  "limit": 20
}

示例3:比较两个数据库

  1. 呼叫 db_stats 随着 database: "db"
  2. 呼叫 db_stats 随着 database: "db2"
  3. 比较 totalTables, totalRows,以及 largestTables

发展

# Type-check and compile
npm run build

# Run server in dev mode
npm run dev

# Start compiled server
npm start

# Run tests
npm test

发布到npm

# Patch release (1.0.0 -> 1.0.1)
npm run release

# Minor release (1.0.0 -> 1.1.0)
npm run release:minor

# Major release (1.0.0 -> 2.0.0)
npm run release:major

# Validate flow without changing anything
npm run release:dry-run

发布脚本行为:

  • 需要一个干净的git工作树
  • 用途 npm version 升级版本(创建提交和标记)
  • 跑动 npm publish --access public (构建通过 prepublishOnly)

故障排除

连接失败

  • 验证主机/端口是否可以从您的计算机访问。
  • 验证用户名/密码和数据库名称。
  • 如果使用URL,请确保密码中的特殊字符是URL编码的。

服务器已启动,但客户端中没有工具

  • 确认客户点是否正确 dist/index.js 路径。
  • 配置更改后重新启动客户端应用程序。
  • 检查stderr日志中的启动错误。

查询被拒绝

  • 查询可能包含被阻止的关键字或不支持的语句类型。
  • 重写为严格只读查询(SELECT 仅)。

许可证

麻省理工学院

工具与能力

工具数量

6

资源数量

0

提示词数量

0

能力标签

数据库访问TypeScript本地部署只读查询PostgreSQLMCP协议AI工具集成

支持客户端

Claude DesktopClaude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

用自然语言查库

不用手写 SQL,直接问数据,让模型组织查询语句。

数据巡检

定期拉指标、做对比,把异常项整理成一段说明。

打通业务数据

把数据库、数仓和接口接进同一个上下文,减少导出再上传。

选择建议

值得选的地方

  • 只提供 6 个工具,职责集中,接入后不容易误操作。
  • 已经适配 Claude Desktop、Claude,换客户端不用重新研究配置。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在数据服务场景里让模型直接调用外部能力的人。
  • 已经在用 Claude Desktop 的用户,接入路径最短。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Postgres Readonly MCP

MCP World · 本页

6未说明未标注1 个2026-05-17
Memory 9d25f64e

MCP World

9未说明未标注1 个2026-05-17
Prisma MCP Server

MCP World

0stdio有3 个2026-05-17
Astr Bot

MCP World

0stdio有1 个2026-05-17
Getzep MCP

MCP World

9stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Postgres Readonly MCP 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

Postgres Readonly MCP 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

Postgres Readonly MCP 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Postgres Readonly MCP 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

Postgres Readonly MCP 支持哪些客户端?

公开资料标注支持 Claude Desktop、Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP