Skip to main content
Glama

domain-manager

domain-manager 是用于管理 iveseenu.com Cloudflare DNS 的安全命令行工具。它不是常驻服务,不管理域名注册商、Nameserver、DNSSEC、Cloudflare Zone 设置、SSL/TLS、WAF、Workers 或 API Token。

工具只允许操作 iveseenu.com 及其子域名,并在本地再次执行白名单和敏感记录保护,即使 Cloudflare Token 被意外授予其他 Zone 权限也不会突破该限制。

启动方式

项目不依赖第三方 Python 包。在项目根目录执行:

./domain-manager --help

如果已将项目目录加入 PATH,也可以直接使用 domain-manager --help

Related MCP server: cloudflare-api-mcp

配置

工具从环境变量读取 Cloudflare 凭据;不要将 Token 写入源码、README、Git 或普通配置文件。

export CLOUDFLARE_API_TOKEN='...'
export CLOUDFLARE_ZONE_ID='...'       # 可选;未提供时会查询 Active Zone 并缓存结果
export ALLOWED_ZONE='iveseenu.com'    # 可选,默认值即为 iveseenu.com

可参考 .env.example.env 已被 Git 忽略,但工具不会自动读取 .env 文件,需要由运行环境安全地注入变量。

名称与默认值

  • 简短名称会自动补全 Zone:test 变为 test.iveseenu.com

  • 已是 iveseenu.com 子域的完整名称不会重复拼接。

  • 默认 ttl300 秒,使用 --ttl auto 时交给 Cloudflare 管理。

  • 默认 proxiedfalse(DNS only)。只有显式 --proxied true 才会启用 Cloudflare Proxy;代理记录的 TTL 由 Cloudflare 自动管理。

  • 创建、更新与 upsert 仅支持 AAAAACNAMETXT

查询记录

列出全部记录:

./domain-manager list
./domain-manager list --output json

按类型或名称过滤:

./domain-manager list --type A --output json
./domain-manager list --name codex --output json

查询指定名称:

./domain-manager get codex --output json
./domain-manager get codex.iveseenu.com --type A --output json

Dry Run

所有写操作都支持 --dry-run。该模式只查询现状并输出计划,不会向 Cloudflare 发送创建、更新或删除请求。建议 Agent 和人工操作都先执行一次 Dry Run。

./domain-manager create \
  --type A --name domain-manager-test --content 192.0.2.10 \
  --ttl 300 --proxied false --dry-run --output json

./domain-manager upsert \
  --type A --name domain-manager-test --content 192.0.2.10 \
  --dry-run --output json

192.0.2.10 是文档保留测试地址;移除 --dry-run 前应确认该地址和记录名称确实可用。

创建记录

./domain-manager create \
  --type A --name app --content 203.0.113.10 \
  --ttl 300 --proxied false --dry-run

若同类型、同名称的记录已存在,create 会拒绝请求。请改用 updateupsert

更新记录

update 必须精确匹配一条记录。执行时会先查询旧值,更新后再次查询验证新值。

./domain-manager update \
  --type A --name app --content 203.0.113.11 \
  --ttl 300 --proxied false --dry-run --output json

幂等写入(推荐)

upsert 是 Agent 最适合使用的接口:记录不存在则创建,存在但内容或配置不同则更新,完全相同则返回 NOOP,不产生写操作。

./domain-manager upsert \
  --type A --name app --content 203.0.113.10 \
  --ttl 300 --proxied false --dry-run --output json

删除记录

删除默认被拒绝,必须同时显式提供 --confirm-delete。删除前会查询并保存旧记录信息,删除后会再次查询确认记录已不存在。

./domain-manager delete \
  --type A --name app --confirm-delete --dry-run --output json

仅在确认 Dry Run 的目标正确后,才移除 --dry-run 执行真实删除。

安全限制

  • 不允许操作任何其他 Zone。

  • 根域 iveseenu.com 的更新和删除默认拒绝,只有显式 --allow-root 才可继续。

  • MXNSSOACAA 禁止创建、更新和删除。

  • _domainconnect.* 禁止更新和删除。

  • _acme-challenge.*_dmarc.*selector*._domainkey.* 等敏感验证/邮件记录,需要显式 --allow-sensitive

  • 删除必须使用 --confirm-delete,写入前建议始终使用 --dry-run

