Token导航 LogoToken导航TokenDH.com
Postgresql Read MCP logo
数据服务stdio官方级别未说明来源级核验

Postgresql Read MCP

MCP Server

一个提供安全PostgreSQL工具的只读模型上下文协议服务器,强制执行只读会话和严格的SQL验证,防止LLMs执行写入操作。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
数据库工具只读访问PythonCursorCursorVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

code-by-muhammad

提供方

code-by-muhammad

最后核验

2026/5/17 20:19

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv venv

详细介绍

PG_READ_MCP - PostgreSQL 只读 MCP 服务器

只读模型上下文协议服务器,提供安全的PostgreSQL工具。强制实施只读会话和严格的SQL验证,以防止大型语言模型(LLMs)执行写操作。

🚀 分步指南

先决条件

  • Python 3.12及以上版本
  • Git(注:Git是一个分布式版本控制系统,用于跟踪对文件的修改)

步骤0:复制模板

点击页面右上角的“使用此模板”按钮,复制这个GitHub模板。

步骤1:创建虚拟环境

在 Cursor、Windsur 或 VS Code 中:

  1. 打开命令面板:

- 在Mac上: Cmd + Shift + P - 在Windows上: Ctrl + Shift + P

  1. 输入并选择: Python:选择解释器
  2. 点击: + 创建虚拟环境
  3. 选择: Venv(注:这可能是“Venv”一词的直接翻译,若“Venv”有特定含义或上下文,请根据实际情况调整翻译) 作为环境类型

在终端中:

python -m venv venv
source venv/bin/activate

工具

暴露的工具(所有读取DSN的) PG_DEFAULT_URL.env):

  • PgListSchemasTool()列出非系统模式(或架构)
  • PgListTablesTool(target_schema)列出模式中的表
  • PgDescribeTableTool(target_schema, table)描述列
  • PgRunReadQueryTool(sql, max_rows=5000, timeout_ms=10000)执行已验证的 SELECT/CTE(公用表表达式)

安全:

  • 会议/会话: SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLYstatement_timeoutidle_in_transaction_session_timeout
  • 验证器:阻止 UPDATE/DELETE/INSERT/DDL/实用程序/锁/COPY 操作以及数据修改的 CTE(公用表表达式);允许在 SELECT 中使用常规函数

第二步:环境

创建 .env 与;带有;随同

PG_DEFAULT_URL=postgresql://user:pass@host:port/db
# optional
PG_DEFAULT_SCHEMA=public
PG_DEFAULT_TABLE=
PG_TEST_SQL=SELECT 1 AS one

2.1 仅通过与AI聊天即可创建自定义工具

在聊天中提示你的AI集成开发环境(IDE)为你创建工具。 确保包含 ./.cursor/rules/workflow.mdc 在上下文中。(默认仅在 Cursor 中包含)。

例如:

Please create a tool that fetches the transcripts from a YouTube video. @workflow.mdc

回答澄清问题,并不断迭代,直到工具创建完成并按预期运行。

确保将任何所需的环境变量添加到(配置中) ./.env 文件。

2.2 在本地运行

python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
PYTHONPATH=. python server/start_mcp.py --tools-dir ./tools
# or include subdirs/multiple endpoints per README below if desired

将其他预构建的开源 Stdio MCP 服务器添加到 mcp.json 与 Cursor 和其他客户端一样,文件(也支持)。

