/ Directorio / Playground / Cloudflare API
● Oficial cloudflare 🔑 Requiere tu clave

Cloudflare API

por cloudflare · cloudflare/mcp

Gestiona DNS de Cloudflare, zonas, WAF, analíticas y Workers desde Claude — con tokens API con alcance limitado y la costumbre de hacer dry-run.

El MCP de la API de Cloudflare convierte toda la API REST de Cloudflare en herramientas: zonas, registros DNS, reglas de página, reglas de firewall, analíticas, SSL, Workers, R2, KV y mucho más. Usa un token API con alcance limitado (no la clave Global API Key) y trata las escrituras como cambios de infraestructura — vista previa, aplicación, verificación.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

cloudflare-api.replay ▶ listo
0/0

Instalar

Elige tu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "cloudflare-api": {
      "command": "npx",
      "args": [
        "-y",
        "@cloudflare/mcp"
      ]
    }
  }
}

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "cloudflare-api": {
      "command": "npx",
      "args": [
        "-y",
        "@cloudflare/mcp"
      ]
    }
  }
}

Cursor usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "cloudflare-api": {
      "command": "npx",
      "args": [
        "-y",
        "@cloudflare/mcp"
      ]
    }
  }
}

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "cloudflare-api": {
      "command": "npx",
      "args": [
        "-y",
        "@cloudflare/mcp"
      ]
    }
  }
}

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "cloudflare-api",
      "command": "npx",
      "args": [
        "-y",
        "@cloudflare/mcp"
      ]
    }
  ]
}

Continue usa un array de objetos de servidor en lugar de un mapa.

~/.config/zed/settings.json
{
  "context_servers": {
    "cloudflare-api": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "@cloudflare/mcp"
        ]
      }
    }
  }
}

Añádelo a context_servers. Zed recarga en caliente al guardar.

claude mcp add cloudflare-api -- npx -y @cloudflare/mcp

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: Cloudflare API

Auditar registros DNS en todas las zonas para detectar cambios

👤 Equipos de plataforma / SRE ⏱ ~25 min intermediate

Cuándo usarlo: Tienes 40 zonas y quieres saber cuál tiene TTLs raros, falta SPF/DMARC, o CNAMEs colgantes.

Requisitos previos
  • Token API con Zone:Zone:Read, Zone:DNS:Read — Panel de Cloudflare → Mi perfil → Tokens API → Crear
Flujo
  1. Listar zonas y contar registros por tipo
    Lista todas las zonas en mi cuenta. Para cada una, cuenta registros por tipo (A, CNAME, TXT, MX).✓ Copiado
    → Matriz de inventario
  2. Verificar higiene de autenticación de correo
    Para cada zona usada para correo, verifica la presencia de SPF (TXT que contenga 'v=spf1'), TXT de DMARC en _dmarc, y registros TXT de selectores DKIM. Marca los faltantes.✓ Copiado
    → Informe de brecha de autenticación de correo
  3. Encontrar CNAMEs colgantes
    Para cada CNAME en cada zona, resuelve el destino. Marca NXDOMAIN o SERVFAIL como colgantes.✓ Copiado
    → Lista de CNAMEs riesgosos

Resultado: Un informe de higiene DNS zona por zona que puedas pasar al equipo que posee cada dominio.

Errores comunes
  • Los CNAMEs colgantes son riesgos de toma de control de subdominio — Cualquier CNAME NXDOMAIN se escalada inmediatamente — elimina o corrige
Combinar con: filesystem

Añadir o actualizar un registro DNS con flujo de vista previa/aplicación

👤 Cualquiera a punto de hacer un cambio DNS que le preocupa ⏱ ~10 min beginner

Cuándo usarlo: Cambiar de proveedor de correo, añadir un nuevo CNAME para un servicio — cambios DNS de alto riesgo.

Requisitos previos
  • Token con Zone:DNS:Edit en la zona destino — Limita el token solo a la zona que estás cambiando
Flujo
  1. Mostrar estado actual
    Para la zona <zone>, muestra cada registro para el nombre '<name>' y tipo <type>. Estado proxied y TTL.✓ Copiado
    → Estado actual del registro
  2. Proponer el cambio, no aplicar
    Propón un parche: <describe cambio>. Muestra la llamada API exacta y el antes/después. NO ejecutes aún.✓ Copiado
    → Vista previa del diff
  3. Aplicar después de confirmación
    Confirmo. Aplica el cambio. Luego vuelve a leer el registro para confirmar. También vacía la caché para el nombre afectado.✓ Copiado
    → Registro actualizado + caché purgada + lectura de verificación

Resultado: Un cambio DNS con paso de revisión y verificación post-cambio — sin sorpresas.

