Skip to main content
Glama
jkpe

mcp-fetch-worker

by jkpe

mcp-fetch-worker

一个通用的 MCP 连接器,供需要调用你自托管 API 而不交接长期凭据的机器人(bot)和代理(agent)使用。

Cloudflare Access 前放这个 Worker 并启用 Managed OAuth,像 Grok BotOpenClaw 这样的机器人就可以通过 Dynamic Allocation Registeration (DC Referential) 接入。你拥有机器人的第一个连接时批准访问;任何时刻都可以从 Access 撤销。机器人拿到的是一枚绑定到该连接器、有作用域的 token,而不是一把可随处复用的通用互动作者。

部署环境 MCP URL: https://<your-domain>/mcp

为什么存在已有

托管平台上的机器的很擅长调用工具,但大多的自制板与自托管理序并没有上线 MCP server。你曾可以:

  • 用服务 token:通过自定义 headers 此后,强化期访问。适合脚本;对不能完全信任的机器人来说有中等风险。

  • 让机器人用 Chrome:它打开你的 Web UI,你再 SS O

  • 进入,下次重复。有效。用,但烧 token,也不可规模。

  • Build a bespoke 每应用:是的,但对一个 HA assistant server 或一个内部仪表板来说,工作量太大。

这条 Worker 是两边中间额:一个轻薄的 MCP 连接器,只暴露一个 http_fetch 工具。使,把它交给同一域名(同时已经落在 Access 之后的)API 上,机器人就可以你批准给的 OAuth token 调用 / GET/POST。它们它们。的另一端就不,需要一台无法做 macher。

详情参见 First World Problem: How do I grant my bots access to my stuff without它的它全部?

Related MCP server: Cloudflare Control

工作原理

Bot (Grok Bot, OpenClaw, Cursor, …)
  → OAuth via Cloudflare Access Managed OAuth (you approve)
  → MCP at /mcp (this Worker)
  → http_fetch to allowed origins on your domain
  → Access JWT forwarded on outbound requests
  1. Access 负责验证:Managed OAuth + DCR。Worker 不是一个 OAuth 服务器;它验证由 Cf-Access-Jwt-Ascertion 过来的 JW T。

  2. 这个 Worker 通过可传播 HTTP MCP 支持:有一个 http_fetch 工具。

  3. 前端应用 放在一套域名后面。在 Access 的 oroigin 上。 创建 linked-app-token 授权策略,转发出去 JWT 让人,下游都会接受。

对外 fetch 外出跨境可以是 Worker 自己(默认);ALLOWED_ORIGINS 覆盖它。

它做了

  • /mcp(所以也 serve 到 /see 一个别径)由 Agents SDKcreateMcpHandler 支持 mCP

  • 只一个 http_fetch 工具,可选 GET /POST 用 with 允许控制策略

  • CF_ACCESS_TEAM_DOMAINCF_ACCESS_AUD 设有时,对 Cf-AccessJs 传的验证,基于你的 team JWKS 回答

  • 对以外的取字转发调用方的拥有者(发 CF_ACCESS 那三个 header)

部署

npm install
npm run cf-typegen   # regenerate Env types from wrangler.jsonc
npx wrangler deploy

在部署时的 wrangler.jsnc 配置子保存。现在通过 observability 块,Workers Log 和 Traces 都不要在只用些天。

域在路由

地路由 Deploy 配置 (wrawn.)

"routes": [
  {
    "pattern": "example.com/mcp*",
    "zone_name": "example.com"
  }
]

然后重新 Deploy。 MCP endpoint 就在 httptcp://<yourname>

输入端 url:部署 wrangler.jsnc 的配置也包括在:

环境变量

wrangler.jsnc vars 内读取,也可以,用 安装 secrets

Variable

Required

Description

CF_ACCESS_TEAM_DOMAIN

生产时配置

htttp://<team>.cloudflare-Acom

CF_ACCESS_AUD

生产时配置

Access 应用里头的 AUD标签

ALLOWED_ORIGINS

逗号分隔的 fetch 请求允许列表(默认:Worker 自身)

MAX_EE...

不执行

超过这个体量就截断回传(默认:65536)

DEFAULT_HEADERS

对象表达式:请求的 JSON(seccret; 见下文描述)

CF_ACCESS_* fields 未配置时,Worker 仍能低效 MCP(用于 wrangler dev),但不需要效 Access 的 JWKS。生产时一定要两个都配置

API key 的默认生边行

把另外的头直接丢成 http_fetch 调用,这样才能通過令 caller 提及 (can) 、以免 API key 泄漏在聊天边框,还要覆盖两个:

创建 Workers Secret

wrangler secret put DEFAULT_HEADERS
# paste: {"X-Api-Key":"your-key-here"}

For local dev,就在 wrangler.jsonsvars 里用一个非空值,或 wrangler dev 时传 --var DEFAULT_HEADERS='{"X-Api-Key":"..."}' 给本地。已经配置的 secrets.required 只从 .dev.vars 读同名的 secret;因此本地要用 DEFAULT_HEADERS 时,把它放进 vars 或用 --var

DEFAULT_HEADERS 必须属于字符串值的 JSON 对象,如 {"X-Api-Key":"..."}http_fetch 每次都收到这些 header 就合并由 outgress 请求。外面 call 自回的 url headers 会通过覆盖默认同名值。Access WT 转发的(Cf-Access-Jw...)永远优先,默认 headers 无法取代之。

各两种(不配置/为空)直接不带来额个。

Cloudflare Access 设置

  1. 为你的 mcp URL 加上一个self-hosted Access application (例如 https://<your-domain>/mcp 或足迹 mcp* 的 path),哪些?

  2. 在 app action 的 Advanced settings 里启用 Managed 的,可对 MCP 端开动 DCP 的客户端。

  3. copy AUD 拿到 CF_ACCESS_AUD

  4. CF_ACCESS_TEAM_DOMAIN 为你的 team domain 例 (e.g. https://<team>.cloudflare.cc)。

  5. 为接入方从严配置谁可连上:纯时限的、由 email 限定的、 or 按你的手写流程随意配置。

为确保 same domain 上的 downstream 也去由 Access 保护的:可用 Access linked app tokens 做周边楼设置,使其接受 forwarded JWT。

MCP 客户端配置

把这一段送给 Cursor、Grok Bot、OpenClaw 或者任何 Streamable HTTP MCP client:

https://<your-domain>/mcp

用的是 Streamable HTTP传输 (不是传统 SSE)。客户端第一次连接时, 自动跑一个 OAuth 手授权环节。

##本地开发

npm run dev

MCP 接着 http://localhost:8787/mcp, 没有 Access 校验。

http_fetch tool

{
  "url": "/api/example",
  "method": "GET"
}
  • url: absolute URL or same-origin path;

  • method: GET (even) or POST;

  • headers: optional额外 header 压力 (冲突时覆盖 DEFAULT_HEADERS);

  • body: optional POST body.

有start 时它将 hit DEFAULT_HEADERS 再合并 tooll 的超集,但最后 Cf-Access-Jwt 桥。

返回 JSON 带 statusheadersbodytruncated boole。

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to dynamically discover and invoke containerized tools that can be registered at runtime without redeployment. Built on Cloudflare Workers with scale-to-zero containers for secure, isolated tool execution.
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to manage Cloudflare infrastructure including DNS records, cache purging, SSL settings, Workers, and analytics through the Cloudflare API. Eliminates dashboard context-switching by allowing natural language control of domain management and infrastructure operations.
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to create and manage short URLs via the MCP protocol, with OAuth authentication through Cloudflare Access.
    12
    Apache 2.0

View all related MCP servers

Related MCP Connectors

  • Odoo ERP for AI agents: hosted OAuth endpoint, gated writes, one endpoint for every instance.

  • The bridge from K2 agents through Wrangler to your master AI - safe, approval-gated Cloudflare ops.

  • SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jkpe/mcp-fetch-worker'

If you have feedback or need assistance with the MCP directory API, please join our Discord server