MCP server: One MCP server.

MCP Cloudflare DNS

@ayo-famMCP server · External

Cloudflare DNS MCP server: manage zones, records, cache purge, and page rules.

Domain namesv0.1.1MITPython
Freeno charge per call

Runs on your machine from its package; the steps are below.

What it does

  1. Reads
  2. Writes
  3. High impact

At most: moves money, runs code or commands, deletes data, or sends messages for you.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

Runs locally over stdio

This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).

PyPImcp-cloudflare-dnsv0.1.1

Run

uvx mcp-cloudflare-dns

MCP client config

{
  "mcpServers": {
    "mcp-cloudflare-dns": {
      "command": "uvx",
      "args": [
        "mcp-cloudflare-dns"
      ]
    }
  }
}
README2 min read

Cloudflare DNS MCP server for operators who need zone, record, cache, and page-rule control from an MCP client without opening the Cloudflare dashboard for every change.

Release posture: beta package, version 0.1.1 from pyproject.toml.

Choose your path

You are...Start hereThen
Installing the server in Claude/Codex/Cursordocs/start-here.mdQuick start below
Verifying what the server can touchAvailable toolsdocs/architecture.md
Auditing packaging or release metadatapyproject.tomlserver.json

Architecture

mermaid
flowchart TD
  U[AI operator] --> C[MCP client]
  C --> S[FastMCP server]
  E[CF_API_TOKEN] --> S
  S --> T[Tool handlers]
  T --> R[Retry wrapper]
  R --> A[Cloudflare API]
  A --> R --> T --> C

Request flow

mermaid
flowchart TD
  Q[Operator asks for a DNS change] --> H[Selected MCP tool]
  H --> I[Load token and build client]
  I --> J{Cloudflare call succeeds?}
  J -- yes --> K[Return normalized JSON result]
  J -- retryable --> L[Backoff and retry]
  L --> J
  J -- no --> M[Return error payload]

Quick start

  1. Install the package.
bash
python -m pip install mcp-cloudflare-dns
  1. Export a token with DNS permissions.
bash
export CF_API_TOKEN="your-cloudflare-api-token"
  1. Register it in your MCP client.
json
{
  "mcpServers": {
    "cloudflare-dns": {
      "command": "uvx",
      "args": ["mcp-cloudflare-dns"],
      "env": {
        "CF_API_TOKEN": "your-cloudflare-api-token"
      }
    }
  }
}

Available tools

Tool groupToolsPurpose
Zone inventorylist_zones, get_zone, get_zone_settingsInspect available zones and key settings
DNS recordslist_dns_records, get_dns_record, create_dns_record, update_dns_record, delete_dns_recordRead and mutate records
Edge actionspurge_cache, list_page_rulesInvalidate cached content and inspect page rules

delete_dns_record and full-cache actions stay gated behind the destructive env flags described in docs/start-here.md.

Runtime proof

ClaimProof
Package entry point is stablemcp-cloudflare-dns = "cf.server:main" in pyproject.toml
Server is MCP-specific, not a generic CLIFastMCP("mcp-cloudflare-dns") in cf/server.py
Cloudflare failures are retried_call() in cf/server.py
Release artifacts are builtdist/ wheel and tarball are checked into the repo

Repo map

PathPurpose
cf/server.pyFastMCP tool surface, env loading, retry wrapper
pyproject.tomlPackage metadata, version, script entry point
server.jsonRegistry-facing metadata for MCP discovery
docs/start-here.mdSetup, env, validation, common failures
docs/architecture.mdComponent map and request lifecycle

Validation

CheckCommand
Import compilespython -m compileall cf
Package buildspython -m build
README links stay localrg '\\]\\(([^)]+\\.md)\\)' README.md docs/

License

MIT

Project context for new tasks

Read prompt.md, then INDEX.md, for project-specific decisions, task routes and current handoff. Historical examples do not select the current task.

Similar modules

Browse Domain names