cloudflare-dns-mcp-server
cloudflare-dns-mcp-server
Сервер Model Context Protocol (MCP), который позволяет любому MCP-совместимому LLM-клиенту (Claude Code, Claude Desktop, пользовательским коннекторам claude.ai, Cursor и другим) читать и редактировать DNS-записи в вашем аккаунте Cloudflare. Он работает как потоковый HTTP-сервер (stateless JSON-режим, текущий стандарт MCP для удалённых серверов) с режимом stdio для клиентов, которые запускают локальные дочерние процессы.
Инструменты
Инструмент | Что делает |
| Подтверждает, что токен API действителен и активен |
| Перечисляет домены, которыми может управлять токен |
| Перечисляет/фильтрует записи в зоне (источник ID записей) |
| Получает одну запись по ID |
| Создаёт записи A/AAAA/CNAME/MX/TXT/SRV/CAA и т.д. |
| Частичное обновление; возвращает состояние до/после, чтобы изменения можно было откатить |
| Удаление (требуется |
| Экспортирует зону в файл BIND — сделайте резервную копию перед массовыми изменениями |
Related MCP server: cloudflare-dns-mcp-server
Установка
Требуется Node.js 20+.
1. Создайте ограниченный API-токен Cloudflare. В панели управления Cloudflare перейдите в My Profile → API Tokens → Create Token → используйте шаблон Edit zone DNS и в разделе Zone Resources ограничьте его конкретными зонами, которыми должна управлять модель. Не используйте Global API Key — ограниченный токен означает, что в худшем случае радиус поражения — это DNS только на этих зонах.
2. Установите и соберите:
npm install
npm run build3. Настройте и запустите:
cp .env.example .env # fill in tokens, then either export them or use a loader
export CLOUDFLARE_API_TOKEN="cf_..."
export MCP_AUTH_TOKEN="$(openssl rand -hex 24)" # protects the MCP endpoint itself
npm startКонечная точка MCP теперь доступна по адресу http://127.0.0.1:8787/mcp (проверка работоспособности — /healthz). Переменные окружения: HOST (по умолчанию 127.0.0.1), PORT (по умолчанию 8787), TRANSPORT (http по умолчанию или stdio), ALLOWED_ORIGINS (дополнительные браузерные источники, через запятую).
4. Быстрая проверка:
MCP_AUTH_TOKEN="<same token>" npm run smokeЭто подключается через реальный MCP-клиент, выводит список из 8 инструментов и вызывает cloudflare_verify_token. Также можно указать MCP Inspector URL: npx @modelcontextprotocol/inspector.
Подключение клиентов
Claude Code:
claude mcp add --transport http cloudflare-dns http://127.0.0.1:8787/mcp \
--header "Authorization: Bearer $MCP_AUTH_TOKEN"Cursor / другие клиенты с JSON-конфигурацией — любой клиент, поддерживающий потоковый HTTP с пользовательскими заголовками, работает так же:
{
"mcpServers": {
"cloudflare-dns": {
"url": "http://127.0.0.1:8787/mcp",
"headers": { "Authorization": "Bearer <MCP_AUTH_TOKEN>" }
}
}
}Клиенты, которые запускают только локальные stdio-серверы:
{
"mcpServers": {
"cloudflare-dns": {
"command": "node",
"args": ["/path/to/cloudflare-dns-mcp-server/dist/index.js"],
"env": { "CLOUDFLARE_API_TOKEN": "cf_...", "TRANSPORT": "stdio" }
}
}
}Пользовательские коннекторы claude.ai / Claude mobile требуют публичный HTTPS-URL — они не могут обращаться к localhost. Самый быстрый путь — Cloudflare Tunnel с машины, на которой запущен сервер:
cloudflared tunnel --url http://127.0.0.1:8787Важное предостережение: пользовательский интерфейс коннектора claude.ai аутентифицируется через OAuth или вообще никак — в нём нет поля для статического bearer-заголовка. Это оставляет два варианта для удалённого использования: разместить туннель за Cloudflare Access (сервисная аутентификация) и завершать аутентификацию там, либо запускать без MCP_AUTH_TOKEN и полагаться на секретность URL туннеля — что является заметно более слабой защитой для того, что может редактировать ваш DNS. При использовании Cloudflare Tunnel сервер по-прежнему привязывается к 127.0.0.1, поэтому согласие не требуется; но если вы открываете порт напрямую, а не через туннель, неаутентифицированная привязка не к localhost требует ALLOW_UNAUTHENTICATED=true. Проверьте текущие варианты аутентификации коннектора claude.ai перед выбором; это меняется со временем.
Замечания по безопасности
Сервер по умолчанию привязывается к 127.0.0.1 и отказывается запускаться без CLOUDFLARE_API_TOKEN. Если вы привязываетесь к любому другому адресу без установленного MCP_AUTH_TOKEN, он отказывается запускаться — любой, кто может достучаться до порта, сможет редактировать ваш DNS — если только вы не установите ALLOW_UNAUTHENTICATED=true, что допустимо только когда аутентификация завершается выше по потоку (например, Cloudflare Access). Запросы из браузерных источников отклоняются, если они не с localhost или не из ALLOWED_ORIGINS (защита от DNS-ребдинга). Токены читаются из окружения, никогда не логируются и не возвращаются ни одним инструментом.
Что касается безопасности модели: удаление требует явного аргумента confirm=true, обновления возвращают состояние до/после, чтобы любое изменение можно было откатить, а cloudflare_export_zone даёт резервную копию BIND в один вызов — стоит попросить модель выполнить его перед массовыми правками. DNS-изменения распространяются в реальный интернет; неверная запись может вывести сайт или почту из строя, поэтому проверяйте то, что предлагает модель, прежде чем допускать её к боевым зонам.
Разработка
npm run build # compile TypeScript → dist/
npm start # run HTTP server
npm run smoke # end-to-end client test against the running serverСтруктура исходников: src/index.ts (транспорты, middleware аутентификации), src/cloudflare.ts (API-клиент, разрешение зон, форматирование), src/tools.ts (регистрация инструментов).
Лицензия
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Cloudflare Workers MCP server: ai-guardrails
Cloudflare Workers MCP server: ai-agent-scratchpad
Cloudflare Workers MCP server: ai-gateway
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceA lightweight MCP server for managing DNS records, purging cache, and interacting with the Cloudflare API through natural language commands.24-
- AlicenseNot gradedqualityNot gradedmaintenanceA token-efficient MCP server for managing Cloudflare DNS zones and records with full CRUD support and bulk operations. It can be deployed locally via stdio or as a Cloudflare Worker for remote HTTP access.-
- AlicenseNot gradedqualityDmaintenanceMCP server for managing Cloudflare DNS across multiple zones from a single API token, enabling bulk operations like toggling proxy, listing records, and batch updates.19 npmMIT
- AlicenseAqualityCmaintenanceCloudflare DNS MCP server. Manage zones, DNS records, cache, and page rules from Claude, Cursor, Codex, or any MCP-compatible AI assistant.10MIT