内容
# Cloudflare MCP Pro
> 用于 **Cloudflare REST API v4** 的 MCP 服务器 — 涵盖 DNS、Zones、Workers、KV、R2、D1、Pages、Queues、Tunnels、SSL、WAF、Email Routing、Logpush 和 Workers AI 等 **69 种工具**,所有工具均可在 **单个本地 stdio 服务器** 中运行,并通过 API token 进行身份验证。
[](https://www.npmjs.com/package/cloudflare-mcp-pro)
[](LICENSE)
[](https://github.com/helbertparanhos/cloudflare-mcp-pro/stargazers)
[](https://github.com/helbertparanhos/cloudflare-mcp-pro/network/members)
[](https://github.com/helbertparanhos/cloudflare-mcp-pro/issues)
[](https://glama.ai/mcp/servers/helbertparanhos/cloudflare-mcp-pro)
[](https://www.typescriptlang.org/)
[](https://nodejs.org/)
[](https://modelcontextprotocol.io/)
[](https://claude.ai/code)
[](https://cursor.sh)
[](https://claude.ai/download)
[](https://www.instagram.com/helbertparanhos)
[](https://www.youtube.com/@stratacademy)
[](https://www.linkedin.com/in/helbert-paranhos/)
[](https://buymeacoffee.com/helbertparanhos)
[](https://stratacademy.com.br)
与官方 Cloudflare MCP 产品(13 个独立的远程 OAuth 服务器)不同,`cloudflare-mcp-pro` 在本地运行,通过 stdio 进行身份验证,使用单个 **API token**,并将 Cloudflare 最常用的操作合并为一个服务器,具有一致的 `verb_object` 工具名称 — 适用于 Claude Code、CI 和脚本自动化。
## 功能
- **DNS** — 列出/创建/更新/删除记录、DNSSEC、BIND zone-file 导出
- **Zones** — 列出/获取/创建/删除、设置(SSL 模式、HTTPS、最小 TLS...)、缓存清除、GraphQL 分析
- **Workers** — 部署(ES 模块)、路由、秘密、cron 触发器、列出/获取/删除
- **KV / R2 / D1** — 命名空间 + 密钥 CRUD、存储桶管理、数据库 + SQL 查询
- **Pages / Queues / Tunnels** — 列出/获取项目、队列管理、隧道检查
- **安全** — WAF 规则集、IP/ASNC/国家访问规则、页面规则、SSL 证书包、自定义主机名(SaaS)、Turnstile 小部件
- **Email Routing** — 规则 + 目标地址
- **Logpush** — 列出/创建作业(区域或帐户范围)
- **Workers AI** — 模型目录 + 推理(文本生成、嵌入、分类)
- **人工审批门控** — 每个变异工具都需要 `confirm: true`;如果没有它,工具将返回一个非执行的预览(机密被删除)而不是执行(见下文)
- **MCP 注释** — 每个工具都带有 readOnly/destructive/idempotent 提示,以便客户端可以控制危险操作
- **自动分页** — `fetch_all: true` 在列表工具上遵循每个页面
- 单个 API-token 身份验证、自动重试 + 速率限制(429/5xx)处理和可行的错误消息
## 安装
```bash
npm install
npm run build
```
或直接运行(发布后):
```bash
npx -y cloudflare-mcp-pro
```
## 配置
复制 `.env.example` 到 `.env` 并填写:
| 变量 | 必需 | 描述 |
| --- | --- | --- |
| `CLOUDFLARE_API_TOKEN` | ✅ | 来自 https://dash.cloudflare.com/profile/api-tokens 的 API token |
| `CLOUDFLARE_ACCOUNT_ID` | 可选 | 默认帐户 ID,用于工具未接收 `account_id` 的情况 |
| `CLOUDFLARE_API_BASE` | 可选 | 覆盖 API 基本 URL |
**Token 作用域** 取决于您使用的内容,例如:`Zone:Read`、`DNS:Edit`、`Workers Scripts:Edit`、`Workers KV Storage:Edit`、`Workers R2 Storage:Edit`、`D1:Edit`、`Pages:Edit`、`Account Analytics:Read`。运行 `verify_token` 工具以确认您的 token 有效。
## 测试
运行自动化测试套件(无网络 — `fetch` 被模拟):
```bash
npm test
```
它涵盖了人工审批门控、机密删除、安全验证(十六进制 ID、路径段编码、模型 ID 允许列表、清除互斥、分析小时对齐)、API 客户端(查询序列化、429 重试、错误映射、分页 + 钳位、GraphQL 非 JSON 防护)和 Zod→JSON-Schema 转换器。
使用 MCP 检查器进行交互式测试:
```bash
npx @modelcontextprotocol/inspector dist/index.js
```
## 添加到 Claude Code
在 `.claude/settings.json` → `mcpServers` 中:
```json
{
"mcpServers": {
"cloudflare-mcp-pro": {
"command": "node",
"args": ["projects/cloudflare-mcp-pro/dist/index.js"],
"env": {
"CLOUDFLARE_API_TOKEN": "您的 token",
"CLOUDFLARE_ACCOUNT_ID": "您的帐户 ID"
}
}
}
}
```
## 添加到 Claude 桌面版
- **Mac:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"cloudflare-mcp-pro": {
"command": "node",
"args": ["/绝对路径/projects/cloudflare-mcp-pro/dist/index.js"],
"env": {
"CLOUDFLARE_API_TOKEN": "您的 token",
"CLOUDFLARE_ACCOUNT_ID": "您的帐户 ID"
}
}
}
}
```
## 人工审批门控
每个 **变异** 工具(任何 `create_*`、`update_*`、`delete_*`、`deploy_*`、`put_*`、`edit_*`、`purge_cache`、`query_d1`、`run_ai` 等)都在服务器端受到限制。只读工具(`list_*`、`get_*`、`verify_token`、`export_dns_records`、分析)永远不会受到限制。
- 调用变异工具 **不带** `confirm: true` 返回一个 `confirmation_required` 预览,描述工具、风险级别和(机密被删除的)参数 — **不执行**。
- 使用 `"confirm": true` 重新调用同一个工具,以实际执行它,在人类批准后。
此门控在服务器上强制执行,无论 MCP 客户端如何,并与 MCP `annotations`(`destructiveHint`)配合使用,在兼容的客户端(如 Claude Code)中提示人类。机密值(例如 Worker 机密 `text`)从预览中被删除,并且永远不会出现在错误消息中。
```jsonc
// 1) 预览(无确认)→ 什么都不发生
delete_zone { "zone_id": "..." }
// → { "status": "confirmation_required", "risk": "DESTRUCTIVE — ...", ... }
// 2) 人工审批后
delete_zone { "zone_id": "...", "confirm": true } // 实际删除
```
## 工具(69)
列表工具接受 `fetch_all: true` 以遵循分页。变异工具接受 `confirm: true`(参见上面的门控)。每个工具都宣传 MCP 注释(`readOnlyHint` / `destructiveHint` / `idempotentHint`)。
**帐户** — `verify_token`、`list_accounts`
**Zones & 设置** — `list_zones`、`get_zone`、`create_zone`、`delete_zone`、`purge_cache`、`get_zone_analytics`、`get_zone_setting`、`update_zone_setting`
**DNS** — `list_dns_records`、`create_dns_record`、`update_dns_record`、`delete_dns_record`、`get_dnssec`、`edit_dnssec`、`export_dns_records`
**Workers** — `list_workers`、`get_worker`、`deploy_worker`、`delete_worker`、`list_worker_routes`、`create_worker_route`、`delete_worker_route`、`put_worker_secret`、`delete_worker_secret`、`update_worker_cron`
**KV** — `list_kv_namespaces`、`create_kv_namespace`、`kv_list_keys`、`kv_get`、`kv_put`、`kv_delete`
**R2** — `list_r2_buckets`、`create_r2_bucket`、`delete_r2_bucket`
**D1** — `list_d1_databases`、`create_d1_database`、`query_d1`
**Pages** — `list_pages_projects`、`get_pages_project`
**WAF & 防火墙** — `list_firewall_rulesets`、`get_ruleset`、`list_access_rules`、`create_access_rule`、`delete_access_rule`
**页面规则** — `list_page_rules`、`create_page_rule`、`delete_page_rule`
**SSL/TLS** — `list_certificate_packs`、`get_ssl_verification`、`order_certificate_pack`
**自定义主机名(SaaS)** — `list_custom_hostnames`、`create_custom_hostname`、`delete_custom_hostname`
**Email Routing** — `list_email_rules`、`create_email_rule`、`list_email_destinations`
**Queues** — `list_queues`、`create_queue`、`delete_queue`
**Tunnels** — `list_tunnels`、`get_tunnel`
**Turnstile** — `list_turnstile_widgets`、`create_turnstile_widget`
**Workers AI** — `list_ai_models`、`run_ai`
**Logpush** — `list_logpush_jobs`、`create_logpush_job`
## 作者
**Helbert Paranhos / Strat Academy** — [stratacademy.com.br](https://stratacademy.com.br)
- GitHub: [@helbertparanhos](https://github.com/helbertparanhos)
- Instagram: [@helbertparanhos](https://www.instagram.com/helbertparanhos)
- YouTube: [@stratacademy](https://www.youtube.com/@stratacademy)
- LinkedIn: [helbert-paranhos](https://www.linkedin.com/in/helbert-paranhos/)
## 许可证
MIT — 见 [LICENSE](LICENSE)。