Errores comunes
  • Un CNAME proxied (naranja) a un servidor de correo rompe el correo — Siempre proxied:false para MX, CNAMEs relacionados con SPF, y registros no-HTTP

Desplegar un límite de velocidad de emergencia durante un pico de tráfico

👤 SRE respondiendo a un DDoS L7 o cliente descontrolado ⏱ ~15 min advanced

Cuándo usarlo: El tráfico está subiendo y Origin está teniendo dificultades. Necesitas amortiguarlo en minutos.

Requisitos previos
  • Token con Zone:Zone WAF:Edit en la zona — Token dedicado de respuesta a incidentes guardado en un gestor de contraseñas
Flujo
  1. Identificar el patrón
    Extrae analíticas de la última hora para la zona <zone>. Top 10 rutas, top agentes de usuario, top países por conteo de solicitudes. Destaca anomalías.✓ Copiado
    → Candidatos de anomalía
  2. Crear una regla de límite de velocidad
    Crea una regla WAF de límite de velocidad: 60 req/min por IP en la ruta /<ruta caliente>, acción: desafío. Registra el conteo de coincidencias después de 2 minutos.✓ Copiado
    → Regla creada + coincidencias en streaming
  3. Revertir cuando sea seguro
    Una vez que la salud del origen es verde durante 30 minutos, desactiva (no elimines) la regla. Deja una descripción etiquetada 'incident-<id>' para auditoría.✓ Copiado
    → Regla desactivada; entrada de auditoría conservada

Resultado: Ataque mitigado con una regla que puedes reactivar o refinar — sin cambio de configuración permanente.

Errores comunes
  • Bloqueo general por país elimina usuarios legítimos — Siempre comienza con Challenge o JS-Challenge, no Block; observa luego ajusta
Combinar con: sentry

Purgar caché de Cloudflare para URLs específicas después de un despliegue

👤 Devs frontend enviando actualizaciones de activos estáticos ⏱ ~10 min beginner

Cuándo usarlo: Post-despliegue: hashes CSS/JS cambiaron, quieres que los usuarios obtengan la nueva versión inmediatamente.

Flujo
  1. Listar archivos a purgar
    Mi compilación cambió estas URLs: [lista]. Confirma que cada una está en caché en el borde de CF (HEAD + cf-cache-status).✓ Copiado
    → Caché actual hit/miss por URL
  2. Purgar por URL
    Purga exactamente esas URLs en la zona <zone>. NO hagas purge-everything.✓ Copiado
    → Trabajo de purga aceptado
  3. Verificar obtención fresca
    Después de 10 segundos, HEAD cada URL de nuevo — cf-cache-status debe ser MISS o REVALIDATED.✓ Copiado
    → Estado de caché fresco

Resultado: Purga de caché dirigida, sin purga accidental de zona completa (que mata tu origen al recargar).

Errores comunes
  • Purge-everything envía una manada atronadora al origen — Nunca llames a purge_all a menos que hayas calentado una ruta alternativa; purge-by-url es casi siempre suficiente
Combinar con: github

Semilla de Workers KV desde un archivo JSON local

👤 Ingenieros desplegando una API basada en Workers ⏱ ~15 min intermediate

Cuándo usarlo: Mantienes datos de config/feature-flag en KV y quieres sincronizar desde una fuente local de verdad.

Requisitos previos
  • Token con Workers KV Storage: Edit — Limita al id de espacio de nombres específico
Flujo
  1. Leer la fuente local
    Lee /config/kv.json. Valídalo como objeto {clave: valor}.✓ Copiado
    → Configuración analizada
  2. Diff contra KV actual
    Lista claves en el espacio de nombres <id>. Calcula añadidos / actualizaciones / eliminaciones vs mi archivo local.✓ Copiado
    → Plan de cambio
  3. Aplicar mediante escritura masiva
    Usa escritura masiva para los cambios. Eliminaciones solo si confirmo — muestra qué claves se eliminarían primero.✓ Copiado
    → Escritura masiva ok; eliminaciones revisadas

Resultado: Espacio de nombres KV reconciliado con tu archivo fuente, atómicamente lo suficiente.

Errores comunes
  • La consistencia eventual de KV significa que los lectores aún pueden ver valores antiguos durante ~60s — Si necesitas consistencia fuerte, usa D1 o Durable Objects en su lugar
Combinar con: filesystem

Resumen semanal de tráfico y amenazas de Cloudflare Analytics

👤 Producto / crecimiento + seguridad ⏱ ~20 min intermediate

Cuándo usarlo: Resumen de viernes: ¿cuál es nuestro patrón de tráfico, qué amenazas bloqueamos?