输出格式

默认输出为便于人工阅读的表格。Agent 应使用 --output json;JSON 模式的 stdout 只包含 JSON。

成功更新示例:

{
  "success": true,
  "action": "UPDATE",
  "changed": true,
  "record": {
    "id": "...",
    "type": "A",
    "name": "app.iveseenu.com",
    "content": "203.0.113.10",
    "ttl": 300,
    "proxied": false
  },
  "error": null
}

完全相同的 upsert 返回 action: "NOOP"changed: false。失败时返回 success: false 和不含 Token 的 error 对象。

审计日志

每次真实写操作会记录时间、操作、Zone、记录 ID/类型/名称、旧值、新值和结果。日志优先写入:

/var/log/domain-manager/audit.log

没有该目录写权限时,使用:

./logs/audit.log

审计日志不会记录 CLOUDFLARE_API_TOKEN 或 Authorization Header。

MCP:供 Codex、Hermes 等 Agent 调用

MCP Server 使用标准输入输出(stdio)JSON-RPC 传输,不是 HTTP 服务。启动命令为:

./domain-manager-mcp

在 Codex、Hermes 或其他 MCP Client 的 Server 配置中,将 command 设置为该启动器的绝对路径:

/mnt/d/codes/projects/scripts/domain-manage/domain-manager-mcp

不要把 Token 写进 MCP 配置文件、工具参数、Prompt、Git 或日志。应由启动 MCP Client 的受控环境注入 CLOUDFLARE_API_TOKEN。对于支持 Secret File / Secret Mount 的运行环境,可改用 CLOUDFLARE_API_TOKEN_FILE:该文件必须是普通文件且权限为 0600,内容仅为 Token。

install -m 600 /dev/null /run/user/$(id -u)/cloudflare-token
# 通过你的 Secret Manager 或安全终端写入 Token;不要使用 shell history 保存它。
export CLOUDFLARE_API_TOKEN_FILE=/run/user/$(id -u)/cloudflare-token
./domain-manager-mcp

MCP 工具列表如下。所有工具结果都返回统一 JSON 结构;MCP transport 的 stdout 只输出 JSON-RPC 消息。

MCP 工具

用途

list_dns

列出记录,可选 typename 筛选。

get_dns

查询指定 name,可选 type

create_dns

创建 AAAAACNAMETXT 记录。

update_dns

精确匹配一条记录后更新,并进行后置验证。

upsert_dns

不存在则创建,不同则更新,相同则 NOOP

delete_dns

删除记录;必须传入 confirm_delete: true

写工具参数与 CLI 对应:typenamecontentttlproxieddry_runallow_rootallow_sensitivedelete_dns 还要求 confirm_delete: true。工具参数中不接受 Token。

Agent 首先应使用 dry_run: true,确认返回的目标记录后才发起真实写入。delete_dns 即使在 Dry Run 下也必须显式设置 confirm_delete: true

测试

运行本地单元测试:

python3 -m unittest discover -v

测试使用模拟 Cloudflare Client,不会读取 Token 或修改真实 DNS。

Available Tools

6 tools
create_dnsB

Create one A, AAAA, CNAME, or TXT record. Prefer dry_run first.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNo
nameYesShort name or iveseenu.com FQDN.
typeYesDNS record type.
contentYesRecord value.
dry_runNoPlan only. Never sends a DNS write request.
proxiedNoCloudflare proxy. Defaults to DNS only.
allow_rootNo
allow_sensitiveNo

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the safety and side-effect disclosure burden. It states the record-creation action and recommends dry-run, but doesn't explain whether existing records are replaced, whether special permissions/zone ownership are needed, how proxied/root/sensitive flags affect the write, or what response is returned. This is thin for a mutating DNS tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core operation and closing with a safety preference. There is no filler, and the single most important execution hint ('Prefer dry_run first') is included.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutating tool with no output schema and no annotations, this description is too sparse to be self-sufficient. It omits selection criteria versus upsert/update, effect of dry_run, handling of root/sensitive records, and return behavior, so the agent must infer or inspect the schema heavily.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 63%, leaving ttl, allow_root, and allow_sensitive undocumented in the schema, and the tool description does not fill those gaps. It repeats the record types already in the type enum and adds only the word 'one,' which is minor value beyond the input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete verb and object: 'Create one A, AAAA, CNAME, or TXT record.' This clearly identifies the operation and resource, and 'one' scopes it to a single record. It does not explicitly contrast with update_dns or upsert_dns, but the create verb is unambiguous enough for basic selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage guidance is 'Prefer dry_run first,' which tells the agent to plan before writing but not when to choose create_dns over update_dns or upsert_dns. The intended context (new record creation) is implied by the name and phrase, but no explicit when/when-not or alternative routing is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_dnsA

Delete exactly one DNS record. confirm_delete must be true; prefer dry_run first.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
dry_runNo
allow_rootNo
confirm_deleteYes
allow_sensitiveNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well by disclosing the destructive nature, requiring confirm_delete, and recommending dry_run as a safety step. It does not describe what dry_run actually does or the permanence of deletion, but the core behavioral safeguards are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler. The core action is front-loaded and the safety requirements follow immediately. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with no annotations and no output schema, the description is incomplete. It omits the meaning of allow_root and allow_sensitive, the role of name and type, and what happens when dry_run is true or when no matching record exists. These gaps could lead an agent to misuse the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only adds meaning for confirm_delete and dry_run, while name, type, allow_root, and allow_sensitive remain unexplained. These are critical for correct invocation, especially the safety-related flags.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Delete exactly one DNS record') with a clear resource and an explicit scope ('exactly one'). This distinguishes it from create, update, upsert, and list operations without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear operational guidance: confirm_delete must be true and dry_run should be preferred first. It does not explicitly name alternative tools or conditions for using them, but the delete operation is naturally distinct from its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dnsA

Get DNS records for one allowlisted name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It does disclose the 'allowlisted' constraint and implies a read-only operation via 'Get', but it does not explain what happens for non-allowlisted names, permission requirements, or response behavior. The description gives a basic picture but leaves meaningful gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no filler. It is appropriately sized for a simple get operation and front-loads the core action and scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema and no annotations, the description should provide more context. It omits the meaning of the 'type' parameter, the nature of the 'allowlisted' constraint, and what a successful response looks like. The description is not complete enough for reliable invocation without guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It gives meaning to the 'name' parameter ('one allowlisted name'), but the 'type' parameter is entirely unexplained. This is insufficient for an agent to know what values are valid or how 'type' affects the request.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Get'), resource ('DNS records'), and scope ('one allowlisted name'). This differentiates it well from sibling tools like list_dns (which presumably returns all records) and the create/update/delete mutations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'one allowlisted name' implies this is for a single, specific name rather than listing all, but it does not explicitly state when to prefer this over list_dns or mention any alternatives. Usage context is implied rather than clearly specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_dnsA

List allowlisted Cloudflare DNS records, optionally filtered by type or name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
typeNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavior. It does reveal that the tool lists records (a read operation) and that only 'allowlisted' records are included, which is a meaningful scoping detail. However, it omits information about pagination, result format, or what 'allowlisted' specifically entails, leaving some behavior unknown.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the core action and resource, then mentions the optional filters with no wasted words. Every word contributes useful information, making this a model of concise writing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with two optional parameters and no output schema, the description covers the essential requirements: what it lists and the available filters. It could mention pagination or return format, but these are minor omissions given the low complexity and the clarity already provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does by identifying 'name' and 'type' as optional filters, giving them a purpose beyond the bare schema. It does not specify allowed values, matching behavior, or format details, but for two simple parameters this partial explanation is adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('allowlisted Cloudflare DNS records'), which clearly identifies the tool's function. It also notes optional filtering by type or name. However, it does not explicitly differentiate itself from siblings like get_dns, leaving the distinction between listing and retrieving to be inferred.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving a list of DNS records rather than a single record or performing mutations, but it offers no explicit guidance on when to choose this tool over get_dns or the other siblings. No exclusions or alternative conditions are stated, so the usage context is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_dnsA

Update exactly one A, AAAA, CNAME, or TXT record and verify it afterwards.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNo
nameYesShort name or iveseenu.com FQDN.
typeYesDNS record type.
contentYesRecord value.
dry_runNoPlan only. Never sends a DNS write request.
proxiedNoCloudflare proxy. Defaults to DNS only.
allow_rootNo
allow_sensitiveNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description alone must disclose behavior. It usefully reveals that the tool operates on exactly one record and verifies after updating, which is beyond what the name implies. However, it does not disclose side effects, overwrite semantics, permissions, or failure behavior, leaving important operational traits unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence front-loads the action, resource, scope, and the verify-after behavior with no filler. Every phrase earns its place; the description is as short as it can be while still conveying the core operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with 8 parameters, no annotations, and no output schema, this description is under-specified. The agent is left without guidance on how the target record is identified, what dry_run/proxied/allow_root/allow_sensitive affect, or what a successful update returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description maps to the record types in the schema's enum but adds no meaning for ttl, allow_root, allow_sensitive, or the auto TTL choice. With parameter schema coverage at 63%, the uncovered flags remain unexplained by the description, so it does not materially compensate for the gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Update'), a specific resource ('A, AAAA, CNAME, or TXT record'), and a scoping constraint ('exactly one'), which clearly differentiates it from sibling tools like create_dns, upsert_dns, or delete_dns. It is immediately obvious what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Update exactly one...' implies this is for modifying a single existing record, but the description never explicitly contrasts it with create_dns (new records), upsert_dns (create-or-update), or delete_dns (removal). Usage context is implied rather than clearly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upsert_dnsA

Idempotently create, update, or return NOOP for one DNS record. Prefer dry_run first.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNo
nameYesShort name or iveseenu.com FQDN.
typeYesDNS record type.
contentYesRecord value.
dry_runNoPlan only. Never sends a DNS write request.
proxiedNoCloudflare proxy. Defaults to DNS only.
allow_rootNo
allow_sensitiveNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden, and it delivers meaningfully: 'idempotently' discloses repeat-call safety, 'create, update, or return NOOP' discloses the complete outcome set, and 'Prefer dry_run first' prescribes a safe workflow. It stops short of disclosing return behavior or side effects on existing records.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences totaling about 15 words, with the core behavior front-loaded in the first sentence and operational guidance in the second. Every word carries information; there is no filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description captures the tool's essential contract — idempotent single-record upsert with a dry-run-first workflow — which is the context most likely to prevent mis-invocation. However, for an 8-parameter mutation tool with no annotations and no output schema, it leaves the agent uninformed about return values, the meaning of the allow_root/allow_sensitive gates, and the Cloudflare context implied by the proxied parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description is entirely silent on all 8 parameters, and schema description coverage is only 63%. The three undocumented parameters — ttl, allow_root, and allow_sensitive — receive no explanation anywhere, leaving the security-relevant gate flags and the unusual ttl 'auto' option opaque to the agent. The description does nothing to compensate for this coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explains the non-obvious 'upsert' semantics explicitly: 'Idempotently create, update, or return NOOP for one DNS record.' It specifies the resource (DNS record), scope (one record), and the full outcome set. This inherently differentiates it from the create_dns and update_dns siblings, though it does not name them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Prefer dry_run first' is a concrete, actionable usage directive that tells the agent to plan before writing. The idempotent create/update/NOOP semantics imply when this tool is preferable to create_dns or update_dns, but the description never explicitly states when to use this tool versus those alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv0.1.0
    • First observedcreate_dns
    • First observeddelete_dns
    • First observedget_dns
    • First observedlist_dns
    • First observedupdate_dns
    • First observedupsert_dns

TDQS

A3.7/5.0
Disambiguation4/5

The verbs clearly separate list/get/create/update/upsert/delete, and descriptions clarify each tool's scope. Minor overlap exists between list_dns with a name filter and get_dns, and create_dns vs upsert_dns could be confused by an agent not reading carefully, but the intended boundaries are discernible.

Naming Consistency5/5

All tools follow a consistent verb_dns pattern: list, get, create, update, upsert, delete. This makes the tool surface highly predictable and easy to reason about.

Tool Count5/5

Six tools cover the core DNS record lifecycle without unnecessary bulk. The count is well-scoped for a focused domain-manager server.

Completeness4/5

The set provides full CRUD plus idempotent upsert and post-update verification, which covers the primary workflow. However, descriptions repeatedly instruct agents to prefer dry_run first, but no dry_run tool is exposed, leaving a notable referenced capability missing.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/WangJiyuanYo/cloudflare-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server