Cloudflare
БесплатноНе проверенManages DNS records and Cloudflare Tunnels for a Cloudflare zone via the Cloudflare API. Supports listing, creating, updating, and deleting DNS records, as well
Описание
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 a Cloudflare zone through the Cloudflare API: DNS records, cloudflared tunnels and Email Routing. 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:Readto resolve the zone by name) - Tunnel tools →
Account:Cloudflare Tunnel:Edit(+Account:Account Settings:Readto auto-resolve the account id) - Email Routing rules →
Zone:Email Routing Rules:Edit(:Readis enough for the read-only tools) - Email Routing destinations →
Account:Email Routing Addresses:Edit
- DNS tools →
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 exact id, or by a name that resolves to exactly one record |
dns_create |
Create a record (type, name, content, proxied, priority for MX, ttl, comment). Only A/AAAA/CNAME are proxied by default |
dns_update |
Update content/proxy by exact id, or by a name plus optional type that resolves to exactly one record |
dns_delete |
Delete by exact id, or by a name plus optional type that resolves to exactly one record |
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 |
email_routing_status |
Whether Email Routing is enabled on the zone |
email_routing_enable |
Enable Email Routing; Cloudflare adds and locks its MX/SPF/DKIM records |
email_routing_dns |
The records routing needs and any problem Cloudflare sees with them |
email_routing_disable |
Disable routing and remove its records (confirm=true) |
email_rules_list |
List routing rules — which @zone addresses forward where, catch-all included |
email_rule_create |
Forward an address on the zone to a verified destination |
email_rule_delete |
Delete a rule by address or tag |
email_rule_set_enabled |
Turn a rule on or off without deleting it |
email_catch_all_set |
Drop, or forward to a verified destination, mail no rule matches |
email_destinations_list |
List the account's destination addresses and whether each is verified |
email_destination_add |
Add a destination address (Cloudflare emails it a verification link) |
email_destination_delete |
Remove a destination address from the account |
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
Forward an address end-to-end
email_destination_add [email protected] → verification link sent (click it)
email_rule_create address=hello [email protected]
email_rules_list → confirm [email protected] → [email protected]
A destination must be verified before a rule can forward to it, and the zone
needs Email Routing enabled: email_routing_enable adds the MX/SPF/DKIM
records, email_routing_dns confirms they are in place.
Token scopes: Account · Email Routing Addresses (destinations) and
Zone · Email Routing Rules (rules, enable/disable) live in different scopes;
granting one in the wrong scope returns Authentication error (code 10000)
while everything else keeps working.
Safety semantics
- DNS: names are not record identities.
dns_get,dns_update, anddns_deleteaccept an exact recordid(preferred), or a name that resolves to exactly one record; ambiguous names are rejected instead of selecting the first result. For updates/deletes, passtypewhen it is needed to make the name unique. - Tunnels:
tunnel_configureandtunnel_ingressreplace the current ingress configuration. They refuse to replace existing hostname routes unlessreplace_existing=trueis passed explicitly. - Email Routing:
email_rule_createchecks existing literal recipient rules and refuses to create a duplicate instead of adding another forwarding rule.email_rule_deleteandemail_rule_set_enabledrefuse an address that more than one rule matches; pass the exact tag.email_routing_disablerequiresconfirm=true.
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
Установка Cloudflare
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/tecnomanu/cloudflare-mcpFAQ
Cloudflare MCP бесплатный?
Да, Cloudflare MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Cloudflare?
Нет, Cloudflare работает без API-ключей и переменных окружения.
Cloudflare — hosted или self-hosted?
Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.
Как установить Cloudflare в Claude Desktop, Claude Code или Cursor?
Открой Cloudflare на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Unyly Deploy
Deploy sites and MCP servers to Unyly straight from your AI agent
автор: UnylyAmap Maps Mcp Server
MCP server for using the AMap Maps API
автор: duxiaohuiPayMCP
Lightweight payments layer for MCP servers: turn tools into paid endpoints with a two-line decorator. [PyPI](https://pypi.org/project/paymcp/) · [npm](https://w
автор: blustAIServer For Power BI
Enables exploring Microsoft Fabric / Power BI workspaces and semantic models, and executing ad-hoc DAX queries.
автор: Mitsubishi-FusoGpt Image 2 Mcp
RunAPI GPT Image 2 MCP server for image generation: create tasks, poll results, and check pricing across 1 model from Claude Code, Codex, Cursor, and VS Code.
автор: runapi-aiTemplate MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectSupabase
Database, auth and storage
автор: SupabaseCompare Cloudflare with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
