/ Diretório / Playground / Cloudflare API
● Oficial cloudflare 🔑 Requer sua chave

Cloudflare API

por cloudflare · cloudflare/mcp

Gerencie DNS, zonas, WAF, analytics e Workers do Cloudflare do Claude — com tokens de API com escopo e hábito de dry-run.

O MCP de API do Cloudflare transforma toda a API REST do Cloudflare em ferramentas: zonas, registros de DNS, regras de página, regras de firewall, analytics, SSL, Workers, R2, KV e muito mais. Use um token de API com escopo (não uma Global API Key) e trate as escritas como mudanças de infraestrutura — visualize, aplique, verifique.

Por que usar

Principais recursos

Demo ao vivo

Como fica na prática

cloudflare-api.replay ▶ pronto
0/0

Instalar

Escolha seu 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"
      ]
    }
  }
}

Abra Claude Desktop → Settings → Developer → Edit Config. Reinicie após salvar.

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

Cursor usa o mesmo esquema mcpServers que o Claude Desktop. Config de projeto vence a global.

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

Clique no ícone MCP Servers na barra lateral do Cline, depois "Edit Configuration".

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

Mesmo formato do Claude Desktop. Reinicie o Windsurf para aplicar.

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

O Continue usa um array de objetos de servidor em vez de um map.

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

Adicione em context_servers. Zed recarrega automaticamente ao salvar.

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

Uma linha só. Verifique com claude mcp list. Remova com claude mcp remove.

Casos de uso

Usos do mundo real: Cloudflare API

Auditar registros de DNS em todas as zonas para detectar desvios

👤 Equipes de Platform / SRE ⏱ ~25 min intermediate

Quando usar: Você possui 40 zonas e quer saber quais têm TTLs estranhos, SPF/DMARC ausentes ou CNAMEs pendentes.

Pré-requisitos
  • Token de API com Zone:Zone:Read, Zone:DNS:Read — Painel de controle do Cloudflare → Meu Perfil → API Tokens → Criar
Fluxo
  1. Listar zonas e contar registros por tipo
    Liste todas as zonas na minha conta. Para cada uma, conte registros por tipo (A, CNAME, TXT, MX).✓ Copiado
    → Matriz de inventário
  2. Verificar higiene de autenticação de email
    Para cada zona usada para email, verifique a presença de SPF (TXT contendo 'v=spf1'), TXT de DMARC em _dmarc e registros TXT de seletor DKIM. Sinalize os ausentes.✓ Copiado
    → Relatório de lacunas em email-auth
  3. Encontrar CNAMEs pendentes
    Para cada CNAME em cada zona, resolva o alvo. Sinalize NXDOMAIN ou SERVFAIL como pendentes.✓ Copiado
    → Lista de CNAMEs arriscados

Resultado: Um relatório de higiene de DNS zona por zona que você pode entregar à equipe que possui cada domínio.

Armadilhas
  • CNAMEs pendentes são riscos de takeover de subdomínio — Qualquer CNAME NXDOMAIN é escalado imediatamente — delete ou corrija
Combine com: filesystem

Adicionar ou atualizar um registro de DNS com fluxo de visualização/aplicação

👤 Qualquer pessoa prestes a fazer uma mudança de DNS da qual tem dúvidas ⏱ ~10 min beginner

Quando usar: Alterando provedor de email, adicionando um novo CNAME para um serviço — mudanças de DNS de alto risco.

Pré-requisitos
  • Token com Zone:DNS:Edit na zona de destino — Escopo do token apenas para a zona que você está alterando
Fluxo
  1. Mostrar estado atual
    Para a zona <zone>, mostre todos os registros para o nome '<name>' e tipo <type>. Status de proxy e TTL.✓ Copiado
    → Estado atual do registro
  2. Proponha a mudança, não aplique
    Proponha um patch: <descreva a mudança>. Mostre a chamada API exata e o antes/depois. NÃO execute ainda.✓ Copiado
    → Diff de visualização
  3. Aplicar após confirmação
    Confirmo. Aplique a mudança. Depois leia o registro novamente para confirmar. Também limpe o cache para o nome afetado.✓ Copiado
    → Registro atualizado + cache limpo + leitura de verificação

Resultado: Uma mudança de DNS com um passo de revisão e verificação pós-mudança — sem surpresas.

Armadilhas
  • CNAME proxied (nuvem laranja) para um servidor de email quebra o email — Sempre proxied:false para MX, CNAMEs relacionados a SPF e registros não-HTTP

Implantar um rate-limit de emergência durante um pico de tráfego

👤 SRE respondendo a um DDoS L7 ou cliente fugitivo ⏱ ~15 min advanced

Quando usar: O tráfego está aumentando e a Origem está tendo dificuldades. Você precisa amortecê-lo em minutos.

Pré-requisitos
  • Token com Zone:Zone WAF:Edit na zona — Token dedicado de resposta a incidentes mantido em um gerenciador de senhas
Fluxo
  1. Identificar o padrão
    Puxe as analytics da última hora para a zona <zone>. Top 10 caminhos, top user agents, top países por contagem de requisições. Destaque anomalias.✓ Copiado
    → Candidatos de anomalias
  2. Criar uma regra de rate-limit
    Crie uma regra de WAF rate-limit: 60 req/min por IP no caminho /<hot path>, ação: challenge. Registre contagem de correspondências após 2 minutos.✓ Copiado
    → Regra criada + correspondências em streaming
  3. Reverter quando seguro
    Uma vez que a saúde da origem está verde por 30 min, desabilite (não delete) a regra. Deixe uma descrição marcada com 'incident-<id>' para auditoria.✓ Copiado
    → Regra desabilitada; entrada de auditoria mantida

Resultado: Ataque mitigado com uma regra que você pode reabilitar ou refinar — sem desvio de config permanente.

Armadilhas
  • Bloqueio em massa por país anula usuários legítimos — Sempre comece com Challenge ou JS-Challenge, não Block; observe e então aperte
Combine com: sentry

Purgar cache do Cloudflare para URLs específicas após um deploy

👤 Devs frontend entregando atualizações de ativos estáticos ⏱ ~10 min beginner

Quando usar: Pós-deploy: hashes de CSS/JS mudaram, você quer que os usuários obtenham a nova versão imediatamente.

Fluxo
  1. Listar arquivos a purgar
    Meu build mudou essas URLs: [lista]. Confirme que cada uma está em cache na borda do CF (HEAD + cf-cache-status).✓ Copiado
    → Hit/miss de cache atual por URL
  2. Purgar por URL
    Purgue exatamente essas URLs na zona <zone>. NÃO faça purge-everything.✓ Copiado
    → Trabalho de purga aceito
  3. Verificar fetch fresco
    Após 10 segundos, HEAD cada URL novamente — cf-cache-status deve ser MISS ou REVALIDATED.✓ Copiado
    → Estado de cache fresco

Resultado: Limpeza de cache direcionada, sem purga acidental de zona completa (que mata sua origem ao recarregar).

Armadilhas
  • Purge-everything envia uma manada trovejante para a origem — Nunca chame purge_all a menos que você tenha aquecido um caminho alternativo; purge-by-url é quase sempre suficiente
Combine com: github

Semear Workers KV de um arquivo JSON local

👤 Engenheiros implantando uma API baseada em Workers ⏱ ~15 min intermediate

Quando usar: Você mantém dados de config/feature-flag em KV e quer sincronizar de uma fonte de verdade local.

Pré-requisitos
  • Token com Workers KV Storage: Edit — Escopo para o id de namespace específico
Fluxo
  1. Ler a fonte local
    Leia /config/kv.json. Valide como um objeto {key: value}.✓ Copiado
    → Config analisado
  2. Diff em relação ao KV atual
    Liste as chaves no namespace <id>. Calcule adições / atualizações / deleções vs meu arquivo local.✓ Copiado
    → Plano de mudança
  3. Aplicar via escrita em massa
    Use escrita em massa para as mudanças. Deleções apenas se eu confirmar — mostre quais chaves seriam deletadas primeiro.✓ Copiado
    → Escrita em massa ok; deleções revisadas

Resultado: Namespace KV reconciliado com seu arquivo de origem, atomicamente o suficiente.

Armadilhas
  • Consistência eventual de KV significa que os leitores ainda podem ver valores antigos por ~60s — Se você precisar de consistência forte, use D1 ou Durable Objects em vez disso
Combine com: filesystem

Resumo semanal de tráfego e ameaças do Cloudflare Analytics

👤 Produto / crescimento + segurança ⏱ ~20 min intermediate

Quando usar: Resumo de sexta-feira: qual é nosso padrão de tráfego, quais ameaças bloqueamos?

Fluxo
  1. Puxar totais
    Para a zona <zone> últimos 7 dias: total de requisições, largura de banda, ameaças bloqueadas, top 10 países.✓ Copiado
    → Números de manchete
  2. Caminhos e referradores principais
    Top 20 caminhos por requisições; top 10 referradores. Destaque mudanças vs semana anterior.✓ Copiado
    → Tabela de crescimento/regressão
  3. Resumo de eventos de firewall
    Top acionadores de regra de firewall nos últimos 7 dias. Qualquer regra nunca acionada — candidatos para limpeza.✓ Copiado
    → Relatório de saúde do ruleset

Resultado: Semanal de uma página com tráfego, ameaças e saúde de regras.

Armadilhas
  • Analytics de plano gratuito são amostrados — Para dados precisos, use Logpush / GraphQL Analytics API com um plano Pro+
Combine com: notion

Combinações

Combine com outros MCPs para 10× de alavancagem

cloudflare-api + github

Ao fazer merge para main, purge cache para URLs de ativos implantados

PR #342 foi mesclado; seu diff mudou /static/app.a1b2.js. Purgue essa URL na zona <zone>, verifique com HEAD.✓ Copiado
cloudflare-api + sentry

Correlacione um pico de tráfego do Sentry com dados de eventos de firewall

Sentry mostra pico de 5xx às 14:02. Puxe analytics do CF para 14:00-14:05 para a mesma zona; correlacione com eventos de firewall.✓ Copiado
cloudflare-api + filesystem

Sincronize um arquivo de zona-config local no Cloudflare (GitOps-lite)

Leia /dns/mydomain.yaml; reconcilie com o estado atual da zona; aplique com segurança com revisão.✓ Copiado

Ferramentas

O que este MCP expõe

FerramentaEntradasQuando chamarCusto
list_zones Descubra zonas na conta free
list_dns_records zone_id, type?, name? Antes de qualquer edição de DNS — inspecione o atual free
create_dns_record / update_dns_record / delete_dns_record zone_id, record Mutações de DNS (requerem token Edit) free
purge_cache zone_id, files?|tags?|hosts?|everything? Limpeza de cache após deploy free
list_firewall_rules / create_firewall_rule zone_id, ... Resposta a incidentes / endurecimento free
analytics_dashboard zone_id, since, until Relatórios de tráfego free
kv_list / kv_get / kv_put / kv_bulk namespace_id, key/value Operações de Workers KV metered beyond free tier
deploy_worker script name, script content, bindings? Enviar um Worker free up to limits

Custo e limites

O que custa rodar

Cota de API
1200 requisições por 5 minutos por usuário (limite de taxa global do Cloudflare)
Tokens por chamada
Listagem de DNS: 200–1000 tokens por página. Analytics: até 3000.
Monetário
API gratuita. Pago para Workers pago/KV além do nível gratuito; planos começam Free / Pro $20/mo / Business $200/mo.
Dica
Prefira listagem + filtragem no lado do servidor (type, name) em vez do lado do cliente para economizar tokens e paginação.

Segurança

Permissões, segredos, alcance

Escopos mínimos: Zone:Zone:Read Zone:DNS:Read (adicione :Edit apenas para zonas específicas que precisam de escritas)
Armazenamento de credenciais: CLOUDFLARE_API_TOKEN em env — nunca a Global API Key
Saída de dados: Todas as chamadas para api.cloudflare.com
Nunca conceda: Global API Key (controle total da conta) Account:Access:Edit sem revisão em nível de conta

Solução de problemas

Erros comuns e correções

10000 Authentication error

Token inválido ou sem permissão necessária. Recrie com a zona + permissão específicas.

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

Um registro com esse name+type+content já existe. Atualize o existente por id, não crie um novo.

Purge-by-URL returns success but cache still hits

URL deve corresponder exatamente incluindo ordenação de string de query. Também verifique cf-cache-status — 'DYNAMIC' significa que não estava em cache mesmo.

Rate limited (429)

Atingiu o limite de taxa de API global do Cloudflare. Recue, agrupe ou divida carga de trabalho em múltiplos tokens para diferentes fluxos de trabalho.

Alternativas

Cloudflare API vs. outros

AlternativaQuando usarTroca
Cloudflare official MCP (other)Você prefere MCP focado em documentação/Workers-observability do CloudflareSuperfície de API mais estreita
Route 53 MCPVocê está na AWS e quer Route53 DNSEcossistema diferente; sem CDN/WAF integrado

Mais

Recursos

📖 Leia o README oficial no GitHub

🐙 Ver issues abertas

🔍 Ver todos os 400+ servidores MCP e Skills