Firecrawl

официальный

Извлекайте веб-данные с

Что можно делать с Firecrawl MCP?

  • Извлечение структурированных данных с известного URL — Попросите ИИ извлечь определенные поля (например, название, цену) со страницы с помощью firecrawl_scrape и JSON-схемы.
  • Поиск информации в интернете — Попросите ИИ найти релевантные страницы в сети с помощью firecrawl_search, при необходимости извлекая полное содержимое из результатов.
  • Картографирование веб-сайта для обнаружения его URL — Попросите ИИ вывести список всех проиндексированных URL на домене с помощью firecrawl_map перед тем, как решить, какие страницы парсить.
  • Запуск автономного мульти-источникового исследования — Попросите ИИ запустить задачу firecrawl_agent, которая самостоятельно просматривает и собирает данные, а затем опросить firecrawl_agent_status для получения результатов.
  • Взаимодействие с динамической страницей — Попросите ИИ нажать, ввести текст или перейти по странице с помощью firecrawl_interact, указав URL или существующую сессию парсинга.

Документация

Firecrawl MCP Server

Сервер Model Context Protocol (MCP), который предоставляет Firecrawl для MCP-совместимых AI-агентов — поиск, извлечение и взаимодействие с живым вебом для получения чистого, готового к использованию агентом контекста.

Большое спасибо @vrknetha, @knacklabs за первоначальную реализацию!

Возможности

  • Поиск в интернете и получение полного содержимого страниц
  • Извлечение любого URL в чистые, структурированные данные
  • Взаимодействие со страницами — клики, навигация и управление
  • Глубокое исследование с автономным агентом
  • Автоматические повторные попытки и ограничение частоты запросов
  • Поддержка облачного и собственного хостинга
  • Поддержка SSE

Поэкспериментируйте с нашим MCP-сервером на игровой площадке MCP.so или на Klavis AI.

Установка

Размещенный MCP (бесплатный уровень без ключа)

Подключитесь к удаленному размещенному серверу без настройки:

https://mcp.firecrawl.dev/v2/mcp

На бесплатном уровне без ключа scrape, search и interact работают без API-ключа (с ограничением частоты запросов). Для других инструментов, таких как crawl, map, agent и extract, по-прежнему требуется ключ.

По возможности используйте API-ключ или OAuth, когда пользователь может зарегистрироваться. Это открывает полный набор инструментов и более высокие лимиты. С ключом используйте:

https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp

Подробности настройки см. в документации MCP-сервера и руководстве по началу работы для агентов.

Конечная точка только для поиска

Поверхность только для чтения и поиска также размещена по адресу:

https://mcp.firecrawl.dev/v2/mcp-search

Она предоставляет фиксированный набор из шести инструментов только для чтения: firecrawl_search и пять инструментов firecrawl_research_*. Она не выполняет получение содержимого страниц и имеет собственную идентификацию OAuth; полная конечная точка выше не изменяется. Полный контракт см. в docs/search-profile.md.

Запуск с npx

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

Ручная установка

npm install -g firecrawl-mcp

Запуск в Cursor

Настройка Cursor 🖥️ Примечание: Требуется Cursor версии 0.45.6+ Для получения самых актуальных инструкций по настройке обратитесь к официальной документации Cursor по настройке MCP-серверов: Руководство по настройке MCP-сервера Cursor

Чтобы настроить Firecrawl MCP в Cursor v0.48.6

  1. Откройте настройки Cursor
  2. Перейдите в «Функции» > «MCP-серверы»
  3. Нажмите «+ Добавить новый глобальный MCP-сервер»
  4. Введите следующий код:
    {
      "mcpServers": {
        "firecrawl-mcp": {
          "command": "npx",
          "args": ["-y", "firecrawl-mcp"],
          "env": {
            "FIRECRAWL_API_KEY": "YOUR-API-KEY"
          }
        }
      }
    }
    

Чтобы настроить Firecrawl MCP в Cursor v0.45.6

  1. Откройте настройки Cursor
  2. Перейдите в «Функции» > «MCP-серверы»
  3. Нажмите «+ Добавить новый MCP-сервер»
  4. Введите следующее:
    • Имя: "firecrawl-mcp" (или любое другое имя)
    • Тип: "command"
    • Команда: env FIRECRAWL_API_KEY=your-api-key npx -y firecrawl-mcp

