@kodim/mcp-cloudflare-dns
Manages and analyzes Cloudflare DNS, including zones, records (create, update, delete, batch, export/import), analytics, and DNSSEC.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@kodim/mcp-cloudflare-dnslist all DNS records for example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@kodim/mcp-cloudflare-dns
MCP server for managing and analyzing Cloudflare DNS — zones, records, analytics, and DNSSEC.
Installation
Claude Code
Add to your Claude Code MCP settings (.claude/settings.local.json or global settings):
{
"mcpServers": {
"cloudflare-dns": {
"command": "npx",
"args": ["-y", "@kodim/mcp-cloudflare-dns"],
"env": {
"CLOUDFLARE_API_TOKEN": "your-cloudflare-api-token"
}
}
}
}Cursor / Other MCP Clients
{
"mcpServers": {
"cloudflare-dns": {
"command": "npx",
"args": ["-y", "@kodim/mcp-cloudflare-dns"],
"env": {
"CLOUDFLARE_API_TOKEN": "your-cloudflare-api-token"
}
}
}
}Related MCP server: @archawat/mcp-cloudflare
Cloudflare API Token
Create an API token at Cloudflare Dashboard.
Required permissions:
Zone — Read
DNS — Edit
Analytics — Read (for analytics tools)
You can use the "Edit zone DNS" template as a starting point and add Analytics read permission.
Tools
Zones
Tool | Description |
| List all DNS zones. Filter by name, status. |
| Get full details of a zone by ID. |
DNS Records
Tool | Description |
| List records with filters (type, name, content, proxied, search, tag). |
| Get details of a specific record. |
| Create a record (A, AAAA, CNAME, MX, TXT, SRV, etc.). |
| Partially update an existing record. |
| Permanently delete a record. |
Bulk Operations
Tool | Description |
| Create, update, and delete multiple records in one call. |
| Export all records in BIND format (for backups). |
| Import records from BIND format content. |
Analytics
Tool | Description |
| Summary metrics: query count, response times, cache stats. |
| Time-series analytics with configurable intervals. |
DNSSEC
Tool | Description |
| Get DNSSEC status and DS record details. |
| Enable or disable DNSSEC. |
Development
# Install dependencies
npm install --ignore-scripts
# Build
npm run build
# Watch mode
npm run watch
# Test with MCP Inspector
CLOUDFLARE_API_TOKEN=your-token npm run devLicense
MIT
Available Tools
14 toolsbatch_dns_recordsBatch DNS RecordsADestructive
Execute multiple DNS record operations (create, update, delete) in a single API call. Operations execute in order: deletes first, then patches, then posts.
| Name | Required | Description | Default |
|---|---|---|---|
| posts | No | New records to create | |
| deletes | No | Records to delete | |
| patches | No | Records to partially update | |
| zone_id | Yes | The zone ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior, so the description adds valuable context by disclosing execution order: 'deletes first, then patches, then posts.' This is important behavioral information beyond the annotations. It does not mention atomicity or error behavior, but the ordering disclosure is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, starts with the main action, and includes the critical ordering detail. Every sentence earns its place without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description, combined with a well-documented schema and informative annotations, is largely complete for the tool's complexity. It covers purpose and execution order. It does not mention return format or error handling, but the absence of an output schema and moderate complexity make this a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter (zone_id, posts, deletes, patches) already described. The tool description adds no additional semantic detail for parameters, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes multiple DNS record operations (create, update, delete) in a single API call. The verb 'execute' and resource 'DNS record operations' are specific, and it distinguishes itself from sibling single-record tools by emphasizing 'multiple' and 'single API call.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies usage for batch operations ('multiple DNS record operations in a single API call'), which distinguishes it from single-record siblings. However, it does not explicitly state when not to use it or name alternative tools for single operations, so it lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_dns_recordCreate DNS RecordA
Create a new DNS record in a zone. Supports all record types (A, AAAA, CNAME, MX, TXT, SRV, etc.). For proxied records, TTL is automatically set by Cloudflare.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | TTL in seconds. Use 1 for automatic (default). Range: 60-86400 for non-proxied. | |
| data | No | Additional data for SRV, CAA, SSHFP, and other complex record types | |
| name | Yes | DNS record name (e.g., 'example.com', 'sub.example.com', or '@' for root) | |
| tags | No | Tags in format 'key:value' | |
| type | Yes | DNS record type | |
| comment | No | Comment for the DNS record | |
| content | Yes | Record value (e.g., IP for A records, target for CNAME) | |
| proxied | No | Whether to proxy through Cloudflare (orange cloud). Default: false. | |
| zone_id | Yes | The zone ID | |
| priority | No | Priority for MX and SRV records |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only readOnlyHint: false), so the description carries a higher burden. It does add a useful behavioral note: 'For proxied records, TTL is automatically set by Cloudflare.' However, it does not disclose other important behaviors such as duplicate handling, validation checks, or implications of record conflicts. The addition is helpful but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences), front-loaded with the core action, and free of redundancy. It efficiently combines the main purpose, supported types, and a key behavioral nuance without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, nested objects, no output schema), the description is adequate but could be richer. The TTL note and record type support are useful, but it does not guide on complex record types (e.g., using the data parameter) or potential edge cases. The schema covers parameters, but the description leaves some contextual gaps for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds marginal meaning by noting that proxied records auto-set TTL, which enriches the ttl and proxied parameters. However, it does not explain other parameter interactions or complex record type requirements beyond what the schema already describes. The value added is limited.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and resource: 'Create a new DNS record in a zone.' It explicitly enumerates supported record types, distinguishing it from sibling tools like update, delete, and list. The scope is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives like update_dns_record or batch_dns_records. It only restates the basic creation purpose, leaving the agent to infer appropriate usage from sibling tool names. No exclusions or contextual cues are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_dns_recordDelete DNS RecordADestructive
Permanently delete a DNS record. This action cannot be undone. Use list_dns_records first to confirm the record ID.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | The zone ID | |
| record_id | Yes | The DNS record ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, and the description adds specificity with 'cannot be undone' and 'permanently', reinforcing the irreversible nature beyond the boolean hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, then the irreversible warning, then the prerequisite. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has simple parameters and no output schema, and the description covers purpose, irreversibility, and a preparation step. It lacks permission/error details but is sufficient for agent selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with descriptions (zone_id and record_id), so schema coverage is 100%. The description adds no additional parameter detail, earning the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Permanently delete a DNS record' with a specific verb and resource, distinguishing it from sibling tools like create, update, get, and list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs to 'Use list_dns_records first to confirm the record ID', providing a clear prerequisite and workflow context. It doesn't mention alternatives for when not to use, but for a destructive operation this is solid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_dns_recordsExport DNS RecordsARead-only
Export all DNS records for a zone in BIND format. Useful for backups or migrating to another DNS provider.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | The zone ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint: true already indicates a safe read operation. The description adds meaningful behavioral details: it exports 'all DNS records' and outputs in 'BIND format', which goes beyond the annotation. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that each add value: the first states what the tool does, the second states when to use it. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple export tool with one parameter, a read-only annotation, and no output schema, the description covers the essential context: purpose, output format, and use case. It could mention the response format (e.g., text output) but the BIND format implies it adequately. Overall, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes zone_id as 'The zone ID' with 100% coverage. The description does not add additional parameter semantics, but the schema is fully self-explanatory, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'export' applied to 'all DNS records for a zone' and specifies the output format 'BIND format'. This distinguishes it from sibling tools like list_dns_records (list) or get_dns_record (single record).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: 'Useful for backups or migrating to another DNS provider.' While it doesn't explicitly name alternatives or exclusions, the purpose is clearly identified, and the context is sufficient for an agent to decide when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dns_analyticsGet DNS AnalyticsARead-only
Get DNS query analytics summary for a zone. Returns aggregate metrics like query count, response times, and cache performance over a time period.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort metrics (prefix with - for descending, e.g., -queryCount) | |
| limit | No | Maximum number of rows to return | |
| since | No | Start time in ISO 8601 format (e.g., 2024-01-01T00:00:00Z) | |
| until | No | End time in ISO 8601 format | |
| filters | No | Filters in Cloudflare analytics filter format (e.g., queryType==A) | |
| metrics | No | Metrics to return (default: all). Options: queryCount, uncachedCount, staleCount, responseTimeAvg, responseTimeMedian, responseTime90th, responseTime99th | |
| zone_id | Yes | The zone ID | |
| dimensions | No | Dimensions to group by. Options: queryName, queryType, responseCode, responseCached, coloName, origin |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds context about what the tool returns: aggregate metrics like query count, response times, and cache performance over a time period. This is consistent with the annotations and provides additional behavioral insight without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous words. It efficiently covers the purpose, scope, and primary return content, earning its place in concise structuring.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters and no output schema, the description is somewhat minimal. It gives a high-level summary but fails to mention that specifying dimensions (e.g., queryName, coloName) will produce multiple grouped rows, nor does it describe the response structure. This gap is notable for a complex analytics tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters. The description only loosely references the time period (since/until) but does not add meaning beyond what the schema provides. Hence, the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets a DNS query analytics summary for a zone, using the specific verb 'Get' and resource 'DNS query analytics summary.' It also mentions aggregate metrics like query count, response times, and cache performance, which effectively distinguishes it from the sibling tool get_dns_analytics_by_time that focuses on time-series breakdowns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly conveys that this tool is for aggregate summaries over a time period, not for time-series drill-downs. However, it does not explicitly name an alternative tool for time-series needs or include clear 'when-not-to-use' guidance, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dns_analytics_by_timeGet DNS Analytics by TimeARead-only
Get DNS analytics broken down by time intervals. Returns time-series data for DNS metrics. Useful for monitoring trends and identifying patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort metrics | |
| limit | No | Maximum rows to return | |
| since | No | Start time in ISO 8601 format | |
| until | No | End time in ISO 8601 format | |
| filters | No | Filters in Cloudflare analytics filter format | |
| metrics | No | Metrics to return (default: all) | |
| zone_id | Yes | The zone ID | |
| dimensions | No | Dimensions to group by | |
| time_delta | No | Time interval for grouping data (default: auto) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds that the tool returns 'time-series data' and groups by 'time intervals,' which is useful behavioral context. It does not mention pagination, limits, or default metrics/aggregation behavior, but the annotation lowers the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose. Every sentence adds value: what it does, what it returns, and when it's useful. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, no output schema, and a sibling `get_dns_analytics`, the description gives the essential idea but lacks explicit differentiation from the sibling. It explains why one would use this tool (trends/patterns) but does not mention how it interacts with parameters like `metrics` or `time_delta`. Given full schema coverage, the description is adequate but not fully complete for tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented in the schema. The description does not add parameter-level meaning beyond stating that data is broken down by time intervals, which aligns with `time_delta` but provides no extra syntax or defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('DNS analytics') with a clear scope ('broken down by time intervals'). It distinguishes from the sibling tool `get_dns_analytics` by emphasizing the time-series aspect, though it does not explicitly name or compare with that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Useful for monitoring trends and identifying patterns,' which conveys a clear use case. However, it does not provide explicit alternatives or when-not-to-use guidance, especially given the sibling `get_dns_analytics` that may differ only in time grouping.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dns_recordGet DNS RecordARead-only
Get full details of a specific DNS record by its record ID.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | The zone ID | |
| record_id | Yes | The DNS record ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Get full details' which aligns with the readOnlyHint annotation, but it adds no extra behavioral context beyond what the annotation already conveys. It doesn't mention potential errors, pagination, or any side effects. Since annotations cover the safety profile, the description is consistent but not enriched—standard for a simple read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the action ('Get full details') and the resource ('specific DNS record'), immediately followed by the criterion ('by its record ID'). It contains zero filler and is perfectly sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with two required parameters and read-only annotations, the description is sufficient for an agent to understand what the tool does and how to invoke it. The absence of an output schema means the phrase 'full details' is somewhat vague, but the tool's simplicity and the sibling set make the expected behavior obvious enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both zone_id and record_id have clear descriptions in the input schema. The tool description adds no additional parameter meaning beyond repeating the schemas. Baseline 3 is appropriate when the schema fully documents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and identifies the exact resource ('full details of a specific DNS record') and the key discriminator ('by its record ID'). This clearly distinguishes it from sibling tools like list_dns_records (which lists records) and get_zone (which retrieves zone details).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: use this tool when you need a single DNS record's full details given its record ID. It does not explicitly mention when to avoid it or name alternatives, but the purpose is unambiguous enough for an agent to select it appropriately alongside the sibling list/create/update/delete tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dnssec_statusGet DNSSEC StatusARead-only
Get the DNSSEC configuration and status for a zone. Returns DS record details needed for registrar configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | The zone ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already communicates the safe read-only nature. The description adds that it 'Returns DS record details needed for registrar configuration,' which is useful output context but does not disclose additional behavioral traits such as error handling, permissions, or limits. It neither contradicts annotations nor adds significant behavioral depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loading the primary action and then clarifying the output. Every word is purposeful with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only getter with one parameter and no output schema, the description sufficiently conveys the purpose and return value. It does not mention edge cases like zones without DNSSEC enabled, but the tool is simple enough that this is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage for zone_id with description 'The zone ID.' The tool description does not elaborate further on the parameter, so it adds no extra meaning beyond the schema. The baseline of 3 applies as the schema is fully self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Get the DNSSEC configuration and status for a zone' with a specific verb and resource. It further distinguishes itself from siblings like get_dns_record by explicitly mentioning DS record details for registrar configuration, aligning with the DNSSEC-specific sibling names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving DNSSEC status and DS records, but does not explicitly state when not to use it or name alternatives. The context of sibling tools (e.g., get_dns_record, update_dnssec_status) makes the use case clear, but explicit exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_zoneGet Zone DetailsARead-only
Get full details for a specific DNS zone by its zone ID. Returns zone configuration including name servers, status, and account info.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | The zone ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds return-value context (name servers, status, account info) that is not in the schema. It does not contradict annotations and gives useful behavioral scope for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and a brief return summary. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-parameter read tool with readOnly annotation and no output schema, the description adequately covers purpose and return contents. It could be slightly more explicit about distinguishing from list_zones, but overall it is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has full (100%) description coverage for zone_id, and the description uses the same term without adding format or constraints. With high schema coverage, a baseline of 3 is appropriate; the description adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get'), the resource ('specific DNS zone'), and the scoping ('by its zone ID'), which distinguishes it from sibling list_zones that retrieves multiple zones. It also previews returned data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you have a zone ID and need one zone's details, and the phrase 'specific DNS zone' contrasts with list_zones. However, it does not explicitly name alternatives or state 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.
import_dns_recordsImport DNS RecordsA
Import DNS records from BIND-formatted zone file content. Creates new records from the provided content.
| Name | Required | Description | Default |
|---|---|---|---|
| proxied | No | Whether imported records should be proxied through Cloudflare | |
| zone_id | Yes | The zone ID | |
| bind_content | Yes | BIND zone file content to import |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark readOnlyHint=false, consistent with a write operation. The description adds that it 'creates new records', clarifying the mutation type, but does not disclose potential side effects like record conflicts, replacement behavior, or failure conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, 22 words, front-loaded with 'Import DNS records'. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, yet the description does not mention return values or error scenarios. It covers the core action and input format adequately but could benefit from noting response behavior or idempotency, especially since it is a bulk mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters (zone_id, bind_content, proxied). The description's mention of 'BIND-formatted zone file content' reinforces the bind_content parameter but adds no further meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Import' with the resource 'DNS records' and uniquely specifies the source format 'BIND-formatted zone file content', distinguishing it from sibling tools like create_dns_record and batch_dns_records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates the intended input type ('BIND-formatted zone file content') and states the action ('Creates new records'), signaling a bulk import scenario. However, it does not explicitly mention alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dns_recordsList DNS RecordsARead-only
List DNS records for a zone. Filter by record type, name, or content. Use this to find existing records before creating or updating them.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Filter by tag (exact match, e.g., key:value) | |
| name | No | Filter by exact record name (e.g., sub.example.com) | |
| page | No | Page number (default: 1) | |
| type | No | Filter by record type (A, AAAA, CNAME, MX, TXT, etc.) | |
| order | No | Field to order by | |
| search | No | General search across name and content | |
| comment | No | Filter by comment text (contains match) | |
| content | No | Filter by record content/value | |
| proxied | No | Filter by Cloudflare proxy status | |
| zone_id | Yes | The zone ID | |
| per_page | No | Results per page (default: 100, max: 5000) | |
| direction | No | Sort direction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals this is a safe read operation, so the bar is lower. The description adds minimal behavioral context beyond the schema, such as the ability to filter by type, name, or content, but these filters are already documented in the input schema. No additional side effects, rate limits, or auth requirements are disclosed, nor is the return format described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, front-loaded with the action and resource, then filters, then use case. Every sentence earns its place with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (12 params) and the schema's full coverage of parameter details, the description adequately covers purpose, filters, and a key usage pattern. It does not describe return values or pagination, but the schema covers pagination parameters and a list return is intuitive. A brief mention of output could improve completeness, but it's not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all 12 parameters, so the schema already provides full meaning. The description mentions three filters (type, name, content) which are prominent, but does not add value beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('DNS records for a zone'), clearly distinguishing it from sibling tools like get_dns_record (single record) or create/update/delete. The sentence 'Use this to find existing records before creating or updating them' further differentiates its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use this to find existing records before creating or updating them.' This provides clear context. However, it does not name alternatives or mention when not to use it, such as when retrieving a single record via get_dns_record.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_zonesList ZonesARead-only
List all DNS zones in the Cloudflare account. Optionally filter by domain name or status. Returns zone IDs needed for other operations.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by domain name (e.g., example.com) | |
| page | No | Page number (default: 1) | |
| status | No | Filter by zone status | |
| per_page | No | Results per page (default: 20, max: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates this is a safe read operation. The description adds that it returns zone IDs needed for other operations, which is useful downstream context, but it does not disclose additional behavioral traits such as pagination behavior or response structure beyond what the schema implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short, purposeful sentences: purpose, filters, and output utility. Every sentence earns its place, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation, the description covers the core purpose, optional filters, and the key return value (zone IDs). The schema provides full parameter details including enums and defaults, and the readOnly annotation covers safety, making this description complete enough for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description only rephrases the name and status filters without adding new meaning or details beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'List all DNS zones in the Cloudflare account' with a specific verb and resource, clearly indicating a list operation with optional filters. This distinguishes it from sibling tools like get_zone (single zone) and list_dns_records (records within a zone), even without explicit exclusions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it returns zone IDs needed for other operations, implying when to use this tool. It also mentions optional filtering by domain name or status. However, it does not explicitly state when to use alternatives like get_zone, so it lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_dns_recordUpdate DNS RecordA
Update an existing DNS record. Only provide the fields you want to change. Use list_dns_records first to find the record ID.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | New TTL in seconds (1 = automatic) | |
| name | No | New record name | |
| tags | No | New tags in format 'key:value' | |
| type | No | New record type | |
| comment | No | New comment for the record | |
| content | No | New record content/value | |
| proxied | No | New Cloudflare proxy status | |
| zone_id | Yes | The zone ID | |
| record_id | Yes | The DNS record ID to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only provide readOnlyHint: false, which tells the agent this is a mutation but little else. The description adds meaningful behavioral detail: it updates an existing record (implies existence requirement) and supports partial updates (fields not provided remain unchanged). This goes beyond the sparse annotation without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action ('Update an existing DNS record'), followed by a prerequisite and usage tip. No filler, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an update tool with 9 parameters (2 required) and a fully descriptive schema, the description covers the key context: partial update behavior and how to obtain the record ID. With no output schema, return values are not required to be explained. It is sufficiently complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for every parameter, so the baseline is 3. The description adds a general note about partial updates ('Only provide the fields you want to change') which clarifies parameter optionality, but it does not add per-parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Update an existing DNS record.' It clearly distinguishes from siblings like create_dns_record and delete_dns_record by emphasizing 'existing' and 'update.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Only provide the fields you want to change' explains partial update semantics, and 'Use list_dns_records first to find the record ID' gives a concrete prerequisite and points to a sibling tool. However, it does not explicitly mention when not to use this tool or name alternatives for other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_dnssec_statusUpdate DNSSEC StatusA
Enable or disable DNSSEC for a zone. When enabling, Cloudflare generates the required keys and provides the DS record for your registrar.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | Set to 'active' to enable or 'disabled' to disable DNSSEC | |
| zone_id | Yes | The zone ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a non-obvious side effect: 'When enabling, Cloudflare generates the required keys and provides the DS record.' This adds value beyond the readOnlyHint annotation, which only indicates a write operation. It does not mention disabling side effects, but provides meaningful transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose and followed by a valuable behavioral detail. It is concise and every clause contributes meaning, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with two well-documented parameters and readOnlyHint=false, the description captures the main action and a key outcome (DS record). It lacks details on response format or disabling effects, but given the low complexity, it is sufficiently complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers both parameters with clear descriptions, including enum values for status. The tool description does not add additional parameter-level meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Enable or disable DNSSEC for a zone.' It uses a specific verb and resource, distinguishing it from read-only siblings like get_dnssec_status. The addition about DS record generation further clarifies the tool's role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you want to change DNSSEC status) and the sibling list includes get_dnssec_status for reading. However, it does not explicitly contrast with alternatives, so it falls short of a perfect score.
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.
14 tool updates
v0.1.0- First observed
batch_dns_records - First observed
create_dns_record - First observed
delete_dns_record - First observed
export_dns_records - First observed
get_dns_analytics - First observed
get_dns_analytics_by_time - First observed
get_dns_record - First observed
get_dnssec_status - First observed
get_zone - First observed
import_dns_records - First observed
list_dns_records - First observed
list_zones - First observed
update_dns_record - First observed
update_dnssec_status
TDQS
Each tool has a clear, distinct purpose: zone lookups, DNS record CRUD, batch operations, import/export, analytics (summary vs. time-series), and DNSSEC management. No two tools overlap ambiguously.
All tool names follow a consistent verb_noun pattern in snake_case: get_, list_, create_, update_, delete_, batch_, export_, import_, and two get_dns_ analytics variants. Conventions are uniform and predictable.
14 tools is well within the ideal 3-15 range for a domain-specific MCP server. Each tool covers a meaningful aspect of Cloudflare DNS management without redundancy or bloat.
The tool surface covers core DNS operations comprehensively: zone listing/detail, full DNS record CRUD, batch edits, BIND import/export, analytics, and DNSSEC. Minor gaps include no create_zone or update_zone, but these are peripheral for a DNS-focused server.
Maintenance
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
MCP server for DNSimple — domains, DNS zone records, availability, pricing and contacts.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Cloudflare Workers MCP server: api-flow-analyzer
Cloudflare Workers MCP server: domain-intel
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA lightweight MCP server that enables agents to interface with Cloudflare's REST API, allowing management of DNS records and other Cloudflare services.915GPL 2.0
- AlicenseNot gradedqualityDmaintenanceMCP server for managing Cloudflare DNS across multiple zones from a single API token, enabling bulk operations like toggling proxy, listing records, and batch updates.16MIT
- AlicenseAqualityBmaintenanceCloudflare DNS MCP server. Manage zones, DNS records, cache, and page rules from Claude, Cursor, Codex, or any MCP-compatible AI assistant.10MIT
- FlicenseNot gradedqualityBmaintenanceRemote MCP server to manage Cloudflare domains, zones, and DNS records via OAuth authentication.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/KodimTech/mcp-cloudflare-dns'
If you have feedback or need assistance with the MCP directory API, please join our Discord server