Cloudflare MCP Server

Accede a Cloudflare Analytics, incluyendo tráfico, ancho de banda y desgloses por país/código de estado. Más funciones próximamente

Documentación

@urdigital/mcp-server-cloudflare

Un servidor MCP (Protocolo de Contexto de Modelos) que expone la API de GraphQL Analytics de Cloudflare a Claude, Claude Code y cualquier otro cliente compatible con MCP: tráfico, ancho de banda, amenazas y desgloses por país/código de estado, para una única zona de Cloudflare.

Instalación

No se necesita instalación: ejecútalo directamente con npx:

npx -y @urdigital/mcp-server-cloudflare

Configuración

Crea un token de API con ámbito específico en dash.cloudflare.com → Mi Perfil → Tokens de API → Crear Token Personalizado, con el permiso Zona → Analytics → Lectura, limitado a la zona específica (o todas las zonas) de la que quieras obtener datos.

También necesitas el ID de Zona, que se encuentra en la página de Descripción General de esa zona en el panel de Cloudflare (barra lateral derecha).

Añádelo a la configuración de tu cliente MCP (por ejemplo, el claude_desktop_config.json de Claude Desktop):

{
  "mcpServers": {
    "cloudflare": {
      "command": "npx",
      "args": ["-y", "@urdigital/mcp-server-cloudflare"],
      "env": {
        "CLOUDFLARE_API_TOKEN": "your-api-token",
        "CLOUDFLARE_ZONE_ID": "your-zone-id"
      }
    }
  }
}

Este servidor está actualmente limitado a una zona por instancia (emparejando un token con una zona). Gestionar múltiples zonas implica ejecutar múltiples instancias con diferentes variables de entorno: la misma compensación que el diseño de un token por proyecto del servidor Clarity.

Herramientas

HerramientaDescripción
cloudflare_get_traffic_statsSolicitudes diarias, ancho de banda, páginas vistas, visitantes únicos, amenazas
cloudflare_get_hourly_traffic_statsMismas métricas, granularidad horaria — límite de retención de ~3 días, ver más abajo
cloudflare_get_traffic_by_countryVisitas/ancho de banda por país del cliente — límite de ventana de consulta de 1 día, ver más abajo
cloudflare_get_traffic_by_status_codeVisitas por código de estado HTTP — límite de ventana de consulta de 1 día, ver más abajo
cloudflare_get_security_eventsEventos de firewall/WAF por acción, país, ASN — restringido por plan, puede no estar disponible, ver más abajo

Límites reales confirmados mediante pruebas contra una zona en vivo

La API de GraphQL Analytics de Cloudflare expone más de 70 conjuntos de datos, y el acceso/los límites a cada uno varían según el nivel del plan; estos no son hipotéticos, los tres se alcanzaron directamente durante las pruebas:

  • httpRequestsAdaptiveGroups (utilizado por las herramientas de desglose por país y código de estado) rechaza cualquier ventana de consulta superior a 1 día en planes estándar, con un error explícito: cannot request a time range wider than 1d, but your query time range spans 1w. Si necesitas una tendencia más larga, realiza una llamada por día y agrega los datos en el lado del cliente; no solicites un rango amplio y esperes que funcione.
  • Los datos con granularidad horaria (httpRequests1hGroups) solo se conservan durante aproximadamente 3 días y 1 hora desde el momento actual. Solicitar datos horarios más antiguos devuelve: cannot request data older than 3d1h, but your query requests data from Xd.... Para cualquier dato más antiguo, usa la granularidad diaria (cloudflare_get_traffic_stats) en su lugar.
  • firewallEventsAdaptiveGroups (eventos de seguridad) no está disponible en todos los planes. En una zona de nivel Gratuito, esto devolvió: zone '...' does not have access to the path. Esta es una limitación documentada y conocida de Cloudflare (confirmada a través de sus propios foros de la comunidad, no específica de este servidor), no un error ni un problema de permisos del token. Si te encuentras con esto, significa que el plan actual de la zona no incluye este conjunto de datos.

Comportamiento específico de GraphQL que vale la pena conocer

A diferencia de las API REST con las que hablan los otros servidores de este monorepositorio, las API GraphQL (incluida la de Cloudflare) pueden devolver HTTP 200 con un fallo: el error aparece en un array errors en el cuerpo de la respuesta en lugar del código de estado HTTP. Este cliente verifica explícitamente eso en cada llamada; una verificación simple del código de estado trataría silenciosamente una consulta fallida como un éxito.

Licencia

MIT