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
| Herramienta | Descripción |
|---|---|
cloudflare_get_traffic_stats | Solicitudes diarias, ancho de banda, páginas vistas, visitantes únicos, amenazas |
cloudflare_get_hourly_traffic_stats | Mismas métricas, granularidad horaria — límite de retención de ~3 días, ver más abajo |
cloudflare_get_traffic_by_country | Visitas/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_code | Visitas por código de estado HTTP — límite de ventana de consulta de 1 día, ver más abajo |
cloudflare_get_security_events | Eventos 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