Если вы используете Windows и у вас возникают проблемы, попробуйте cmd /c "set FIRECRAWL_API_KEY=your-api-key && npx -y firecrawl-mcp"

Замените your-api-key на ваш API-ключ Firecrawl. Если у вас его еще нет, вы можете создать учетную запись и получить его на https://www.firecrawl.dev/app/api-keys

После добавления обновите список MCP-серверов, чтобы увидеть новые инструменты. Composer Agent будет автоматически использовать Firecrawl MCP, когда это уместно, но вы можете явно запросить его, описав свои потребности в веб-скрапинге. Откройте Composer через Command+L (Mac), выберите «Agent» рядом с кнопкой отправки и введите свой запрос.

Запуск в Windsurf

Добавьте это в ваш ./codeium/windsurf/model_config.json:

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

Запуск в локальном режиме с потоковой передачей HTTP

Чтобы запустить сервер локально с использованием потоковой передачи HTTP вместо стандартного транспорта stdio:

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

Используйте URL: http://localhost:3000/mcp

Установка через Smithery (устаревший способ)

Чтобы установить Firecrawl для Claude Desktop автоматически через Smithery:

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

Запуск в VS Code

Для установки в один клик нажмите одну из кнопок установки ниже...

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

Для ручной установки добавьте следующий блок JSON в файл пользовательских настроек (JSON) в VS Code. Это можно сделать, нажав Ctrl + Shift + P и введя 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}"
        }
      }
    }
  }
}

При желании вы можете добавить его в файл с именем .vscode/mcp.json в вашем рабочем пространстве. Это позволит вам поделиться конфигурацией с другими:

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

Конфигурация

Переменные окружения

Обязательно для облачного API

  • FIRECRAWL_API_KEY: Ваш API-ключ Firecrawl
    • Обязателен при использовании облачного API (по умолчанию)
    • Необязателен при использовании собственного экземпляра с FIRECRAWL_API_URL
  • FIRECRAWL_API_URL (Необязательно): Пользовательская конечная точка API для собственных экземпляров
    • Пример: https://firecrawl.your-domain.com
    • Если не указано, будет использоваться облачный API (требуется API-ключ)

MCP OAuth (токены доступа Bearer)

Размещенный Firecrawl может выдавать OAuth токены доступа (fco_…) через сервер авторизации на firecrawl.dev. Этот MCP-сервер передает любые разрешенные учетные данные в Firecrawl API как Authorization: Bearer ….

  • Транспорты потоковой передачи HTTP (CLOUD_SERVICE=true, HTTP_STREAMABLE_SERVER=true или SSE_LOCAL=true): Клиенты должны отправлять Authorization: Bearer <fco_access_token> в MCP-запросах. Токен OAuth bearer имеет приоритет над x-firecrawl-api-key / x-api-key, если присутствуют оба.
  • stdio: Используйте FIRECRAWL_OAUTH_TOKEN для статического токена доступа или продолжайте использовать FIRECRAWL_API_KEY для API-ключа.

Используйте только токены доступа (fco_…). Токены обновления (fcr_…) должны обмениваться на конечной точке токенов, а не передаваться в API извлечения/поиска.

Поверхность только для поиска (размещенная)

В размещенном режиме (CLOUD_SERVICE=true) второй экземпляр в процессе обслуживает конечную точку только для поиска. Встроенный сервис имеет фиксированный контракт развертывания: nginx направляет /v2/mcp-search на экземпляр на локальном порту 3001, а идентификатор защищенного ресурса OAuth — https://mcp.firecrawl.dev/v2/mcp-search.

FIRECRAWL_MCP_SEARCH_ENABLED (по умолчанию true) — это поддерживаемый операционный переключатель; установите его в false, чтобы предотвратить запуск поискового экземпляра. Процесс Node также принимает FIRECRAWL_MCP_SEARCH_PORT, FIRECRAWL_MCP_SEARCH_ENDPOINT и FIRECRAWL_MCP_SEARCH_RESOURCE_URL для изолированных тестов. Эти переопределения не перенастраивают встроенные маршруты nginx или список разрешений сервера авторизации и не должны использоваться независимо в размещенном развертывании.

Поисковый экземпляр требует аутентификации для каждого запроса (включая tools/list) и отклоняет токены OAuth, аудитория которых не соответствует его собственному ресурсу.

Примеры конфигурации

Для использования облачного API:

export FIRECRAWL_API_KEY=your-api-key

Для собственного экземпляра:

# 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

Использование с Claude Desktop

Добавьте это в ваш claude_desktop_config.json:

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

Как выбрать инструмент

Используйте это руководство, чтобы выбрать правильный инструмент для вашей задачи:

  • Если вы знаете точный URL: используйте scrape (с форматом JSON для структурированных данных)
  • Если у вас несколько известных URL: вызывайте scrape для каждого URL. Если вам специально нужна одна массовая операция API, используйте пакетную конечную точку Firecrawl API вне MCP.
  • Если вам нужно найти URL на сайте: используйте map
  • Если вы хотите найти информацию в интернете: используйте search
  • Если вам нужно сложное исследование по нескольким неизвестным источникам: используйте agent
  • Если вы хотите проанализировать весь сайт или раздел: используйте crawl (с ограничениями!)
  • Если вам нужна интерактивная автоматизация браузера (клик, ввод, навигация): используйте interact с URL для новой страницы или scrape + interact, если вы уже извлекли страницу или вам нужен более точный контроль извлечения

Краткая справочная таблица

ИнструментЛучше всего дляВозвращает
scrapeСодержимое одной страницыJSON (предпочтительно) или markdown
interactВзаимодействие с URL или извлеченной страницейРезультат выполнения + scrapeId для режима URL
mapОбнаружение URL на сайтеURL[]
crawlМногостраничное извлечение (с ограничениями)окончательный статус/данные обхода после внутреннего опроса
parseФайлы и ссылки на размещенные загрузкиmarkdown, JSON или вывод документа
extractСтруктурированное извлечение из URLСтруктурированные данные JSON
searchПоиск информации в интернетеresults[]
agentСложное исследование по нескольким источникамJSON (структурированные данные)
monitorПериодические проверки страницметаданные монитора/проверки и различия
researchИсследование статей и репозиториев GitHubрезультаты исследования и совпадения в репозиториях

Руководство по выбору формата

При использовании scrape выбирайте правильный формат:

  • Формат JSON (рекомендуется в большинстве случаев): Используйте, когда вам нужны конкретные данные со страницы. Определите схему на основе того, что вам нужно извлечь. Это делает ответы небольшими и предотвращает переполнение контекстного окна.
  • Формат Markdown (используйте умеренно): Только когда вам действительно нужно полное содержимое страницы, например, для чтения всей статьи для обобщения или анализа структуры страницы.

Доступные инструменты

1. Инструмент Scrape (firecrawl_scrape)

Извлечение содержимого с одного URL с расширенными опциями.

Лучше всего подходит для:

  • Извлечения содержимого одной страницы, когда вы точно знаете, на какой странице находится информация.

Не рекомендуется для:

  • Извлечения содержимого с нескольких страниц (используйте повторные вызовы scrape для известных URL, или map + scrape для предварительного обнаружения URL, или crawl для полного содержимого страниц)
  • Когда вы не уверены, на какой странице находится информация (используйте search)

Распространенные ошибки:

  • Передача списка URL в один вызов scrape. Вызывайте scrape один раз для каждого URL в MCP. Если вам специально нужна одна массовая операция API, используйте пакетную конечную точку Firecrawl API вне MCP.
  • Использование формата markdown по умолчанию (используйте формат JSON, чтобы извлечь только то, что нужно).

Выбор правильного формата:

  • Формат JSON (предпочтительный): В большинстве случаев используйте формат JSON со схемой для извлечения только необходимых конкретных данных. Это делает ответы целенаправленными и предотвращает переполнение контекстного окна.
  • Формат Markdown: Только когда задача действительно требует полного содержимого страницы (например, обобщение всей статьи, анализ структуры страницы).

Пример запроса:

"Получи детали продукта с https://example.com/product."

Пример использования (формат JSON - предпочтительный):

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

Пример использования (формат markdown - когда нужно полное содержимое):

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

Пример использования (формат branding - извлечение фирменного стиля):

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

Формат Branding: Извлекает комплексную идентичность бренда (цвета, шрифты, типографику, интервалы, логотип, компоненты пользовательского интерфейса) для анализа дизайна или копирования стиля. Конфиденциальность: Установите redactPII: true для возврата содержимого с удаленной личной информацией.

Возвращает:

  • Структурированные данные JSON, markdown, профиль бренда или другие форматы по указанию.

2. Инструмент Map (firecrawl_map)

Сканирование веб-сайта для обнаружения всех проиндексированных URL на сайте.

Лучше всего подходит для:

  • Обнаружения URL на веб-сайте перед тем, как решить, что извлекать
  • Поиска определенных разделов веб-сайта

Не рекомендуется для:

  • Когда вы уже знаете, какой конкретный URL вам нужен (используйте scrape)
  • Когда вам нужно содержимое страниц (используйте scrape после сканирования)

Распространенные ошибки:

  • Использование crawl для обнаружения URL вместо map

Пример запроса:

"Перечисли все URL на example.com."

Пример использования:

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

Возвращает:

  • Массив URL, найденных на сайте

3. Инструмент Search (firecrawl_search)

Поиск в интернете и, при необходимости, извлечение содержимого из результатов поиска.

Лучше всего подходит для:

  • Поиска конкретной информации на нескольких веб-сайтах, когда вы не знаете, на каком сайте есть информация.
  • Когда вам нужно наиболее релевантное содержимое по запросу

Не рекомендуется для:

  • Когда вы уже знаете, какой сайт извлекать (используйте scrape)
  • Когда вам нужен всесторонний охват одного веб-сайта (используйте map или crawl)

Распространенные ошибки:

  • Использование crawl или map для открытых вопросов (вместо этого используйте search)

Пример использования:

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

Установите highlights в true, чтобы запросить релевантные запросу подсветки, или false, чтобы сохранить исходные поисковые сниппеты. Не указывайте этот параметр, чтобы использовать поведение API по умолчанию.

Возвращает:

  • Массив результатов поиска (с опциональным извлечённым содержимым), а также поле id. Передайте этот id в firecrawl_search_feedback после использования результатов, чтобы вернуть 1 кредит (поиск стоит 2) и улучшить качество поиска.

Пример промпта:

«Найди последние исследовательские работы по ИИ, опубликованные в 2023 году.»

3b. Инструмент обратной связи по поиску (firecrawl_search_feedback)

Отправляет структурированную обратную связь по предыдущему результату firecrawl_search. Первая обратная связь для каждого search id возвращает 1 кредит и улучшает качество поиска Firecrawl. Идемпотентна для каждого search id.

Вызывайте после каждого поиска, который вы реально использовали (или который не помог). Плохая/частичная обратная связь с missingContent так же ценна, как и хорошая.

Отказ: установите FIRECRAWL_NO_SEARCH_FEEDBACK=1 (или FIRECRAWL_DISABLE_SEARCH_FEEDBACK=1) в переменных окружения при запуске MCP-сервера. Инструмент firecrawl_search_feedback не будет зарегистрирован, и агенты не смогут его вызвать. Администраторы команды также могут отключить обратную связь на стороне сервера; в этом случае инструмент регистрируется, но всегда возвращает feedbackErrorCode: "TEAM_OPTED_OUT".

Самое важное поле: missingContent. Это массив конкретных фрагментов контента, которые агент ожидал найти, но не нашёл. По одной записи на каждую отсутствующую тему — они агрегируются по командам и указывают нам, что индексировать дальше.

Дневной лимит возврата (на команду, за сутки по UTC, по умолчанию 100 кредитов). Как только creditsRefundedToday команды достигает dailyRefundCap, последующие отправки всё ещё записывают обратную связь, но больше не возвращают кредиты. Ответ устанавливает dailyCapReached: true. Агенты должны прекратить вызов этого инструмента до конца суток по UTC, когда видят этот флаг.

Пример использования:

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

Возвращает:

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

3c. Универсальный инструмент обратной связи (firecrawl_feedback)

Отправляет структурированную обратную связь для завершённого задания конечной точки v2 через /v2/feedback. Используйте для обратной связи на уровне конечной точки по заданиям scrape, parse, map или search. Для качества результатов поиска предпочтительнее использовать firecrawl_search_feedback, так как он включает специфичные для поиска рекомендации.

Делайте обратную связь лаконичной: используйте коды проблем, теги, короткие заметки, URL-адреса, номера страниц и небольшие объекты метаданных. Не включайте необработанные результаты скрапинга/парсинга.

Отказ: установите FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 (или FIRECRAWL_DISABLE_ENDPOINT_FEEDBACK=1) в переменных окружения при запуске MCP-сервера. Инструмент firecrawl_feedback не будет зарегистрирован, и агенты не смогут его вызвать.

Пример использования:

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

Возвращает:

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

4. Инструмент обхода (Crawl) (firecrawl_crawl)

Запускает задание обхода, опрашивает его до достижения конечного состояния и возвращает итоговый статус/данные обхода.

Лучше всего подходит для:

  • Извлечения контента с нескольких связанных страниц, когда требуется полный охват.

Не рекомендуется для:

  • Извлечения контента с одной страницы (используйте scrape)
  • Когда важны лимиты токенов (используйте map + scrape для более строгого контроля)
  • Когда нужны быстрые результаты (обход может быть медленным)

Предупреждение: Ответы обхода могут быть очень большими и превышать лимиты токенов. Ограничьте глубину обхода и количество страниц или используйте map + scrape для более строгого контроля.

Частые ошибки:

  • Установка слишком высокого limit или maxDiscoveryDepth (вызывает переполнение токенов)
  • Использование обхода для одной страницы (используйте scrape)

Пример промпта:

«Получи все записи блога с первых двух уровней example.com/blog.»

Пример использования:

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

Возвращает:

  • Итоговый статус обхода и данные после внутреннего опроса, включая id, status, completed, total, creditsUsed, expiresAt, next и data. Используйте возвращённый id с firecrawl_check_crawl_status, если потребуется перепроверить задание позже.

5. Проверка статуса обхода (firecrawl_check_crawl_status)

Проверяет статус и результаты существующего задания обхода по ID.

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

Возвращает:

  • Ответ включает статус задания обхода:

6. Инструмент парсинга (Parse) (firecrawl_parse)

Парсит локальные файлы или ссылки на размещённые загрузки с помощью конечной точки /v2/parse Firecrawl.

Лучше всего подходит для: PDF-файлов, документов Word, электронных таблиц, HTML-файлов и других документов, требующих вывода в markdown или структурированном JSON. Размещённый MCP поддерживает двухэтапный процесс загрузки по ссылке; локальное прямое чтение файлов требует самостоятельно размещённого FIRECRAWL_API_URL.

Не рекомендуется для: Удалённых URL (используйте scrape), нескольких файлов в одном вызове (вызывайте parse по одному на файл) или действий только в браузере, таких как скриншоты и клики.

Процесс для размещённого MCP: Размещённый MCP не может напрямую читать файловую систему вызывающей стороны. Вызовите firecrawl_parse с filePath, чтобы получить краткосрочную команду загрузки и nextToolCall, загрузите файл локально, затем снова вызовите firecrawl_parse с возвращённым uploadRef. Создание размещённого URL загрузки требует аутентификации Firecrawl или права на работу без ключа. В локальном режиме npx firecrawl-mcp прямой парсинг файлов в настоящее время требует FIRECRAWL_API_URL, указывающего на самостоятельно размещённый API Firecrawl; обычный локальный сервер только с ключом облачного API не может читать и загружать файлы через этот инструмент.

Пример использования:

{
  "name": "firecrawl_parse",
  "arguments": {
    "filePath": "/absolute/path/to/document.pdf",
    "formats": ["markdown"],
    "parsers": ["pdf"],
    "zeroDataRetention": true
  }
}

Возвращает: Распарсенное содержимое документа или инструкции по размещённой загрузке с nextToolCall.

7. Инструмент извлечения (Extract) (firecrawl_extract)

Извлекает структурированную информацию с веб-страниц, используя возможности LLM. Поддерживает как облачный ИИ, так и извлечение с помощью самостоятельно размещённой LLM.

Лучше всего подходит для:

  • Извлечения конкретных структурированных данных, таких как цены, имена, детали.

Не рекомендуется для:

  • Когда нужно полное содержимое страницы (используйте scrape)
  • Когда вы не ищете конкретные структурированные данные

Аргументы:

  • urls: Массив URL-адресов для извлечения информации
  • prompt: Пользовательский промпт для извлечения LLM
  • systemPrompt: Системный промпт для направления LLM
  • schema: JSON-схема для извлечения структурированных данных
  • allowExternalLinks: Разрешить извлечение с внешних ссылок
  • enableWebSearch: Включить веб-поиск для дополнительного контекста
  • includeSubdomains: Включить поддомены в извлечение

При использовании самостоятельно размещённого экземпляра извлечение будет использовать вашу настроенную LLM. Для облачного API используется управляемый сервис LLM Firecrawl. Пример промпта:

«Извлеки название продукта, цену и описание с этих страниц товаров.»

Пример использования:

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

Возвращает:

  • Извлечённые структурированные данные в соответствии с вашей схемой
{
  "content": [
    {
      "type": "text",
      "text": {
        "name": "Example Product",
        "price": 99.99,
        "description": "This is an example product description"
      }
    }
  ],
  "isError": false
}

8. Инструмент агента (Agent) (firecrawl_agent)

Автономный агент веб-исследований. Это отдельный слой ИИ-агента, который самостоятельно просматривает интернет, ищет информацию, перемещается по страницам и извлекает структурированные данные на основе вашего запроса.

Как это работает:

Агент выполняет веб-поиск, переходит по ссылкам, читает страницы и собирает данные автономно. Это работает асинхронно — немедленно возвращает ID задания, а вы опрашиваете firecrawl_agent_status, чтобы проверить завершение и получить результаты.

Асинхронный рабочий процесс:

  1. Вызовите firecrawl_agent с вашим промптом/схемой → возвращает ID задания
  2. Занимайтесь другой работой, пока агент исследует (для сложных запросов могут потребоваться минуты)
  3. Опрашивайте firecrawl_agent_status с ID задания для проверки прогресса
  4. Когда статус «completed», ответ включает извлечённые данные

Лучше всего подходит для:

  • Сложных исследовательских задач, где вы не знаете точные URL-адреса
  • Сбора данных из нескольких источников
  • Поиска информации, разбросанной по интернету
  • Задач, где вы можете заниматься другой работой в ожидании результатов

Не рекомендуется для:

  • Простого одностаничного скрапинга, где вы знаете URL (используйте scrape с форматом JSON — быстрее и дешевле)

Аргументы:

  • prompt: Описание данных, которые вы хотите получить, на естественном языке (обязательно, макс. 10 000 символов)
  • urls: Опциональный массив URL-адресов, чтобы сфокусировать агента на конкретных страницах
  • schema: Опциональная JSON-схема для структурированного вывода

Пример промпта:

«Найди основателей Firecrawl и их биографию»

Пример использования (запуск агента, затем опрос результатов):

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

Затем опрос с помощью firecrawl_agent_status, используя возвращённый ID задания.

Пример использования (с URL-адресами — агент фокусируется на конкретных страницах):

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

Возвращает:

  • ID задания для проверки статуса. Используйте firecrawl_agent_status для опроса результатов.

9. Проверка статуса агента (firecrawl_agent_status)

Проверяет статус задания агента и получает результаты по завершении. Используйте для опроса результатов после запуска агента.

Шаблон опроса: Исследование агента может занимать минуты для сложных запросов. Опрашивайте эту конечную точку периодически (например, каждые 10-30 секунд), пока статус не станет «completed» или «failed».

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

Возможные статусы:

  • processing: Агент всё ещё исследует — проверьте позже
  • completed: Исследование завершено — ответ включает извлечённые данные
  • failed: Произошла ошибка

10. Инструмент взаимодействия (Interact) (firecrawl_interact)

Взаимодействует с новым URL или со страницей, которая уже была открыта с помощью firecrawl_scrape.

Лучше всего подходит для: Кликов, ввода текста, навигации и извлечения состояния с динамических страниц без восстановления устаревших инструментов браузера.

Варианты использования:

  • Передайте url, чтобы извлечь и открыть страницу для взаимодействия за один вызов MCP.
  • Передайте scrapeId, чтобы продолжить взаимодействие с существующей извлечённой страницей.
  • Передайте ровно один из url или scrapeId, плюс либо prompt, либо code.

Пример использования:

{
  "name": "firecrawl_interact",
  "arguments": {
    "url": "https://example.com",
    "prompt": "Click the pricing link and summarize the visible plans"
  }
}

Возвращает: Результат взаимодействия и, для режима URL, производный scrapeId для последующих действий или очистки.

11. Инструмент остановки взаимодействия (Stop Interact) (firecrawl_interact_stop)

Останавливает сеанс взаимодействия для извлечённой страницы, когда вы закончили взаимодействие.

{
  "name": "firecrawl_interact_stop",
  "arguments": {
    "scrapeId": "scrape-id-here"
  }
}

12. Инструменты исследования (Research) (firecrawl_research_*)

Поиск и проверка научных работ и репозиториев GitHub с помощью исследовательских инструментов MCP.

Доступные исследовательские инструменты:

  • firecrawl_research_search_papers: поиск научных работ.
  • firecrawl_research_inspect_paper: проверка одной работы.
  • firecrawl_research_related_papers: поиск связанных работ.
  • firecrawl_research_read_paper: чтение содержимого работы.
  • firecrawl_research_search_github: поиск репозиториев GitHub.

Лучше всего подходит для: Обзора литературы, поиска работ и рабочих процессов обнаружения репозиториев, где агенту нужна сфокусированная исследовательская поверхность вместо общего веб-скрапинга.

13. Инструменты мониторинга (Monitor) (firecrawl_monitor_*)

Создание и управление повторяющимися мониторами страниц. Мониторы выполняют запланированные извлечения или обходы, сравнивают каждый результат с последним сохранённым снимком и могут уведомлять через вебхук или email.

Лучше всего подходит для:

  • Наблюдения за одной или несколькими страницами с течением времени
  • Оповещения о значимых изменениях с использованием цели на простом английском
  • Отслеживания истории проверок и различий на уровне страниц

Рекомендуемый шаблон создания:

Используйте page или pages плюс goal. MCP-сервер создаёт запрос монитора с 30-минутным расписанием, а API автоматически включает оценку значимых изменений.

Оценка значимых изменений запускается автоматически, когда установлен goal. Вебхуки страниц предоставляют isMeaningful и judgment при событиях monitor.page.

Формулируйте цели как краткие инструкции монитора из 2-3 предложений. Укажите, что должно вызывать оповещение, сохраните любую область, заданную пользователем, и включайте специфичные для намерения исключения только тогда, когда они очевидны из запроса. Общий шум, такой как пробелы, изменения только форматирования, ID запросов, параметры отслеживания, общие метаданные и несвязанная хромировка страницы, уже обрабатывается оценщиком, поэтому не повторяйте это в каждой цели. Если пользователь выражается неопределённо, сохраняйте цель широкой; если он просит широкий мониторинг или «любое изменение», сохраните это. Если пользователь говорит, что ему что-то не важно, укажите это явно.

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

Несколько страниц с вебхуками:

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

Расширенные запросы создания:

Передайте body, когда вам нужны цели обхода, отслеживание изменений в JSON, пользовательское хранение или явный контроль 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" }]
    }
  }
}

Другие инструменты мониторинга:

  • firecrawl_monitor_list: список мониторов.
  • firecrawl_monitor_get: получить один монитор.
  • firecrawl_monitor_update: обновить поля, включая goal, judgeEnabled, webhook и notification.
  • firecrawl_monitor_run: запустить проверку сейчас.
  • firecrawl_monitor_delete: удалить монитор (деструктивное действие; вызывайте только если пользователь намерен его удалить).
  • firecrawl_monitor_checks: список проверок, опционально с фильтрацией по статусу.
  • firecrawl_monitor_check: получить результаты на уровне страницы, включая diff, snapshot, judgment.meaningful и judgment.meaningfulChanges.

Система логирования

Сервер включает комплексное логирование:

  • Статус и ход выполнения операций
  • Метрики производительности
  • Отслеживание ограничений скорости
  • Ошибочные состояния

Примеры сообщений лога:

[INFO] Firecrawl MCP Server initialized successfully
[INFO] Starting scrape for URL: https://example.com
[ERROR] Rate limit exceeded

Обработка ошибок

Сервер обеспечивает надежную обработку ошибок:

  • Ошибки ограничения скорости API передаются MCP-клиенту
  • Подробные сообщения об ошибках
  • Устойчивость к сетевым сбоям

Пример ответа с ошибкой:

{
  "content": [
    {
      "type": "text",
      "text": "Error: Rate limit exceeded"
    }
  ],
  "isError": true
}

Разработка

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

Участие в разработке

  1. Сделайте форк репозитория
  2. Создайте ветку для вашей функции
  3. Запустите тесты: npm test
  4. Отправьте pull request

Благодарности участникам

Спасибо @vrknetha, @cawstudios за первоначальную реализацию!

Спасибо MCP.so и Klavis AI за хостинг, а также @gstarwd, @xiangkaiz и @zihaolin96 за интеграцию нашего сервера.

Лицензия

Лицензия MIT — подробности см. в файле LICENSE