Crawlforge MCP

28 herramientas web nativas de MCP para Claude, Cursor y cualquier cliente MCP: scrape y crawl para obtener Markdown limpio o JSON basado en esquemas, extrae con selectores CSS o en inglés sencillo, verifica el ranking orgánico real de Google, analiza documentos, monitorea cambios en páginas, realiza investigación profunda de múltiples fuentes, y entrega a un agente autónomo un prompt sin URLs. La extracción LLM usa por defecto Ollama local — sin clave LLM, nada sale de tu máquina. Licencia MIT. 1,000 créditos gratuitos únicos, sin tarjeta.

Documentación

CrawlForge MCP Server

31 herramientas de scraping web, crawling, investigación profunda y extracción autónoma para Claude, Cursor y cualquier cliente MCP.
Markdown limpio y JSON estructurado desde cualquier sitio. Comienza con 1,000 créditos gratis — sin necesidad de tarjeta de crédito.

License: MIT Node.js Version MCP Protocol npm version npm downloads GitHub stars

⭐ Danos una estrella en GitHub para seguir el proyecto — realmente ayuda a que otros lo descubran.

Tabla de Contenidos

🎯 ¿Por qué CrawlForge?

  • 31 herramientas nativas MCP — scraping, crawling, búsqueda, seguimiento real de posiciones en Google SERP, investigación profunda, un agent autónomo, un scrape unificado multi-formato, procesamiento de documentos, navegación sigilosa, sesiones de navegador con estado, y más, invocables directamente desde tu asistente de IA.
  • Nivel gratuito generoso — 1,000 créditos para empezar al instante, sin tarjeta de crédito. La concesión es única en lugar de mensual, y los créditos nunca caducan.
  • LLM local por defecto — extract_with_llm funciona con un modelo local Ollama listo para usar: sin clave de API de LLM, sin costo por token, y tus datos nunca salen de tu máquina. La nube (OpenAI/Anthropic) es opcional.
  • Salida lista para LLM — Markdown limpio, JSON estructurado (basado en esquemas), capturas de pantalla, enlaces y metadatos desde una sola consulta.
  • agent autónomo — describe lo que necesitas en lenguaje natural; planifica, recopila y da forma a una respuesta bajo límites estrictos impuestos por el orquestador (máx. pasos/URLs/tiempo) — sin necesidad de URLs.
  • Seguridad reforzada — protección SSRF en cada solicitud, lista blanca de backend con cierre automático, lista blanca de acciones verificadas para automatización del navegador, y control de créditos por herramienta.
  • Funciona dondequiera que MCP funcione — Claude Desktop, Claude Code, Cursor y cualquier otro cliente compatible con MCP, configurado con un solo comando.

📊 CrawlForge vs. alternativas

CrawlForge MCPFirecrawlAPI de scraping crudo
Servidor MCP nativo✅ 31 herramientas✅❌
Nivel gratuito✅ 1,000 créditos, únicos, nunca caducanLimitadoVaría
Extracción con LLM local / autoalojado (Ollama)✅ por defecto, $0/token❌❌
Agente autónomo (sin necesidad de URLs)✅ agent✅❌
Investigación profunda con verificación de fuentes✅ deep_researchParcial❌
Automatización / acciones del navegador✅ scrape_with_actions✅Varía
Motores de sigilo / anti-detección✅ Chromium + Camoufox✅Complemento
Plantillas de sitios predefinidas✅ 10 sitios❌❌
LicenciaMITAGPL-3.0Propietaria

La comparación refleja las capacidades documentadas públicamente al momento de escribir. CrawlForge tiene licencia MIT y es MCP-primero — construido para conectarse directamente a asistentes de codificación con IA.

🚀 Inicio Rápido (2 Minutos)

1. Instalar desde NPM

npm install -g crawlforge-mcp-server

2. Configurar tu Clave de API (requerido)

Cada herramienta requiere una clave de API de CrawlForge — las cuentas nuevas reciben 1,000 créditos de prueba gratis para empezar. La ruta recomendada te inicia sesión a través del navegador, por lo que la clave nunca se pega en una terminal (un agente de codificación puede ejecutar esto por ti y reenviarte la URL):

crawlforge login

Imprime una URL de aprobación; ábrela, aprueba, y la clave se almacena en ~/.crawlforge/config.json. Luego ejecuta crawlforge init para registrar el servidor MCP con tu cliente. O usa el asistente interactivo, que también configura tus clientes:

npx crawlforge-setup

Esto hará lo siguiente:

  • Te guiará para obtener tu clave de API gratuita
  • Configurará tus credenciales de forma segura
  • Auto-configurará Claude Code y Cursor (si están instalados)
  • Verificará que tu configuración funcione

¿No tienes una clave de API? Obtén una gratis en https://www.crawlforge.dev/signup

Configuración en un solo paso (v4.6.0+): crawlforge init detecta tu clave de API, instala la habilidad del agente, y fusiona idempotentemente el bloque de configuración MCP en Claude Code, Claude Desktop y Cursor. Usa crawlforge init --all --yes para configurar cada cliente detectado de forma no interactiva.

3. Configurar tu IDE (si no está auto-configurado)

🤖 Para Claude Desktop

Añade a claude_desktop_config.json:

{
  "mcpServers": {
    "crawlforge": {
      "command": "npx",
      "args": ["-y", "crawlforge-mcp-server"]
    }
  }
}

Ubicación:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Reinicia Claude Desktop para activarlo.

🖥️ Para Claude Code CLI (Auto-configurado)

El asistente de configuración configura automáticamente Claude Code añadiendo a ~/.claude.json:

{
  "mcpServers": {
    "crawlforge": {
      "type": "stdio",
      "command": "crawlforge-mcp"
    }
  }
}

Después de la configuración, reinicia Claude Code para activarlo.

💻 Para Cursor IDE (Auto-configurado)

El asistente de configuración configura automáticamente Cursor añadiendo a ~/.cursor/mcp.json:

{
  "mcpServers": {
    "crawlforge": {
      "type": "stdio",
      "command": "crawlforge-mcp"
    }
  }
}

Reinicia Cursor para activarlo.

🔁 Para n8n (automatización de flujos de trabajo)

El nodo integrado MCP Client Tool de n8n se conecta a través de Streamable HTTP (funciona en n8n Cloud y autoalojado). Ejecuta el servidor en modo HTTP:

export CRAWLFORGE_API_KEY=your_api_key
npm run start:http    # Streamable HTTP endpoint at http://localhost:10000/mcp

Luego apunta el nodo MCP Client Tool a http://<host>:10000/mcp con transporte HTTP Streamable y una credencial Bearer configurada con la misma clave de API. En n8n autoalojado puedes usar en su lugar el nodo comunitario n8n-nodes-mcp sobre STDIO (npx -y crawlforge-mcp-server).

Guía completa: docs/n8n-integration.md

¿Qué comando de lanzamiento? npx -y crawlforge-mcp-server no requiere instalación global y siempre ejecuta la versión publicada (recomendado para Claude Desktop). Para una instalación global (npm i -g crawlforge-mcp-server), usa el binario dedicado crawlforge-mcp — se resuelve en tu PATH, por lo que sobrevive a cambios de versión de Node/nvm. El comando simple crawlforge sigue lanzando el servidor cuando un cliente MCP lo invoca a través de stdio (compatibilidad hacia atrás para configuraciones creadas antes de v4.2.5); interactivamente es la CLI — ejecuta crawlforge mcp para iniciar el servidor manualmente.

📊 Herramientas Disponibles

CrawlForge requiere una clave de API de CrawlForge — cada herramienta se mide y consume créditos. Las cuentas nuevas reciben 1,000 créditos de prueba gratis para empezar. Obtén una clave en crawlforge.dev/signup.

Todas las Herramientas (se requiere clave de API)

HerramientaCréditosQué hace
fetch_url1Obtener contenido de cualquier URL
extract_text1 (6 proyectados con escalate: true, se cobra 1 cuando la obtención simple funciona)Extraer texto limpio de páginas web
extract_links1 (6 proyectados con escalate: true, se cobra 1 cuando la obtención simple funciona)Obtener todos los enlaces de una página
extract_metadata1Extraer metadatos de la página (título, etiquetas OG, schema.org)
scrape_template1Datos estructurados de sitios conocidos (Amazon, GitHub, LinkedIn, YouTube, Reddit, Hacker News, npm y más) sin escribir selectores
list_ollama_models1Listar los modelos de Ollama instalados localmente (te ayuda a elegir un model para extract_with_llm)
get_batch_results1Recuperar resultados paginados para un trabajo de batch_scrape mediante batchId
read_result1Buscar, segmentar, leer líneas o una ruta JSON de un resultado que una herramienta devolvió con truncated: true y un result_handle (se conserva 1 hora en tu propia máquina) — nunca vuelvas a obtener la página
scrape2Extracción unificada de una sola obtención y múltiples formatos. Pasa un array de formats (markdown/html/rawHtml/texto/enlaces/metadatos/captura de pantalla/json-schema, además de {type:"highlights",query} y {type:"question",question} para solo las oraciones coincidentes, filas de tablas y bloques de código, textualmente con desplazamientos en el markdown: +1 crédito una vez por llamada, mode:"model" +3) más onlyMainContent; una sola obtención sirve cada formato solicitado con advertencias de éxito parcial por formato. escalate:true reintenta una obtención simple bloqueada una vez en el navegador sigiloso y devuelve la página en lugar del bloqueo (+5 como techo proyectado; el cargo baja a 2 cuando la obtención simple funcionó y no se ejecutó ninguna escalada)
scrape_structured2Extraer datos estructurados con selectores CSS
extract_embedded_state2 (7 proyectados con escalate: true, se cobra 2 cuando la obtención simple funciona)Leer el estado JavaScript incrustado de una página — __NEXT_DATA__, cargas útiles de React Server Component (referencias entre filas resueltas, más un índice de data_rows), Nuxt (el __NUXT_DATA__ de Nuxt 3 decodificado), SvelteKit, Apollo, Redux, ytInitialData, Inertia, Shopify, atributos JSON data-*, <script type="application/json"> — con un path para acotar el resultado, keys_only: true para ver sus primeros dos niveles de claves, o find: "<key>" para obtener cada ruta donde vive un campo con ese nombre. escalate: true vuelve a leer una página amurallada en el navegador sigiloso, ejecuta el mismo analizador y también lee los globales del framework desde window (window_state). Sin LLM en la ruta de extracción
extract_content2Extracción de contenido mejorada
map_site2Descubrir y mapear la estructura del sitio web (el search= opcional clasifica las URLs descubiertas)
process_document2Procesamiento de documentos en múltiples formatos
localization2Consultar la configuración regional de un país (Accept-Language, zona horaria, moneda) para pasarla a otras herramientas; devuelve valores, no aplica ninguno
track_changes3Monitorear cambios de contenido a lo largo del tiempo
analyze_content3Análisis de contenido integral
extract_structured3Extracción basada en esquemas impulsada por LLM (tu propia clave de LLM u Ollama local)
extract_with_llm3Extracción en lenguaje natural. Usa por defecto un modelo local de Ollama; pasa provider: "openai" | "anthropic" con la clave correspondiente para modelos en la nube (LLM externo facturado por tu proveedor)
browser_session3Una página de navegador que permanece abierta entre llamadas, conservando sus cookies y su inicio de sesión entre ellas. open una sesión en una URL, snapshot para listar los elementos interactivos como referencias estables (@e1, @e2), act en una referencia, read el contenido, close. Precio por operación: abrir 3, leer 2, captura/actuar/captura de pantalla/cerrar/listar 1 cada una. Úsala cuando debas ver la página antes de elegir qué hacer clic, cuando el flujo abarque varias llamadas, o cuando un inicio de sesión deba mantenerse en lecturas posteriores; una cadena de acciones fija en una página es scrape_with_actions
summarize_content4Generar resúmenes inteligentes
crawl_deep4Rastreo profundo de sitios web completos
search_web5Buscar en la web usando la API de Google Search
reddit_search5Buscar publicaciones/comentarios de Reddit o leer un hilo completo — reddit.com bloquea el raspado directo, por lo que esto lee el archivo de la comunidad Arctic Shift (gratis, sin credenciales de Reddit). Una búsqueda en todo Reddit gasta una búsqueda web para descubrir publicaciones, por lo que se cobra con search_web. Opcional: con tus propias credenciales de aplicación de Reddit (REDDIT_CLIENT_ID/REDDIT_CLIENT_SECRET), las búsquedas de publicaciones y las lecturas de hilos provienen primero de la API oficial de Reddit (puntajes en vivo, árboles de comentarios completos), con los archivos como respaldo; mismo precio. Reddit ya no emite nuevas credenciales sin un ticket de aprobación, consulta docs/reddit-access-and-oauth.md
serp_rank5Verificar dónde se posiciona un dominio en el SERP orgánico real de Google para una palabra clave (la posición que search_web no puede dar). Impulsado por DataForSEO (DATAFORSEO_LOGIN/DATAFORSEO_PASSWORD, facturado a tu propia cuenta de DataForSEO). Devuelve { configured:false } y cobra 0 créditos hasta que se configure
batch_scrape5Procesar múltiples URLs simultáneamente
scrape_with_actions5Cadenas de automatización de navegador
generate_llms_txt5Generar pautas de interacción con IA
stealth_mode5Gestión de navegador anti-detección
agent8 (+5 por reintento sigiloso que obtenga la página, máx. 2)Investigación/extracción autónoma desde un prompt en lenguaje natural — sin necesidad de URLs. Planifica, recopila y da forma a una respuesta bajo topes de seguridad estrictos (máx. pasos/URLs/tiempo de pared impuestos por el orquestador, nunca el LLM). Una página que amuralla la obtención simple se reintenta automáticamente en el navegador sigiloso — las URLs que nombres primero — y esa evidencia se marca via: "stealth"; cada reintento que se ejecute añade 5
deep_research10Investigación en múltiples etapas con verificación de fuentes

Diez herramientas (scrape, fetch_url, extract_content, crawl_deep, batch_scrape, stealth_mode, scrape_with_actions, process_document, deep_research, extract_embedded_state) aceptan max_inline_chars (por defecto 40,000; env CRAWLFORGE_MAX_INLINE_CHARS): un resultado que lo supere se devuelve como un preview más un result_handle para read_result, con el resultado completo conservado durante 1 hora bajo ~/.crawlforge/results/ en tu propia máquina — no se sube nada.

Para la referencia canónica completa de capacidades (todas las herramientas, comandos CLI, motores sigilosos, flujo de investigación), consulta SKILL.md.

↑ Volver al inicio

💳 Precios

Cada herramienta se mide y requiere una clave de API. Las cuentas nuevas obtienen 1,000 créditos de prueba gratuitos — no se requiere tarjeta de crédito para comenzar.

PlanCréditosMejor para
Gratis1,000 únicosPruebas y proyectos personales
Hobby ($19)5,000 / mesProyectos pequeños y desarrollo
Profesional ($99)50,000 / mesUso profesional y producción
Negocio ($399)250,000 / mesOperaciones a gran escala

Todos los planes incluyen:

  • Acceso a las 31 herramientas
  • Los créditos nunca expiran; los créditos de planes de pago se transfieren mes a mes
  • Acceso a la API y notificaciones de webhook

Ver precios completos

🔧 Configuración Avanzada

Variables de Entorno

# Optional: Set API key via environment
export CRAWLFORGE_API_KEY="cf_live_your_api_key_here"

# Optional: Custom API endpoint (for enterprise)
export CRAWLFORGE_API_URL="https://api.crawlforge.dev"
# As of v3.0.18, this variable is validated against an allow-list of CrawlForge backend hosts.

# Optional: Local LLM (Ollama) overrides — extract_with_llm, extract_structured
# and deep_research all use Ollama when no cloud key is set
export OLLAMA_BASE_URL="http://localhost:11434"   # default; set https://ollama.com for Ollama Cloud
export OLLAMA_DEFAULT_MODEL="gemma3:4b"            # optional; unset = pick the best installed model automatically
                                                   # deep_research judges claims with gemma3:12b when it is installed (ollama pull gemma3:12b);
                                                   # conflict detection is on only with that model, or a cloud provider
export OLLAMA_EMBEDDING_MODEL="nomic-embed-text"   # default: OLLAMA_DEFAULT_MODEL; used for semantic ranking in deep_research
export OLLAMA_API_KEY="..."                        # only for authenticated endpoints (required by Ollama Cloud; a local instance needs none)
export DISABLE_OLLAMA="true"                       # skip Ollama entirely and use CSS/keyword fallbacks

# Optional: Cloud LLM keys — only needed when you pass provider: "openai" or "anthropic"
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."

# Optional: limit which tools this client sees — by name, by group, or both (comma-separated)
export CRAWLFORGE_TOOLS="scrape,search_web,extract_content"
export CRAWLFORGE_TOOL_GROUPS="basic,search,scrape"   # unset = all tools; unknown names/groups are ignored with a warning

# Optional: deep_research stealth extraction fallback (v4.6.6) — see below
export RESEARCH_STEALTH_ENGINE="auto"      # auto (default) | camoufox | chromium
export RESEARCH_STEALTH_FALLBACK="true"    # set to "false" to disable entirely
export RESEARCH_MAX_STEALTH_RETRIES="8"    # cap on stealth retries per research run

# Optional: your own proxies for the stealth paths that have no caller to ask —
# the scrape escalation stage, the deep_research retry, the agent, browser_session.
# Comma-separated; a proxy passed on a call always wins. CrawlForge supplies none.
export CRAWLFORGE_STEALTH_PROXIES="http://user:pass@gw.provider.net:8080"
# Unrelated to the PROXY_ROTATION_* variables, which belong to the localization tool.

# Optional: turn off the clearance jar (on by default) — see "Stealth engines and proxies"
export CRAWLFORGE_CLEARANCE_JAR="off"

Características de la Especificación MCP

CrawlForge sigue la especificación MCP actual (2025-06-18) más extensiones experimentales seleccionadas:

  • Salida estructurada — scrape, map_site, serp_rank, reddit_search, search_web, extract_structured y crawl_deep devuelven structuredContent analizable por máquina junto con el texto habitual, validado contra un outputSchema publicado; los clientes heredados siguen funcionando con el texto.
  • Errores autocorregibles — la entrada de herramienta inválida ahora se devuelve como un resultado isError: true que el modelo llamante puede leer y reintentar, en lugar de un error de protocolo JSON-RPC crudo.
  • Esquemas de herramienta JSON Schema 2020-12, ordenamiento determinista de tools/list (amigable con la caché de prompt del cliente) y sugerencias de resultados almacenables en caché en herramientas de solo lectura.
  • Iconos en el servidor, sus herramientas y sus prompts.
  • Tareas asíncronas (experimental) en las cuatro herramientas de larga duración — crawl_deep, batch_scrape, deep_research, agent — para clientes que admiten sondeo; los resultados síncronos aún se devuelven para clientes que no lo admiten.

Consulta docs/mcp-spec-adoption.md para ejemplos a nivel de cable y notas de compatibilidad con clientes.

Inicio rápido con LLM local (extract_with_llm con Ollama)

extract_with_llm usa por defecto un modelo local de Ollama — sin clave de proveedor de LLM, sin costos de LLM por token y sin que los datos salgan de tu máquina (el costo de créditos de CrawlForge aún aplica).

# 1. Install Ollama:  https://ollama.com
# 2. Pull any model from https://ollama.com/library
ollama pull llama3.2

# 3. Discover what's installed (from your MCP client)
#    list_ollama_models()

# 4. Extract — defaults to Ollama with the model from step 2
#    extract_with_llm({ url: "https://example.com", prompt: "…", model: "llama3.2" })

Motores sigilosos y proxies

Cada punto de entrada sigiloso — scrape con escalate: true, stealth_mode, browser_session, scrape_with_actions y el reintento de deep_research — ahora usa por defecto auto: usa Camoufox (anti-detección de Firefox) cuando su binario está instalado, recurre a Chromium cuando no lo está, con la razón en el warnings[] del resultado. Cada resultado nombra el motor que realmente se ejecutó. Nombrar un motor explícitamente se comporta como siempre — camoufox falla en lugar de recurrir, y chromium y playwright son el mismo motor (en el escalate_engine de scrape, escríbelo playwright).

En browser_session y scrape_with_actions el motor aplica solo con stealth: true — su ruta ordinaria es el grupo estándar de Chromium.

auto no es gratis. Medido una vez cada uno en una Mac con Apple Silicon el 2026-09-21 (lanzamiento más un contexto y una página en blanco): Chromium 148 ms y 253 MB, Camoufox 946 ms y 667 MB — aproximadamente +0.8 s y +400 MB por llamada sigilosa. Fija engine: "playwright" para trabajo de alto volumen en sitios que no bloquean.

CrawlForge no proporciona proxies, y un proxy de centro de datos no arregla un bloqueo: Cloudflare puntúa el ASN de la IP y el handshake TLS/HTTP2 antes de que se ejecute cualquier JavaScript, por lo que ningún parche del lado del navegador compensa una dirección de centro de datos. Trae tu propia salida residencial con CRAWLFORGE_STEALTH_PROXIES (URLs separadas por comas), que la etapa de escalada, stealth_mode, browser_session, scrape_with_actions, el reintento de deep_research y el reintento sigiloso automático de la herramienta agent usan cuando el llamante no pasa ninguno; un proxy pasado en la llamada siempre gana. Con un proxy, Camoufox deriva su zona horaria, configuración regional y geolocalización de la IP de salida.

Un desafío resuelto una vez no se resuelve de nuevo. Cuando una renderización sigilosa supera una pared de Cloudflare o DataDome, las cookies de autorización del proveedor (cf_clearance, __cf_bm, datadome — nada más) se guardan en ~/.crawlforge/stealth-clearance.json (modo 0600) y se reproducen en el siguiente contexto sigiloso con el mismo motor, User-Agent y proxy, por como máximo la vida útil de la cookie y nunca más de 24 horas. Una renderización que aún encuentra la pared las descarta. Establece CRAWLFORGE_CLEARANCE_JAR=off para deshabilitar.

Detalle completo, mediciones y fuentes: docs/stealth-engines.md.

Extracción sigilosa para deep_research (Camoufox)

deep_research reintenta automáticamente fuentes que bloquean la ruta de obtención normal (Reddit, Quora, foros y páginas protegidas por Cloudflare/DataDome devuelven HTTP 403) a través de un navegador real con huella digital, luego re-extrae del HTML renderizado. Está acotado (RESEARCH_MAX_STEALTH_RETRIES, por defecto 8, más un tiempo de espera por página) y es perezoso — la pila del navegador solo se carga cuando una fuente está realmente bloqueada.

Selección de motor (RESEARCH_STEALTH_ENGINE):

  • auto (por defecto) — prefiere Camoufox (anti-detección de Firefox), recurre a Chromium sigiloso, luego obtención simple.
  • camoufox — fuerza Camoufox.
  • chromium — fuerza el motor sigiloso de Chromium. Camoufox atraviesa barreras que detienen a Chromium headless: en una prueba de referencia ejecutada el 21-09-2026 desde una IP residencial, fue el único motor que superó Cloudflare Turnstile (indeed.com) y Akamai (harrods.com), ambos de los cuales bloquearon Chromium stealth. Ninguno de los dos motores superó DataDome ni un Turnstile interactivo, por lo que esta es una mejor ruta de obtención, no un bypass. Para habilitarlo, instala la dependencia opcional y ejecuta su descarga binaria única:
# Camoufox is declared as an optional dependency, so a normal install already pulls it.
# If you installed with --no-optional, add it explicitly:
npm install camoufox

# One-time download of the Camoufox Firefox binary (~130 MB):
npx camoufox fetch

Sin el binario de Camoufox, deep_research cae silenciosamente a Chromium stealth y luego a fetch simple — sin errores, solo una menor recuperación en sitios altamente protegidos. Desactiva toda la degradación con RESEARCH_STEALTH_FALLBACK=false.

Nota: Los bloqueos duros por reputación de IP (p. ej., el edge de Reddit 403) resisten el stealth headless desde cualquier IP y requieren proxies residenciales/móviles, que CrawlForge no proporciona — apunta el servidor a los tuyos con CRAWLFORGE_STEALTH_PROXIES. Consulta docs/stealth-engines.md para más detalles.

Configuración Manual

Tu configuración se almacena en ~/.crawlforge/config.json:

{
  "apiKey": "cf_live_...",
  "userId": "user_...",
  "email": "you@example.com"
}

📖 Ejemplos de Uso

Una vez configurado, usa estas herramientas en tu asistente de IA:

"Search for the latest AI news"
"Extract all links from example.com"
"Crawl the documentation site and summarize it"
"Monitor this page for changes"
"Extract product prices from this e-commerce site"

🔒 Seguridad y Privacidad

  • Autenticación Segura: Se requieren claves API para todas las herramientas medidas
  • Almacenamiento Local: Las claves API se almacenan de forma segura en ~/.crawlforge/config.json
  • Solo HTTPS: Todas las conexiones usan HTTPS cifrado
  • Sin Retención de Datos: No almacenamos datos extraídos, solo registros de uso
  • Límite de Tasa: Protección integrada contra abuso
  • Cumplimiento: Respeta robots.txt y los requisitos del GDPR

Seguridad y Aprobaciones

  • Aplicación de SSRF: Cada URL extraída se valida antes de enviar la solicitud — solo http/https; bloquea loopback, RFC1918, rangos IPv6 privados/link-local, endpoints de metadatos en la nube (GCP, Azure) y puertos peligrosos (SSH, SMTP, DNS, MySQL, Postgres, Redis, MongoDB, etc.). Las redirecciones se revalidan en cada salto, con un máximo de 5.
  • Protección del endpoint backend (v3.0.18): Las llamadas propias del servidor a CrawlForge.dev usan una lista de permitidos separada con cierre ante fallo ({crawlforge.dev, www.crawlforge.dev, api.crawlforge.dev}, HTTPS requerido). Establecer CRAWLFORGE_API_URL a un host arbitrario se bloquea en el momento del análisis.
  • Lista de acciones permitidas: scrape_with_actions acepta solo 11 tipos de acción (snapshot, wait, click, type, press, scroll, screenshot, executeJavaScript, select, hover, navigate). No existen primitivas de descarga, escritura de archivos ni navegación arbitraria entre páginas — navigate pasa por la misma compuerta de SSRF y robots.txt que la URL inicial.
  • Compuerta de JavaScript: La acción executeJavaScript lanza una excepción por defecto. Establece ALLOW_JAVASCRIPT_EXECUTION=true en el momento del despliegue para habilitarla (no recomendado en producción).
  • Elicitación MCP (v3.6.0): Cuatro herramientas solicitan confirmación del usuario antes de ejecutar operaciones costosas — deep_research (>50 URLs), batch_scrape (modo sincrónico, >25 URLs), crawl_deep (proyección >500 páginas), extract_structured (esquema con >3 campos obligatorios sin LLM configurado). Las situaciones de crédito bajo también elicitan. La confirmación es de mejor esfuerzo: si el cliente MCP no admite elicitación, la herramienta procede (apertura ante fallo).
  • Control de crédito por herramienta: Cada herramienta está envuelta con withAuth() y es medida — los créditos se verifican y descuentan antes de la ejecución, y se requiere una clave API válida para cada herramienta (cierre ante fallo desde v3.0.18).

Consulta docs/sandboxing-and-approvals.md para la referencia completa.

Actualizaciones de Seguridad

v3.0.3 (2025-10-01): Se eliminó una vulnerabilidad de omisión de autenticación. Todos los usuarios deben autenticarse con claves API válidas.

Para la política de seguridad completa y cómo reportar una vulnerabilidad, consulta SECURITY.md.

↑ Volver arriba

🆘 Soporte

📄 Licencia

Licencia MIT — consulta el archivo LICENSE para más detalles.

🤝 Contribuciones

¡Las contribuciones son bienvenidas! Lee primero nuestra Guía de Contribución.


Hecho con ❤️ por el equipo de CrawlForge

Sitio web | Documentación | Referencia de API