/ 目錄 / 演練場 / Cloudflare API
● 官方 cloudflare 🔑 需要你的金鑰

Cloudflare API

作者 cloudflare · cloudflare/mcp

從 Claude 管理 Cloudflare DNS、區域、WAF、分析和 Workers — 搭配範圍限定的 API 金鑰與乾跑習慣。

Cloudflare API MCP 將完整的 Cloudflare REST API 轉為工具:區域、DNS 記錄、頁面規則、防火牆規則、分析、SSL、Workers、R2、KV 等。使用範圍限定的 API 金鑰(而非全域 API 金鑰),並將寫入操作視為基礎設施變更——預覽、套用、驗證。

為什麼要用

核心特性

即時演示

實際使用效果

cloudflare-api.replay ▶ 就緒
0/0

安裝

選擇你的客戶端

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

開啟 Claude Desktop → Settings → Developer → Edit Config。儲存後重啟應用。

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

Cursor 使用與 Claude Desktop 相同的 mcpServers 格式。專案級設定優先於全域。

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

點擊 Cline 側欄中的 MCP Servers 圖示,然後選 "Edit Configuration"。

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

格式與 Claude Desktop 相同。重啟 Windsurf 生效。

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

Continue 使用伺服器物件陣列,而非映射。

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

加入 context_servers。Zed 儲存後熱重載。

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

一行命令搞定。用 claude mcp list 驗證,claude mcp remove 移除。

使用場景

實戰用法: Cloudflare API

稽核所有區域的 DNS 記錄以偵測組態偏移

👤 平台 / SRE 團隊 ⏱ ~25 min intermediate

何時使用: 當你管理 40 個區域,想知道哪些有異常 TTL、缺少 SPF/DMARC,或有懸空 CNAME 時使用。

前置條件
  • 具有 Zone:Zone:ReadZone:DNS:Read 的 API 金鑰 — Cloudflare 控制台 → 我的個人資料 → API 金鑰 → 建立
步驟
  1. 列出區域並統計各類型記錄數量
    列出我帳號中所有區域。對每個區域,依類型(A、CNAME、TXT、MX)統計記錄數量。✓ 已複製
    → 清單矩陣
  2. 檢查電子郵件驗證健康狀態
    針對每個用於電子郵件的區域,確認是否存在 SPF(包含 'v=spf1' 的 TXT)、_dmarc 的 DMARC TXT,以及 DKIM selector TXT 記錄。標記缺少的項目。✓ 已複製
    → 電子郵件驗證缺口報告
  3. 尋找懸空 CNAME
    針對每個區域中的每筆 CNAME,解析其目標位址。將 NXDOMAIN 或 SERVFAIL 標記為懸空。✓ 已複製
    → 高風險 CNAME 清單

結果: 逐區域的 DNS 健康報告,可直接交給負責各網域的團隊。

注意事項
  • 懸空 CNAME 是子網域被接管的風險 — 任何 NXDOMAIN 的 CNAME 應立即升級處理——刪除或修正
搭配使用: filesystem

透過預覽/套用工作流程新增或更新 DNS 記錄

👤 任何即將進行 DNS 變更而感到緊張的人 ⏱ ~10 min beginner

何時使用: 切換郵件服務商、為服務新增 CNAME 等高風險 DNS 變更時使用。

前置條件
  • 具有目標區域 Zone:DNS:Edit 的金鑰 — 將金鑰範圍限定到你要變更的單一區域
步驟
  1. 顯示當前狀態
    針對區域 <zone>,顯示名稱 '<name>' 與類型 <type> 的所有記錄。代理狀態與 TTL。✓ 已複製
    → 目前記錄狀態
  2. 提出變更方案,但不套用
    提出修補方案:<描述變更>。顯示確切的 API 呼叫與前後對照。尚勿執行。✓ 已複製
    → 預覽差異
  3. 確認後套用
    我確認。套用變更。然後重新讀取記錄以確認。同時清除受影響名稱的快取。✓ 已複製
    → 記錄已更新 + 快取已清除 + 驗證讀取完成

結果: DNS 變更附帶審查步驟與變更後驗證——不再有意外。

注意事項
  • 代理(橘雲)CNAME 指向郵件伺服器會導致電子郵件中斷 — MX、SPF 相關 CNAME 及非 HTTP 記錄務必設定 proxied:false

在流量突增時緊急部署速率限制規則

👤 應對 L7 DDoS 或失控用戶端的 SRE ⏱ ~15 min advanced

何時使用: 流量急劇飆升且來源伺服器不堪負荷時,需要在數分鐘內抑制流量。

前置條件
  • 具有區域 Zone:Zone WAF:Edit 的金鑰 — 專用的事件響應金鑰,儲存於密碼管理工具中
步驟
  1. 識別異常模式
    取得區域 <zone> 過去一小時的分析資料。依請求數列出前 10 個路徑、前 10 個 user agent、前 10 個國家。標示異常項目。✓ 已複製
    → 異常候選清單
  2. 建立速率限制規則
    建立 WAF 速率限制規則:在路徑 /<熱點路徑> 上每個 IP 每分鐘 60 次請求,動作:挑戰。2 分鐘後記錄比對次數。✓ 已複製
    → 規則已建立 + 比對數量串流中
  3. 安全後回滾
    來源伺服器健康狀態維持正常 30 分鐘後,停用(而非刪除)規則。留下標記為 'incident-<id>' 的描述以供稽核。✓ 已複製
    → 規則已停用;稽核記錄保留

結果: 攻擊已緩解,規則可隨時重新啟用或調整——不留永久的組態偏移。

注意事項
  • 按國家全面封鎖會誤殺合法使用者 — 一律從挑戰或 JS 挑戰開始,而非封鎖;觀察後再收緊
搭配使用: sentry

部署後清除特定 URL 的 Cloudflare 快取

👤 發佈靜態資源更新的前端開發者 ⏱ ~10 min beginner

何時使用: 部署後:CSS/JS 雜湊值已變更,希望使用者立即取得新版本。

步驟
  1. 列出要清除的檔案
    我的建置變更了以下 URL:[清單]。確認每個 URL 是否已在 CF 邊緣快取(HEAD + cf-cache-status)。✓ 已複製
    → 各 URL 目前的快取命中/未命中狀態
  2. 依 URL 清除快取
    在區域 <zone> 上精確清除那些 URL。請勿執行清除全部操作。✓ 已複製
    → 清除工作已接受
  3. 驗證新鮮取得
    10 秒後,再次對每個 URL 發送 HEAD 請求——cf-cache-status 應為 MISS 或 REVALIDATED。✓ 已複製
    → 快取已更新為最新狀態

結果: 精準清除快取,避免意外觸發全區域清除(這會在重新載入時讓來源伺服器過載)。

注意事項
  • 清除全部會對來源伺服器產生雷鳴群效應 — 除非已預熱替代路徑,否則絕不呼叫 purge_all;按 URL 清除幾乎總是足夠的
搭配使用: github

從本地 JSON 檔案植入 Workers KV 資料

👤 部署基於 Workers 的 API 的工程師 ⏱ ~15 min intermediate

何時使用: 當你在 KV 中維護設定/功能開關資料,並想從本地的單一信任來源同步時使用。

前置條件
  • 具有 Workers KV Storage: Edit 的金鑰 — 範圍限定到特定的命名空間 id
步驟
  1. 讀取本地來源
    讀取 /config/kv.json。驗證其格式為 {key: value} 物件。✓ 已複製
    → 已解析的設定
  2. 與目前 KV 比對差異
    列出命名空間 <id> 中的金鑰。計算相對於我本地檔案的新增 / 更新 / 刪除項目。✓ 已複製
    → 變更計畫
  3. 透過批量寫入套用
    對變更使用批量寫入。刪除操作需我確認——先顯示哪些金鑰將被刪除。✓ 已複製
    → 批量寫入成功;刪除項目已審查

結果: KV 命名空間與你的來源檔案保持一致,操作足夠原子性。

注意事項
  • KV 最終一致性意味著讀取方可能在約 60 秒內仍看到舊值 — 若需要強一致性,請改用 D1 或 Durable Objects
搭配使用: filesystem

從 Cloudflare 分析產生每週流量與威脅摘要

👤 產品 / 成長 + 資安團隊 ⏱ ~20 min intermediate

何時使用: 週五定期摘要:本週流量模式如何、封鎖了哪些威脅?

