Skip to main content
Glama
MCP Cloudflare DNS Server

MCP Cloudflare DNS Server

MCP Cloudflare DNS Server

A Model Context Protocol server implementation for Cloudflare DNS that enables AI agents to manage DNS records for your domains.

Fork of gilberth/mcp-cloudflare by TheLord. Original work is credited and this fork is distributed under the same MIT license.

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-api-mcp

Setup

1. Get Cloudflare API Token

  1. Go to Cloudflare API Tokens

  2. Click "Create Token"

  3. Use the "Edit zone DNS" template or create a custom token with:

    • Zone:Read (to use list_zones)

    • DNS:Edit (to create, update, and delete DNS records)

  4. Copy your API token

2. Get Zone ID

  1. Go to your domain in the Cloudflare Dashboard

  2. Copy the Zone ID from the right sidebar

Usage

Environment Variables

Create a .env file:

CLOUDFLARE_API_TOKEN=your-api-token-here
CLOUDFLARE_ZONE_ID=your-zone-id-here  # Optional: default zone when zone_id not specified per-tool
CLOUDFLARE_EMAIL=your-email@example.com  # Optional, only for legacy API keys

Claude Desktop Configuration

{
  "mcpServers": {
    "cloudflare": {
      "command": "npx",
      "args": ["-y", "@neverprepared/mcp-cloudflare-dns"],
      "env": {
        "CLOUDFLARE_API_TOKEN": "your-api-token"
      }
    }
  }
}

Run locally

npx -y @neverprepared/mcp-cloudflare-dns

Available Tools

list_zones

List all Cloudflare zones (domains) on the account. Use this to discover zone IDs when working with a domain by name.

list_dns_records

List all DNS records for a zone, with optional filters for record name and type.

get_dns_record

Get detailed information about a specific DNS record by ID.

create_dns_record

Create a new DNS record with specified type, name, and content. SRV and CAA records accept a structured data object instead of a content string.

update_dns_record

Update an existing DNS record by ID. All fields except recordId are optional.

delete_dns_record

Delete a DNS record by ID.

export_dns_zone

Export all DNS records for a zone as a JSON array. Useful for backups and bulk operations.

import_dns_zone

Bulk-import DNS records from a JSON array. Returns a success/failure summary with per-record partial failure handling.

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

  • DNS record content is treated as untrusted external data to guard against prompt injection

  • Record IDs are validated against Cloudflare's expected format before use

  • API error details are sanitized before being returned to the calling agent

  • Uses official Cloudflare API with secure authentication

  • Supports scoped API tokens for minimal permissions

License

MIT — see LICENSE.

Original work copyright TheLord (gilberth/mcp-cloudflare).

Available Tools

8 tools
create_dns_recordA

Create a new DNS record. Call list_zones first to resolve a domain name to a zone_id if needed.

Inputs: name (required), type (required), content (required), ttl, +3 more.

delete_dns_recordB

Delete a DNS record

Inputs: recordId (required), zone_id.

export_dns_zoneA

Export all DNS records for a zone as a JSON array. Useful for backups and bulk operations. Call list_zones first to resolve a domain name to a zone_id if needed.

Inputs: zone_id.

get_dns_recordA

Get a specific DNS record by ID

Inputs: recordId (required), zone_id.

import_dns_zoneA

Import DNS records from a JSON array, creating each record in the zone. Returns a success/failure summary with partial failure handling.

Inputs: records (required), zone_id.

list_dns_recordsA

List all DNS records for a zone. Call list_zones first to resolve a domain name to a zone_id if needed.

Inputs: name, type, zone_id.

list_zonesA

List all Cloudflare zones (domains) on the account. Use this to discover zone IDs when the user refers to a domain by name.

Inputs: no named parameters.

update_dns_recordC

Update an existing DNS record

Inputs: recordId (required), ttl, name, type, +4 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 8 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes: list_zones handles domain discovery, the record CRUD tools map to specific operations, and import/export handle bulk workflows. The only mild overlap is between list_dns_records and export_dns_zone, both of which retrieve all records, but their descriptions clarify that one is for standard listing and the other for backup/bulk operations.

    Naming Consistency5/5

    All tool names follow a consistent snake_case verb_noun pattern: list/gets/create/update/delete/export/import paired with clear resource names (zones, dns_record, dns_zone). No mixed conventions or vague verbs.

    Tool Count5/5

    Eight tools is well-scoped for a DNS management server: one zone discovery tool, four record CRUD operations, one single-record lookup, and two bulk export/import tools. Each tool earns its place without redundancy or bloat.

    Completeness5/5

    The tool surface provides full CRUD coverage for DNS records (list, get, create, update, delete), zone discovery via list_zones, and bulk workflows via import/export with partial failure handling. The only absent operations are zone-level create/delete, which are reasonably out of scope for a DNS record-focused server.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers