/ ディレクトリ / プレイグラウンド / Cloudflare
● 公式 cloudflare 🔑 自分のキーが必要

Cloudflare

作者 cloudflare · cloudflare/mcp-server-cloudflare

Cloudflare公式MCP — Workers のデプロイ、D1 へのクエリ、R2・KV の管理、ログやアナリティクスの閲覧をすべてチャットから実行できます。

Cloudflare公式のMCPです(実際には複数のサービス群で、*.mcp.cloudflare.com でリモート提供されています)。Workers のデプロイとログ、D1 SQL、KV/R2 ストレージ、DNS ゾーン、Radar アナリティクスをカバーします。OAuth ベースのため、APIトークンを手動で管理する必要はありません。

なぜ使うのか

主な機能

ライブデモ

実際の動作

cloudflare.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "cloudflare": {
      "command": "npx",
      "args": [
        "-y",
        "@cloudflare/mcp-server-cloudflare"
      ]
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "cloudflare": {
      "command": "npx",
      "args": [
        "-y",
        "@cloudflare/mcp-server-cloudflare"
      ]
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "cloudflare": {
      "command": "npx",
      "args": [
        "-y",
        "@cloudflare/mcp-server-cloudflare"
      ]
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "cloudflare": {
      "command": "npx",
      "args": [
        "-y",
        "@cloudflare/mcp-server-cloudflare"
      ]
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "cloudflare",
      "command": "npx",
      "args": [
        "-y",
        "@cloudflare/mcp-server-cloudflare"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "cloudflare": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "@cloudflare/mcp-server-cloudflare"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add cloudflare -- npx -y @cloudflare/mcp-server-cloudflare

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: Cloudflare

本番環境で500エラーを返している Worker をデバッグする

👤 オンコール対応中の Cloudflare Workers 開発者 ⏱ ~15 min intermediate

使うタイミング: Worker のエラー率が急上昇した場合に使用します。ダッシュボードを開かずに、ログ・最近のデプロイ・変更差分を確認したいときに最適です。

前提条件
  • Cloudflare アカウントが OAuth で MCP クライアントに接続済みであること — 最初のツール呼び出し時に OAuth が起動します。'Workers Observability' と 'Workers Bindings' スコープを許可してください
フロー
  1. エラーでフィルタして Worker の最新ログをテールする
    Tail logs for Worker 'api-edge' in the last 15 minutes. Filter to status >= 500. Group by the first 100 chars of the error message.✓ コピーしました
    → エラーテンプレートの上位が件数とタイムスタンプ付きで表示される
  2. 最近のデプロイ一覧を確認する
    List the last 5 deployments of 'api-edge'. Show deploy time, author, and the version hash.✓ コピーしました
    → デプロイのタイムライン — エラー発生時刻との相関を確認
  3. 必要に応じてロールバックする
    The error spike starts after the deploy at 14:22. Roll 'api-edge' back to the previous version. Ask me before confirming.✓ コピーしました
    → 破壊的操作の実行前に確認プロンプトが表示される

結果: 本番 Worker が復旧し、「デプロイ X がエラー Y を引き起こした」という明確なポストモーテムメモが残ります。

注意点
  • ログテールはリアルタイムのみ。すでに過ぎたバーストを見逃す可能性がある — 過去のウィンドウを確認するには、テールではなく Logpush または Analytics Engine MCP ツールを使用してください
  • ロールバックは D1/KV のステートを巻き戻さない — 問題のデプロイでマイグレーションが実行された場合、Worker のロールバックだけでは不十分です。D1 のリストアも必要になることがあります
組み合わせ: github · sentry

D1 データベースに対してアドホック分析クエリを実行する

👤 アプリデータに D1 を使用している開発者 ⏱ ~10 min beginner

使うタイミング: ダッシュボードを構築せずに、D1 からサインアップのコンバージョンや利用統計を取得したいときに使用します。

フロー
  1. 対象のデータベースを見つけてスキーマを確認する
    List my D1 databases. For the one called 'prod-app', show all tables and their columns.✓ コピーしました
    → データベースの一覧とスキーマ情報
  2. 分析クエリを実行する
    In D1 'prod-app', count users who signed up in the last 30 days grouped by week. Show only users who have at least one event in the events table.✓ コピーしました
    → 週ごとのカウント、有効なSQL
  3. さらに掘り下げる
    Break it down further by signup source. Which source has the best 7-day activation rate?✓ コピーしました
    → ソースごとの比較と率

結果: 意思決定に使える数値が SQL 付きで提示されます。

注意点
  • D1 にはクエリごとの行数および実行時間の制限がある — 大規模な集計の場合は、毎回生データをスキャンするのではなく、スケジュールでサマリーテーブルに事前集計してください
組み合わせ: notion

肥大化した KV ネームスペースを監査・クリーンアップする

👤 Workers のキャッシュが肥大化しているエンジニア ⏱ ~20 min intermediate

使うタイミング: KV の請求額が上がっており、古いキーや TTL の設定ミスが疑われるときに使用します。

フロー
  1. ネームスペースを調査する
    For KV namespace 'session-cache', list the first 1000 keys. Sample 10 values and tell me their structure.✓ コピーしました
    → キーパターンの分布とサンプル値の構造
  2. 古いエントリを特定する
    For keys matching session:*, how many haven't been accessed in >30 days? (Use metadata if present; otherwise sample and check timestamps in values.)✓ コピーしました
    → 古いキーの推定数と使用した判定基準
  3. 安全に削除する
    Delete keys matching session:expired:* in batches of 100. Show me the first batch before proceeding.✓ コピーしました
    → 削除前にバッチのプレビューが表示される

結果: ストレージコストが削減された、よりクリーンな KV ネームスペースになります。

注意点
  • KV は結果整合性のため、削除後にエッジ POP から一時的に復活して見えることがある — 一括削除後に即時の整合性を期待しないでください。1分ほど待ってから状態を確認してください

ドメイン移行前に DNS レコードをレビューする

👤 プロバイダー間でドメインを移行する運用エンジニア ⏱ ~15 min beginner

使うタイミング: ネームサーバーを変更する前に、MX、DMARC、忘れられたサブドメインなどを漏れなく棚卸ししたいときに使用します。

フロー
  1. すべてのレコードを出力する
    List all DNS records for zone example.com. Group by type. Include priorities for MX and weights for SRV.✓ コピーしました
    → 完全なレコードインベントリ
  2. 重要なレコードをフラグ付けする
    Highlight any that would break email (MX, SPF in TXT, DKIM, DMARC), plus any A/AAAA/CNAME pointing at third-party services (Stripe, HubSpot, status page).✓ コピーしました
    → 重要レコードの一覧と理由
  3. 移行チェックリストを作成する
    Turn this into a checklist I can run on the new provider — each record with its destination, TTL, and 'test after migration' step.✓ コピーしました
    → コピペで使えるランブック

結果: 移行当日にレコードの漏れを防ぐランブックが完成します。

注意点
  • 忘れられた DKIM レコードが24時間後にメール配信を静かに壊す_domainkey.<selector> レコードをすべて明示的にリストしてください。最も見落としやすいレコードです
組み合わせ: filesystem

ユーザーに影響するインターネット障害を Cloudflare Radar で確認する

👤 インシデント対応者、サポートリーダー ⏱ ~10 min intermediate

使うタイミング: ブラジルのユーザーからサイトがダウンしていると報告があった場合に使用します。自社の問題なのか、インターネット側の問題なのかを切り分けます。

フロー
  1. Radar で該当国の状況をクエリする
    Cloudflare Radar: is there any notable internet disruption in Brazil in the last 6 hours? Include BGP anomalies, ISP outages, attack traffic.✓ コピーしました
    → 既知のイベント一覧、または「異常なし」
  2. 自社のトラフィックとクロスチェックする
    For my zone example.com, traffic from BR in the last 6 hours — volume, HTTP status breakdown, top user agents.✓ コピーしました
    → ブラジル限定のトラフィックプロファイル
  3. 結論を出す
    Based on Radar + my traffic, is this a general Brazil-internet issue or specific to my site?✓ コピーしました
    → 根拠を伴った明確な判定

結果: 「当社の問題ではなく <ISP X> の障害」または「当社側の問題であり、原因はこれ」という根拠のある回答が得られます。

注意点
  • Radar データには約1時間のラグがある — 直近の障害については、自社の RUM データと併用してください
組み合わせ: sentry

組み合わせ

他のMCPと組み合わせて10倍の力を

cloudflare + github

Workers のロールバックを、リグレッションの原因となった GitHub PR と紐付ける

Worker 'api-edge' is failing since deploy at 14:22. Find the GitHub PR whose merge corresponds to that deploy and summarize its changes.✓ コピーしました
cloudflare + sentry

Sentry が Worker 起因のエラーを報告し、Cloudflare MCP が同じ requestId の Worker 側ログを取得する

Sentry issue EDGE-441 has CF-Ray 8abc123. Tail Worker 'api-edge' for that ray and show the matching log line.✓ コピーしました
cloudflare + filesystem

Worker のソースをローカルで編集し、wrangler でデプロイし、Cloudflare MCP のログで検証する

Fix the bug in src/index.ts at line 44, deploy, then tail 'api-edge' logs to confirm no more 500s.✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
workers_tail script_name: str, filter?: object Worker のリアルタイムログテール free (within plan limits)
workers_list_deployments script_name: str Worker の最近のバージョンを確認する free
workers_rollback script_name: str, version_id: str 以前のバージョンに戻す — ゲート付き、破壊的操作 free
d1_list_databases none D1 データベースの棚卸し free
d1_query database_id: str, sql: str, params?: [] SELECT または変更 SQL を実行する — 書き込みには明示的なプロンプト確認が必要 D1 pricing per rows read/written
kv_list_keys namespace_id: str, prefix?: str, limit?: int, cursor?: str 監査のためにキーを列挙する KV read pricing
kv_get_value / kv_put_value / kv_delete namespace_id, key, value?, ttl? 特定のキーの読み取り・書き込み・削除 KV op pricing
r2_list_buckets / r2_list_objects bucket?, prefix? R2 の棚卸し R2 read ops
r2_get_object / r2_put_object bucket, key, body? R2 オブジェクトの読み取り・書き込み R2 op pricing
dns_list_records zone_id: str ゾーンの棚卸し free
dns_create_record / update_record / delete_record zone_id, record params ゾーンの変更操作 — ゲート付き free
radar_get_http_timeseries / radar_get_attacks timeframe, region filters グローバルなインターネット健全性のコンテキスト取得 free
analytics_engine_query sql: str Workers Analytics Engine へのカスタムクエリ analytics engine read ops

コストと制限

運用コスト

APIクォータ
プランごとの Workers/D1/KV/R2 の制限が適用されます。MCP の呼び出しは通常の使用量としてカウントされます
呼び出しあたりのトークン
通常200〜2000トークン。ログテールは非常に大きくなる可能性があるため、必ずフィルタしてください
金額
MCP 自体は無料です。Cloudflare サービスの課金は通常どおり発生します
ヒント
D1 と KV は読み取り行数とオペレーション数で課金されます。一括リスト・スキャンは想定以上に高額になることがあります。控えめなページサイズでページネーションし、早めに打ち切ってください。

セキュリティ

権限、シークレット、影響範囲

最小スコープ: Workers:Read D1:Read KV:Read
認証情報の保管: OAuth トークンは MCP クライアントが管理します。環境変数に長期間有効な API トークンを保存する必要はありません
データ送信先: すべての呼び出しは Cloudflare API を経由します。OAuth フローは dash.cloudflare.com を通じて行われます
絶対に付与しない: Account:Admin unless absolutely needed Zone:DNS:Edit on live zones without a staging test first

トラブルシューティング

よくあるエラーと対処法

OAuth flow didn't complete

MCP クライアントが OAuth リダイレクトをサポートしていない可能性があります。クライアントのドキュメント(Claude Desktop、Cursor など、それぞれ対応方法が異なります)を確認してください。クライアント UI からリモート MCP の再接続をお試しください。

Workers tail disconnects after a minute

テールセッションには時間制限があります。テールを再起動するか、より長い期間が必要な場合は Logpush を設定し、Analytics Engine 経由でクエリしてください。

D1 query returns 'Too many rows read'

D1 はプランごとにクエリあたりのスキャン行数に上限があります。インデックスを使用する WHERE 句を追加するか、LIMIT でページネーションしてください。

permission denied on a DNS tool

Zone:DNS:Edit の OAuth スコープが付与されていません。MCP を再接続し、追加スコープを承認してください。

代替案

Cloudflare 他との比較

代替案代わりに使う場面トレードオフ
AWS MCP (awslabs)Cloudflare ではなく AWS を使用している場合クラウドの対象領域が異なり、そのまま置き換えることはできません
Vercel MCPデプロイ先が Vercel(エッジファンクション、KV、Blobs)の場合同様のリモート MCP モデルですが、機能範囲はより限定的です
wrangler CLI directly via shellMCP の対象範囲だけでなく、wrangler のフル機能(設定編集、シークレット管理など)が必要な場合エージェントとしてのエルゴノミクスはありません。スクリプトの誤りによる影響範囲がより広くなります

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る