/ 目录 / 演练场 / 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 token。

为什么要用

核心特性

实时演示

实际使用效果

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 错误率激增。你想要日志、最近的部署记录和改动 diff — 而不想打开仪表盘。

前置条件
  • Cloudflare 账户的 OAuth 已连接到你的 MCP 客户端 — 首次工具调用时会触发 OAuth;授予 'Workers Observability' 和 'Workers Bindings' 权限范围
步骤
  1. 追踪最近的 Worker 日志并按错误过滤
    追踪 Worker 'api-edge' 最后 15 分钟的日志。过滤 status >= 500。按错误消息的前 100 个字符分组。✓ 已复制
    → 顶部错误模板及其计数和时间戳
  2. 列出最近的部署
    列出 'api-edge' 最近 5 次部署。显示部署时间、作者和版本哈希。✓ 已复制
    → 部署时间线 — 与错误开始时间关联
  3. 需要时回滚
    错误激增开始于 14:22 的部署。将 'api-edge' 回滚到前一个版本。执行前请确认。✓ 已复制
    → 破坏性操作前的确认提示

结果: 一个恢复的生产 Worker,以及清晰的 '部署 X 引起错误 Y' 事后分析记录。

注意事项
  • 日志追踪仅限实时;无法捕捉已经过去的突发情况 — 对于历史窗口,改用 Logpush 或 Analytics Engine MCP 工具而不是 tail
  • 回滚不会迁移 D1/KV 状态 — 如果坏的部署执行了数据库迁移,仅回滚 Worker 是不够的 — 你可能还需要 D1 恢复
搭配使用: github · sentry

对 D1 数据库运行临时分析查询

👤 使用 D1 存储应用数据的开发者 ⏱ ~10 min beginner

何时使用: 你想从 D1 获取注册转化或使用统计数据,而不想写一个仪表盘。

步骤
  1. 找到正确的数据库并列出 schema
    列出我的 D1 数据库。对于名为 'prod-app' 的数据库,显示所有表及其列。✓ 已复制
    → 数据库清单加上 schemas
  2. 运行分析查询
    在 D1 'prod-app' 中,统计最后 30 天注册的用户,按周分组。只显示在 events 表中至少有一条记录的用户。✓ 已复制
    → 每周计数,有效的 SQL
  3. 迭代
    进一步按注册来源分解。哪个来源的 7 天激活率最高?✓ 已复制
    → 按来源对比,包含速率

结果: 可用于决策的数据,并显示所用 SQL。

注意事项
  • D1 对每次查询的行数和执行时间有限制 — 对于大型聚合,改为按计划预聚合到摘要表,而不是每次扫描原始事件
搭配使用: notion

审计并清理膨胀的 KV namespace

👤 Workers 缓存堆积的工程师 ⏱ ~20 min intermediate

何时使用: 你的 KV 账单上升;你怀疑有陈旧的键或配置不当的 TTL。

步骤
  1. 检查 namespace
    对于 KV namespace 'session-cache',列出前 1000 个键。采样 10 个值并告诉我它们的结构。✓ 已复制
    → 键模式分布,采样值的形状
  2. 识别陈旧条目
    对于匹配 session:* 的键,有多少超过 30 天未被访问?(如果存在元数据则使用;否则采样并检查值中的时间戳。)✓ 已复制
    → 陈旧键估计及所用的标准
  3. 安全删除
    批量删除匹配 session:expired:* 的键,每批 100 个。删除前向我显示第一批。✓ 已复制
    → 删除前的批次预览

结果: 一个更清洁的 KV namespace,存储成本更低。

注意事项
  • KV 是最终一致的 — 删除操作在边缘 POP 可能短暂出现回滚 — 大量删除后不要依赖即时一致性;在一分钟后验证状态

在域名迁移前审查 DNS 记录

👤 在提供商之间迁移域名的 Ops 工程师 ⏱ ~15 min beginner

何时使用: 你即将更改名称服务器,你想清点每条记录,确保不会丢失 MX、DMARC 或被遗忘的子域。

步骤
  1. 转储每条记录
    列出 example.com 的所有 DNS 记录。按类型分组。包括 MX 的优先级和 SRV 的权重。✓ 已复制
    → 完整的记录清单
  2. 标记关键记录
    突出任何会中断邮件的记录(MX、SPF in TXT、DKIM、DMARC),以及任何指向第三方服务(Stripe、HubSpot、状态页)的 A/AAAA/CNAME。✓ 已复制
    → 关键记录列表及其理由
  3. 生成迁移清单
    把这个转成我能在新提供商上运行的检查清单 — 每条记录包括其目的地、TTL 和 '迁移后测试' 步骤。✓ 已复制
    → 可复制粘贴的运行手册

