Cloudflare DNS MCP服务器
注: 这是一个非官方的MCP服务器,不隶属于Cloudflare或得到Cloudflare的认可。
](https://www.npmjs.com/package/cloudflare-dns-mcp)  ](https://smithery.ai/server/@daniil-shumko/cloudflare-dns-mcp)  ](https://nodejs.org) 
⚠️ 安全警告 此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 build2.创建Cloudflare API代币
- 首选 Cloudflare API代币
- 点击 “创建令牌”
- 使用 “编辑区域DNS” 模板
- 复制生成的令牌
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的域名服务器。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | Yes | 要添加的域名(例如。, example.com) |
account_id | string | Yes | 您的Cloudflare帐户ID(可在仪表板URL或API中找到) |
type | string | 否 | 区域类型: full (默认), partial,或 secondary |
jump_start | boolean | 否 | 自动获取现有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帐户上的所有域(区域)。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
page | number | No | 页码(默认值:1) |
per_page | number | 否 | 每页最多50个结果(默认值:50) |
name | string | 否 | 按域名筛选(部分匹配) |
status | string | 否 | 按状态筛选: active, pending, initializing, moved, deleted, deactivated |
示例提示:
- “列出我的所有域名”
- “显示我的活动Cloudflare区域”
- “查找包含'示例'的域”
______________________________________________________________________
get_zone_details
获取特定域的详细信息,包括名称服务器、计划和设置。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
zone_id | string | 否\* | 区域ID(32个字符的十六进制字符串) |
domain_name | string | 否\* | 域名(例如。, example.com) |
\*其中之一 zone_id 或 domain_name 是必需的。
示例提示:
- “显示example.com的详细信息”
- “mysite.com使用什么名称服务器?”
- “example.com上有什么计划?”
______________________________________________________________________
list_dns_records
列出域的所有DNS记录。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
zone_id | string | 否\* | 区域ID |
domain_name | string | 否\* | 域名 |
type | string | 否 | 按记录类型筛选: A, AAAA, CNAME, TXT, MX, NS, SRV, CAA, PTR |
name | string | 否 | 按记录名筛选 |
page | number | No | 页码(默认值:1) |
per_page | number | 否 | 每页最多100个结果(默认值:100) |
\*其中之一 zone_id 或 domain_name 是必需的。
示例提示:
- “example.com有哪些DNS记录?”
- “显示mysite.com的所有A记录”
- “列出我的电子邮件域的MX记录”
______________________________________________________________________
get_dns_record
通过ID获取特定DNS记录的详细信息。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
zone_id | string | 是 | 区域ID |
record_id | string | 是 | DNS记录ID |
______________________________________________________________________
find_dns_records
按名称搜索DNS记录。可用于在更新或删除之前查找记录ID。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
zone_id | string | 否\* | 区域ID |
domain_name | string | 否\* | 域名 |
record_name | string | Yes | 要搜索的记录名称(例如。, www.example.com) |
type | string | 否 | 按记录类型筛选 |
\*其中之一 zone_id 或 domain_name 是必需的。
示例提示:
- “查找www.example.com的记录ID”
- “查找api.example.com的A记录”
- “mail.example.com的记录ID是什么?”
______________________________________________________________________
create_dns_record
创建新的DNS记录。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
zone_id | string | 否\* | 区域ID |
domain_name | string | 否\* | 域名 |
type | string | 是 | 记录类型: A, AAAA, CNAME, TXT, MX, NS, SRV, CAA |
name | string | 是 | 记录名称(使用 @ 或根域名) |
content | string | 是 | 记录内容(IP、主机名或文本) |
ttl | number | No | TTL(秒),1=自动(默认值:1) |
proxied | boolean | 否 | 启用Cloudflare代理(默认值:false) |
priority | number | No | MX记录的优先级 |
comment | string | 否 | 可选注释 |
\*其中之一 zone_id 或 domain_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_id | string | 是 | 区域ID |
record_id | string | 是 | 要更新的DNS记录ID |
type | string | 否 | 新记录类型 |
name | string | 否 | 新记录名称 |
content | string | 否 | 新内容 |
ttl | number | 否 | 新TTL |
proxied | boolean | 否 | 新代理状态 |
comment | string | 否 | 新评论 |
示例提示:
- “将www.example.com的IP更改为10.0.0.1”
- “为example.com上的www记录启用Cloudflare代理”
- “将api.example.com的TTL更新为300秒”
______________________________________________________________________
delete_dns_record
删除DNS记录。 这一行动是不可逆转的。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
zone_id | string | 是 | 区域ID |
record_id | string | 是 | 要删除的DNS记录ID |
示例提示:
- “删除legacy.example.com的旧CNAME记录”
- “从example.com中删除TXT验证记录”
______________________________________________________________________
backup_dns_records
将DNS记录备份为JSON格式。可以备份帐户上的单个域或所有域。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
zone_id | string | 否 | 要备份的区域ID(对所有域省略) |
domain_name | string | 否 | 要备份的域(对所有域省略) |
如果两个参数都没有提供, 所有域 将得到备份。
示例提示:
- “备份所有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 工具。要还原,请执行以下操作:
- 加载备份JSON文件
- 对于每个区域中的每条记录,使用
create_dns_record记录数据 - 这
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令牌
- 首选 Cloudflare Dashboard>API代币
- 点击 “创建令牌”
- 选择以下选项之一:
- “编辑区域DNS”模板 -预配置DNS管理(读取/编辑记录) - 自定义令牌 具有以下权限: - Zone.Zone → 阅读(列出和查看区域需要) - Zone.DNS → 编辑(DNS记录管理所需) - Zone.Zone → 编辑(仅需要 add_zone 工具)
- (可选)限制到特定区域以提高安全性
- 复制生成的令牌
注: 如果您只需要管理现有域的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中
- 验证路径
dist/index.js是绝对的(不是相对的) - 更改配置后重新启动Claude Desktop
- 检查构建是否成功完成(
npm run build) - 检查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-可能中断服务的不可逆操作
______________________________________________________________________
贡献
欢迎投稿!请随时提交拉取请求。
- 复刻仓库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
开发指南
- 遵循现有代码样式
- 为新功能添加TypeScript类型
- 更新README以获取新工具或参数
- 使用Claude Desktop和Claude Code进行测试更改
______________________________________________________________________
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
______________________________________________________________________
致谢
______________________________________________________________________
相关项目
- 模型上下文协议 -MCP规范
- MCP服务器 -官方MCP服务器实施
- Cloudflare API文档 -Cloudflare API文档
