Firecrawl MCP Server

oficial

Adiciona capacidades poderosas de raspagem web e busca a clientes LLM como Cursor e Claude.

Documentação

Servidor Firecrawl MCP

Um servidor Model Context Protocol (MCP) que traz o Firecrawl para agentes de IA compatíveis com MCP — pesquise, extraia e interaja com a web ao vivo para obter contexto limpo e pronto para agentes.

Um grande obrigado a @vrknetha, @knacklabs pela implementação inicial!

Funcionalidades

  • Pesquise na web e obtenha o conteúdo completo da página
  • Extraia qualquer URL em dados limpos e estruturados
  • Interaja com páginas — clique, navegue e opere
  • Pesquisa aprofundada com agente autônomo
  • Tentativas automáticas e limitação de taxa
  • Suporte à nuvem e auto-hospedado
  • Suporte a SSE

Experimente nosso Servidor MCP no playground do MCP.so ou no Klavis AI.

Instalação

Executando com npx

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

Instalação Manual

npm install -g firecrawl-mcp

Executando no Cursor

Configurando o Cursor 🖥️ Nota: Requer Cursor versão 0.45.6+ Para obter as instruções de configuração mais atualizadas, consulte a documentação oficial do Cursor sobre configuração de servidores MCP: Guia de Configuração do Servidor MCP no Cursor

Para configurar o Firecrawl MCP no Cursor v0.48.6

  1. Abra as Configurações do Cursor
  2. Vá para Funcionalidades > Servidores MCP
  3. Clique em "+ Adicionar novo servidor MCP global"
  4. Insira o seguinte código:
    {
      "mcpServers": {
        "firecrawl-mcp": {
          "command": "npx",
          "args": ["-y", "firecrawl-mcp"],
          "env": {
            "FIRECRAWL_API_KEY": "YOUR-API-KEY"
          }
        }
      }
    }
    

Para configurar o Firecrawl MCP no Cursor v0.45.6

  1. Abra as Configurações do Cursor
  2. Vá para Funcionalidades > Servidores MCP
  3. Clique em "+ Adicionar Novo Servidor MCP"
  4. Insira o seguinte:
    • Nome: "firecrawl-mcp" (ou seu nome preferido)
    • Tipo: "command"
    • Comando: env FIRECRAWL_API_KEY=your-api-key npx -y firecrawl-mcp

Se você estiver usando Windows e estiver enfrentando problemas, tente cmd /c "set FIRECRAWL_API_KEY=your-api-key && npx -y firecrawl-mcp"

Substitua your-api-key pela sua chave de API do Firecrawl. Se você ainda não tem uma, pode criar uma conta e obtê-la em https://www.firecrawl.dev/app/api-keys

Após adicionar, atualize a lista de servidores MCP para ver as novas ferramentas. O Agente Composer usará automaticamente o Firecrawl MCP quando apropriado, mas você pode solicitá-lo explicitamente descrevendo suas necessidades de extração web. Acesse o Composer via Command+L (Mac), selecione "Agent" ao lado do botão de envio e insira sua consulta.

Executando no Windsurf

Adicione isto ao seu ./codeium/windsurf/model_config.json:

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

Executando com Modo Local HTTP Transmissível

Para executar o servidor usando HTTP Transmissível localmente em vez do transporte stdio padrão:

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

Use a url: http://localhost:3000/mcp

Instalando via Smithery (Legado)

Para instalar o Firecrawl para Claude Desktop automaticamente via Smithery:

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

Executando no VS Code

Para instalação com um clique, clique em um dos botões de instalação abaixo...

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

Para instalação manual, adicione o seguinte bloco JSON ao seu arquivo de Configurações do Usuário (JSON) no VS Code. Você pode fazer isso pressionando Ctrl + Shift + P e digitando 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, você pode adicioná-lo a um arquivo chamado .vscode/mcp.json no seu espaço de trabalho. Isso permitirá que você compartilhe a configuração com outros:

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

Configuração

Variáveis de Ambiente

Obrigatório para API na Nuvem

  • FIRECRAWL_API_KEY: Sua chave de API do Firecrawl
    • Obrigatório ao usar a API na nuvem (padrão)
    • Opcional ao usar instância auto-hospedada com FIRECRAWL_API_URL
  • FIRECRAWL_API_URL (Opcional): Endpoint de API personalizado para instâncias auto-hospedadas
    • Exemplo: https://firecrawl.your-domain.com
    • Se não fornecido, a API na nuvem será usada (requer chave de API)

MCP OAuth (Tokens de acesso Bearer)

O Firecrawl hospedado pode emitir tokens de acesso OAuth (fco_…) através do servidor de autorização em firecrawl.dev. Este servidor MCP encaminha qualquer credencial que resolver para a API Firecrawl como Authorization: Bearer ….

  • Transportes de fluxo HTTP (CLOUD_SERVICE=true, HTTP_STREAMABLE_SERVER=true ou SSE_LOCAL=true): Os clientes devem enviar Authorization: Bearer <fco_access_token> nas requisições MCP. Um token bearer OAuth tem precedência sobre x-firecrawl-api-key / x-api-key quando ambos estão presentes.
  • stdio: Use FIRECRAWL_OAUTH_TOKEN para um token de acesso estático ou continue usando FIRECRAWL_API_KEY para uma chave de API.

Use tokens de acesso (fco_…) apenas. Tokens de atualização (fcr_…) devem ser trocados no endpoint de token, não passados para a API de extração/pesquisa.

Configuração Opcional

Configuração de Tentativas
  • FIRECRAWL_RETRY_MAX_ATTEMPTS: Número máximo de tentativas (padrão: 3)
  • FIRECRAWL_RETRY_INITIAL_DELAY: Atraso inicial em milissegundos antes da primeira tentativa (padrão: 1000)
  • FIRECRAWL_RETRY_MAX_DELAY: Atraso máximo em milissegundos entre tentativas (padrão: 10000)
  • FIRECRAWL_RETRY_BACKOFF_FACTOR: Multiplicador de backoff exponencial (padrão: 2)
Monitoramento de Uso de Créditos
  • FIRECRAWL_CREDIT_WARNING_THRESHOLD: Limiar de aviso de uso de créditos (padrão: 1000)
  • FIRECRAWL_CREDIT_CRITICAL_THRESHOLD: Limiar crítico de uso de créditos (padrão: 100)

Exemplos de Configuração

Para uso da API na nuvem com tentativas personalizadas e monitoramento 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 instância auto-hospedada:

# 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 com Claude Desktop

Adicione isto ao seu 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"
      }
    }
  }
}

Configuração do Sistema

O servidor inclui vários parâmetros configuráveis que podem ser definidos via variáveis de ambiente. Aqui estão os valores padrão se não configurados:

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
  },
};

Essas configurações controlam:

  1. Comportamento de Tentativas

    • Tenta automaticamente requisições com falha devido a limites de taxa
    • Usa backoff exponencial para evitar sobrecarregar a API
    • Exemplo: Com configurações padrão, as tentativas serão feitas em:
      • 1ª tentativa: atraso de 1 segundo
      • 2ª tentativa: atraso de 2 segundos
      • 3ª tentativa: atraso de 4 segundos (limitado pelo maxDelay)
  2. Monitoramento de Uso de Créditos

    • Rastreia o consumo de créditos da API para uso da API na nuvem
    • Fornece avisos em limiares especificados
    • Ajuda a prevenir interrupção inesperada do serviço
    • Exemplo: Com configurações padrão:
      • Aviso em 1000 créditos restantes
      • Alerta crítico em 100 créditos restantes

Limitação de Taxa e Processamento em Lote

O servidor utiliza os recursos integrados de limitação de taxa e processamento em lote do Firecrawl:

  • Tratamento automático de limite de taxa com backoff exponencial
  • Processamento paralelo eficiente para operações em lote
  • Enfileiramento e limitação inteligente de requisições
  • Tentativas automáticas para erros transitórios

Como Escolher uma Ferramenta

Use este guia para selecionar a ferramenta certa para sua tarefa:

  • Se você sabe a(s) URL(s) exata(s) que deseja:
    • Para uma: use scrape (com formato JSON para dados estruturados)
    • Para muitas: use batch_scrape
  • Se você precisa descobrir URLs em um site: use map
  • Se você quer pesquisar na web por informações: use search
  • Se você precisa de pesquisa complexa em múltiplas fontes desconhecidas: use agent
  • Se você quer analisar um site inteiro ou seção: use crawl (com limites!)
  • Se você precisa de automação de navegador interativa (clicar, digitar, navegar): use scrape + interact

Tabela de Referência Rápida

FerramentaMelhor paraRetorna
scrapeConteúdo de página únicaJSON (preferencial) ou markdown
interactInteragir com uma página extraídaResultado da execução
batch_scrapeMúltiplas URLs conhecidasJSON (preferencial) ou markdown[]
mapDescobrir URLs em um siteURL[]
crawlExtração de múltiplas páginas (com limites)markdown/html[]
searchPesquisa web por informaçõesresults[]
agentPesquisa complexa em múltiplas fontesJSON (dados estruturados)

Guia de Seleção de Formato

Ao usar scrape ou batch_scrape, escolha o formato certo:

  • Formato JSON (recomendado para a maioria dos casos): Use quando precisar de dados específicos de uma página. Defina um esquema com base no que você precisa extrair. Isso mantém as respostas pequenas e evita estouro da janela de contexto.
  • Formato Markdown (use com moderação): Apenas quando você genuinamente precisa do conteúdo completo da página, como ler um artigo inteiro para sumarização ou analisar a estrutura da página.

Ferramentas Disponíveis

1. Ferramenta Scrape (firecrawl_scrape)

Extrai conteúdo de uma única URL com opções avançadas.

Melhor para:

  • Extração de conteúdo de página única, quando você sabe exatamente qual página contém a informação.

Não recomendado para:

  • Extrair conteúdo de múltiplas páginas (use batch_scrape para URLs conhecidas, ou map + batch_scrape para descobrir URLs primeiro, ou crawl para conteúdo completo da página)
  • Quando você não tem certeza de qual página contém a informação (use search)

Erros comuns:

  • Usar scrape para uma lista de URLs (use batch_scrape em vez disso).
  • Usar formato markdown por padrão (use formato JSON para extrair apenas o que você precisa).

Escolhendo o formato certo:

  • Formato JSON (preferencial): Para a maioria dos casos de uso, use formato JSON com um esquema para extrair apenas os dados específicos necessários. Isso mantém as respostas focadas e previne estouro da janela de contexto.
  • Formato Markdown: Apenas quando a tarefa genuinamente requer conteúdo completo da página (ex.: sumarizar um artigo inteiro, analisar estrutura da página).

Exemplo de Prompt:

"Obtenha os detalhes do produto de https://example.com/product."

Exemplo de Uso (formato JSON - preferencial):

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

Exemplo de Uso (formato markdown - quando conteúdo completo é necessário):

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

Exemplo de Uso (formato branding - extrair identidade da marca):

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

Formato Branding: Extrai identidade de marca abrangente (cores, fontes, tipografia, espaçamento, logotipo, componentes de UI) para análise de design ou replicação de estilo. Privacidade: Defina redactPII: true para retornar conteúdo com informações de identificação pessoal redigidas.

Retorna:

  • Dados estruturados JSON, markdown, perfil de branding ou outros formatos conforme especificado.

2. Ferramenta Batch Scrape (firecrawl_batch_scrape)

Extrai múltiplas URLs eficientemente com limitação de taxa integrada e processamento paralelo.

Melhor para:

  • Recuperar conteúdo de múltiplas páginas, quando você sabe exatamente quais páginas extrair.

Não recomendado para:

  • Descobrir URLs (use map primeiro se você não souber as URLs)
  • Extrair uma única página (use scrape)

Erros comuns:

  • Usar batch_scrape com muitas URLs de uma vez (pode atingir limites de taxa ou estouro de tokens)

Exemplo de Prompt:

"Obtenha o conteúdo destes três posts de blog: [url1, url2, url3]."

Exemplo de Uso:

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

Retorna:

  • A resposta inclui ID da operação para verificação de status:
{
  "content": [
    {
      "type": "text",
      "text": "Batch operation queued with ID: batch_1. Use firecrawl_check_batch_status to check progress."
    }
  ],
  "isError": false
}

3. Verificar Status do Lote (firecrawl_check_batch_status)

Verifica o status de uma operação em lote.

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

4. Ferramenta Map (firecrawl_map)

Mapeia um site para descobrir todas as URLs indexadas no site.

Melhor para:

  • Descobrir URLs em um site antes de decidir o que extrair
  • Encontrar seções específicas de um site

Não recomendado para:

  • Quando você já sabe qual URL específica precisa (use scrape ou batch_scrape)
  • Quando você precisa do conteúdo das páginas (use scrape após o mapeamento)

Erros comuns:

  • Usar crawl para descobrir URLs em vez de map

Exemplo de Prompt:

"Liste todas as URLs em example.com."

Exemplo de Uso:

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

Retorna:

  • Array de URLs encontradas no site

5. Ferramenta Search (firecrawl_search)

Pesquisa na web e opcionalmente extrai conteúdo dos resultados da pesquisa.

Melhor para:

  • Encontrar informações específicas em múltiplos sites, quando você não sabe qual site tem a informação.
  • Quando você precisa do conteúdo mais relevante para uma consulta

Não recomendado para:

  • Quando você já sabe qual site extrair (use scrape)
  • Quando você precisa de cobertura abrangente de um único site (use map ou crawl)

Erros comuns:

  • Usar crawl ou map para perguntas abertas (use search em vez disso)

Exemplo 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
    }
  }
}

Retorna:

  • Array de resultados da pesquisa (com conteúdo extraído opcional), mais um campo id. Passe esse id para firecrawl_search_feedback depois de usar os resultados para reembolsar 1 crédito (a pesquisa custa 2) e melhorar a qualidade da pesquisa.

Exemplo de Prompt:

"Encontre os artigos de pesquisa mais recentes sobre IA publicados em 2023."

5b. Ferramenta Search Feedback (firecrawl_search_feedback)

Envia feedback estruturado sobre um resultado anterior de firecrawl_search. O primeiro feedback por id de pesquisa reembolsa 1 crédito e melhora a qualidade da pesquisa do Firecrawl. Idempotente por id de pesquisa.

Chame isso após cada pesquisa que você realmente usar (ou que não ajudou). Feedback ruim/parcial com missingContent é tão valioso quanto feedback bom.

Opt out: defina FIRECRAWL_NO_SEARCH_FEEDBACK=1 (ou FIRECRAWL_DISABLE_SEARCH_FEEDBACK=1) no ambiente ao iniciar o servidor MCP. A ferramenta firecrawl_search_feedback não será registrada, então os agentes não podem chamá-la. Administradores de equipe também podem desabilitar o feedback no lado do servidor; nesse caso, a ferramenta é registrada, mas sempre retorna feedbackErrorCode: "TEAM_OPTED_OUT".

Campo mais importante: missingContent. É um array de partes específicas de conteúdo que o agente esperava encontrar, mas não encontrou. Uma entrada por tópico faltante — elas se agregam entre equipes e nos dizem o que indexar a seguir.

Limite diário de reembolso (por equipe, por dia UTC, padrão 100 créditos). Uma vez que o creditsRefundedToday de uma equipe atinja dailyRefundCap, envios subsequentes ainda registram feedback, mas não reembolsam mais créditos. A resposta define dailyCapReached: true. Os agentes devem parar de chamar esta ferramenta pelo resto do dia UTC quando virem essa flag.

Exemplo 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'"
  }
}

Retorna:

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

5c. Ferramenta Generic Feedback (firecrawl_feedback)

Envia feedback estruturado para um job de endpoint v2 concluído através de /v2/feedback. Use isso para feedback em nível de endpoint em jobs de scrape, parse, map ou search. Para qualidade de resultado de pesquisa especificamente, prefira firecrawl_search_feedback porque inclui orientação específica de pesquisa.

Mantenha o feedback conciso: use códigos de problema, tags, notas curtas, URLs, números de página e pequenos objetos de metadados. Não inclua saídas brutas de scrape/parse.

Opt out: defina FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 (ou FIRECRAWL_DISABLE_ENDPOINT_FEEDBACK=1) no ambiente ao iniciar o servidor MCP. A ferramenta firecrawl_feedback não será registrada, então os agentes não podem chamá-la.

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

Retorna:

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

6. Ferramenta Crawl (firecrawl_crawl)

Inicia um job de crawl assíncrono em um site e extrai conteúdo de todas as páginas.

Melhor para:

  • Extrair conteúdo de múltiplas páginas relacionadas, quando você precisa de cobertura abrangente.

Não recomendado para:

  • Extrair conteúdo de uma única página (use scrape)
  • Quando limites de token são uma preocupação (use map + batch_scrape)
  • Quando você precisa de resultados rápidos (o crawling pode ser lento)

Aviso: Respostas de crawl podem ser muito grandes e podem exceder limites de token. Limite a profundidade do crawl e o número de páginas, ou use map + batch_scrape para melhor controle.

Erros comuns:

  • Definir limit ou maxDepth muito alto (causa estouro de token)
  • Usar crawl para uma única página (use scrape em vez disso)

Exemplo de Prompt:

"Obtenha todos os posts do blog dos primeiros dois níveis de example.com/blog."

Exemplo de Uso:

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

Retorna:

  • A resposta inclui ID da operação para verificação de status:
{
  "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 Status do Crawl (firecrawl_check_crawl_status)

Verifica o status de um job de crawl.

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

Retorna:

  • A resposta inclui o status do job de crawl:

8. Ferramenta Extract (firecrawl_extract)

Extrai informações estruturadas de páginas web usando capacidades de LLM. Suporta tanto IA na nuvem quanto extração LLM auto-hospedada.

Melhor para:

  • Extrair dados estruturados específicos como preços, nomes, detalhes.

Não recomendado para:

  • Quando você precisa do conteúdo completo de uma página (use scrape)
  • Quando você não está procurando dados estruturados específicos

Argumentos:

  • urls: Array de URLs para extrair informações
  • prompt: Prompt personalizado para a extração LLM
  • systemPrompt: Prompt do sistema para guiar o LLM
  • schema: Esquema JSON para extração de dados estruturados
  • allowExternalLinks: Permitir extração de links externos
  • enableWebSearch: Habilitar pesquisa web para contexto adicional
  • includeSubdomains: Incluir subdomínios na extração

Ao usar uma instância auto-hospedada, a extração usará seu LLM configurado. Para API na nuvem, usa o serviço LLM gerenciado do Firecrawl. Exemplo de Prompt:

"Extraia o nome do produto, preço e descrição destas páginas de produto."

Exemplo 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
  }
}

Retorna:

  • Dados estruturados extraídos conforme definido pelo seu esquema
{
  "content": [
    {
      "type": "text",
      "text": {
        "name": "Example Product",
        "price": 99.99,
        "description": "This is an example product description"
      }
    }
  ],
  "isError": false
}

9. Ferramenta Agent (firecrawl_agent)

Agente de pesquisa web autônomo. Esta é uma camada de agente de IA separada que navega independentemente na internet, pesquisa informações, navega por páginas e extrai dados estruturados com base na sua consulta.

Como funciona:

O agente realiza pesquisas na web, segue links, lê páginas e coleta dados autonomamente. Isso é executado assincronamente - retorna um ID de job imediatamente, e você consulta firecrawl_agent_status para verificar quando estiver completo e recuperar os resultados.

Fluxo de trabalho assíncrono:

  1. Chame firecrawl_agent com seu prompt/esquema → retorna ID do job
  2. Faça outro trabalho enquanto o agente pesquisa (pode levar minutos para consultas complexas)
  3. Consulte firecrawl_agent_status com o ID do job para verificar o progresso
  4. Quando o status for "completed", a resposta inclui os dados extraídos

Melhor para:

  • Tarefas de pesquisa complexas onde você não sabe as URLs exatas
  • Coleta de dados de múltiplas fontes
  • Encontrar informações espalhadas pela web
  • Tarefas onde você pode fazer outro trabalho enquanto espera pelos resultados

Não recomendado para:

  • Extração simples de página única onde você sabe a URL (use scrape com formato JSON - mais rápido e barato)

Argumentos:

  • prompt: Descrição em linguagem natural dos dados que você deseja (obrigatório, máximo 10.000 caracteres)
  • urls: Array opcional de URLs para focar o agente em páginas específicas
  • schema: Esquema JSON opcional para saída estruturada

Exemplo de Prompt:

"Encontre os fundadores do Firecrawl e suas origens"

Exemplo de Uso (iniciar agente, depois 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" }
            }
          }
        }
      }
    }
  }
}

Depois consulte com firecrawl_agent_status usando o ID do job retornado.

Exemplo de Uso (com URLs - agente foca em 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"
  }
}

Retorna:

  • ID do job para verificação de status. Use firecrawl_agent_status para consultar resultados.

10. Verificar Status do Agente (firecrawl_agent_status)

Verifica o status de um job de agente e recupera resultados quando completo. Use isso para consultar resultados após iniciar um agente.

Padrão de consulta: A pesquisa do agente pode levar minutos para consultas complexas. Consulte este endpoint periodicamente (ex.: a cada 10-30 segundos) até que o status seja "completed" ou "failed".

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

Status possíveis:

  • processing: Agente ainda está pesquisando - verifique novamente mais tarde
  • completed: Pesquisa concluída - resposta inclui os dados extraídos
  • failed: Ocorreu um erro

11. Ferramentas de Monitoramento (firecrawl_monitor_*)

Cria e gerencia monitores de página recorrentes. Os monitores executam extrações ou crawls agendados, comparam cada resultado com o último snapshot retido e podem notificar por webhook ou e-mail.

Melhor para:

  • Observar uma página ou algumas páginas ao longo do tempo
  • Alertar sobre mudanças significativas usando um objetivo em linguagem simples
  • Rastrear histórico de verificações e diferenças em nível de página

Padrão de criação recomendado:

Use page ou pages mais goal. O servidor MCP constrói a requisição de monitor com um agendamento de 30 minutos e a API habilita o julgamento de mudanças significativas automaticamente.

O julgamento de mudanças significativas é executado automaticamente quando goal está definido. Webhooks de página expõem isMeaningful e judgment em eventos monitor.page.

Escreva objetivos como instruções de monitor concisas de 2-3 frases. Diga o que deve disparar um alerta, preserve qualquer escopo que o usuário deu e inclua exclusões específicas de intenção apenas quando óbvias pela solicitação. Ruídos genéricos como espaços em branco, mudanças apenas de formatação, IDs de requisição, parâmetros de rastreamento, metadados genéricos e cromo de página não relacionado já são tratados pelo julgador, então não os repita em cada objetivo. Se o usuário for vago, mantenha o objetivo amplo; se eles pedirem monitoramento amplo ou "qualquer mudança", preserve isso. Se o usuário disser que não se importa com algo, inclua isso explicitamente.

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

Múltiplas páginas com 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"
  }
}

Requisições de criação avançadas:

Passe body quando precisar de alvos de crawl, rastreamento de mudanças JSON, retenção personalizada ou controle 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" }]
    }
  }
}

Outras ferramentas de monitor:

  • firecrawl_monitor_list: lista monitores.
  • firecrawl_monitor_get: obtém um monitor.
  • firecrawl_monitor_update: atualiza campos incluindo goal, judgeEnabled, webhook e notification.
  • firecrawl_monitor_run: dispara uma verificação agora.
  • firecrawl_monitor_checks: lista verificações, opcionalmente filtradas por status.
  • firecrawl_monitor_check: obtém resultados em nível de página, incluindo diff, snapshot, judgment.meaningful e judgment.meaningfulChanges.

Sistema de Logging

O servidor inclui logging abrangente:

  • Status e progresso da operação
  • Métricas de desempenho
  • Monitoramento de uso de créditos
  • Rastreamento de limite de taxa
  • Condições de erro

Exemplo de mensagens de log:

[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...

Tratamento de Erros

O servidor fornece tratamento de erros robusto:

  • Tentativas automáticas para erros transitórios
  • Tratamento de limite de taxa com backoff
  • Mensagens de erro detalhadas
  • Avisos de uso de créditos
  • Resiliência de rede

Exemplo de resposta de erro:

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

Desenvolvimento

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

Contribuindo

  1. Faça um fork do repositório
  2. Crie seu branch de funcionalidade
  3. Execute testes: npm test
  4. Envie um pull request

Agradecimentos aos contribuidores

Obrigado a @vrknetha, @cawstudios pela implementação inicial!

Obrigado ao MCP.so e Klavis AI por hospedar e @gstarwd, @xiangkaiz e @zihaolin96 por integrar nosso servidor.

Licença

Licença MIT - veja o arquivo LICENSE para detalhes