mcp-server-firecrawl

MIT License
8,264
2,147
  • Apple
  • Linux

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Provides integration with Windsurf (Codeium's application) for web scraping, content extraction, and deep research capabilities.

  • Supports converting web content to Markdown format for better readability and integration with documentation systems.

Servidor MCP de Firecrawl

Una implementación de servidor de Protocolo de contexto de modelo (MCP) que se integra con Firecrawl para capacidades de raspado web.

¡Muchas gracias a @vrknetha y @cawstudios por la implementación inicial!

También puedes experimentar con nuestro servidor MCP en el área de juegos de MCP.so. Gracias a MCP.so por el alojamiento y a @gstarwd por integrar nuestro servidor.

Características

  • Soporte para raspar, rastrear, buscar, extraer, investigar en profundidad y raspar por lotes
  • Web scraping con renderizado JS
  • Descubrimiento y rastreo de URL
  • Búsqueda web con extracción de contenido
  • Reintentos automáticos con retroceso exponencial
    • Procesamiento por lotes eficiente con limitación de velocidad incorporada
  • Monitoreo del uso de crédito para la API en la nube
  • Sistema de registro integral
  • Compatibilidad con instancias de Firecrawl alojadas en la nube y autoalojadas
  • Compatibilidad con ventanas gráficas móviles y de escritorio
  • Filtrado de contenido inteligente con inclusión/exclusión de etiquetas

Instalación

Ejecutando con npx

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

Instalación manual

npm install -g firecrawl-mcp

Ejecutando en el cursor

Configuración de Cursor 🖥️ Nota: Requiere la versión 0.45.6+ de Cursor Para obtener las instrucciones de configuración más actualizadas, consulte 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.45.6

  1. Abrir configuración del cursor
  2. Vaya a Características > Servidores MCP
  3. Haga clic en "+ Agregar nuevo servidor MCP"
  4. Introduzca lo siguiente:
    • Nombre: "firecrawl-mcp" (o el nombre que prefiera)
    • Tipo: "comando"
    • Comando: env FIRECRAWL_API_KEY=your-api-key npx -y firecrawl-mcp

Para configurar Firecrawl MCP en Cursor v0.48.6

  1. Abrir configuración del cursor
  2. Vaya a Características > Servidores MCP
  3. Haga clic en "+ Agregar nuevo servidor MCP global".
  4. Introduzca el siguiente código:
    { "mcpServers": { "firecrawl-mcp": { "command": "npx", "args": ["-y", "firecrawl-mcp"], "env": { "FIRECRAWL_API_KEY": "YOUR-API-KEY" } } } }

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

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

Tras añadir, actualice la lista de servidores MCP para ver las nuevas herramientas. El agente de Composer usará automáticamente Firecrawl MCP cuando corresponda, pero puede solicitarlo explícitamente describiendo sus necesidades de web scraping. Acceda a Composer con Comando+L (Mac), seleccione "Agente" junto al botón de envío e introduzca su consulta.

Corriendo en Windsurf

Agregue esto a su ./codeium/windsurf/model_config.json :

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

Instalación mediante herrería (legado)

Para instalar Firecrawl para Claude Desktop automáticamente a través de Smithery :

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

Configuración

Variables de entorno

Requerido para la API de la nube

  • FIRECRAWL_API_KEY : Su clave API de Firecrawl
    • Obligatorio al utilizar la API en la nube (predeterminado)
    • Opcional cuando se utiliza una instancia autohospedada con FIRECRAWL_API_URL
  • FIRECRAWL_API_URL (opcional): punto final de API personalizado para instancias autohospedadas
    • Ejemplo: https://firecrawl.your-domain.com
    • Si no se proporciona, se utilizará la API en la nube (requiere clave API)

Configuración opcional

Reintentar configuración
  • 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 (valor predeterminado: 1000)
  • FIRECRAWL_RETRY_MAX_DELAY : Retraso máximo en milisegundos entre reintentos (valor predeterminado: 10000)
  • FIRECRAWL_RETRY_BACKOFF_FACTOR : Multiplicador de retroceso exponencial (predeterminado: 2)
Monitoreo del uso del crédito
  • FIRECRAWL_CREDIT_WARNING_THRESHOLD : Umbral de advertencia de uso de crédito (predeterminado: 1000)
  • FIRECRAWL_CREDIT_CRITICAL_THRESHOLD : Umbral crítico de uso de crédito (predeterminado: 100)

Ejemplos de configuración

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

# 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 autohospedada:

# 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

Agregue esto a su 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 mediante variables de entorno. Estos son 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 reintento
    • Reintenta automáticamente las solicitudes fallidas debido a los límites de velocidad
    • Utiliza un retroceso exponencial para evitar saturar la API
    • Ejemplo: Con la configuración predeterminada, se realizarán reintentos en:
      • 1er reintento: 1 segundo de retraso
      • 2.º reintento: 2 segundos de retraso
      • 3.er reintento: 4 segundos de retraso (limitado a maxDelay)
  2. Monitoreo del uso del crédito
    • Realiza un seguimiento del consumo de créditos API para el uso de API en la nube
    • Proporciona advertencias en umbrales específicos
    • Ayuda a prevenir interrupciones inesperadas del servicio
    • Ejemplo: Con configuración predeterminada:
      • Advertencia: quedan 1000 créditos
      • Alerta crítica cuando quedan 100 créditos

Limitación de velocidad y procesamiento por lotes

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

  • Manejo automático del límite de velocidad con retroceso exponencial
  • Procesamiento paralelo eficiente para operaciones por lotes
  • Colas y limitación de solicitudes inteligentes
  • Reintentos automáticos para errores transitorios

Herramientas disponibles

1. Herramienta de raspado ( firecrawl_scrape )

Extraiga contenido de una única URL con opciones avanzadas.

{ "name": "firecrawl_scrape", "arguments": { "url": "https://example.com", "formats": ["markdown"], "onlyMainContent": true, "waitFor": 1000, "timeout": 30000, "mobile": false, "includeTags": ["article", "main"], "excludeTags": ["nav", "footer"], "skipTlsVerification": false } }

2. Herramienta de raspado por lotes ( firecrawl_batch_scrape )

Extraiga múltiples URL de manera eficiente con limitación de velocidad integrada y procesamiento paralelo.

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

La respuesta incluye el ID de la 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 el estado del lote ( firecrawl_check_batch_status )

Comprobar el estado de una operación por lotes.

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

Busque en la web y, opcionalmente, extraiga contenido de los resultados de búsqueda.

{ "name": "firecrawl_search", "arguments": { "query": "your search query", "limit": 5, "lang": "en", "country": "us", "scrapeOptions": { "formats": ["markdown"], "onlyMainContent": true } } }

5. Herramienta de rastreo ( firecrawl_crawl )

Inicie un rastreo asincrónico con opciones avanzadas.

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

6. Herramienta de extracción ( firecrawl_extract )

Extraiga información estructurada de páginas web con las capacidades de LLM. Compatible con IA en la nube y extracción de LLM autoalojada.

{ "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 } }

Ejemplo de respuesta:

{ "content": [ { "type": "text", "text": { "name": "Example Product", "price": 99.99, "description": "This is an example product description" } } ], "isError": false }

Opciones de la herramienta de extracción:

  • urls : Matriz de URL de las que extraer información
  • prompt : Aviso personalizado para la extracción de LLM
  • systemPrompt : mensaje del sistema para guiar al LLM
  • schema : esquema JSON para extracción de datos estructurados
  • allowExternalLinks : Permitir la extracción de enlaces externos
  • enableWebSearch : Habilita la búsqueda web para contexto adicional
  • includeSubdomains : Incluir subdominios en la extracción

Al usar una instancia autoalojada, la extracción usará el LLM configurado. Para la API en la nube, se usa el servicio LLM administrado de Firecrawl.

7. Herramienta de investigación profunda (firecrawl_deep_research)

Realice una investigación web profunda sobre una consulta utilizando rastreo inteligente, búsqueda y análisis LLM.

{ "name": "firecrawl_deep_research", "arguments": { "query": "how does carbon capture technology work?", "maxDepth": 3, "timeLimit": 120, "maxUrls": 50 } }

Argumentos:

  • consulta (cadena, obligatoria): la pregunta de investigación o el tema a explorar.
  • maxDepth (número, opcional): profundidad recursiva máxima para rastreo/búsqueda (predeterminado: 3).
  • timeLimit (número, opcional): límite de tiempo en segundos para la sesión de investigación (predeterminado: 120).
  • maxUrls (número, opcional): número máximo de URL a analizar (predeterminado: 50).

Devoluciones:

  • Análisis final generado por un LLM basado en investigación. (data.finalAnalysis)
  • También puede incluir actividades estructuradas y fuentes utilizadas en el proceso de investigación.

8. Herramienta para generar LLMs.txt (firecrawl_generate_llmstxt)

Genere un archivo llms.txt estandarizado (y, opcionalmente, llms-full.txt) para un dominio determinado. Este archivo define cómo deben interactuar los modelos de lenguaje grandes con el sitio.

{ "name": "firecrawl_generate_llmstxt", "arguments": { "url": "https://example.com", "maxUrls": 20, "showFullText": true } }

Argumentos:

  • url (cadena, obligatoria): la URL base del sitio web que se analizará.
  • maxUrls (número, opcional): número máximo de URL a incluir (predeterminado: 10).
  • showFullText (booleano, opcional): si se debe incluir el contenido de llms-full.txt en la respuesta.

Devoluciones:

  • Contenido del archivo llms.txt generado y, opcionalmente, el llms-full.txt (data.llmstxt y/o data.llmsfulltxt)

Sistema de registro

El servidor incluye un registro completo:

  • Estado y progreso de la operación
  • Métricas de rendimiento
  • Monitoreo del uso del crédito
  • Seguimiento del límite de velocidad
  • 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 robusto de errores:

  • Reintentos automáticos para errores transitorios
  • Manejo del límite de velocidad con retroceso
  • Mensajes de error detallados
  • Advertencias sobre el uso del crédito
  • Resiliencia de la 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

Contribuyendo

  1. Bifurcar el repositorio
  2. Crea tu rama de funciones
  3. Ejecutar pruebas: npm test
  4. Enviar una solicitud de extracción

Licencia

Licencia MIT: consulte el archivo de LICENCIA para obtener más detalles

ID: 57mideuljt