Firecrawl MCP Server

oficial

Añade potentes capacidades de raspado web y búsqueda a clientes LLM como Cursor y Claude.

Documentación

Servidor MCP de Firecrawl

Un servidor de Protocolo de Contexto de Modelo (MCP) que trae Firecrawl a agentes de IA compatibles con MCP — busca, extrae e interactúa con la web en vivo para obtener contexto limpio y listo para agentes.

¡Muchas gracias a @vrknetha, @knacklabs por la implementación inicial!

Características

  • Busca en la web y obtén el contenido completo de la página
  • Extrae cualquier URL en datos limpios y estructurados
  • Interactúa con páginas — haz clic, navega y opera
  • Investigación profunda con agente autónomo
  • Reintentos automáticos y limitación de tasa
  • Soporte en la nube y autoalojado
  • Soporte SSE

Prueba nuestro Servidor MCP en el playground de MCP.so o en Klavis AI.

Instalación

Ejecutar con npx

env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp

Instalación Manual

npm install -g firecrawl-mcp

Ejecutar en Cursor

Configurando Cursor 🖥️ Nota: Requiere Cursor versión 0.45.6+ Para las instrucciones de configuración más actualizadas, consulta la documentación oficial de Cursor sobre la configuración de servidores MCP: Guía de Configuración del Servidor MCP de Cursor

Para configurar Firecrawl MCP en Cursor v0.48.6

  1. Abre la Configuración de Cursor
  2. Ve a Funciones > Servidores MCP
  3. Haz clic en "+ Agregar nuevo servidor MCP global"
  4. Ingresa el siguiente código:
    {
      "mcpServers": {
        "firecrawl-mcp": {
          "command": "npx",
          "args": ["-y", "firecrawl-mcp"],
          "env": {
            "FIRECRAWL_API_KEY": "YOUR-API-KEY"
          }
        }
      }
    }
    

Para configurar Firecrawl MCP en Cursor v0.45.6

  1. Abre la Configuración de Cursor
  2. Ve a Funciones > Servidores MCP
  3. Haz clic en "+ Agregar Nuevo Servidor MCP"
  4. Ingresa lo siguiente:
    • Nombre: "firecrawl-mcp" (o tu nombre preferido)
    • Tipo: "command"
    • Comando: env FIRECRAWL_API_KEY=your-api-key npx -y firecrawl-mcp

Si estás usando Windows y tienes problemas, prueba cmd /c "set FIRECRAWL_API_KEY=your-api-key && npx -y firecrawl-mcp"

Reemplaza your-api-key con tu clave API de Firecrawl. Si aún no tienes una, puedes crear una cuenta y obtenerla desde https://www.firecrawl.dev/app/api-keys

Después de agregar, actualiza la lista de servidores MCP para ver las nuevas herramientas. El Agente Compositor usará automáticamente Firecrawl MCP cuando sea apropiado, pero puedes solicitarlo explícitamente describiendo tus necesidades de extracción web. Accede al Compositor mediante Comando+L (Mac), selecciona "Agente" junto al botón de enviar e ingresa tu consulta.

Ejecutar en Windsurf

Agrega esto a tu ./codeium/windsurf/model_config.json:

{
  "mcpServers": {
    "mcp-server-firecrawl": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": {
        "FIRECRAWL_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

Ejecutar con Modo Local HTTP Transmisible

Para ejecutar el servidor usando HTTP Transmisible localmente en lugar del transporte stdio predeterminado:

env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp

Usa la url: http://localhost:3000/mcp

Instalación vía Smithery (Legado)

Para instalar Firecrawl para Claude Desktop automáticamente vía Smithery:

npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude

Ejecutar en VS Code

Para instalación con un clic, haz clic en uno de los botones de instalación a continuación...

Install with NPX in VS Code Install with NPX in VS Code Insiders

Para instalación manual, agrega el siguiente bloque JSON a tu archivo de Configuración de Usuario (JSON) en VS Code. Puedes hacerlo presionando Ctrl + Shift + P y escribiendo Preferences: Open User Settings (JSON).

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "apiKey",
        "description": "Firecrawl API Key",
        "password": true
      }
    ],
    "servers": {
      "firecrawl": {
        "command": "npx",
        "args": ["-y", "firecrawl-mcp"],
        "env": {
          "FIRECRAWL_API_KEY": "${input:apiKey}"
        }
      }
    }
  }
}

Opcionalmente, puedes agregarlo a un archivo llamado .vscode/mcp.json en tu espacio de trabajo. Esto te permitirá compartir la configuración con otros:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "apiKey",
      "description": "Firecrawl API Key",
      "password": true
    }
  ],
  "servers": {
    "firecrawl": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": {
        "FIRECRAWL_API_KEY": "${input:apiKey}"
      }
    }
  }
}

Configuración

Variables de Entorno

Requerido para API en la Nube

  • FIRECRAWL_API_KEY: Tu clave API de Firecrawl
    • Requerido al usar la API en la nube (predeterminado)
    • Opcional al usar una instancia autoalojada con FIRECRAWL_API_URL
  • FIRECRAWL_API_URL (Opcional): Endpoint de API personalizado para instancias autoalojadas
    • Ejemplo: https://firecrawl.your-domain.com
    • Si no se proporciona, se usará la API en la nube (requiere clave API)

MCP OAuth (Tokens de acceso Bearer)

Firecrawl alojado puede emitir tokens de acceso OAuth (fco_…) a través del servidor de autorización en firecrawl.dev. Este servidor MCP reenvía la credencial que resuelva a la API de Firecrawl como Authorization: Bearer ….

  • Transportes de flujo HTTP (CLOUD_SERVICE=true, HTTP_STREAMABLE_SERVER=true, o SSE_LOCAL=true): Los clientes deben enviar Authorization: Bearer <fco_access_token> en las solicitudes MCP. Un token bearer OAuth tiene prioridad sobre x-firecrawl-api-key / x-api-key cuando ambos están presentes.
  • stdio: Usa FIRECRAWL_OAUTH_TOKEN para un token de acceso estático, o continúa usando FIRECRAWL_API_KEY para una clave API.

Usa solo tokens de acceso (fco_…). Los tokens de actualización (fcr_…) deben intercambiarse en el endpoint de token, no pasarse a la API de extracción/búsqueda.

Configuración Opcional

Configuración de Reintentos
  • FIRECRAWL_RETRY_MAX_ATTEMPTS: Número máximo de intentos de reintento (predeterminado: 3)
  • FIRECRAWL_RETRY_INITIAL_DELAY: Retraso inicial en milisegundos antes del primer reintento (predeterminado: 1000)
  • FIRECRAWL_RETRY_MAX_DELAY: Retraso máximo en milisegundos entre reintentos (predeterminado: 10000)
  • FIRECRAWL_RETRY_BACKOFF_FACTOR: Multiplicador de retroceso exponencial (predeterminado: 2)
Monitoreo de Uso de Créditos
  • FIRECRAWL_CREDIT_WARNING_THRESHOLD: Umbral de advertencia de uso de créditos (predeterminado: 1000)
  • FIRECRAWL_CREDIT_CRITICAL_THRESHOLD: Umbral crítico de uso de créditos (predeterminado: 100)

Ejemplos de Configuración

Para uso de API en la nube con reintentos personalizados y monitoreo de créditos:

# Required for cloud API
export FIRECRAWL_API_KEY=your-api-key

# Optional retry configuration
export FIRECRAWL_RETRY_MAX_ATTEMPTS=5        # Increase max retry attempts
export FIRECRAWL_RETRY_INITIAL_DELAY=2000    # Start with 2s delay
export FIRECRAWL_RETRY_MAX_DELAY=30000       # Maximum 30s delay
export FIRECRAWL_RETRY_BACKOFF_FACTOR=3      # More aggressive backoff

# Optional credit monitoring
export FIRECRAWL_CREDIT_WARNING_THRESHOLD=2000    # Warning at 2000 credits
export FIRECRAWL_CREDIT_CRITICAL_THRESHOLD=500    # Critical at 500 credits

Para instancia autoalojada:

# Required for self-hosted
export FIRECRAWL_API_URL=https://firecrawl.your-domain.com

# Optional authentication for self-hosted
export FIRECRAWL_API_KEY=your-api-key  # If your instance requires auth

# Custom retry configuration
export FIRECRAWL_RETRY_MAX_ATTEMPTS=10
export FIRECRAWL_RETRY_INITIAL_DELAY=500     # Start with faster retries

Uso con Claude Desktop

Agrega esto a tu claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-server-firecrawl": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": {
        "FIRECRAWL_API_KEY": "YOUR_API_KEY_HERE",

        "FIRECRAWL_RETRY_MAX_ATTEMPTS": "5",
        "FIRECRAWL_RETRY_INITIAL_DELAY": "2000",
        "FIRECRAWL_RETRY_MAX_DELAY": "30000",
        "FIRECRAWL_RETRY_BACKOFF_FACTOR": "3",

        "FIRECRAWL_CREDIT_WARNING_THRESHOLD": "2000",
        "FIRECRAWL_CREDIT_CRITICAL_THRESHOLD": "500"
      }
    }
  }
}

Configuración del Sistema

El servidor incluye varios parámetros configurables que se pueden establecer mediante variables de entorno. Aquí están los valores predeterminados si no se configuran:

const CONFIG = {
  retry: {
    maxAttempts: 3, // Number of retry attempts for rate-limited requests
    initialDelay: 1000, // Initial delay before first retry (in milliseconds)
    maxDelay: 10000, // Maximum delay between retries (in milliseconds)
    backoffFactor: 2, // Multiplier for exponential backoff
  },
  credit: {
    warningThreshold: 1000, // Warn when credit usage reaches this level
    criticalThreshold: 100, // Critical alert when credit usage reaches this level
  },
};

Estas configuraciones controlan:

  1. Comportamiento de Reintentos

    • Reintenta automáticamente las solicitudes fallidas debido a límites de tasa
    • Usa retroceso exponencial para evitar saturar la API
    • Ejemplo: Con la configuración predeterminada, los reintentos se intentarán en:
      • 1er reintento: 1 segundo de retraso
      • 2do reintento: 2 segundos de retraso
      • 3er reintento: 4 segundos de retraso (limitado por maxDelay)
  2. Monitoreo de Uso de Créditos

    • Rastrea el consumo de créditos de la API para uso en la nube
    • Proporciona advertencias en los umbrales especificados
    • Ayuda a prevenir interrupciones inesperadas del servicio
    • Ejemplo: Con la configuración predeterminada:
      • Advertencia a los 1000 créditos restantes
      • Alerta crítica a los 100 créditos restantes

Limitación de Tasa y Procesamiento por Lotes

El servidor utiliza las capacidades integradas de limitación de tasa y procesamiento por lotes de Firecrawl:

  • Manejo automático de límites de tasa con retroceso exponencial
  • Procesamiento paralelo eficiente para operaciones por lotes
  • Encolamiento y regulación inteligente de solicitudes
  • Reintentos automáticos para errores transitorios

Cómo Elegir una Herramienta

Usa esta guía para seleccionar la herramienta adecuada para tu tarea:

  • Si conoces la(s) URL(s) exacta(s) que deseas:
    • Para una: usa scrape (con formato JSON para datos estructurados)
    • Para muchas: usa batch_scrape
  • Si necesitas descubrir URLs en un sitio: usa map
  • Si deseas buscar información en la web: usa search
  • Si necesitas investigación compleja a través de múltiples fuentes desconocidas: usa agent
  • Si deseas analizar un sitio completo o una sección: usa crawl (¡con límites!)
  • Si necesitas automatización interactiva del navegador (hacer clic, escribir, navegar): usa scrape + interact

Tabla de Referencia Rápida

HerramientaIdeal paraDevuelve
scrapeContenido de una sola páginaJSON (preferido) o markdown
interactInteractuar con una página extraídaResultado de la ejecución
batch_scrapeMúltiples URLs conocidasJSON (preferido) o markdown[]
mapDescubrir URLs en un sitioURL[]
crawlExtracción de múltiples páginas (con límites)markdown/html[]
searchBúsqueda web de informaciónresults[]
agentInvestigación compleja de múltiples fuentesJSON (datos estructurados)

Guía de Selección de Formato

Al usar scrape o batch_scrape, elige el formato correcto:

  • Formato JSON (recomendado para la mayoría de los casos): Úsalo cuando necesites datos específicos de una página. Define un esquema basado en lo que necesitas extraer. Esto mantiene las respuestas pequeñas y evita el desbordamiento de la ventana de contexto.
  • Formato Markdown (usar con moderación): Solo cuando realmente necesites el contenido completo de la página, como leer un artículo completo para resumir o analizar la estructura de la página.

Herramientas Disponibles

1. Herramienta Scrape (firecrawl_scrape)

Extrae contenido de una sola URL con opciones avanzadas.

Ideal para:

  • Extracción de contenido de una sola página, cuando sabes exactamente qué página contiene la información.

No recomendado para:

  • Extraer contenido de múltiples páginas (usa batch_scrape para URLs conocidas, o map + batch_scrape para descubrir URLs primero, o crawl para contenido completo de la página)
  • Cuando no estás seguro de qué página contiene la información (usa search)

Errores comunes:

  • Usar scrape para una lista de URLs (usa batch_scrape en su lugar).
  • Usar formato markdown por defecto (usa formato JSON para extraer solo lo que necesitas).

Eligiendo el formato correcto:

  • Formato JSON (preferido): Para la mayoría de los casos de uso, usa formato JSON con un esquema para extraer solo los datos específicos necesarios. Esto mantiene las respuestas enfocadas y previene el desbordamiento de la ventana de contexto.
  • Formato Markdown: Solo cuando la tarea realmente requiera el contenido completo de la página (ej., resumir un artículo completo, analizar la estructura de la página).

Ejemplo de Prompt:

"Obtén los detalles del producto de https://example.com/product."

Ejemplo de Uso (formato JSON - preferido):

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com/product",
    "formats": [
      {
        "type": "json",
        "prompt": "Extract the product information",
        "schema": {
          "type": "object",
          "properties": {
            "name": { "type": "string" },
            "price": { "type": "number" },
            "description": { "type": "string" }
          },
          "required": ["name", "price"]
        }
      }
    ]
  }
}

Ejemplo de Uso (formato markdown - cuando se necesita contenido completo):

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com/article",
    "formats": ["markdown"],
    "onlyMainContent": true
  }
}

Ejemplo de Uso (formato branding - extraer identidad de marca):

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com",
    "formats": ["branding"]
  }
}

Formato Branding: Extrae identidad de marca integral (colores, fuentes, tipografía, espaciado, logo, componentes UI) para análisis de diseño o replicación de estilo. Privacidad: Establece redactPII: true para devolver contenido con información de identificación personal redactada.

Devuelve:

  • Datos estructurados JSON, markdown, perfil de marca u otros formatos según se especifique.

2. Herramienta Batch Scrape (firecrawl_batch_scrape)

Extrae múltiples URLs de manera eficiente con limitación de tasa y procesamiento paralelo integrados.

Ideal para:

  • Recuperar contenido de múltiples páginas, cuando sabes exactamente qué páginas extraer.

No recomendado para:

  • Descubrir URLs (usa map primero si no conoces las URLs)
  • Extraer una sola página (usa scrape)

Errores comunes:

  • Usar batch_scrape con demasiadas URLs a la vez (puede alcanzar límites de tasa o desbordamiento de tokens)

Ejemplo de Prompt:

"Obtén el contenido de estas tres publicaciones de blog: [url1, url2, url3]."

Ejemplo de Uso:

{
  "name": "firecrawl_batch_scrape",
  "arguments": {
    "urls": ["https://example1.com", "https://example2.com"],
    "options": {
      "formats": ["markdown"],
      "onlyMainContent": true
    }
  }
}

Devuelve:

  • La respuesta incluye ID de operación para verificar el estado:
{
  "content": [
    {
      "type": "text",
      "text": "Batch operation queued with ID: batch_1. Use firecrawl_check_batch_status to check progress."
    }
  ],
  "isError": false
}

3. Verificar Estado de Lote (firecrawl_check_batch_status)

Verifica el estado de una operación por lotes.

{
  "name": "firecrawl_check_batch_status",
  "arguments": {
    "id": "batch_1"
  }
}

4. Herramienta Map (firecrawl_map)

Mapea un sitio web para descubrir todas las URLs indexadas en el sitio.

Ideal para:

  • Descubrir URLs en un sitio web antes de decidir qué extraer
  • Encontrar secciones específicas de un sitio web

No recomendado para:

  • Cuando ya sabes qué URL específica necesitas (usa scrape o batch_scrape)
  • Cuando necesitas el contenido de las páginas (usa scrape después de mapear)

Errores comunes:

  • Usar crawl para descubrir URLs en lugar de map

Ejemplo de Prompt:

"Lista todas las URLs en example.com."

Ejemplo de Uso:

{
  "name": "firecrawl_map",
  "arguments": {
    "url": "https://example.com"
  }
}

Devuelve:

  • Array de URLs encontradas en el sitio

5. Herramienta Search (firecrawl_search)

Busca en la web y opcionalmente extrae contenido de los resultados de búsqueda.

Ideal para:

  • Encontrar información específica en múltiples sitios web, cuando no sabes qué sitio web tiene la información.
  • Cuando necesitas el contenido más relevante para una consulta

No recomendado para:

  • Cuando ya sabes qué sitio web extraer (usa scrape)
  • Cuando necesitas cobertura integral de un solo sitio web (usa map o crawl)

Errores comunes:

  • Usar crawl o map para preguntas abiertas (usa search en su lugar)

Ejemplo de Uso:

{
  "name": "firecrawl_search",
  "arguments": {
    "query": "latest AI research papers 2023",
    "limit": 5,
    "lang": "en",
    "country": "us",
    "scrapeOptions": {
      "formats": ["markdown"],
      "onlyMainContent": true,
      "redactPII": true
    }
  }
}

Devuelve:

  • Array de resultados de búsqueda (con contenido extraído opcional), más un campo id. Pase ese id a firecrawl_search_feedback después de usar los resultados para reembolsar 1 crédito (la búsqueda cuesta 2) y mejorar la calidad de búsqueda.

Ejemplo de prompt:

"Encuentra los últimos artículos de investigación sobre IA publicados en 2023."

5b. Herramienta de retroalimentación de búsqueda (firecrawl_search_feedback)

Envía retroalimentación estructurada sobre un resultado previo de firecrawl_search. La primera retroalimentación por ID de búsqueda reembolsa 1 crédito y mejora la calidad de búsqueda de Firecrawl. Idempotente por ID de búsqueda.

Llame a esto después de cada búsqueda que realmente use (o que no haya ayudado). La retroalimentación mala/parcial con missingContent es tan valiosa como la buena.

Exclusión voluntaria: establezca FIRECRAWL_NO_SEARCH_FEEDBACK=1 (o FIRECRAWL_DISABLE_SEARCH_FEEDBACK=1) en el entorno al iniciar el servidor MCP. La herramienta firecrawl_search_feedback no se registrará, por lo que los agentes no pueden llamarla. Los administradores de equipo también pueden deshabilitar la retroalimentación del lado del servidor; en ese caso, la herramienta se registra pero siempre devuelve feedbackErrorCode: "TEAM_OPTED_OUT".

Campo más importante: missingContent. Es un array de piezas específicas de contenido que el agente esperaba encontrar pero no encontró. Una entrada por tema faltante: estos se agregan entre equipos y nos indican qué indexar a continuación.

Límite diario de reembolso (por equipo, por día UTC, predeterminado 100 créditos). Una vez que el creditsRefundedToday de un equipo alcanza dailyRefundCap, los envíos posteriores aún registran la retroalimentación pero ya no reembolsan créditos. La respuesta establece dailyCapReached: true. Los agentes deben dejar de llamar a esta herramienta durante el resto del día UTC cuando vean esa bandera.

Ejemplo de uso:

{
  "name": "firecrawl_search_feedback",
  "arguments": {
    "searchId": "0193f6c5-1234-7890-abcd-1234567890ab",
    "rating": "good",
    "valuableSources": [
      {
        "url": "https://docs.firecrawl.dev/features/search",
        "reason": "Most up-to-date description of /search."
      }
    ],
    "missingContent": [
      {
        "topic": "Pricing for the search endpoint",
        "description": "No pricing tier table for /search specifically."
      },
      { "topic": "Per-team rate limits" }
    ],
    "querySuggestions": "Boost docs.firecrawl.dev for queries that mention 'firecrawl'"
  }
}

Devuelve:

  • JSON { success, feedbackId, creditsRefunded, alreadySubmitted? }.

5c. Herramienta de retroalimentación genérica (firecrawl_feedback)

Envía retroalimentación estructurada para un trabajo de endpoint v2 completado a través de /v2/feedback. Use esto para retroalimentación a nivel de endpoint en trabajos de scrape, parse, map o search. Para la calidad de los resultados de búsqueda específicamente, prefiera firecrawl_search_feedback porque incluye orientación específica de búsqueda.

Mantenga la retroalimentación concisa: use códigos de problema, etiquetas, notas breves, URLs, números de página y objetos de metadatos pequeños. No incluya resultados brutos de extracción/análisis.

Exclusión voluntaria: establezca FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 (o FIRECRAWL_DISABLE_ENDPOINT_FEEDBACK=1) en el entorno al iniciar el servidor MCP. La herramienta firecrawl_feedback no se registrará, por lo que los agentes no pueden llamarla.

Ejemplo de uso:

{
  "name": "firecrawl_feedback",
  "arguments": {
    "endpoint": "scrape",
    "jobId": "0193f6c5-1234-7890-abcd-1234567890ab",
    "rating": "partial",
    "issues": ["missing_markdown"],
    "tags": ["docs"],
    "note": "The pricing table was missing from the markdown output.",
    "url": "https://example.com/pricing",
    "pageNumbers": [1],
    "metadata": {
      "format": "markdown"
    }
  }
}

Devuelve:

  • JSON { success, feedbackId, creditsRefunded, creditsRefundedToday?, dailyRefundCap?, dailyCapReached?, alreadySubmitted?, warning? }.

6. Herramienta de rastreo (firecrawl_crawl)

Inicia un trabajo de rastreo asíncrono en un sitio web y extrae contenido de todas las páginas.

Ideal para:

  • Extraer contenido de múltiples páginas relacionadas, cuando necesita una cobertura completa.

No recomendado para:

  • Extraer contenido de una sola página (use extracción)
  • Cuando los límites de tokens son una preocupación (use mapa + extracción por lotes)
  • Cuando necesita resultados rápidos (el rastreo puede ser lento)

Advertencia: Las respuestas de rastreo pueden ser muy grandes y pueden exceder los límites de tokens. Limite la profundidad de rastreo y el número de páginas, o use mapa + extracción por lotes para un mejor control.

Errores comunes:

  • Establecer límite o maxDepth demasiado alto (causa desbordamiento de tokens)
  • Usar rastreo para una sola página (use extracción en su lugar)

Ejemplo de prompt:

"Obtén todas las publicaciones del blog de los dos primeros niveles de example.com/blog."

Ejemplo de uso:

{
  "name": "firecrawl_crawl",
  "arguments": {
    "url": "https://example.com/blog/*",
    "maxDepth": 2,
    "limit": 100,
    "allowExternalLinks": false,
    "deduplicateSimilarURLs": true
  }
}

Devuelve:

  • La respuesta incluye el ID de operación para verificar el estado:
{
  "content": [
    {
      "type": "text",
      "text": "Started crawl for: https://example.com/* with job ID: 550e8400-e29b-41d4-a716-446655440000. Use firecrawl_check_crawl_status to check progress."
    }
  ],
  "isError": false
}

7. Verificar estado de rastreo (firecrawl_check_crawl_status)

Verifica el estado de un trabajo de rastreo.

{
  "name": "firecrawl_check_crawl_status",
  "arguments": {
    "id": "550e8400-e29b-41d4-a716-446655440000"
  }
}

Devuelve:

  • La respuesta incluye el estado del trabajo de rastreo:

8. Herramienta de extracción (firecrawl_extract)

Extrae información estructurada de páginas web utilizando capacidades de LLM. Admite tanto IA en la nube como extracción LLM autohospedada.

Ideal para:

  • Extraer datos estructurados específicos como precios, nombres, detalles.

No recomendado para:

  • Cuando necesita el contenido completo de una página (use extracción)
  • Cuando no busca datos estructurados específicos

Argumentos:

  • urls: Array de URLs de las que extraer información
  • prompt: Prompt personalizado para la extracción LLM
  • systemPrompt: Prompt del sistema para guiar al LLM
  • schema: Esquema JSON para la extracción de datos estructurados
  • allowExternalLinks: Permitir extracción de enlaces externos
  • enableWebSearch: Habilitar búsqueda web para contexto adicional
  • includeSubdomains: Incluir subdominios en la extracción

Al usar una instancia autohospedada, la extracción utilizará su LLM configurado. Para la API en la nube, utiliza el servicio LLM administrado de Firecrawl. Ejemplo de prompt:

"Extrae el nombre del producto, precio y descripción de estas páginas de producto."

Ejemplo de uso:

{
  "name": "firecrawl_extract",
  "arguments": {
    "urls": ["https://example.com/page1", "https://example.com/page2"],
    "prompt": "Extract product information including name, price, and description",
    "systemPrompt": "You are a helpful assistant that extracts product information",
    "schema": {
      "type": "object",
      "properties": {
        "name": { "type": "string" },
        "price": { "type": "number" },
        "description": { "type": "string" }
      },
      "required": ["name", "price"]
    },
    "allowExternalLinks": false,
    "enableWebSearch": false,
    "includeSubdomains": false
  }
}

Devuelve:

  • Datos estructurados extraídos según lo definido por su esquema
{
  "content": [
    {
      "type": "text",
      "text": {
        "name": "Example Product",
        "price": 99.99,
        "description": "This is an example product description"
      }
    }
  ],
  "isError": false
}

9. Herramienta de agente (firecrawl_agent)

Agente de investigación web autónomo. Esta es una capa de agente de IA separada que navega por Internet de forma independiente, busca información, navega por páginas y extrae datos estructurados según su consulta.

Cómo funciona:

El agente realiza búsquedas web, sigue enlaces, lee páginas y recopila datos de forma autónoma. Esto se ejecuta de forma asíncrona: devuelve un ID de trabajo inmediatamente, y usted consulta firecrawl_agent_status para verificar cuándo se completa y recuperar los resultados.

Flujo de trabajo asíncrono:

  1. Llame a firecrawl_agent con su prompt/esquema → devuelve el ID del trabajo
  2. Haga otro trabajo mientras el agente investiga (puede tardar minutos para consultas complejas)
  3. Consulte firecrawl_agent_status con el ID del trabajo para verificar el progreso
  4. Cuando el estado sea "completed", la respuesta incluye los datos extraídos

Ideal para:

  • Tareas de investigación complejas donde no conoce las URLs exactas
  • Recopilación de datos de múltiples fuentes
  • Encontrar información dispersa en la web
  • Tareas en las que puede hacer otro trabajo mientras espera los resultados

No recomendado para:

  • Extracción simple de una sola página donde conoce la URL (use extracción con formato JSON: más rápido y económico)

Argumentos:

  • prompt: Descripción en lenguaje natural de los datos que desea (obligatorio, máximo 10,000 caracteres)
  • urls: Array opcional de URLs para enfocar al agente en páginas específicas
  • schema: Esquema JSON opcional para salida estructurada

Ejemplo de prompt:

"Encuentra los fundadores de Firecrawl y sus antecedentes"

Ejemplo de uso (iniciar agente, luego consultar resultados):

{
  "name": "firecrawl_agent",
  "arguments": {
    "prompt": "Find the top 5 AI startups founded in 2024 and their funding amounts",
    "schema": {
      "type": "object",
      "properties": {
        "startups": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": { "type": "string" },
              "funding": { "type": "string" },
              "founded": { "type": "string" }
            }
          }
        }
      }
    }
  }
}

Luego consulte con firecrawl_agent_status usando el ID de trabajo devuelto.

Ejemplo de uso (con URLs: el agente se enfoca en páginas específicas):

{
  "name": "firecrawl_agent",
  "arguments": {
    "urls": ["https://docs.firecrawl.dev", "https://firecrawl.dev/pricing"],
    "prompt": "Compare the features and pricing information from these pages"
  }
}

Devuelve:

  • ID de trabajo para verificar el estado. Use firecrawl_agent_status para consultar los resultados.

10. Verificar estado del agente (firecrawl_agent_status)

Verifica el estado de un trabajo de agente y recupera los resultados cuando se completa. Use esto para consultar los resultados después de iniciar un agente.

Patrón de consulta: La investigación del agente puede tardar minutos para consultas complejas. Consulte este endpoint periódicamente (por ejemplo, cada 10-30 segundos) hasta que el estado sea "completed" o "failed".

{
  "name": "firecrawl_agent_status",
  "arguments": {
    "id": "550e8400-e29b-41d4-a716-446655440000"
  }
}

Estados posibles:

  • processing: El agente todavía está investigando; vuelva a consultar más tarde
  • completed: Investigación finalizada; la respuesta incluye los datos extraídos
  • failed: Ocurrió un error

11. Herramientas de monitoreo (firecrawl_monitor_*)

Cree y administre monitores de páginas recurrentes. Los monitores ejecutan extracciones o rastreos programados, comparan cada resultado con la última instantánea retenida y pueden notificar por webhook o correo electrónico.

Ideal para:

  • Observar una página o unas pocas páginas a lo largo del tiempo
  • Alertar sobre cambios significativos utilizando un objetivo en lenguaje sencillo
  • Rastrear el historial de verificaciones y diferencias a nivel de página

Patrón de creación recomendado:

Use page o pages más goal. El servidor MCP construye la solicitud de monitor con un horario de 30 minutos y la API habilita el juicio de cambio significativo automáticamente.

El juicio de cambio significativo se ejecuta automáticamente cuando goal está configurado. Los webhooks de página exponen isMeaningful y judgment en eventos monitor.page.

Escriba los objetivos como instrucciones de monitor concisas de 2-3 oraciones. Diga qué debería desencadenar una alerta, conserve cualquier alcance que el usuario haya dado e incluya exclusiones específicas de la intención solo cuando sean obvias a partir de la solicitud. El ruido genérico como espacios en blanco, cambios solo de formato, IDs de solicitud, parámetros de seguimiento, metadatos genéricos y elementos de página no relacionados ya son manejados por el juez, así que no los repita en cada objetivo. Si el usuario es vago, mantenga el objetivo amplio; si pide un monitoreo amplio o "cualquier cambio", consérvelo. Si el usuario dice que no le importa algo, inclúyalo explícitamente.

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "page": "https://example.com/pricing",
    "goal": "Alert when pricing, packaging, or launch messaging changes."
  }
}

Múltiples páginas con webhooks:

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "pages": ["https://example.com/pricing", "https://example.com/changelog"],
    "goal": "Alert when pricing, packaging, or launch messaging changes.",
    "webhookUrl": "https://example.com/webhooks/firecrawl"
  }
}

Solicitudes de creación avanzadas:

Pase body cuando necesite objetivos de rastreo, seguimiento de cambios JSON, retención personalizada o control explícito de judgeEnabled.

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "body": {
      "name": "Docs monitor",
      "schedule": { "text": "hourly", "timezone": "UTC" },
      "goal": "Alert when docs pages add, remove, or materially change API behavior.",
      "targets": [{ "type": "crawl", "url": "https://example.com/docs" }]
    }
  }
}

Otras herramientas de monitor:

  • firecrawl_monitor_list: listar monitores.
  • firecrawl_monitor_get: obtener un monitor.
  • firecrawl_monitor_update: actualizar campos incluyendo goal, judgeEnabled, webhook y notification.
  • firecrawl_monitor_run: desencadenar una verificación ahora.
  • firecrawl_monitor_checks: listar verificaciones, opcionalmente filtradas por estado.
  • firecrawl_monitor_check: obtener resultados a nivel de página, incluyendo diff, snapshot, judgment.meaningful y judgment.meaningfulChanges.

Sistema de registro

El servidor incluye registro completo:

  • Estado y progreso de la operación
  • Métricas de rendimiento
  • Monitoreo de uso de créditos
  • Seguimiento de límites de tasa
  • Condiciones de error

Ejemplos de mensajes de registro:

[INFO] Firecrawl MCP Server initialized successfully
[INFO] Starting scrape for URL: https://example.com
[INFO] Batch operation queued with ID: batch_1
[WARNING] Credit usage has reached warning threshold
[ERROR] Rate limit exceeded, retrying in 2s...

Manejo de errores

El servidor proporciona un manejo de errores robusto:

  • Reintentos automáticos para errores transitorios
  • Manejo de límites de tasa con retroceso
  • Mensajes de error detallados
  • Advertencias de uso de créditos
  • Resiliencia de red

Ejemplo de respuesta de error:

{
  "content": [
    {
      "type": "text",
      "text": "Error: Rate limit exceeded. Retrying in 2 seconds..."
    }
  ],
  "isError": true
}

Desarrollo

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

Contribuir

  1. Bifurque el repositorio
  2. Cree su rama de características
  3. Ejecute pruebas: npm test
  4. Envíe una solicitud de extracción

Agradecimientos a los colaboradores

¡Gracias a @vrknetha, @cawstudios por la implementación inicial!

Gracias a MCP.so y Klavis AI por el alojamiento y a @gstarwd, @xiangkaiz y @zihaolin96 por integrar nuestro servidor.

Licencia

Licencia MIT: consulte el archivo LICENSE para más detalles