mcpField
M
MCP Cloudflare

MCP Cloudflare

本地服务
github.com/crunchtools云与基础设施02 天前更新

关于 MCP Cloudflare

MCP Cloudflare 是用于管理 Cloudflare 区域及相关设置的本地 MCP 服务,面向需要操作 DNS、访问控制、规则和缓存的运维人员;API 令牌保留在本机。

主要功能

  1. 01管理区域和 DNS 记录
  2. 02配置 Transform Rules 和 Page Rules
  3. 03管理 Access 应用与策略
  4. 04按 URL、标签、主机或前缀清理缓存
  5. 05通过 stdio 本地运行并保护令牌

适用场景

  1. 01创建或更新 DNS 记录
  2. 02设置响应标头或重写 URL
  3. 03管理主机名访问策略
  4. 04清理指定的 Cloudflare 缓存内容

MCP 相关

向 MCP 客户端提供 Cloudflare 区域、DNS、规则、Access 和缓存管理工具,并通过 stdio 在本地运行。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"crunchtools-cloudflare": {
"command": "uvx",
"args": [
"mcp-cloudflare-crunchtools"
]
}
}
}
启动命令uvx mcp-cloudflare-crunchtools

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimcp-cloudflare-crunchtools0.1.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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 令牌
  1. 前往 API Tokens

  2. 配置令牌名称

    • 输入:mcp-cloudflare-crunchtools
  3. 配置权限

    “Permissions”部分的每一行包含三个下拉菜单:

    • 第一个下拉菜单:资源类型(Account 或 Zone)
    • 第二个下拉菜单:具体权限类别
    • 第三个下拉菜单:访问级别(Read 或 Edit)

    点击“+ Add more”添加权限行。如需完整管理权限,请添加:

    资源权限访问级别
    ZoneZoneRead
    ZoneDNSEdit
    ZonePage RulesEdit
    ZoneTransform RulesEdit
    ZoneCache PurgePurge
    AccountAccess: Apps and PoliciesEdit
    AccountAccess: Organizations, Identity Providers, and GroupsRead
  4. 配置 Zone 资源

    • 第一个下拉菜单:选择“Include”
    • 第二个下拉菜单:选择“All zones”或“Specific zone”
  5. 配置客户端 IP 地址筛选(可选)

    • 点击“Use my IP”按钮,将令牌限制为仅允许从当前 IP 使用
  6. 创建并复制令牌

    • 点击“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
按使用场景划分的权限集
只读(仅查看)
资源权限访问级别
ZoneZoneRead
ZoneDNSRead
仅 DNS 管理
资源权限访问级别
ZoneZoneRead
ZoneDNSEdit
完整管理(所有功能)
资源权限访问级别
ZoneZoneRead
ZoneDNSEdit
ZonePage RulesEdit
ZoneTransform RulesEdit
ZoneCache PurgePurge

使用示例

列出你的 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,了解:

  • 威胁模型和攻击途径
  • 深度防御架构
  • 令牌处理最佳实践
  • 输入验证规则
  • 审计日志记录
主要安全功能
  1. 令牌保护

    • 以 SecretStr 格式存储(不会意外记录到日志中)
    • 仅使用环境变量(不会存储在文件或参数中)
    • 从所有错误消息中清除敏感信息
  2. 输入验证

    • 对所有输入使用 Pydantic 模型
    • 对记录类型和操作使用允许列表
    • 严格验证 ID 格式
  3. API 加固

    • 硬编码的 API 基础 URL(防止 SSRF)
    • TLS 证书验证
    • 请求超时
    • 响应大小限制
  4. 自动 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。

链接

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。