步驟
  1. 取得總計資料
    針對區域 <zone> 過去 7 天:總請求數、頻寬、封鎖威脅數、前 10 個國家。✓ 已複製
    → 關鍵數字摘要
  2. 熱門路徑與來源網站
    依請求數列出前 20 個路徑;前 10 個來源網站。標示與上週相比的變化。✓ 已複製
    → 成長/退步對照表
  3. 防火牆事件摘要
    過去 7 天觸發次數最多的防火牆規則。找出從未觸發的規則——清理候選名單。✓ 已複製
    → 規則集健康報告

結果: 一頁式每週報告,涵蓋流量、威脅與規則健康狀態。

注意事項
  • 免費方案的分析資料是抽樣的 — 如需精確資料,請在 Pro+ 方案中使用 Logpush / GraphQL Analytics API
搭配使用: notion

組合

與其他 MCP 搭配,撬動十倍槓桿

cloudflare-api + github

合併至 main 時,清除已部署資源 URL 的快取

PR #342 已合併;其差異變更了 /static/app.a1b2.js。在區域 <zone> 上清除該 URL,並用 HEAD 驗證。✓ 已複製
cloudflare-api + sentry

將 Sentry 的流量突增與防火牆事件資料進行關聯分析

Sentry 顯示 14:02 出現 5xx 突增。取得同一區域 14:00-14:05 的 CF 分析資料;與防火牆事件進行關聯。✓ 已複製
cloudflare-api + filesystem

將本地區域設定檔同步至 Cloudflare(輕量 GitOps)

讀取 /dns/mydomain.yaml;與目前區域狀態進行比對;附帶審查步驟後安全套用。✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
list_zones 探索帳號中的區域 free
list_dns_records zone_id, type?, name? 任何 DNS 編輯前——先檢查目前狀態 free
create_dns_record / update_dns_record / delete_dns_record zone_id, record DNS 異動操作(需要 Edit 金鑰) free
purge_cache zone_id, files?|tags?|hosts?|everything? 部署後清除快取 free
list_firewall_rules / create_firewall_rule zone_id, ... 事件響應 / 強化安全 free
analytics_dashboard zone_id, since, until 流量報告 free
kv_list / kv_get / kv_put / kv_bulk namespace_id, key/value Workers KV 操作 metered beyond free tier
deploy_worker script name, script content, bindings? 發佈 Worker free up to limits

成本與限制

運行它的成本

API 配額
每位使用者每 5 分鐘 1200 次請求(Cloudflare 全域速率限制)
每次呼叫 Token 數
DNS 列表:每頁 200–1000 個 token。分析資料:最多 3000 個。
費用
API 免費。Workers 付費方案與超出免費額度的 KV 需付費;方案從免費 / Pro $20/月 / Business $200/月起。
提示
優先使用伺服器端篩選(type、name)而非用戶端篩選,以節省 token 用量並減少分頁。

安全

權限、密鑰、影響範圍

最小權限: Zone:Zone:Read Zone:DNS:Read (僅在需要寫入的特定區域才加上 :Edit)
憑證儲存:CLOUDFLARE_API_TOKEN 放在環境變數中——絕不使用全域 API 金鑰
資料出站: 所有呼叫均發送至 api.cloudflare.com
切勿授予: Global API Key(完整帳號控制權) Account:Access:Edit(未經帳號層級審查)

故障排查

常見錯誤與修復

10000 Authentication error

金鑰無效或缺少所需權限。重新建立並指定特定區域與權限。

驗證: curl -H 'Authorization: Bearer $CLOUDFLARE_API_TOKEN' https://api.cloudflare.com/client/v4/user/tokens/verify
81057 Record already exists

該名稱 + 類型 + 內容的記錄已存在。請依 id 更新現有記錄,而非建立新記錄。

Purge-by-URL returns success but cache still hits

URL 必須完全吻合,包含查詢字串順序。另請檢查 cf-cache-status——'DYNAMIC' 表示該內容原本就未被快取。

Rate limited (429)

已達 Cloudflare 全域 API 速率限制。請退避重試、批量處理,或將工作負載分散到多個金鑰以應對不同工作流程。

替代方案

Cloudflare API 對比其他方案

替代方案何時用它替代權衡
Cloudflare official MCP (other)你偏好 Cloudflare 官方以文件/Workers 可觀測性為重點的 MCPAPI 覆蓋範圍較窄
Route 53 MCP你使用 AWS 並想要 Route53 DNS不同生態系;未內建 CDN/WAF

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

🔍 瀏覽全部 400+ MCP 伺服器和 Skills