cloudflare-dns-mcp-server
cloudflare-dns-mcp-server
Model Context Protocol (MCP) サーバーで、MCP 互換の LLM クライアント(Claude Code、Claude Desktop、claude.ai カスタムコネクタ、Cursor など)が Cloudflare アカウントの DNS レコードを読み取り・編集できるようにします。これはストリーミング可能な HTTP サーバー(ステートレス JSON モード、リモートサーバー向けの現在の MCP 標準)として動作し、ローカルサブプロセスサーバーを起動するクライアント向けの stdio モードも備えています。
Tools
Tool | 説明 |
| API トークンが有効でアクティブであることを確認します |
| トークンが管理できるドメインを一覧表示します |
| ゾーン内のレコードを一覧表示/フィルタリングします(レコード ID の取得元) |
| ID で 1 つのレコードを取得します |
| A/AAAA/CNAME/MX/TXT/SRV/CAA などのレコードを作成します |
| 部分更新。編集を元に戻せるように変更前/変更後を返します |
| 削除( |
| ゾーンを BIND ファイルとしてエクスポート — 一括変更の前にバックアップを取得します |
Related MCP server: cloudflare-dns-mcp-server
Setup
Node.js 20+ が必要です。
1. スコープ付き Cloudflare API トークンを作成します。 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 startMCP エンドポイントは 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。
Connecting clients
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 のカスタムコネクタ UI は OAuth または認証なしでのみ認証され、静的ベアラーヘッダーのフィールドはありません。そのため、リモート使用には 2 つの選択肢があります: トンネルを Cloudflare Access(サービス認証)の背後に置き、そこで認証を終了させるか、MCP_AUTH_TOKEN を設定せずに実行し、トンネル URL が秘密に保たれることに依存するかです。これは DNS を編集できるものにとってはかなり弱い保護です。Cloudflare Tunnel を使用する場合、サーバーは依然として 127.0.0.1 にバインドされるため、オプトインは不要です。ただし、トンネルではなくポートを直接公開する場合、認証なしの非 localhost バインドには ALLOW_UNAUTHENTICATED=true が必要です。選択する前に、現在の claude.ai コネクタの認証オプションを確認してください。これは時間とともに変わります。
Security notes
サーバーはデフォルトで 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 は 1 回の呼び出しで BIND バックアップを提供します。一括編集の前にモデルに実行させる価値があります。DNS の編集は実際のインターネットに伝播します。誤ったレコードはサイトやメールをオフラインにする可能性があるため、本番ゾーンでモデルを実行する前に、モデルが提案する内容を確認してください。
Development
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(トランスポート、認証ミドルウェア)、src/cloudflare.ts(API クライアント、ゾーン解決、フォーマット)、src/tools.ts(ツール登録)。
License
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