
Cloudflare Tools
io.github.craft-agentPublished by GitHub account craft-agentv0.5.1Updated Nov 7, 2026
Cloudflare tools for coding agents: zones, DNS, analytics, Workers, Pages, storage and tunnels.
The publisher's own server: Cloudflare
Overview
Lets a coding agent inspect and change Cloudflare zones, DNS records, Workers, Pages, analytics and account settings through scoped API tokens.
- What you can do
- Read account details, token status and audit logs
- List zones, view settings, SSL and DNSSEC status; change zone settings, purge cache, toggle DNSSEC
- List, view, export and batch add, edit or delete DNS records
- Read zone traffic, top paths, countries, statuses, security events and Workers analytics
- List Workers, their deployments, versions, routes, domains, schedules and secret names; roll back a Worker
- List Pages projects, deployments, build logs and custom domains; roll back production and add or remove domains
- When to use it
- Useful when an agent working in a repository also needs to look at or adjust the live Cloudflare setup behind it: checking DNS, purging cache, inspecting deployments or rolling back a Worker or Pages project without leaving the chat.
- Requirements
- Node.js 24 or later; runs locally over stdio, installed from npm or as a harness plugin. Cloudflare API tokens and account IDs are read from environment variables such as CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID, or labeled variants; a Global API Key is refused. Token scopes must cover the toolsets used. Analytics is off by default and enabled through the toolsets setting.
Installation
In SourceWeft
- Open Cloudflare Tools in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
cloudflare-tools
Cloudflare tools for coding agents: zones, DNS, analytics, Workers, Pages, storage and tunnels.
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:
OpenCode
OpenCode V2 takes the package and its options in opencode.json:
OpenCode V1 takes the package as a string, or as a pair with its options:
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/:
Claude Code
Codex
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
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.
Hermes Agent
Hermes installs a commit, not a tag, and the plugin installs disabled:
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:
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.
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.
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.
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).
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.
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.
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
- Write the spec in
src/core/<domain>/<verb>.tswithdefineTool: an ID<prefix>_<domain>_<verb>, a title and description, the Zod argument and output schemas, its toolset and write class, andexecute(args, context). A write tool also givestargets(args, context): what the call writes to, as a permission rule should name it. - Test it beside the spec (
<verb>.test.ts), calling it throughinvokeas the entry points do. A tool that runs a program is tested against a fake of that program onPATH; no test reaches a real service. - List it in
src/tools.ts. A new toolset goes intotoolsetsinsrc/project.ts(anddefaultToolsetswhen it is on by default). - Add or update the toolset's skill,
skills/<prefix>-<toolset>/SKILL.md. - Run
pnpm run build && pnpm run manifeststo list the tool inplugin.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.
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 undergrok -p, refuse a write they cannot ask about, unless it is allowed beforehand. - Grok Build calls the plugin's tools through its
use_tooltool, 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 -prefuses a tool it cannot ask about. - Hermes
hermes chat -qrefuses a write it cannot ask about;hermes -zand--yoloskip 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.
Lists are comma-separated in a flag or a variable. Where each harness reads them:
-
OpenCode takes the plugin
optionsshown above, with lists as arrays andread_onlyas a boolean, and falls back to the variables. -
Hermes takes
plugins.entries.cloudflare-tools.settingsinconfig.yaml: -
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
PATHandHOME) 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'sconfig.tomlinstead, with flags inargsand the variables to forward inenv_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:
- 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
accountleft 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_TOKENset withoutCLOUDFLARE_ACCOUNT_ID, as one exported for Wrangler may be, is still the unlabeled pair: a call that leavesaccountout fails, even when a complete labeled pair is set. Passaccount, 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
PATHandHOME) 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 inenv_vars.startup_timeout_secgivesnpxtime to fetch the package on the first start: -
Any other MCP host takes them in the
envof 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 todist/mcp.jsand run bycloudflare-tools.src/opencode/— the OpenCode plugin, built todist/opencode.js.src/cli/— the command line the Hermes plugin calls, built todist/cli.jsand run bycloudflare-tools-cli.src/hermes/,plugin.yamland__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/andmcp_config.json— the plugin manifests of the other harnesses. Codex reads.codex-plugin/plugin.json; a rootplugin.jsonwould make it load the plugin as an Agent Plugin, whose tool budget hides tools past a fixed size. The root.mcp.jsonis 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
Source: README.md at commit c7a6ce8
Tools
0Version history
1- v0.5.1LatestNov 7, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Other Cloudflare integrations

Cloudflare
com.cloudflare.mcpOfficial publisher
Cloudflare's documentation MCP server: lets an assistant search Cloudflare docs and read a Pages-to-Workers migration guide.

Cloudflare Mcp
Published by GitHub account mrfentmen
Query Cloudflare v4 (API token; set CLOUDFLARE_API_TOKEN, Bearer): zones, accounts, DNS records.

Cloudflare Radar
Published by GitHub account pipeworx-io
Pipeworx gateway pack exposing Cloudflare Radar internet data — traffic, DDoS attacks, BGP leaks, domain rankings and AI-bot share — to an AI assistant.

AMH Cloudflare Ops MCP by WT
Published by GitHub account pain2hustle
Approval-gated Cloudflare operations server: lets an assistant inspect DNS, email authentication, Pages and cache, then apply changes only after review.

Cloudflare
Published by GitHub account ofershap
A local MCP server that lets an AI assistant manage Cloudflare zones, DNS records, Workers, KV, R2 buckets and cache purges from the IDE.