Cloudflare Tools

io.github.craft-agent由 GitHub 账号 craft-agent 发布v0.5.1更新于 Nov 7, 2026

Cloudflare tools for coding agents: zones, DNS, analytics, Workers, Pages, storage and tunnels.

发布方自己的服务:Cloudflare

概览

AI 生成的概览

让编码助手通过受限 API 令牌查看和修改 Cloudflare 的区域、DNS 记录、Workers、Pages、分析数据与账户设置。

可以做什么
  • 读取账户信息、令牌状态与审计日志
  • 列出区域、查看设置、SSL 与 DNSSEC 状态;修改区域设置、清除缓存、开关 DNSSEC
  • 列出、查看、导出 DNS 记录,并批量新增、修改或删除记录
  • 读取区域流量、热门路径、国家、状态码、安全事件与 Workers 分析数据
  • 列出 Workers 及其部署、版本、路由、域名、定时触发器和密钥名称;回滚 Worker
  • 列出 Pages 项目、部署、构建日志与自定义域名;回滚生产版本并增删域名
适用场景
适合在仓库中工作的助手需要同时查看或调整其背后的线上 Cloudflare 配置时使用,例如检查 DNS、清除缓存、查看部署或回滚 Worker 与 Pages 项目,而无需离开对话。
运行要求
需要 Node.js 24 或更高版本;以 stdio 本地运行,可从 npm 或作为宿主插件安装。Cloudflare API 令牌和账户 ID 从环境变量读取,如 CLOUDFLARE_API_TOKEN 与 CLOUDFLARE_ACCOUNT_ID 或带标签的变体;不接受 Global API Key。令牌权限需覆盖所用工具集。分析工具默认关闭,需通过 toolsets 设置开启。
安装前请注意
令牌可实际控制线上 DNS、缓存、区域设置、Workers 与 Pages,应尽量缩小权限范围。写入工具会新增、修改或删除 DNS 记录,修改区域设置,清除缓存,开关 DNSSEC,回滚 Workers 与 Pages,增删自定义域名;部分操作总会先询问,但某些宿主在未设权限规则时会直接执行写入。只读模式不注册任何写入工具。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Cloudflare Tools,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

cloudflare-tools

Cloudflare tools for coding agents: zones, DNS, analytics, Workers, Pages, storage and tunnels.

HarnessDeliveryPinned by
OpenCode V2native plugin (npm package, with skills)the version in the package
OpenCode V1native plugin (npm package, no skills)the version in the package
Claude Codeplugin: MCP server and skillsthe release tag, as the ref
Codexplugin: MCP server and skillsthe release tag, as the ref
Grok Buildplugin: MCP server and skillsthe release tag, as @ref
Antigravityplugin: MCP server and skillsthe release tag's tree URL
Hermes Agentnative plugin (Python, calls the command line)the release commit, as the SHA
other MCP hostMCP server from npmthe version in the package

The tools need Node.js 24 or later. docs/conventions.md describes how the tools are named and how they behave.

Install

Install from a release, never from the default branch: a release is a tag whose commit carries the built dist/, and the default branch does not. In the commands below, <version> is a release's version (1.2.3) and <sha> is the commit its tag names:

sh
gh api repos/craft-agent/cloudflare-tools/commits/v<version> --jq .sha

OpenCode

OpenCode V2 takes the package and its options in opencode.json:

json
{  "plugins": [{ "package": "@craftsamo/cloudflare-tools@<version>", "options": { "read_only": false } }],  "permissions": [{ "action": "cloudflare_*", "resource": "*", "effect": "ask" }]}

OpenCode V1 takes the package as a string, or as a pair with its options:

json
{  "plugin": [["@craftsamo/cloudflare-tools@<version>", { "read_only": false }]],  "permission": { "cloudflare_*": "ask" }}

OpenCode allows any action no rule names, so the plugin's request is granted silently unless a rule says ask. Read tools never ask, so the cloudflare_* glob is safe.

V1 registers no skills. Unpack the package and copy its skills/* folders into ~/.config/opencode/skills/:

sh
npm pack @craftsamo/cloudflare-tools@<version>tar -xzf craftsamo-cloudflare-tools-<version>.tgzmkdir -p ~/.config/opencode/skillscp -r package/skills/* ~/.config/opencode/skills/rm -rf package craftsamo-cloudflare-tools-<version>.tgz

Claude Code

sh
claude plugin marketplace add craft-agent/cloudflare-tools#v<version>claude plugin install cloudflare-tools@craft-agent

Codex

sh
codex plugin marketplace add craft-agent/cloudflare-tools --ref v<version>codex plugin add cloudflare-tools@craft-agent

Codex turns - into _ in server names, so it shows the tools as mcp__cloudflare_tools__cloudflare_*. It starts the MCP server in the plugin's install directory, which is never the caller's working tree.

Grok Build

sh
grok plugin install craft-agent/cloudflare-tools@v<version> --trust

Grok starts the MCP server in the session's working directory.

Antigravity

Install from the tree of the release tag, never from the default branch, which has no built dist/; Antigravity clones the tag into ~/.gemini/config/plugins/cloudflare-tools.

sh
agy plugin install https://github.com/craft-agent/cloudflare-tools/tree/v<version>

Hermes Agent

Hermes installs a commit, not a tag, and the plugin installs disabled:

sh
hermes plugins install craft-agent/cloudflare-tools --ref <sha>hermes plugins enable cloudflare-tools

If a Hermes gateway is already running, restart it (hermes gateway restart) to load the plugin.

Any other MCP host

Add the server to the host's MCP configuration. Flags go in args:

json
{  "mcpServers": {    "cloudflare-tools": {      "command": "npx",      "args": ["-y", "@craftsamo/cloudflare-tools@<version>", "--read-only"]    }  }}

Tools and skills

Each toolset comes with a skill that tells an agent how to use its tools.

Account (account)

Account credentials, token verification, and audit logs.

ToolWhat it doesClass
cloudflare_account_readview account details and token status, list configured accounts, or query audit logsread

The skill is cloudflare-account, shown as cloudflare-tools:cloudflare-account in Claude Code and cloudflare-tools:account in Hermes.

Zones (zones)

Zone lookup, settings (read and change), Universal SSL, certificates, and DNSSEC.

ToolWhat it doesClass
cloudflare_zone_readlist zones, view details, read settings, Universal ssl status, or dnssecread
cloudflare_zone_setting_editchange 1–20 zone settings in order; refuses a change that lowers protectionoverwrite
cloudflare_zone_setting_weakenchange zone settings in ways that lower a visitor's protection; always asks firstadministrative
cloudflare_zone_cache_purgepurge cached copies of up to 100 URLs, hosts, prefixes or tags in a zoneidempotent
cloudflare_zone_cache_purge_allpurge the whole cache of a zone; always asks firstadministrative
cloudflare_zone_dnssec_enableturn DNSSEC on for a zone; harmless until registrar publishes the DS recordidempotent
cloudflare_zone_dnssec_disableturn DNSSEC off for a zone; requires DS removed at registrar firstadministrative

The skill is cloudflare-zones, shown as cloudflare-tools:cloudflare-zones in Claude Code and cloudflare-tools:zones in Hermes.

DNS (dns)

DNS records: list, read one in full, export the zone file, add records, change them, and delete them.

ToolWhat it doesClass
cloudflare_dns_readlist records, view one in full, or export the zone file in BIND formread
cloudflare_dns_record_addadd 1–20 records of eight types in one all-or-nothing batchadd
cloudflare_dns_record_editchange 1–20 records by id in one all-or-nothing batch; never a record's typeoverwrite
cloudflare_dns_record_deletedelete 1–20 records by id, with replacements in the same batch; always asks firstadministrative

The skill is cloudflare-dns, shown as cloudflare-tools:cloudflare-dns in Claude Code and cloudflare-tools:dns in Hermes.

Analytics (analytics)

Analytics: read a zone's traffic per day (requests, bandwidth, cache hits, threats, page views and unique visitors), the most requested paths, client countries and response statuses, what the security features did (not on the Free plan) and the latest security events, and the account's Workers invocations, errors and CPU time, over a recent time range. This toolset is off by default; turn it on with the toolsets setting (see Settings).

ToolWhat it doesClass
cloudflare_analytics_readtraffic per UTC day; the top paths, countries and statuses; security and security_events; workersread

The token needs Zone → Analytics → Read, and Zone Read to look the zone up; workers needs Account → Account Analytics → Read instead.

The skill is cloudflare-analytics, shown as cloudflare-tools:cloudflare-analytics in Claude Code and cloudflare-tools:analytics in Hermes.

Workers (workers)

Workers: list them, read one's settings and bindings, deployments and versions, a zone's Worker routes, custom domains, cron triggers and secret names and types, and roll a Worker back to versions that served before. Building, uploading and deploying new code stay with Wrangler; routes, custom domains and cron triggers are read here and changed in wrangler.toml.

ToolWhat it doesClass
cloudflare_workers_readlist, view, deployments, versions, routes, domains, schedules, secrets (names only)read
cloudflare_workers_rollbackroll a Worker back to versions that served before; always asks firstadministrative

The token needs Workers Scripts Read; routes also needs Workers Routes Read; routes, and domains with zone, need Zone Read to look the zone up. The rollback needs Workers Scripts Write.

The skill is cloudflare-workers, shown as cloudflare-tools:cloudflare-workers in Claude Code and cloudflare-tools:workers in Hermes.

Pages (pages)

Pages: list projects, read their build settings, environment variable names and bindings, production and preview deployments, including which one is live, a build's logs, and custom domains; switch a project's production back or forward to a deployment that built successfully; and add or remove its custom domains. Building and deploying new code stay with Git and Wrangler; the DNS records of a custom domain stay with the DNS tools.

ToolWhat it doesClass
cloudflare_pages_readlist projects, view one, its deployments, a build's logs, custom domainsread
cloudflare_pages_rollbackswitch production to a deployment that built successfully; always asks firstadministrative
cloudflare_pages_domain_addadd a custom domain to a project, creating no DNS record; always asks firstadministrative
cloudflare_pages_domain_removeremove a custom domain from a project, deleting no DNS record; always asks firstadministrative

The token needs the Pages Read permission. The writes need Pages Write, and the DNS lookups of the domain tools need Zone Read and DNS Read.

The skill is cloudflare-pages, shown as cloudflare-tools:cloudflare-pages in Claude Code and cloudflare-tools:pages in Hermes.

Adding a tool

  1. Write the spec in src/core/<domain>/<verb>.ts with defineTool: an ID <prefix>_<domain>_<verb>, a title and description, the Zod argument and output schemas, its toolset and write class, and execute(args, context). A write tool also gives targets(args, context): what the call writes to, as a permission rule should name it.
  2. Test it beside the spec (<verb>.test.ts), calling it through invoke as the entry points do. A tool that runs a program is tested against a fake of that program on PATH; no test reaches a real service.
  3. List it in src/tools.ts. A new toolset goes into toolsets in src/project.ts (and defaultToolsets when it is on by default).
  4. Add or update the toolset's skill, skills/<prefix>-<toolset>/SKILL.md.
  5. Run pnpm run build && pnpm run manifests to list the tool in plugin.yaml, then describe it under "Tools and skills".

docs/conventions.md has the rules each step follows.

Reads and writes

Every read tool is named <prefix>_<domain>_read. Reads can run unasked; writes are confirmed by the harness.

HarnessReads without asking
OpenCodealways; the plugin asks only before a write
Claude Codethe rule mcp__plugin_cloudflare-tools_cloudflare-tools__*_read in permissions.allow of ~/.claude/settings.json
Codexalways; Codex runs tools that declare readOnlyHint unasked, as the read tools do
Grok Buildgrok --allow 'MCPTool(cloudflare-tools__*_read)' --allow 'MCPTool(cloudflare_*_read)' (both rules; see below)
Antigravitythe rule mcp(cloudflare-tools_cloudflare-tools/<tool id>) in permissions.allow, one for each read tool
Hermesalways; the plugin asks only before a write

Where a write is asked about, and where it is not:

  • OpenCode grants any action no rule names, so a write runs unasked unless a rule asks for it: add the cloudflare_* rule shown under OpenCode.
  • Codex under codex exec, and Grok Build under grok -p, refuse a write they cannot ask about, unless it is allowed beforehand.
  • Grok Build calls the plugin's tools through its use_tool tool, and the agent often names a tool without its server first. Grok checks the rules against the name as given, so the server-qualified rule alone does not match that first call. The second rule matches the short name; a write still matches neither.
  • Antigravity asks before any MCP tool no rule allows, reads included, and names the plugin's server cloudflare-tools_cloudflare-tools (plugin, then server). agy -p refuses a tool it cannot ask about.
  • Hermes hermes chat -q refuses a write it cannot ask about; hermes -z and --yolo skip approval, so writes then run unasked.

Settings

Every entry point takes the same settings. A flag wins over its environment variable, and an option or setting wins over the variable too.

SettingFlagVariableMeaning
toolsets--toolsetsCLOUDFLARE_TOOLS_TOOLSETSthe toolsets that are on, or all; default those src/project.ts names
read_only--read-onlyCLOUDFLARE_TOOLS_READ_ONLYregisters no tool that writes; wins over every other setting
tools--toolsCLOUDFLARE_TOOLS_TOOLSsingle tools to add by ID, whatever their toolset
exclude_tools--exclude-toolsCLOUDFLARE_TOOLS_EXCLUDE_TOOLSsingle tools to remove by ID; wins over tools and toolsets
confirm--confirmCLOUDFLARE_TOOLS_CONFIRMMCP server only: harness (default) or elicitation, as the conventions say

Lists are comma-separated in a flag or a variable. Where each harness reads them:

  • OpenCode takes the plugin options shown above, with lists as arrays and read_only as a boolean, and falls back to the variables.

  • Hermes takes plugins.entries.cloudflare-tools.settings in config.yaml:

    yaml
    plugins:  entries:    cloudflare-tools:      settings:        read_only: false        exclude_tools: []
  • Claude Code, Grok Build and Antigravity start the plugin's server without flags and pass it the client's environment, so set the variables in the environment the harness runs in.

  • Codex passes a plugin's MCP server only a few basic variables (such as PATH and HOME) and those the plugin's manifest names, which are the variables above: set them in the environment Codex runs in. To pass flags, add the server under [mcp_servers] in Codex's config.toml instead, with flags in args and the variables to forward in env_vars, as Credentials shows.

Where each harness takes the variables from, and when one needs a restart to see a change, is under Credentials.

Credentials

The tools call Cloudflare with API tokens read from the environment, never from a setting or an argument. Each token comes with the id of the one account it acts on:

VariablesPicked by
CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_IDaccount left out, or account: "default"
CLOUDFLARE_API_TOKEN_<LABEL>, CLOUDFLARE_ACCOUNT_ID_<LABEL>account: "<label>", the label in lowercase
  • The unlabeled pair has the names Wrangler reads. A label is 1 to 24 lowercase letters, digits and _, written in capitals in its variables (my_site → CLOUDFLARE_API_TOKEN_MY_SITE).
  • With account left out, a call takes the unlabeled pair, or the only label when there is no unlabeled pair; with several labels and no unlabeled pair it fails and lists them.
  • A CLOUDFLARE_API_TOKEN set without CLOUDFLARE_ACCOUNT_ID, as one exported for Wrangler may be, is still the unlabeled pair: a call that leaves account out fails, even when a complete labeled pair is set. Pass account, or unset the stray token.
  • Use an API token scoped to what the tools should do; a Global API Key is refused.

Set the variables where each harness starts the tools:

  • OpenCode V2 runs the plugin in its background service, which keeps the environment it started with: set them where the service starts, and restart it (opencode service restart) after setting or changing one. OpenCode V1 runs the plugin in its own process, so the environment it runs in is enough.

  • Claude Code, Antigravity and Grok Build pass the plugin's server the environment the harness runs in.

  • Hermes passes the environment it runs in, but a gateway already running keeps the one it started with: restart it (hermes gateway restart) after setting or changing one.

  • Codex passes a plugin's server only a few basic variables (such as PATH and HOME) and the settings' variables its manifest names, never the credentials. Add a server of the same name to ~/.codex/config.toml, which takes the plugin server's place (the plugin's skills stay), and name the variables to forward in env_vars. startup_timeout_sec gives npx time to fetch the package on the first start:

    toml
    [mcp_servers.cloudflare-tools]command = "npx"args = ["-y", "@craftsamo/cloudflare-tools@<version>"]env_vars = ["CLOUDFLARE_API_TOKEN_<LABEL>", "CLOUDFLARE_ACCOUNT_ID_<LABEL>"]startup_timeout_sec = 120
  • Any other MCP host takes them in the env of its server entry.

Layout

  • src/project.ts — the package's name, tool ID prefix, setting prefix and toolsets.
  • src/core/ — the tool contract and the tools, free of any harness and of the project's names.
  • src/tools.ts — the list of every tool, which each entry point registers.
  • src/mcp/ — the MCP server, built to dist/mcp.js and run by cloudflare-tools.
  • src/opencode/ — the OpenCode plugin, built to dist/opencode.js.
  • src/cli/ — the command line the Hermes plugin calls, built to dist/cli.js and run by cloudflare-tools-cli.
  • src/hermes/, plugin.yaml and __init__.py — the Hermes plugin.
  • skills/ — one skill per toolset, skills/<name>/SKILL.md, which every harness that takes skills loads from the package or plugin root.
  • .claude-plugin/, .codex-plugin/, .agents/plugins/, .mcp.json, .antigravity-plugin/ and mcp_config.json — the plugin manifests of the other harnesses. Codex reads .codex-plugin/plugin.json; a root plugin.json would make it load the plugin as an Agent Plugin, whose tool budget hides tools past a fixed size. The root .mcp.json is the configuration Grok Build reads (with ${CLAUDE_PLUGIN_ROOT}, the variable both Grok Build and Claude Code expand); when working on this repository in Claude Code, decline the project MCP server it offers from that file.

How a release is made is in RELEASING.md.

License

MIT

来源:README.md,提交 c7a6ce8

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.5.1最新Nov 7, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Cloudflare 集成