Reads and safe writes work with the token alone; deleting a record and purging an entire zone's cache require CF_ALLOW_DESTRUCTIVE=true as well, so the worst outcomes are not one hallucinated argument away. Updates apply only the fields you pass, which means changing a TTL does not silently rewrite the record's content.
A Cloudflare operations server covering zones, DNS records, cache and page rules, with the destructive actions held behind a separate flag.
- Zones on the account listed and filtered by name, and one zone opened for its details
- A zone's key security and performance settings — SSL mode, security level, minification, always-https, brotli
- DNS records listed for a zone, filtered by name or record type, and one fetched by record ID
- Records created with content, TTL, proxied state, priority and a comment
- Records updated with only the fields you pass — the rest are left as they are
- Record deletion, which refuses to run unless CF_ALLOW_DESTRUCTIVE=true
- Cache purged for a zone, either by specific URLs or everything
- Page rules listed for a zone, optionally filtered by status
A Cloudflare API token in CF_API_TOKEN, scoped for Zone DNS Edit, Zone Read and Cache Purge — CLOUDFLARE_API_TOKEN is accepted as an alternate name. Deleting a record and purging the whole cache additionally need CF_ALLOW_DESTRUCTIVE=true, which is deliberately a separate decision from having the token. Run it with uvx mcp-cloudflare-dns over stdio, from the PyPI package mcp-cloudflare-dns, currently 0.1.1; MCP_TRANSPORT=sse with MCP_HOST and MCP_PORT switches to remote hosting. Cloudflare 429 and 5xx responses are retried with backoff. The project describes its release posture as beta.
Build from source — clone the repository and build it, then point your client at the binary