{
  "mcpServers": {
    "notionapi": {
      "command": "npx",
      "args": [
        "-y",
        "@notionhq/notion-mcp-server"
      ],
      "env": {
        "OPENAPI_MCP_HEADERS": "{\"Authorization\":\"Bearer ntn_****\",\"Notion-Version\":\"2022-06-28\"}"
      }
    }
    # ... add more servers here
}

Stdio 此方法支持服务器。此仓库将自动将其转换为SSE(服务器发送事件) 超级网关.

你可以使用 npx 和 uv 来运行这些服务器。

2.3 快速烟雾测试

运行以下命令来测试MCP服务器,并确保所有服务器都在运行。

python tools/PgListSchemasTool.py
python tools/PgListTablesTool.py
python tools/PgDescribeTableTool.py
python tools/PgRunReadQueryTool.py

对于使用子目录端点进行测试:

python server/start_mcp.py --split-subdirs

你无法将本地服务器连接到Agencii,但可以通过将SSE URL添加到Cursor的“MCP服务器”选项卡中来对其进行测试。

这一步不是必须的。只要你的工具没有问题就行。

多端点MCP服务器

此模板支持从单个Python服务器提供多个工具目录作为独立的端点。

目录结构

按照惯例,我们建议使用“\_mcp”后缀来命名MCP实例目录,但也可以使用任何目录名称:

tools/
├── SharedTool1.py         # Shared across all MCP instances
├── SharedTool2.py         # Shared across all MCP instances
├── marketing_mcp/         # Marketing MCP instance
│   ├── MarketingTool1.py
│   └── MarketingTool2.py
└── analytics_mcp/         # Analytics MCP instance
    ├── AnalyticsTool1.py
    └── AnalyticsTool2.py

运行特定的MCP实例

要运行特定的MCP实例,请使用 MCP_TOOLS_DIR 环境变量:

# Run the marketing MCP instance
MCP_TOOLS_DIR="./tools/marketing_mcp" MCP_INSTANCE_NAME="marketing-mcp" python server/start_mcp.py

# Run the analytics MCP instance
MCP_TOOLS_DIR="./tools/analytics_mcp" MCP_INSTANCE_NAME="analytics-mcp" python server/start_mcp.py

这将从指定的目录加载所有工具,并且从父工具目录加载所有工具。

服务器模式

单目录模式(默认):

python server/start_mcp.py

仅在根端点提供来自指定目录的工具 /sse.

组合目录模式(默认):

python server/start_mcp.py --include-subdir

在父目录、子目录以及MCP配置文件中找到的所有工具都将被部署到根端点 /sse

多端点模式:

python server/start_mcp.py --split-subdirs

每个子目录都有自己的端点:

  • Root工具: /sse
  • 营销工具: /marketing_mcp/sse
  • 分析工具: /analytics_mcp/sse
  • MCP配置工具: /example-mcp-server/sse

配置选项

  • MCP_TOOLS_DIR工具目录的路径(默认:"./tools")
  • MCP_HOST绑定服务器的主机(默认值:“0.0.0.0”)
  • MCP_PORT运行服务器的端口(默认:8080)
  • MCP_INSTANCE_NAME用于日志记录的实例名称(默认:“mcp-server”)
  • MCP_CONFIG_PATHstdio MCP 服务器的 mcp 配置文件路径(可选)
  • MCP_INCLUDE_SUBDIRS在根端点中包含所有子目录工具(默认:false)
  • MCP_SPLIT_SUBDIRS为子目录创建单独的端点(默认:false)

重要提示:MCP_INCLUDE_SUBDIRS=true所有来自子目录的工具都被加载到根目录中 /sse 在基础工具旁边设置一个端点。这样就创建了一个包含所有工具的单一端点。

这些也可以设置为命令行参数(配置路径除外):

python server/start_mcp.py --tools-dir ./tools/marketing --port 8001 --name marketing-mcp

部署到铁路(系统/网络)

  1. 参观 railway.com 翻译成中文是“铁路网”或“铁路.com(网站名,根据具体语境可灵活翻译)”。不过,通常在中文语境中,如果直接提到这个域名,可能会保留原样或稍作解释,比如“铁路相关的网站(railway.com)”。但在这里,为了简洁明了,直接翻译为“铁路网”也是可以接受的.
  2. 创建一个新项目,并选择从GitHub部署。
  3. 连接并选择您在第一步中创建的GitHub仓库。
  4. 设置所需的环境变量(参见.env.example文件)。如果您计划更改应用程序的端口,请确保相应地调整Dockerfile。
  5. 点击部署。

要部署多个MCP实例,请在Railway中创建多个服务,每个服务都具有不同的环境变量。

如果遇到问题,您可以点击最新的部署,然后点击“日志”选项卡来查看铁路系统的日志。

这台服务器使用 Dockerfilerailway.json. 设置 PG_DEFAULT_URL 在铁路变量中。集装箱启动 server/start_mcp.py

步骤5:复制您的铁路部署URL

  1. 进入设置 > 网络连接
  2. 点击“生成域名”
  3. 复制生成的URL。

在单端点模式下(默认):

  • 仅限root工具: https:///sse

在单端点模式下,与 MCP_INCLUDE_SUBDIRS=true

  • 所有工具(根目录 + 子目录): https:///sse

在多端点模式(带有 MCP_SPLIT_SUBDIRS=true):

  • Root工具: https:///sse
  • 子目录工具: https:////sse

来自(该系列/该品牌等,根据上下文补充具体信息)的其他MCP服务器 mcp.json 文件将在以下位置可访问:

https:///notionapi/sse
https:///example-mcp-server/sse

步骤6:将MCP服务器连接到Agencii

  1. 导航至 代理工具页面
  2. 点击“新建工具”
  3. 选择“MCP”
  4. 输入您的MCP服务器的URL
  5. 点击“同步工具”
  6. 点击“保存”
  7. 将您的工具添加到代理中。

我们建议再次复制此模板,并为每个新项目/客户重复此过程。

______________________________________________________________________

祝你建房愉快! 🚀

目录标签

目录标签

数据库工具只读访问PythonCursorPostgreSQL本地部署SQL验证LLM安全

支持客户端

CursorVS Code

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

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

来源信息

继续浏览同类 MCP