MCP Cloudflare DNS Server
Enables management of DNS records for domains on Cloudflare, including listing, creating, updating, and deleting various record types (A, AAAA, CNAME, MX, TXT, etc.) with support for proxying, TTL, and priority settings.
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., "@MCP Cloudflare DNS Serverlist all DNS records for mydomain.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.
MCP Cloudflare DNS Server
A Model Context Protocol server implementation for Cloudflare DNS that enables AI agents to manage DNS records for your domains.
Features
π List DNS records - View all or filtered DNS records
π Create DNS records - Add new A, AAAA, CNAME, MX, TXT, and other record types
βοΈ Update DNS records - Modify existing records
ποΈ Delete DNS records - Remove unwanted records
π§ Full Cloudflare API support - Supports proxying, TTL, priority settings
Related MCP server: Cloudflare DNS MCP Server
Setup
1. Get Cloudflare API Token
Go to Cloudflare API Tokens
Click "Create Token"
Use "Zone:Edit" template or create custom token with:
Zone:Read
Zone:Edit
Copy your API token
2. Get Zone ID
Go to your domain in Cloudflare Dashboard
Copy the Zone ID from the right sidebar
Usage
With Smithery (Cloud)
Deploy directly to Smithery for hosted access.
With npx (Local)
npx -y @thelord/mcp-cloudflareEnvironment Variables
Create a .env file:
CLOUDFLARE_API_TOKEN=your-api-token-here
CLOUDFLARE_ZONE_ID=your-zone-id-here
CLOUDFLARE_EMAIL=your-email@example.com # OptionalClaude Desktop Configuration
{
"mcpServers": {
"cloudflare": {
"command": "npx",
"args": ["-y", "@thelord/mcp-cloudflare"],
"env": {
"CLOUDFLARE_API_TOKEN": "your-api-token",
"CLOUDFLARE_ZONE_ID": "your-zone-id"
}
}
}
}Available Tools
list_dns_records
List all DNS records or filter by name/type.
get_dns_record
Get detailed information about a specific DNS record.
create_dns_record
Create a new DNS record with specified type, name, and content.
update_dns_record
Update an existing DNS record by ID.
delete_dns_record
Delete a DNS record by ID.
Supported DNS Record Types
A (IPv4 address)
AAAA (IPv6 address)
CNAME (Canonical name)
MX (Mail exchange)
TXT (Text)
NS (Name server)
SRV (Service)
CAA (Certificate Authority Authorization)
PTR (Pointer)
Security
API tokens are never logged or exposed
Uses official Cloudflare API with secure authentication
Supports scoped API tokens for minimal permissions
License
MIT# mcp-cloudflare
Available Tools
5 toolscreate_dns_recordC
Create a new DNS record
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | DNS record content | |
| name | Yes | DNS record name | |
| priority | No | Priority (for MX records) | |
| proxied | No | Whether the record should be proxied through Cloudflare | |
| ttl | No | Time to live (TTL) in seconds (default: 1 for auto) | |
| type | Yes | DNS record type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Create a new DNS record' implies a write operation but doesn't specify permissions needed, whether changes are reversible, rate limits, or what happens on success/failure. This is inadequate for a mutation tool with zero annotation coverage.
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, efficient sentence with zero wasted words. It's appropriately sized for a straightforward creation tool and gets directly to the point without unnecessary elaboration.
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 mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after creation, error conditions, or system behavior. The agent must rely entirely on the input schema for understanding this tool's operation.
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 schema already documents all 6 parameters thoroughly. The description adds no additional parameter information beyond what's in the schema, meeting the baseline expectation but not providing extra value.
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 'Create' and the resource 'DNS record', making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'update_dns_record' or 'delete_dns_record' beyond the obvious difference in action verbs.
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 no guidance on when to use this tool versus alternatives like 'update_dns_record' or 'list_dns_records'. It doesn't mention prerequisites, constraints, or typical use cases, leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_dns_recordC
Delete a DNS record
| Name | Required | Description | Default |
|---|---|---|---|
| recordId | Yes | The DNS record ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Delete' which implies a destructive mutation, but fails to add critical context such as whether deletion is permanent, requires specific permissions, has rate limits, or what happens on success/failure. This is a significant gap for a mutation tool with zero annotation coverage.
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, efficient sentence with zero wasteβ'Delete a DNS record' is front-loaded and directly conveys the core action. Every word earns its place, making it highly concise and well-structured for quick comprehension.
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 destructive nature, lack of annotations, and no output schema, the description is incomplete. It doesn't address behavioral risks, usage context, or expected outcomes, leaving gaps that could hinder an agent's ability to invoke it correctly. More detail is needed for a mutation tool in this environment.
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% description coverage, with recordId clearly documented as 'The DNS record ID to delete'. The description adds no additional meaning beyond this, as it doesn't elaborate on parameter format, sourcing (e.g., from list_dns_records), or constraints. Baseline 3 is appropriate when the schema does the heavy lifting.
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 ('Delete') and resource ('a DNS record'), making the purpose immediately understandable. It distinguishes itself from siblings like create_dns_record, get_dns_record, list_dns_records, and update_dns_record by specifying deletion. However, it lacks specificity about what type of DNS record (e.g., A, CNAME, MX) or scope, which prevents a perfect score.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a recordId from list_dns_records), exclusions (e.g., not for bulk deletion), or comparisons with siblings like update_dns_record for modifications. This leaves the agent without context for proper tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dns_recordC
Get a specific DNS record by ID
| Name | Required | Description | Default |
|---|---|---|---|
| recordId | Yes | The DNS record ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose if this is a read-only operation, error handling, permissions required, or response format, which are critical for a tool with mutation siblings.
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, efficient sentence with zero waste, clearly front-loaded with the core action. It's appropriately sized for a simple tool, making it easy to parse quickly.
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 complexity (no annotations, no output schema, and siblings include mutations), the description is incomplete. It lacks behavioral context, usage guidelines, and output details, making it inadequate for safe and effective tool selection in this environment.
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 the 'recordId' parameter. The description adds no additional meaning beyond implying retrieval by ID, aligning with the baseline for high schema coverage without extra param insights.
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') and resource ('a specific DNS record by ID'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'list_dns_records' or 'update_dns_record' beyond the basic action, missing explicit sibling distinction.
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?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a record ID), exclusions, or comparisons to siblings like 'list_dns_records' for broader queries, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dns_recordsC
List all DNS records for the configured zone
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by record name (optional) | |
| type | No | Filter by record type (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states it lists records but doesn't mention pagination, rate limits, authentication needs, or what 'configured zone' means operationally. This leaves significant gaps in understanding how the tool behaves beyond basic functionality.
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, efficient sentence with zero waste. It front-loads the core purpose ('List all DNS records') and adds necessary context ('for the configured zone'), making it appropriately sized and well-structured.
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 no annotations and no output schema, the description is incomplete for a tool with two parameters and siblings. It doesn't explain return values, error conditions, or how 'configured zone' is determined, leaving the agent with insufficient context for reliable use.
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 schema fully documents the optional 'name' and 'type' parameters. The description adds no additional parameter semantics beyond implying filtering capability through 'List all DNS records', which the schema already covers. Baseline 3 is appropriate as the schema does the heavy lifting.
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 ('List') and resource ('DNS records for the configured zone'), making the purpose immediately understandable. It distinguishes itself from siblings like 'get_dns_record' by indicating it returns multiple records, though it doesn't explicitly contrast with other list-like operations.
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?
No guidance is provided on when to use this tool versus alternatives like 'get_dns_record' (for a single record) or 'create_dns_record'. The description implies it's for listing all records, but doesn't specify scenarios or prerequisites, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_dns_recordC
Update an existing DNS record
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | DNS record content | |
| name | No | DNS record name | |
| priority | No | Priority (for MX records) | |
| proxied | No | Whether the record should be proxied through Cloudflare | |
| recordId | Yes | The DNS record ID to update | |
| ttl | No | Time to live (TTL) in seconds | |
| type | No | DNS record type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('update') but doesn't mention critical details like required permissions, whether changes are reversible, potential side effects, or response format. This is inadequate for a mutation tool with zero annotation coverage.
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, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it highly concise and well-structured for quick understanding.
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 mutation tool with 7 parameters, no annotations, and no output schema, the description is incomplete. It lacks behavioral context (e.g., permissions, effects), usage guidance, and output details, making it insufficient for safe and effective tool invocation.
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 schema fully documents all 7 parameters. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain parameter interactions or constraints). Baseline 3 is appropriate when the schema does all the work.
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 ('update') and resource ('existing DNS record'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'create_dns_record' or 'get_dns_record' beyond the basic verb difference, missing explicit scope distinctions.
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?
No guidance is provided on when to use this tool versus alternatives like 'create_dns_record' or 'delete_dns_record'. The description lacks context about prerequisites (e.g., needing an existing record ID) or typical use cases, leaving usage unclear.
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.
5 tool updates
v1.0.0- First observed
create_dns_record - First observed
delete_dns_record - First observed
get_dns_record - First observed
list_dns_records - First observed
update_dns_record
TDQS
Each tool has a clearly distinct purpose targeting a specific CRUD operation for DNS records. The verbs (create, delete, get, list, update) are unambiguous and correspond to standard database operations, leaving no room for confusion or overlap.
All tools follow a consistent verb_noun pattern with snake_case naming (e.g., create_dns_record, update_dns_record). The naming is predictable and uniform across all five tools, making them easily identifiable and organized.
With 5 tools, this server is well-scoped for managing DNS records, covering the essential CRUD operations. Each tool serves a clear and necessary function without redundancy, making the count appropriate for the domain.
The tool set provides complete CRUD coverage for DNS records, including create, read (get and list), update, and delete operations. There are no obvious gaps, as all lifecycle actions are covered, ensuring agents can handle full workflows without dead ends.
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 AI agents to plan, verify, and deploy Cloudflare-native apps.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Cloudflare Workers MCP server: ai-agent-scratchpad
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoβ¦
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceA token-efficient MCP server for managing Cloudflare DNS zones and records with full CRUD support and bulk operations. It can be deployed locally via stdio or as a Cloudflare Worker for remote HTTP access.-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage Cloudflare DNS records, including listing zones and records, and creating, updating, or deleting DNS records.48MIT
- AlicenseAqualityCmaintenanceEnables AI agents to manage Cloudflare DNS records, including listing, creating, updating, and deleting records for your domains.815GPL 3.0
- AlicenseAqualityBmaintenanceCloudflare DNS MCP server. Manage zones, DNS records, cache, and page rules from Claude, Cursor, Codex, or any MCP-compatible AI assistant.10MIT
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/gilberth/mcp-cloudflare'
If you have feedback or need assistance with the MCP directory API, please join our Discord server