Firecrawl MCP

официальный

Добавляет мощные возможности веб-скрапинга и поиска для LLM-клиентов, таких как Cursor и Claude.

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

  • Поиск информации в интернете — используйте firecrawl_search для поиска релевантных страниц в сети, если вы не знаете, на каком сайте находится ответ.
  • Извлечение структурированных данных из известного URL — вызовите firecrawl_scrape с JSON-схемой, чтобы извлечь только нужные поля с одной страницы.
  • Обнаружение всех URL на сайте — запустите firecrawl_map, чтобы получить список проиндексированных страниц перед решением, что парсить.
  • Автономное многоисточниковое исследование — запустите задачу firecrawl_agent и опрашивайте firecrawl_agent_status для сложного сбора данных с нескольких сайтов.
  • Взаимодействие с динамическими страницами — используйте firecrawl_interact, чтобы кликать, вводить текст или перемещаться по странице и получать её итоговое состояние.
  • Разбор локальных документов — отправляйте PDF, файлы Word или электронные таблицы через firecrawl_parse, чтобы получить чистый Markdown или структурированный вывод.

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

Firecrawl MCP Server

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

Большое спасибо @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 будет автоматически использовать 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. Первая обратная связь для каждого идентификатора поиска возвращает 1 кредит и улучшает качество поиска Firecrawl. Идемпотентна для каждого идентификатора поиска.

Вызывайте после каждого поиска, который вы действительно использовали (или который не помог). Плохая/частичная обратная связь с 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 предложений. Укажите, что должно вызывать оповещение, сохраните любые рамки, заданные пользователем, и включайте специфичные для намерения исключения только тогда, когда они очевидны из запроса. Общий шум, такой как пробелы, изменения только форматирования, идентификаторы запросов, параметры отслеживания, общие метаданные и несвязанная оболочка страницы, уже обрабатывается оценщиком, поэтому не повторяйте это в каждой цели. Если пользователь формулирует расплывчато, сохраняйте цель широкой; если он просит широкий мониторинг или «любое изменение», сохраните это. Если пользователь говорит, что что-то его не волнует, укажите это явно.

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