Flujo
  1. Extraer totales
    Para la zona <zone> últimos 7 días: solicitudes totales, ancho de banda, amenazas bloqueadas, top 10 países.✓ Copiado
    → Números titulares
  2. Rutas principales y referentes
    Top 20 rutas por solicitudes; top 10 referentes. Destaca cambios vs semana anterior.✓ Copiado
    → Tabla de crecimiento/regresión
  3. Resumen de eventos de firewall
    Top disparadores de reglas de firewall en los últimos 7 días. Cualquier regla nunca disparada — candidatos para limpieza.✓ Copiado
    → Informe de salud del conjunto de reglas

Resultado: Semanal de una página con tráfico, amenazas y salud de reglas.

Errores comunes
  • Las analíticas del plan gratuito están muestreadas — Para datos precisos, usa Logpush / API de analíticas GraphQL con un plan Pro+
Combinar con: notion

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

cloudflare-api + github

Al fusionar en main, purga caché para URLs de activos desplegados

PR #342 fusionado; su diff cambió /static/app.a1b2.js. Purga esa URL en la zona <zone>, verifica con HEAD.✓ Copiado
cloudflare-api + sentry

Correlaciona un pico de tráfico de Sentry con datos de eventos de firewall

Sentry muestra pico de 5xx a las 14:02. Extrae analíticas de CF para 14:00-14:05 para la misma zona; correlaciona con eventos de firewall.✓ Copiado
cloudflare-api + filesystem

Sincroniza un archivo zone-config local en Cloudflare (GitOps-lite)

Lee /dns/mydomain.yaml; reconcilia contra el estado actual de la zona; aplica de forma segura con revisión.✓ Copiado

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
list_zones Descubre zonas en la cuenta free
list_dns_records zone_id, type?, name? Antes de cualquier edición de DNS — inspecciona actual free
create_dns_record / update_dns_record / delete_dns_record zone_id, record Mutaciones DNS (requieren token Edit) free
purge_cache zone_id, files?|tags?|hosts?|everything? Purga de caché después de despliegue free
list_firewall_rules / create_firewall_rule zone_id, ... Respuesta a incidentes / endurecimiento free
analytics_dashboard zone_id, since, until Informes de tráfico free
kv_list / kv_get / kv_put / kv_bulk namespace_id, key/value Operaciones de Workers KV medido más allá del nivel gratuito
deploy_worker script name, script content, bindings? Envía un Worker gratuito hasta límites

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
1200 solicitudes por 5 minutos por usuario (límite de velocidad global de Cloudflare)
Tokens por llamada
Listado de DNS: 200–1000 tokens por página. Analíticas: hasta 3000.
Monetario
API gratuita. Pagado para Workers pagado/KV más allá del nivel gratuito; los planes comienzan Gratuito / Pro $20/mes / Business $200/mes.
Consejo
Prefiere listado + filtrado del lado del servidor (tipo, nombre) sobre el lado del cliente para ahorrar tokens y paginación.

Seguridad

Permisos, secretos, alcance

Ámbitos mínimos: Zone:Zone:Read Zone:DNS:Read (añade :Edit solo para zonas específicas que necesitan escrituras)
Almacenamiento de credenciales: CLOUDFLARE_API_TOKEN en env — nunca la Global API Key
Salida de datos: Todas las llamadas a api.cloudflare.com
No conceder nunca: Global API Key (control de cuenta completa) Account:Access:Edit sin revisión a nivel de cuenta

Resolución de problemas

Errores comunes y soluciones

10000 Authentication error

Token inválido o falta permiso requerido. Recrea con la zona específica + permiso.

Verificar: curl -H 'Authorization: Bearer $CLOUDFLARE_API_TOKEN' https://api.cloudflare.com/client/v4/user/tokens/verify
81057 Record already exists

Un registro con ese nombre+tipo+contenido ya existe. Actualiza el existente por id, no crees.

Purge-by-URL returns success but cache still hits

La URL debe coincidir exactamente incluyendo el orden de la cadena de consulta. También verifica cf-cache-status — 'DYNAMIC' significa que no estaba en caché de todos modos.

Rate limited (429)

Alcanzó el límite de velocidad de API global de Cloudflare. Retrocede, agrupa, o divide la carga de trabajo sobre múltiples tokens para diferentes flujos de trabajo.

Alternativas

Cloudflare API vs otros

AlternativaCuándo usarlaContrapartida
MCP oficial de Cloudflare (otro)Prefieres la documentación de Cloudflare/MCP enfocado en observabilidad de WorkersSuperficie de API más estrecha
Route 53 MCPEstás en AWS y quieres DNS de Route53Ecosistema diferente; sin CDN/WAF integrado

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills