Token导航 LogoToken导航TokenDH.com
Cloudflare Remote PostgreSQL Database MCP Server logo
数据服务stdio官方级别未说明来源级核验

Cloudflare Remote PostgreSQL Database MCP Server

MCP Server

@modelcontextprotocol/inspector@latest

一个基于Cloudflare Workers的MCP服务器,通过GitHub OAuth认证,允许用户与PostgreSQL数据库进行交互,包括查询、写入和模式发现等功能。

工具数

3

提示词数

0

GitHub Stars

1

资源数

0
数据库交互Cloudflare WorkersClaudePostgreSQLClaude DesktopClaudeCursorWindsurf

安装说明

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

作者 / 组织

technophile-04

提供方

technophile-04

最后核验

2026/5/17 20:22

运行时

Node.js

快速接入

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

命令预览

npx @modelcontextprotocol/inspector@latest

详细介绍

Cloudflare 远程 PostgreSQL 数据库 MCP 服务器 + GitHub OAuth

这是一个 模型上下文协议(MCP) 使您能够使用的服务器 与您的 PostgreSQL 数据库聊天可作为通过Cloudflare部署的远程MCP服务器,使用GitHub OAuth进行身份验证。这是一个已准备好投入生产的MCP。

主要特点

  • 🗄️ 与Lifespan的数据库集成所有MCP工具调用直接连接到PostgreSQL数据库
  • 🛠️ 模块化、专用工具遵循MCP工具及其说明的最佳实践
  • 🔐 基于角色的访问控制基于GitHub用户名的数据库写操作权限
  • 📊 模式发现自动检索表和列信息
  • 🛡️ SQL注入防护内置验证和清理功能
  • 📈 监控可选的Sentry集成,用于生产环境监控
  • ☁️ 云原生由……提供支持/驱动 Cloudflare Workers(云网关工作者) 针对全球范围

模块化架构

这款MCP服务器采用了简洁、模块化的架构,便于扩展和维护:

  • src/tools/ - 在单独的文件中实现单个工具
  • registerAllTools() - 集中化的工具注册系统
  • 可扩展设计 - 通过在(指定目录/路径)中创建文件来添加新工具 tools/ 并进行注册

这种架构使您能够轻松添加新的数据库操作、外部API集成或任何其他MCP工具,同时保持代码库的组织性和可维护性。

传输协议

此MCP服务器支持现代和传统传输协议:

  • /mcp - 可流式传输的HTTP (推荐):使用单一端点进行双向通信,支持自动连接升级,并具有更好的网络中断恢复能力
  • /sse - 服务器发送事件 (遗留系统):使用独立的端点进行请求/响应,为保持向后兼容性而保留

对于新的实现,请使用 /mcp 选择该端点,因为它提供了更好的性能和可靠性。

它是如何工作的

MCP服务器提供了三种主要的数据库交互工具:

  1. listTables - 获取数据库架构和表信息(所有已认证用户)
  2. queryDatabase - 执行只读SQL查询(所有已认证用户)
  3. executeDatabase - 执行INSERT/UPDATE/DELETE等写操作(仅限特权用户)

认证流程用户通过GitHub OAuth进行身份验证 → 服务器验证权限 → 根据用户的GitHub用户名提供工具访问权限。

安全模型

  • 所有经过身份验证的GitHub用户均可读取数据
  • 只有特定的GitHub用户名才能写入/修改数据
  • 内置SQL注入防护和查询验证功能

先从一个简单例子开始

在深入了解完整的数据库实现之前,想先看看一个基本的MCP服务器吗?那就来看看吧 src/simple-math.ts - 一个带有单一(功能/组件)的最小化MCP服务器 calculate 一个执行基本数学运算(加、减、乘、除)的工具。此示例展示了MCP的核心组件:服务器设置、使用Zod模式定义工具,以及双传输支持(/mcp 并且 /sse (终端点)。您可以在本地运行它,使用 wrangler dev --config wrangler-simple.jsonc 并在(指定时间或条件下)进行测试 http://localhost:8789/mcp

先决条件

  • 您的机器上已安装 Node.js
  • 一个Cloudflare账户(免费套餐即可)
  • 用于OAuth设置的GitHub账户
  • 一个PostgreSQL数据库(本地或托管)

入门指南

步骤1:安装Wrangler CLI

全局安装 Wrangler 以管理您的 Cloudflare Workers:

npm install -g wrangler

步骤2:使用Cloudflare进行身份验证

登录您的Cloudflare账户:

wrangler login

这将打开一个浏览器窗口,您可以在其中使用您的 Cloudflare 帐户进行身份验证。

步骤3:克隆并设置

直接克隆仓库并安装依赖项: npm install

环境变量设置

在运行MCP服务器之前,您需要配置几个环境变量以进行身份验证和数据库访问。

创建环境变量文件

  1. 创建你的 .dev.vars 文件 从例子中可以看出:
   cp .dev.vars.example .dev.vars
  1. 配置所有必需的环境变量 在里面 .dev.vars:
   # GitHub OAuth (for authentication)
   GITHUB_CLIENT_ID=your_github_client_id
   GITHUB_CLIENT_SECRET=your_github_client_secret
   COOKIE_ENCRYPTION_KEY=your_random_encryption_key

   # Database Connection
   DATABASE_URL=postgresql://username:password@localhost:5432/database_name

   # Optional: Sentry monitoring
   SENTRY_DSN=https://your-sentry-dsn@sentry.io/project-id
   NODE_ENV=development

获取GitHub OAuth凭据

  1. 创建一个GitHub OAuth应用程序 用于本地开发:

- 首选 - 点击“新建OAuth应用” - 应用程序名称: MCP Server (Local Development) - 主页网址http://localhost:8792 - 授权回调URLhttp://localhost:8792/callback - 点击“注册应用”

  1. 复制您的凭据:

- 复制 客户端ID 并将其粘贴为 GITHUB_CLIENT_ID.dev.vars - 点击“生成新的客户端密钥”,复制它,然后粘贴为 GITHUB_CLIENT_SECRET.dev.vars

生成加密密钥

为cookie加密生成一个安全的随机加密密钥:

openssl rand -hex 32

复制输出内容并粘贴为 COOKIE_ENCRYPTION_KEY.dev.vars.

数据库设置

  1. 设置 PostgreSQL 使用类似以下的托管服务:

- Supabase(可译为“苏帕巴斯”或根据具体语境保留原名,因其是一个特定的软件或服务名称,直接翻译可能不常见) (推荐给初学者) - 霓虹灯 - 或者使用本地的 PostgreSQL/Supabase

  1. 更新DATABASE_URL.dev.vars 使用您的连接字符串:
   DATABASE_URL=postgresql://username:password@host:5432/database_name

连接字符串示例:

  • 本地postgresql://myuser:mypass@localhost:5432/mydb
  • Supabase: postgresql://postgres:your-password@db.your-project.supabase.co:5432/postgres

数据库模式设置

MCP服务器可与任何PostgreSQL数据库架构配合工作。它将自动发现:

  • 文中所有表格 public 模式;架构
  • 列名、类型和约束
  • 主键和索引

测试连接一旦您的数据库设置完成,您可以通过向MCP服务器询问“数据库中有哪些表?”来测试它,然后查询这些表以探索您的数据。

本地开发与测试

在本地运行服务器:

wrangler dev

这使得服务器可以在 http://localhost:8792

使用MCP Inspector进行测试

使用 MCP 检查器 测试您的服务器:

  1. 安装并运行Inspector
   npx @modelcontextprotocol/inspector@latest
  1. 连接到您的本地服务器

- 优选的;更喜欢的输入网址: http://localhost:8792/mcp (可流式传输的HTTP传输方式 - 更新、更健壮) - 替代方案输入网址: http://localhost:8792/sse (SSE传输 - 向后兼容支持) - 点击“连接” - 按照OAuth提示进行GitHub身份验证 - 一旦连接成功,您将看到可用的工具

  1. 测试工具:

- 使用 listTables 查看您的数据库结构 - 使用 queryDatabase 执行SELECT查询 - 使用 executeDatabase (如果您有写入权限)进行插入/更新/删除操作

生产部署

设置一个KV命名空间

  • 创建KV命名空间:

wrangler kv namespace create "OAUTH_KV"

  • 更新 wrangler.jsonc 带有KV ID的文件(替换 )

部署

部署MCP服务器,使其在workers.dev域名下可用

wrangler deploy

在生产环境中创建环境变量

创建一个新(的) :

  • 对于主页URL,请指定 https://mcp-github-oauth..workers.dev
  • 对于授权回调URL,请指定 https://mcp-github-oauth..workers.dev/callback
  • 记下您的客户端ID并生成一个客户端密钥。
  • 通过 Wrangler 设置所有必需的密钥:
wrangler secret put GITHUB_CLIENT_ID
wrangler secret put GITHUB_CLIENT_SECRET
wrangler secret put COOKIE_ENCRYPTION_KEY  # use: openssl rand -hex 32
wrangler secret put DATABASE_URL
wrangler secret put SENTRY_DSN  # optional (more on Sentry setup below)

测试

使用以下方法测试远程服务器 检查员

npx @modelcontextprotocol/inspector@latest

输入 https://mcp-github-oauth..workers.dev/mcp (首选)或 https://mcp-github-oauth..workers.dev/sse (旧版)并点击连接。一旦您完成身份验证流程,您就会看到工具正在工作:

您现在已经部署了一个远程MCP服务器!

数据库工具与访问控制

可用工具

1. listTables (所有用户)

目的发现数据库模式和结构\ 访问所有经过验证的GitHub用户\ 使用始终先运行此命令以了解您的数据库结构

Example output:
- Tables: users, products, orders
- Columns: id (integer), name (varchar), created_at (timestamp)
- Constraints and relationships

2. queryDatabase (所有用户)

目的执行只读SQL查询\ 访问所有已认证的GitHub用户\ 限制仅允许使用SELECT语句和读取操作

-- Examples of allowed queries:
SELECT * FROM users WHERE created_at > '2024-01-01';
SELECT COUNT(*) FROM products;
SELECT u.name, o.total FROM users u JOIN orders o ON u.id = o.user_id;

3. executeDatabase (仅限特权用户)

目的执行写操作(INSERT、UPDATE、DELETE、DDL)\ 访问仅限特定的GitHub用户名\ 能力完全数据库写入访问权限,包括模式修改

-- Examples of allowed operations:
INSERT INTO users (name, email) VALUES ('New User', 'user@example.com');
UPDATE products SET price = 29.99 WHERE id = 1;
DELETE FROM orders WHERE status = 'cancelled';
CREATE TABLE new_table (id SERIAL PRIMARY KEY, data TEXT);

访问控制配置

数据库写入访问权限由GitHub用户名控制 ALLOWED_USERNAMES 配置:

// Add GitHub usernames for database write access
const ALLOWED_USERNAMES = new Set([
  'yourusername',    // Replace with your GitHub username
  'teammate1',       // Add team members who need write access
  'database-admin'   // Add other trusted users
]);

更新访问权限

  1. 编辑 src/index.ts 并且 src/index_non_sentry.ts
  2. 更新 ALLOWED_USERNAMES 设置GitHub用户名
  3. 重新部署工作节点: wrangler deploy

典型工作流程

  1. 🔍 发现使用 listTables 了解数据库结构
  2. 📊 查询使用 queryDatabase 阅读并分析数据
  3. ✏️ 修改使用 executeDatabase (如果你有写入权限)进行更改

安全特性

  • SQL注入防护所有查询在执行前均经过验证
  • 操作类型检测自动检测读取与写入操作
  • 用户上下文追踪所有操作均记录在案,并附有GitHub用户信息
  • 连接池高效的数据库连接管理
  • 错误净化(或错误处理/错误清理)数据库错误在返回给用户之前已被清除

从Claude桌面访问远程MCP服务器

打开Claude桌面版,导航至设置 -> 开发者 -> 编辑配置。这将打开控制Claude可以访问哪些MCP服务器的配置文件。

将内容替换为以下配置。一旦您重启Claude桌面应用程序,将打开一个浏览器窗口,显示您的OAuth登录页面。完成身份验证流程以授予Claude访问您的MCP服务器的权限。授权后,工具将可供您使用。

{
  "mcpServers": {
    "math": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp-github-oauth..workers.dev/mcp"
      ]
    }
  }
}

一旦工具(位于🔨下)出现在界面上,您就可以让Claude与您的数据库进行交互。示例命令:

  • “数据库中有哪些可用的表?” → 用途 listTables 工具
  • “显示过去30天内创建的所有用户” → 用途 queryDatabase 工具
  • “添加一个名为John的新用户,邮箱为john@example.com” → 用途 executeDatabase 工具(如果您有写入权限)

使用Claude和其他MCP客户端

当使用Claude连接到您的远程MCP服务器时,您可能会看到一些错误信息。这是因为Claude Desktop目前还不支持远程MCP服务器,所以有时会感到困惑。要验证MCP服务器是否已连接,请将鼠标悬停在Claude界面右下角的🔨图标上。您应该在那里看到您的可用工具。

使用Cursor和其他MCP客户端

要将Cursor连接到您的MCP服务器,请选择 Type“命令”以及在 Command 字段,将命令字段和参数字段合并为一个(例如。 npx mcp-remote https://..workers.dev/sse)。

请注意,虽然 Cursor 支持 HTTP+SSE 服务器,但它不支持身份验证,因此您仍然需要使用 mcp-remote (并且使用STDIO服务器,而不是HTTP服务器)。

你可以通过打开客户端的配置文件,添加用于设置Claude的相同JSON配置,然后重启MCP客户端,将你的MCP服务器连接到其他MCP客户端,如Windsurf。

Sentry 集成(可选)

此项目包含可选的Sentry集成,用于全面的错误追踪、性能监控和分布式追踪。提供两个版本:

  • src/index.ts - 标准版,不含Sentry
  • src/index_sentry.ts - 与Sentry完全集成的版本

设置Sentry

  1. 创建一个Sentry账户在……注册 sentry.io(可译为“森特里点”或根据具体语境保留原名,因为“sentry.io”是一个特定的网站或服务名称,在中文中通常不直接翻译其域名) 如果你还没有账户。
  1. 创建一个新项目在Sentry中创建一个新项目,并选择“Cloudflare Workers”作为平台(在右上角进行搜索)。
  1. 获取您的数据源名称 (DSN)从您的Sentry项目设置中复制DSN。

在生产环境中使用Sentry

使用Sentry监控进行部署:

  1. 设置Sentry DSN密钥
   wrangler secret put SENTRY_DSN

当系统提示时,请输入您的 Sentry 数据传输名称 (DSN)。

  1. 更新你的 wrangler.toml 文件 使用启用了Sentry的版本:
   main = "src/index_sentry.ts"
  1. 使用Sentry进行部署
   wrangler deploy

在开发中使用 Sentry

  1. 在你的(项目/配置中)添加Sentry DSN .dev.vars 文件
   SENTRY_DSN=https://your-sentry-dsn@sentry.io/project-id
   NODE_ENV=development
  1. 启用Sentry后运行:
   wrangler dev

包含的Sentry功能

  • 错误追踪自动捕获所有错误及其上下文
  • 性能监控全请求追踪,采样率为100%
  • 用户上下文自动将GitHub用户信息绑定到事件
  • 工具追踪每个MCP工具调用都附带参数进行追踪
  • 自定义错误处理带有事件ID的用户友好型错误消息
  • 上下文丰富化自动标记和上下文信息,助力更高效的调试

它是怎么工作的?

OAuth 提供者

OAuth 提供者库为 Cloudflare Workers 提供了一个完整的 OAuth 2.1 服务器实现。它处理 OAuth 流程中的复杂性,包括令牌的发放、验证和管理。在这个项目中,它扮演着双重角色:

  • 验证连接到您服务器的MCP客户端
  • 管理与GitHub OAuth服务的连接
  • 在键值(KV)存储中安全地存储令牌和认证状态

耐用型MCP(多路复用器控制器/模块,具体含义根据上下文确定)

持久化MCP通过Cloudflare的持久化对象(Durable Objects)扩展了基础MCP的功能,提供了:

  • 为您的MCP服务器提供持久状态管理
  • 在请求之间安全地存储认证上下文
  • 通过……访问经过验证的用户信息 this.props
  • 根据用户身份支持有条件地提供工具可用性

MCP 远程

MCP Remote库使您的服务器能够暴露工具,这些工具可以被MCP客户端(如Inspector)调用。它

  • 定义客户端与您的服务器之间的通信协议
  • 提供了一种结构化的方式来定义工具
  • 处理请求和响应的序列化与反序列化
  • 维护客户端与您的服务器之间的服务器发送事件(SSE)连接

测试

这个项目包括全面的单元测试,涵盖了所有主要功能:

npm test        # Run all tests
npm run test:ui # Run tests with UI

该测试套件涵盖了数据库安全、工具注册、权限处理以及响应格式化,并对外部依赖进行了适当的模拟。

目录标签

目录标签

数据库交互Cloudflare WorkersClaudePostgreSQLTypeScript本地部署MCP协议CloudflareWorkersGitHubOAuth

支持客户端

Claude DesktopClaudeCursorWindsurf

接入字段

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

stdio

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

oauth

运行时(runtime,运行环境)

Node.js

部署方式(deploymentType,部署类型)

remote-capable

来源包(packageName,安装包名)

@modelcontextprotocol/inspector@latest

工具数量(toolCount,工具数)

3

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdiooauthremote-capable

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

安装前确认

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

来源信息

继续浏览同类 MCP