MCP Cloudflare について
MCP Cloudflareは、Cloudflareのゾーンと関連設定を管理するローカルMCPサーバーです。DNS、アクセス制御、ルール、キャッシュを扱う運用担当者向けで、APIトークンはローカルに保持されます。
主な機能
- 01ゾーンとDNSレコードの管理
- 02Transform RulesとPage Rulesの設定
- 03Accessアプリとポリシーの管理
- 04URL、タグ、ホスト、プレフィックス単位のキャッシュ削除
- 05stdioでのローカル実行とトークン保護
活用シーン
- 01DNSレコードの作成や更新
- 02レスポンスヘッダーの設定やURL書き換え
- 03ホスト名のアクセス方針の管理
- 04指定したCloudflareキャッシュの削除
MCP 対応
MCPクライアントにCloudflareのゾーン、DNS、ルール、Access、キャッシュ管理ツールを提供します。stdioでローカル実行します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Cloudflare CrunchTools
Cloudflare DNS、Transform Rules、Page Rules、キャッシュ管理に対応する安全な MCP(Model Context Protocol)サーバーです。
概要
この MCP サーバーは、次のように設計されています。
- デフォルトで安全 - 脅威モデリング、入力検証、トークン保護に対応
- サードパーティーサービス不使用 - stdio 経由でローカル実行されるため、API トークンがマシンの外部に送信されることはありません
- クロスプラットフォーム - Linux、macOS、Windows で動作します
- 自動更新 - GitHub Actions が CVE を監視し、依存関係を更新します
- コンテナ化 - Hummingbird Python ベースイメージ上に構築され、
quay.io/crunchtools/mcp-cloudflareで利用できます
命名規則
| コンポーネント | 名前 |
|---|---|
| GitHub リポジトリ | crunchtools/mcp-cloudflare |
| コンテナ | quay.io/crunchtools/mcp-cloudflare |
| Python パッケージ(PyPI) | mcp-cloudflare-crunchtools |
| CLI コマンド | mcp-cloudflare-crunchtools |
| モジュールのインポート | mcp_cloudflare_crunchtools |
Hummingbird を選ぶ理由
コンテナイメージは、Project Hummingbird の Hummingbird Python ベースイメージ上に構築されています。このベースイメージには、次の特長があります。
- CVE への露出を最小限に抑制 - Hummingbird イメージは最小限のパッケージセットで構築されており、汎用イメージと比較して攻撃対象領域を大幅に縮小します
- 定期的な更新 - セキュリティパッチが速やかに適用され、CVE の数を低く保ちます
- Python に最適化 - 高速で再現性の高いビルドを実現する uv パッケージマネージャーを備えた、事前設定済みの Python 環境です
- 本番環境に対応 - 適切なシグナル処理と非 root ユーザーのデフォルト設定を備え、本番環境のワークロード向けに設計されています
これにより、一般的な Python コンテナイメージよりも脆弱性の少ない、強化された環境で MCP サーバーを実行できます。
機能
ゾーン管理(2 ツール)
list_zones- API トークンでアクセスできるすべてのゾーンを一覧表示しますget_zone- ID またはドメイン名でゾーンの詳細を取得します
DNS レコード(5 ツール)
list_dns_records- フィルタリングして DNS レコードを一覧表示しますget_dns_record- 単一の DNS レコードを取得しますcreate_dns_record- A、AAAA、CNAME、MX、TXT、NS、SRV、CAA レコードを作成しますupdate_dns_record- 既存のレコードを更新しますdelete_dns_record- レコードを削除します
Transform Rules(6 ツール)
list_request_header_rules/set_request_header_rules- リクエストヘッダーを変更しますlist_response_header_rules/set_response_header_rules- レスポンスヘッダーを変更しますlist_url_rewrite_rules/set_url_rewrite_rules- URL のパス/クエリを書き換えます
Page Rules(4 ツール)
list_page_rules- すべてのページルールを一覧表示しますcreate_page_rule- リダイレクト、キャッシュ設定、SSL モードを作成しますupdate_page_rule- 既存のルールを変更しますdelete_page_rule- ルールを削除します
Access(8 ツール)
get_access_organization- Zero Trust 組織と、そのチームログインドメインを取得しますlist_access_apps/get_access_app- ゾーン上のアプリケーションと、その対象者タグを取得しますcreate_access_app/delete_access_app- Access ログインの背後にホスト名を配置する、またはそこから外しますlist_access_policies- アプリケーションがアクセスを許可する対象者を取得しますcreate_access_policy/delete_access_policy- メールアドレス、メールドメイン、IP、または全員を対象に、許可、拒否、バイパスを設定します
キャッシュ管理(1 ツール)
purge_cache- URL、タグ、ホスト、プレフィックス、またはすべてを指定してキャッシュを消去します
インストール
uvx を使用(推奨)
uvx mcp-cloudflare-crunchtools
pip を使用
pip install mcp-cloudflare-crunchtools
コンテナを使用
podman run -e CLOUDFLARE_API_TOKEN=your_token \
quay.io/crunchtools/mcp-cloudflare
設定
Cloudflare API トークンの作成
-
API トークンに移動
- https://dash.cloudflare.com/profile/api-tokens に移動します
- 「Create Token」をクリックします
- 「Create Custom Token」の横にある「Get started」をクリックします
-
トークン名を設定
- 次の名前を入力します:
mcp-cloudflare-crunchtools
- 次の名前を入力します:
-
権限を設定
「Permissions」セクションには、行ごとに3つのドロップダウンがあります。
- 1つ目のドロップダウン:リソースの種類(
AccountまたはZone) - 2つ目のドロップダウン:具体的な権限カテゴリ
- 3つ目のドロップダウン:アクセスレベル(
ReadまたはEdit)
「+ Add more」をクリックして、権限の行を追加します。すべてを管理するには、次を追加します。
リソース 権限 アクセス Zone Zone Read Zone DNS Edit Zone Page Rules Edit Zone Transform Rules Edit Zone Cache Purge Purge Account Access: Apps and Policies Edit Account Access: Organizations, Identity Providers, and Groups Read - 1つ目のドロップダウン:リソースの種類(
-
ゾーンのリソースを設定
- 1つ目のドロップダウン:「Include」を選択します
- 2つ目のドロップダウン:「All zones」または「Specific zone」を選択します
-
クライアント IP アドレスのフィルタリングを設定(任意)
- 「Use my IP」ボタンをクリックして、トークンを現在の IP に制限します
-
トークンを作成してコピー
- 「Continue to summary」→「Create Token」をクリックします
- 重要:トークンをすぐにコピーしてください。表示されるのは一度だけです!
Claude Code に追加
claude mcp add mcp-cloudflare-crunchtools \
--env CLOUDFLARE_API_TOKEN=your_token_here \
-- uvx mcp-cloudflare-crunchtools
コンテナ版の場合:
claude mcp add mcp-cloudflare-crunchtools \
--env CLOUDFLARE_API_TOKEN=your_token_here \
-- podman run -i --rm -e CLOUDFLARE_API_TOKEN quay.io/crunchtools/mcp-cloudflare
用途別の権限セット
読み取り専用(表示のみ)
| リソース | 権限 | アクセス |
|---|---|---|
| Zone | Zone | Read |
| Zone | DNS | Read |
DNS のみを管理
| リソース | 権限 | アクセス |
|---|---|---|
| Zone | Zone | Read |
| Zone | DNS | Edit |
すべてを管理(全機能)
| リソース | 権限 | アクセス |
|---|---|---|
| Zone | Zone | Read |
| Zone | DNS | Edit |
| Zone | Page Rules | Edit |
| Zone | Transform Rules | Edit |
| Zone | Cache Purge | Purge |
使用例
ゾーンの一覧表示
User: List my Cloudflare zones
Assistant: [calls list_zones]
DNS レコードの作成
User: Create an A record for www.example.com pointing to 192.168.1.1
Assistant: [calls create_dns_record with type=A, name=www, content=192.168.1.1]
セキュリティヘッダーの追加
User: Add X-Content-Type-Options: nosniff to all responses for zone abc123...
Assistant: [calls set_response_header_rules with appropriate rule]
キャッシュのパージ
User: Purge the cache for https://example.com/styles.css
Assistant: [calls purge_cache with files=["https://example.com/styles.css"]]
セキュリティ
このサーバーは、セキュリティを最優先事項として設計されています。次の内容については、SECURITY.md を参照してください。
- 脅威モデルと攻撃ベクトル
- 多層防御アーキテクチャ
- トークンの取り扱いに関するベストプラクティス
- 入力検証ルール
- 監査ログ
主なセキュリティ機能
-
トークンの保護
- SecretStr として保存されます(誤ってログに記録されることはありません)
- 環境変数のみを使用します(ファイルや引数には含まれません)
- すべてのエラーメッセージからサニタイズされます
-
入力検証
- すべての入力に Pydantic モデルを使用します
- レコードの種類とアクションに許可リストを適用します
- ID の形式を厳密に検証します
-
API の強化
- API のベース URL をハードコードします(SSRF を防止)
- TLS 証明書を検証します
- リクエストのタイムアウトを設定します
- レスポンスのサイズを制限します
-
CVE の自動スキャン
- GitHub Actions が依存関係を毎週スキャンします
- セキュリティ更新用の PR を自動作成します
- Dependabot アラートを有効にしています
開発
セットアップ
git clone https://github.com/crunchtools/mcp-cloudflare.git
cd mcp-cloudflare
uv sync
テストの実行
uv run pytest
リントと型チェック
uv run ruff check src tests
uv run mypy src
コンテナのビルド
podman build -t mcp-cloudflare .
ライセンス
AGPL-3.0-or-later
コントリビューション
コントリビューションを歓迎します!セキュリティ関連の変更を提出する前に、SECURITY.md をお読みください。
リンク
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。