结果: 一个迁移当天的运行手册,确保没有遗漏任何记录。

注意事项
  • 被遗忘的 DKIM 记录 24 小时后会以沉默的方式中断邮件 — 特别列出每条 _domainkey.<selector> 记录 — 它们最容易被忽略
搭配使用: filesystem

检查 Cloudflare Radar 查看影响用户的互联网事件

👤 事件响应者、支持主管 ⏱ ~10 min intermediate

何时使用: 用户报告你的站点在巴西无法访问。可能是你的问题,也可能是互联网问题。

步骤
  1. 查询 Radar 该国家
    Cloudflare Radar:过去 6 小时巴西有任何显著互联网中断吗?包括 BGP 异常、ISP 故障、攻击流量。✓ 已复制
    → 已知事件列表或 '没有异常'
  2. 与你的流量交叉检查
    对于我的区域 example.com,过去 6 小时来自巴西的流量 — 体积、HTTP 状态分解、顶部用户代理。✓ 已复制
    → 巴西特定的流量概况
  3. 得出结论
    基于 Radar + 我的流量,这是一般的巴西互联网问题还是特定于我的站点?✓ 已复制
    → 带有支持证据的清晰判断

结果: 一个有根据的 '不是我们的问题,是 <ISP X> 的问题' 或 '确实是我们的问题,原因如下' 答案。

注意事项
  • Radar 数据有约 1 小时的滞后 — 对于超级新鲜的事件,配对你自己的 RUM 数据使用
搭配使用: sentry

组合

与其他 MCP 搭配,撬动十倍杠杆

cloudflare + github

关联一次 Workers 回滚与引入回归的 GitHub PR

Worker 'api-edge' 自 14:22 的部署开始失败。找到与该部署对应的 GitHub PR 并总结其改动。✓ 已复制
cloudflare + sentry

Sentry 报告 Worker 源的错误;Cloudflare MCP 提取相同 requestId 的 Worker 侧日志

Sentry 问题 EDGE-441 有 CF-Ray 8abc123。为该 ray 追踪 Worker 'api-edge' 并显示匹配的日志行。✓ 已复制
cloudflare + filesystem

在本地编辑 Worker 源,通过 wrangler 部署,通过 Cloudflare MCP 日志验证

修复 src/index.ts 第 44 行的 bug,部署,然后追踪 'api-edge' 日志确认没有更多 500 错误。✓ 已复制

工具

此 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 — 写操作需要明确的 prompt 确认 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 调用计入你的常规用量
每次调用 Token 数
200-2000 token 典型;日志追踪可能很大 — 总是过滤
费用
MCP 免费;你的 Cloudflare 服务按常规计费
提示
D1 和 KV 按行读和操作计费。大量列表/扫描可能出乎意料地昂贵 — 用适度的页面大小分页并提前停止。

安全

权限、密钥、影响范围

最小权限: Workers:Read D1:Read KV:Read
凭据存储: OAuth token 由你的 MCP 客户端管理;env 中没有长期 API token
数据出站: 所有调用都到 Cloudflare API;OAuth 流经过 dash.cloudflare.com
切勿授予: Account:Admin 除非绝对必要 Zone:DNS:Edit 在现实区域上没有经过阶段测试

故障排查

常见错误与修复

OAuth 流未完成

你的 MCP 客户端可能不支持 OAuth 重定向。检查其文档(Claude Desktop、Cursor 等都有不同的支持方式)。尝试从客户端 UI 重新连接 remote MCP。

Workers tail 一分钟后断开连接

Tail 会话时间有限。重启 tail,或对于更长的窗口改用 Logpush 并通过 Analytics Engine 查询。

D1 查询返回 'Too many rows read'

D1 按计划对每次查询读取的行数有上限。添加使用索引的 WHERE 子句,或用 LIMIT 分页。

DNS 工具权限被拒绝

Zone:DNS:Edit 的 OAuth 权限范围未被授予。重新连接 MCP 并批准额外的权限范围。

替代方案

Cloudflare 对比其他方案

替代方案何时用它替代权衡
AWS MCP (awslabs)你在 AWS 上,不是 Cloudflare不同的云平面;不是开箱即用的替代品
Vercel MCP你的部署目标是 Vercel(edge functions、KV、blobs)类似的 remote MCP 模型;功能集更窄
wrangler CLI 直接通过 shell你想要完整的 wrangler 能力(配置编辑、secrets),不仅仅是 MCP 表面没有 agent 人体工程学;脚本错误的影响范围更广

更多

资源

📖 阅读 GitHub 上的官方 README

🐙 查看未解决的 issue

🔍 浏览全部 400+ MCP 服务器和 Skills