关于 MCP Cloudflare
MCP Cloudflare 是用于管理 Cloudflare 区域及相关设置的本地 MCP 服务,面向需要操作 DNS、访问控制、规则和缓存的运维人员;API 令牌保留在本机。
主要功能
- 01管理区域和 DNS 记录
- 02配置 Transform Rules 和 Page Rules
- 03管理 Access 应用与策略
- 04按 URL、标签、主机或前缀清理缓存
- 05通过 stdio 本地运行并保护令牌
适用场景
- 01创建或更新 DNS 记录
- 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 并更新依赖项
- 容器化 - 可通过
quay.io/crunchtools/mcp-cloudflare获取,该容器基于 Hummingbird Python 基础镜像构建
命名约定
| 组件 | 名称 |
|---|---|
| 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 优化 - 预配置 Python 环境,并配备 uv 包管理器,可实现快速、可复现的构建
- 适用于生产环境 - 专为生产工作负载设计,具备妥善的信号处理机制,并默认使用非 root 用户
这意味着你的 MCP 服务运行在经过强化的环境中,漏洞数量比典型的 Python 容器镜像更少。
功能
区域管理(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- 移除规则
访问控制(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 Tokens
- 前往 https://dash.cloudflare.com/profile/api-tokens
- 点击“Create Token”
- 点击“Create Custom Token”旁边的“Get started”
-
配置令牌名称
- 输入:
mcp-cloudflare-crunchtools
- 输入:
-
配置权限
“Permissions”部分的每一行包含三个下拉菜单:
- 第一个下拉菜单:资源类型(
Account或Zone) - 第二个下拉菜单:具体权限类别
- 第三个下拉菜单:访问级别(
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 - 第一个下拉菜单:资源类型(
-
配置 Zone 资源
- 第一个下拉菜单:选择“Include”
- 第二个下拉菜单:选择“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 |
使用示例
列出你的 Zone
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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。