Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Cloudflare

FreeNot checked

Manages DNS records and Cloudflare Tunnels for a Cloudflare zone via the Cloudflare API. Supports listing, creating, updating, and deleting DNS records, as well

GitHubEmbed

About

Manages DNS records and Cloudflare Tunnels for a Cloudflare zone via the Cloudflare API. Supports listing, creating, updating, and deleting DNS records, as well as tunnel lifecycle operations.

README

A tiny TypeScript MCP server to manage the DNS records of a Cloudflare zone through the Cloudflare API. Zone-agnostic: point it at any zone via env vars.

Requirements

  • Node.js 18+
  • A Cloudflare API token. Permissions by feature:
    • DNS tools → Zone:DNS:Edit (+ Zone:Read to resolve the zone by name)
    • Tunnel tools → Account:Cloudflare Tunnel:Edit (+ Account:Account Settings:Read to auto-resolve the account id)

Configuration

Variable Description
CLOUDFLARE_API_TOKEN Cloudflare API token (see permissions above)
CLOUDFLARE_ZONE_ID The 32-char hex Zone ID or the zone name (e.g. example.com). A name is resolved to its id at startup (needs Zone:Read).
CLOUDFLARE_ACCOUNT_ID Optional. Account id for tunnel tools. Auto-resolved from the token if omitted (needs Account:Read).

Copy .env.example to .env and fill it in. Never commit .env.

Scripts

npm install
npm run build   # emit dist/
npm run dev     # tsx src/index.ts (stdio)
npm start       # node dist/index.js

Tools

Tool Description
dns_list List all DNS records in the zone (optional type filter: A, CNAME, MX, TXT…)
dns_get Get a record by name (e.g. app.example.com)
dns_create Create a record (type, name, content, proxied, ttl)
dns_update Update content/proxy of an existing record by name
dns_delete Delete a record by name
tunnel_list List cloudflared tunnels in the account
tunnel_create Create a remotely-managed tunnel (idempotent by name); returns its run token
tunnel_token Get the run token for an existing tunnel
tunnel_configure Set a tunnel's public-hostname ingress (hostname → local service)
tunnel_delete Delete a tunnel by name

Stand up a tunnel end-to-end

tunnel_create   name=my-dev                                   → returns id + token
tunnel_configure name=my-dev hostname=dev.example.com service=http://localhost:8770
dns_create      type=CNAME name=dev.example.com content=<id>.cfargotunnel.com
# then run it locally (no cert.pem needed):
#   TUNNEL_TOKEN=<token> cloudflared tunnel run

Example (via an MCP client)

dns_list                                → all records
dns_get    name=app.example.com         → inspect one record
dns_create type=CNAME name=dev.example.com content=<tunnel-id>.cfargotunnel.com
dns_update name=dev.example.com proxied=true
dns_delete name=old.example.com

Use as an MCP server

Point your MCP client at the built or dev entrypoint over stdio, passing the two env vars. Example (generic MCP config):

{
  "command": "npx",
  "args": ["-y", "tsx", "/absolute/path/to/cloudflare-mcp/src/index.ts"],
  "env": {
    "CLOUDFLARE_API_TOKEN": "<your-token>",
    "CLOUDFLARE_ZONE_ID": "example.com"
  }
}

License

MIT

from github.com/tecnomanu/cloudflare-mcp

Installing Cloudflare

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/tecnomanu/cloudflare-mcp

FAQ

Is Cloudflare MCP free?

Yes, Cloudflare MCP is free — one-click install via Unyly at no cost.

Does Cloudflare need an API key?

No, Cloudflare runs without API keys or environment variables.

Is Cloudflare hosted or self-hosted?

A hosted option is available: Unyly runs the server in the cloud, no local setup required.

How do I install Cloudflare in Claude Desktop, Claude Code or Cursor?

Open Cloudflare on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Cloudflare with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs