Token导航 LogoToken导航TokenDH.com
Cloudflare Dns MCP logo
AI代理未说明官方级别未说明来源级核验

Cloudflare Dns MCP

MCP Server

一个通过Model Context Protocol (MCP)与Cloudflare DNS交互的管理服务器,支持通过自然语言指令进行DNS记录的查询、创建、更新和删除操作。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
自然语言处理TypeScriptClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

daniil-shumko

提供方

daniil-shumko

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Cloudflare DNS MCP服务器

注: 这是一个非官方的MCP服务器,不隶属于Cloudflare或得到Cloudflare的认可。

](https://www.npmjs.com/package/cloudflare-dns-mcp) ![Tests](https://github.com/daniil-shumko/cloudflare-dns-mcp/actions/workflows/test.yml) ](https://smithery.ai/server/@daniil-shumko/cloudflare-dns-mcp) ![License: MIT](https://opensource.org/licenses/MIT) ](https://nodejs.org) ![MCP](https://modelcontextprotocol.io)

⚠️ 安全警告 此MCP服务器严重“振动编码”,应谨慎使用。使用前: - 检查代码 -此工具可以通过API令牌访问您的Cloudflare帐户 - 克隆仓库 -为了安全起见,克隆此仓库并运行本地副本,而不是使用npx - 使用最小权限 -只使用您需要的权限创建API令牌 - 使用前审核 -代码很简单,可以在大约30分钟内查看 - 先备份DNS -使用 backup_dns_records 在进行任何修改之前导出DNS设置的工具 ``bash git clone https://github.com/daniil-shumko/cloudflare-dns-mcp cd cloudflare-dns-mcp && npm install && npm run build ``

A. 模型上下文协议(MCP) 用于管理Cloudflare DNS记录的服务器。使用自然语言与Claude Desktop或Claude Code一起列出域、查看DNS记录和进行DNS更改。

什么是MCP?

模型上下文协议(MCP)是一个开放标准,允许像Claude这样的人工智能助手安全地连接到外部工具和数据源。此服务器实现了MCP,使Claude能够与您的Cloudflare DNS设置进行交互。

特性

  • 列出和搜索域 -查看Cloudflare帐户上的所有区域
  • 完整DNS管理 -创建、读取、更新和删除DNS记录
  • 备份和导出 -将DNS记录导出为JSON以进行备份或迁移
  • 多种记录类型 -支持A、AAAA、CNAME、TXT、MX、NS、SRV、CAA和PTR记录
  • 灵活的识别 -使用区域ID或域名
  • Cloudflare代理支持 -在记录上切换橙色云(代理)状态

快速开始

1.安装

选项A:从npm安装(推荐)

npm install -g cloudflare-dns-mcp

选项B:在本地克隆和构建(用于代码审查)

git clone https://github.com/daniil-shumko/cloudflare-dns-mcp.git
cd cloudflare-dns-mcp
npm install
npm run build

2.创建Cloudflare API代币

  1. 首选 Cloudflare API代币
  2. 点击 “创建令牌”
  3. 使用 “编辑区域DNS” 模板
  4. 复制生成的令牌

3.配置克劳德桌面

添加到您的Claude Desktop配置中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json

如果通过npm安装(选项A):

{
  "mcpServers": {
    "cloudflare-dns": {
      "command": "npx",
      "args": ["cloudflare-dns-mcp"],
      "env": {
        "CLOUDFLARE_API_TOKEN": "your_token_here"
      }
    }
  }
}

如果本地安装(选项B):

{
  "mcpServers": {
    "cloudflare-dns": {
      "command": "node",
      "args": ["/absolute/path/to/cloudflare-dns-mcp/dist/index.js"],
      "env": {
        "CLOUDFLARE_API_TOKEN": "your_token_here"
      }
    }
  }
}

4.重新启动克劳德桌面

服务器现在将可用。试着问克劳德:

“列出我的所有Cloudflare域”

______________________________________________________________________

可用工具

此MCP服务器提供10个DNS管理工具:

工具说明
add_zone将新域添加到您的Cloudflare帐户
list_zones列出您帐户上的所有域
get_zone_details获取有关域的详细信息
list_dns_records列出域的DNS记录
get_dns_record按ID获取特定记录
find_dns_records按名称搜索记录
create_dns_record创建新的DNS记录
update_dns_record修改现有记录
delete_dns_record删除DNS记录
backup_dns_records将记录导出为JSON

______________________________________________________________________

工具参考

add_zone

将新域(区域)添加到您的Cloudflare帐户。添加后,必须在您的注册商处更新域名服务器,以指向Cloudflare的域名服务器。

参数:

参数类型必填说明
namestringYes要添加的域名(例如。, example.com)
account_idstringYes您的Cloudflare帐户ID(可在仪表板URL或API中找到)
typestring区域类型: full (默认), partial,或 secondary
jump_startboolean自动获取现有DNS记录(默认值:false)

查找您的帐户ID:

  • 在Cloudflare仪表板URL中: https://dash.cloudflare.com//...
  • 通过API:使用 list_zones 并检查 account.id 区域详细信息中的字段

示例提示:

  • “将example.com添加到我的Cloudflare帐户”
  • “使用帐户ID abc123为mydomain.io创建一个新区域”
  • “将newsite.com添加到Cloudflare并获取现有DNS记录”

答复包括:

  • 未来操作的区域ID
  • 在注册商处配置已分配的名称服务器
  • 区域状态(通常 pending 直到名称服务器更新)
⚠️ 许可说明: 此工具在每次使用前都需要确认,不能永久自动批准。这是一种安全措施,因为添加区域会影响您的Cloudflare帐户配置。

______________________________________________________________________

list_zones

列出您Cloudflare帐户上的所有域(区域)。

参数:

参数类型必填说明
pagenumberNo页码(默认值:1)
per_pagenumber每页最多50个结果(默认值:50)
namestring按域名筛选(部分匹配)
statusstring按状态筛选: active, pending, initializing, moved, deleted, deactivated

示例提示:

  • “列出我的所有域名”
  • “显示我的活动Cloudflare区域”
  • “查找包含'示例'的域”

______________________________________________________________________

get_zone_details

获取特定域的详细信息,包括名称服务器、计划和设置。

参数:

参数类型必填说明
zone_idstring否\*区域ID(32个字符的十六进制字符串)
domain_namestring否\*域名(例如。, example.com)

\*其中之一 zone_iddomain_name 是必需的。

示例提示:

  • “显示example.com的详细信息”
  • “mysite.com使用什么名称服务器?”
  • “example.com上有什么计划?”

______________________________________________________________________

list_dns_records

列出域的所有DNS记录。

参数:

参数类型必填说明
zone_idstring否\*区域ID
domain_namestring否\*域名
typestring按记录类型筛选: A, AAAA, CNAME, TXT, MX, NS, SRV, CAA, PTR
namestring按记录名筛选
pagenumberNo页码(默认值:1)
per_pagenumber每页最多100个结果(默认值:100)

\*其中之一 zone_iddomain_name 是必需的。

示例提示:

  • “example.com有哪些DNS记录?”
  • “显示mysite.com的所有A记录”
  • “列出我的电子邮件域的MX记录”

______________________________________________________________________

get_dns_record

通过ID获取特定DNS记录的详细信息。

参数:

参数类型必填说明
zone_idstring区域ID
record_idstringDNS记录ID

______________________________________________________________________

find_dns_records

按名称搜索DNS记录。可用于在更新或删除之前查找记录ID。

参数:

参数类型必填说明
zone_idstring否\*区域ID
domain_namestring否\*域名
record_namestringYes要搜索的记录名称(例如。, www.example.com)
typestring按记录类型筛选

\*其中之一 zone_iddomain_name 是必需的。

示例提示:

  • “查找www.example.com的记录ID”
  • “查找api.example.com的A记录”
  • “mail.example.com的记录ID是什么?”

______________________________________________________________________

create_dns_record

创建新的DNS记录。

参数:

参数类型必填说明
zone_idstring否\*区域ID
domain_namestring否\*域名
typestring记录类型: A, AAAA, CNAME, TXT, MX, NS, SRV, CAA
namestring记录名称(使用 @ 或根域名)
contentstring记录内容(IP、主机名或文本)
ttlnumberNoTTL(秒),1=自动(默认值:1)
proxiedboolean启用Cloudflare代理(默认值:false)
prioritynumberNoMX记录的优先级
commentstring可选注释

\*其中之一 zone_iddomain_name 是必需的。

示例提示:

  • “为www.example.com添加一条指向192.168.1.1的A记录”
  • “为blog.example.com创建一个指向myblog.netlify.app的CNAME”
  • “为_dmarc.example.com添加一个TXT记录,值为'v=DMARC1;p=none'”
  • “为example.com设置一个优先级为10的MX记录,指向mail.example.com”
  • “在启用Cloudflare代理的情况下为api.example.com添加A记录”

______________________________________________________________________

update_dns_record

更新现有DNS记录。仅指定要更改的字段。

参数:

参数类型必填说明
zone_idstring区域ID
record_idstring要更新的DNS记录ID
typestring新记录类型
namestring新记录名称
contentstring新内容
ttlnumber新TTL
proxiedboolean新代理状态
commentstring新评论

示例提示:

  • “将www.example.com的IP更改为10.0.0.1”
  • “为example.com上的www记录启用Cloudflare代理”
  • “将api.example.com的TTL更新为300秒”

______________________________________________________________________

delete_dns_record

删除DNS记录。 这一行动是不可逆转的。

参数:

参数类型必填说明
zone_idstring区域ID
record_idstring要删除的DNS记录ID

示例提示:

  • “删除legacy.example.com的旧CNAME记录”
  • “从example.com中删除TXT验证记录”

______________________________________________________________________

backup_dns_records

将DNS记录备份为JSON格式。可以备份帐户上的单个域或所有域。

参数:

参数类型必填说明
zone_idstring要备份的区域ID(对所有域省略)
domain_namestring要备份的域(对所有域省略)

如果两个参数都没有提供, 所有域 将得到备份。

示例提示:

  • “备份所有DNS记录,例如.com”
  • “创建我所有域的DNS记录的备份”
  • “导出mysite.com的DNS设置并保存到DNS backup.json”

备份JSON格式:

{
  "version": "1.0",
  "created_at": "2024-01-15T10:30:00.000Z",
  "backup_type": "single_zone",
  "zones": [
    {
      "zone_id": "abc123def456...",
      "zone_name": "example.com",
      "records": [
        {
          "type": "A",
          "name": "example.com",
          "content": "192.168.1.1",
          "ttl": 1,
          "proxied": true
        },
        {
          "type": "CNAME",
          "name": "www.example.com",
          "content": "example.com",
          "ttl": 1,
          "proxied": true
        },
        {
          "type": "MX",
          "name": "example.com",
          "content": "mail.example.com",
          "ttl": 3600,
          "proxied": false,
          "priority": 10
        }
      ],
      "record_count": 3
    }
  ],
  "total_zones": 1,
  "total_records": 3
}

从备份还原

备份格式旨在与 create_dns_record 工具。要还原,请执行以下操作:

  1. 加载备份JSON文件
  2. 对于每个区域中的每条记录,使用 create_dns_record 记录数据
  3. zone_name 字段标识要还原到哪个域

还原提示示例:

“读取备份文件dns-backup.json并重新创建所有dns记录,例如.com”

______________________________________________________________________

配置

克劳德桌面版

配置文件位置:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

使用npx(推荐):

{
  "mcpServers": {
    "cloudflare-dns": {
      "command": "npx",
      "args": ["cloudflare-dns-mcp"],
      "env": {
        "CLOUDFLARE_API_TOKEN": "your_token_here"
      }
    }
  }
}

使用本地安装:

{
  "mcpServers": {
    "cloudflare-dns": {
      "command": "node",
      "args": ["/absolute/path/to/cloudflare-dns-mcp/dist/index.js"],
      "env": {
        "CLOUDFLARE_API_TOKEN": "your_token_here"
      }
    }
  }
}

克劳德代码

使用npx(推荐):

添加到您的项目 .mcp.json:

{
  "mcpServers": {
    "cloudflare-dns": {
      "command": "npx",
      "args": ["cloudflare-dns-mcp"],
      "env": {
        "CLOUDFLARE_API_TOKEN": "your_token_here"
      }
    }
  }
}

或者使用CLI:

claude mcp add cloudflare-dns npx cloudflare-dns-mcp

使用本地安装:

{
  "mcpServers": {
    "cloudflare-dns": {
      "command": "node",
      "args": ["/absolute/path/to/cloudflare-dns-mcp/dist/index.js"],
      "env": {
        "CLOUDFLARE_API_TOKEN": "your_token_here"
      }
    }
  }
}

环境变量

变量必填描述
CLOUDFLARE_API_TOKEN您的Cloudflare API代币

创建Cloudflare API令牌

  1. 首选 Cloudflare Dashboard>API代币
  2. 点击 “创建令牌”
  3. 选择以下选项之一:

- “编辑区域DNS”模板 -预配置DNS管理(读取/编辑记录) - 自定义令牌 具有以下权限: - Zone.Zone → 阅读(列出和查看区域需要) - Zone.DNS → 编辑(DNS记录管理所需) - Zone.Zone → 编辑(仅需要 add_zone 工具)

  1. (可选)限制到特定区域以提高安全性
  2. 复制生成的令牌
注: 如果您只需要管理现有域的DNS记录,则不需要 Zone.Zone → Edit。仅当您想使用时才添加此权限 add_zone 添加新域的工具。

______________________________________________________________________

发展

先决条件

  • Node.js 18或更高版本
  • npm或纱线

设置

# Clone the repository
git clone https://github.com/daniil-shumko/cloudflare-dns-mcp.git
cd cloudflare-dns-mcp

# Install dependencies
npm install

# Build the project
npm run build

可用脚本

npm run build         # Build for production
npm run dev           # Watch mode (rebuild on changes)
npm run typecheck     # Run TypeScript type checking
npm run test          # Run test suite
npm run test:watch    # Run tests in watch mode
npm run test:coverage # Run tests with coverage report
npm run start         # Run the built server

项目结构

cloudflare-dns-mcp/
├── src/
│   ├── index.ts              # MCP server entry point
│   ├── cloudflare/
│   │   ├── client.ts         # Cloudflare API client
│   │   └── types.ts          # TypeScript type definitions
│   ├── tools/
│   │   ├── index.ts          # Tools module exports
│   │   ├── schemas.ts        # Zod validation schemas
│   │   ├── definitions.ts    # MCP tool definitions
│   │   ├── handlers.ts       # Tool implementations
│   │   └── types.ts          # Tool-specific types
│   └── utils/
│       ├── config.ts         # Configuration loader
│       └── errors.ts         # Error handling utilities
├── tests/                    # Test suite
├── dist/                     # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── README.md

测试

运行测试套件:

npm test

手动测试服务器:

# Set your API token
export CLOUDFLARE_API_TOKEN="your_token_here"

# Test server startup
node dist/index.js

# Test with JSON-RPC (list tools)
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node dist/index.js

______________________________________________________________________

故障排除

“需要CLOUDFLARE_API_TOKEN环境变量”

未设置API令牌。确保已将其添加到MCP配置中 env 块。

“未找到区域”

  • 您的Cloudflare帐户中可能不存在该域
  • 您的API令牌可能无法访问此区域
  • 检查域名中的拼写错误

“权限被拒绝”错误

您的API令牌需要两种权限:

  • Zone.Zone:阅读
  • Zone.DNS:编辑

服务器未出现在Claude Desktop中

  1. 验证路径 dist/index.js 是绝对的(不是相对的)
  2. 更改配置后重新启动Claude Desktop
  3. 检查构建是否成功完成(npm run build)
  4. 检查Claude Desktop日志是否有错误

速率限制

Cloudflare API有速率限制。如果你提出了很多请求,你可能会看到错误。请稍等,然后重试。

______________________________________________________________________

安全最佳实践

  • 永远不要提交您的API令牌 到版本控制
  • 使用环境变量 用于令牌存储
  • 创建最小权限令牌 -只授予区域。区域:阅读和区域。DNS:编辑
  • 将令牌作用于特定区域 如果您只需要管理某些域
  • 定期旋转令牌 为了更好的安全性
  • 查看审核日志 在API活动的Cloudflare仪表盘中

工具权限级别

此MCP服务器使用 MCP工具注释 指示工具行为和权限要求:

工具只读破坏性行为
list_zones-自动审批安全
get_zone_details-自动审批安全
list_dns_records-自动审批安全
get_dns_record-自动审批安全
find_dns_records-自动审批安全
backup_dns_records-自动审批安全
create_dns_record--可以自动批准(仅限添加剂)
update_dns_record-⚠️仅限会话审批 (可以破坏DNS)
delete_dns_record-⚠️仅限会话审批 (不可逆)
add_zone-⚠️仅限会话审批 (帐户级别更改)

标记有的工具 destructiveHint: true (更新、删除、添加区域):

  • 每次使用前都需要确认
  • 无法在会话之间永久自动批准
  • 必须在新的Claude Code会议中重新批准

为什么这些工具需要额外的确认:

  • add_zone -修改帐户配置,可能会影响计费
  • update_dns_record -可能会错误配置关键DNS设置(电子邮件、网站)
  • delete_dns_record -可能中断服务的不可逆操作

______________________________________________________________________

贡献

欢迎投稿!请随时提交拉取请求。

  1. 复刻仓库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

开发指南

  • 遵循现有代码样式
  • 为新功能添加TypeScript类型
  • 更新README以获取新工具或参数
  • 使用Claude Desktop和Claude Code进行测试更改

______________________________________________________________________

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

______________________________________________________________________

致谢

______________________________________________________________________

相关项目

目录标签

目录标签

自然语言处理TypeScriptClaudeDNS管理本地部署CloudflareMCP协议AI工具

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP