Firecrawl

официальный

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

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

  • Scrape a single URL — Запросите чистый Markdown или структурированный JSON с любого известного URL-адреса через firecrawl_scrape, опционально с пользовательской схемой извлечения.
  • Search the web — Используйте firecrawl_search, чтобы получить ранжированные результаты по запросу, опционально загружая содержимое страницы в том же вызове.
  • Discover site URLs — Вызовите firecrawl_map, чтобы перечислить все индексированные URL-адреса на сайте, прежде чем решить, что сканировать.
  • Crawl multiple pages — Используйте firecrawl_crawl для извлечения содержимого со многих страниц сайта, ограниченного параметрами limit и maxDiscoveryDepth.
  • Interact with pages — Управляйте кликами, вводом текста и навигацией на живой странице с помощью firecrawl_interact, продолжая через scrapeId и останавливаясь с firecrawl_interact_stop.
  • Run autonomous research — Запустите firecrawl_agent для многоисточникового исследования, возвращающего структурированный JSON, затем опрашивайте firecrawl_agent_status для получения результатов.

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

Firecrawl MCP Server

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

Огромное спасибо @vrknetha и @knacklabs за первоначальную реализацию!

Возможности

  • Поиск в вебе и получение полного содержимого страниц
  • Поиск по индексу, созданному для агентов-программистов: issues на GitHub, объединённые pull request'ы, README и документация
  • Скрейпинг любого URL в чистые структурированные данные
  • Взаимодействие со страницами — клики, навигация и операции
  • Глубокое исследование с автономным агентом
  • Автоматические повторы и ограничение частоты запросов
  • Поддержка облака и self-hosted развёртывания
  • Поддержка SSE

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

Когда использовать этот сервер

  • Используйте firecrawl_scrape, когда у вас есть известный URL и вы хотите получить его содержимое в виде markdown или JSON, соответствующего предоставленной вами схеме.
  • Используйте firecrawl_map, когда вам нужно обнаружить URL на сайте без получения их содержимого.
  • Используйте firecrawl_crawl, когда вам нужно содержимое многих страниц сайта; задайте limit, includePaths/excludePaths или maxDiscoveryDepth, чтобы ограничить объём.
  • Используйте firecrawl_search, когда вы начинаете с запроса, а не URL, и хотите получить ранжированные веб-результаты; добавьте scrapeOptions, если в том же вызове нужно также получить содержимое страниц (endpoint только для поиска никогда не получает содержимое).
  • Используйте firecrawl_interact, когда странице требуется клик, ввод текста или навигация, прежде чем вы сможете её прочитать — передайте url для новой страницы или scrapeId, чтобы продолжить работу с уже проскрейпленной.
  • Используйте инструменты firecrawl_monitor_*, когда одну и ту же страницу нужно проверять по расписанию с диффами и оповещениями об изменениях, а не получать однократно.
  • Рассмотрите что-то другое, когда вам нужно удерживать открытую браузерную сессию на протяжении многих ваших собственных шагов с собственной логикой повторов и завершения: каждый вызов firecrawl_interact выполняет один ход prompt или code до завершения и возвращает управление — сессия может сохраняться между вызовами через scrapeId и завершается с помощью firecrawl_interact_stop, но вы не можете управлять ею интерактивно шаг за шагом со стороны клиента в рамках одного вызова.

Этот сервер перечисляет 25 инструментов, когда полный профиль регистрируется с настройками по умолчанию (включая инструменты обратной связи, не в режиме локального запуска без ключа). Установка FIRECRAWL_NO_SEARCH_FEEDBACK=1 и/или FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 удаляет соответствующие инструменты обратной связи и уменьшает это число, как и локальный запуск без ключа. Для клиентов с ограничением на количество инструментов: размещённый endpoint без ключа (https://mcp.firecrawl.dev/v2/mcp, без API-ключа) предоставляет только 3 — firecrawl_scrape, firecrawl_search, firecrawl_parse — а выделенный endpoint только для поиска (https://mcp.firecrawl.dev/v2/mcp-search) предоставляет фиксированный набор из 6 инструментов только для чтения.

Установка

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

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

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

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

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

Для интерактивного подключения учётной записи настройте ваш MCP-клиент на использование этого URL сервера. Это MCP endpoint, не браузерная страница; используйте поток подключения учётной записи клиента и не добавляйте вторую запись сервера Firecrawl при повторном подключении:

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

Для подключения через API-ключ (например, для автоматизированной интеграции) оставьте URL сервера как:

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

Затем настройте защищённый заголовок или секрет клиента с помощью:

Authorization: Bearer <FIRECRAWL_API_KEY>

Никогда не помещайте API-ключ в URL сервера. Никогда не помещайте API-ключ в чат агента. Настраивайте его непосредственно в клиенте или менеджере секретов. См. руководство по настройке размещённого MCP и руководство по онбордингу агентов для инструкций, специфичных для клиента.

Endpoint только для поиска

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

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

Она предоставляет фиксированный набор из шести инструментов только для чтения: firecrawl_search, firecrawl_developer_search и четыре инструмента firecrawl_research_*. Она не выполняет получение содержимого страниц и имеет собственную OAuth-идентичность; полный endpoint выше не изменён. См. 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. Перейдите в Features > MCP Servers
  3. Нажмите "+ Add new global MCP server"
  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. Перейдите в Features > MCP Servers
  3. Нажмите "+ Add New MCP Server"
  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"
      }
    }
  }
}

Запуск с Streamable HTTP в локальном режиме

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

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

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

Установка через Smithery (Legacy)

Для автоматической установки 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-блок в файл User Settings (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 (по умолчанию)
    • Необязателен при использовании self-hosted экземпляра с FIRECRAWL_API_URL
  • FIRECRAWL_API_URL (необязательно): Пользовательский API endpoint для self-hosted экземпляров
    • Пример: https://firecrawl.your-domain.com
    • Если не указан, будет использоваться облачный API (требуется API-ключ)

MCP OAuth (bearer access-токены)

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

  • Транспорты HTTP stream (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 для статического access-токена или продолжайте использовать FIRECRAWL_API_KEY для API-ключа.

Используйте только access-токены (fco_…). Refresh-токены (fcr_…) должны обмениваться на token endpoint, а не передаваться в scrape/search API.

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

В размещённом режиме (CLOUD_SERVICE=true) второй внутрипроцессный экземпляр обслуживает endpoint только для поиска. Встроенный сервис имеет фиксированный контракт развёртывания: 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

Для self-hosted экземпляра:

# 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. Если вам конкретно нужна одна bulk-операция API, используйте batch endpoint Firecrawl API вне MCP.
  • Если вам нужно обнаружить URL на сайте: используйте map
  • Если вы хотите искать информацию в вебе: используйте search
  • Если у вас вопрос по программированию (библиотека, контракт API, сообщение об ошибке, известный баг): используйте developer search
  • Если вам нужны научные статьи (биомедицинская, естественнонаучная, клиническая литература или литература arXiv): используйте research tools — они ищут по аннотациям и полному тексту статей. search с categories: ["research"] — это другое: фильтр по сайтам поверх обычных веб-результатов.
  • Если вам нужно многоисточниковое исследование, возвращающее структурированные данные, вы не знаете URL или ответ охватывает несколько сайтов (сущность плюс её поля, список, набор данных): используйте agent
  • Если вы хотите проанализировать целый сайт или раздел: используйте crawl (с ограничениями!)
  • Если вам нужна интерактивная автоматизация браузера (клик, ввод, навигация): используйте interact с URL для новой страницы или scrape + interact, когда вы уже проскрейплели страницу или вам нужен более точный контроль скрейпинга

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

ИнструментЛучше всего подходит дляВозвращает
scrapeСодержимое одной страницыJSON (предпочтительно) или markdown
interactВзаимодействие с URL или проскрейпленной страницейРезультат выполнения + scrapeId для режима URL
mapОбнаружение URL на сайтеURL[]
crawlМногостраничное извлечение (с ограничениями)финальный статус/данные crawl после внутреннего опроса
parseФайлы и размещённые ссылки на загрузкиmarkdown, JSON или вывод документа
searchВеб-поиск информацииresults[]
developerВопросы по программированию по источникам для разработчиковresults[] с отрывками
agentМногоисточниковое исследование, неизвестные или многие сайтыJSON (структурированные данные)
monitorПериодические проверки страницметаданные monitor/check и диффы
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
  }
}

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

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

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

Возвращает:

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

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

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

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

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

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

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

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

  • Использование 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": "remote work stipend policies at tech companies",
    "highlights": true,
    "limit": 5,
    "lang": "en",
    "country": "us",
    "scrapeOptions": {
      "formats": ["markdown"],
      "onlyMainContent": true,
      "redactPII": true
    }
  }
}

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

Для научных статей см. Research Tools: они ищут по аннотациям и полным текстам статей, тогда как categories: ["research"] здесь фильтрует обычные веб-результаты до сайтов, связанных с исследованиями.

Возвращает:

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

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

"Сравните политики компенсации удалённой работы в технологических компаниях."

3b. Инструмент Search Feedback (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. Инструмент Generic Feedback (firecrawl_feedback)

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

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

Отказ: установите 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)

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

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

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

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

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

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

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

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

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

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

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

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

Возвращает:

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

5. Проверка статуса Crawl (firecrawl_check_crawl_status)

Проверяет статус и результаты существующего задания crawl по идентификатору.

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

Возвращает:

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

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. Структурированные данные с Scrape JSON

Для структурированных данных с известной страницы вызовите firecrawl_scrape один раз для каждого URL с formats: ["json"]. Поместите промпт для извлечения и JSON-схему в jsonOptions.

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

Когда URL неизвестны или данные охватывают несколько сайтов, используйте firecrawl_agent для многоисточникового исследования.

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

Автономный веб-исследовательский агент, который возвращает структурированные данные, когда вы не знаете URL или ответ охватывает несколько сайтов. Опишите нужные поля, опционально передайте JSON-схему и начальные URL, и агент выполняет поиск, навигацию, чтение страниц и возвращает JSON, собранный из разных источников. Используйте его для сущности с её полями, для списков и наборов данных, а также для страниц, требующих навигации для доступа к данным. Для одного известного URL используйте firecrawl_scrape с форматом JSON.

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

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

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

  1. Вызовите firecrawl_agent с вашим промптом/схемой → возвращает идентификатор задания
  2. Занимайтесь другой работой, пока агент исследует (для сложных запросов может занять минуты)
  3. Опрашивайте firecrawl_agent_status с идентификатором задания для проверки прогресса
  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, используя возвращённый идентификатор задания.

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

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

Возвращает:

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

9. Проверка статуса Agent (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. Инструмент остановки взаимодействия (firecrawl_interact_stop)

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

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

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

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

Охватывает: аннотации и полные тексты статей по биомедицинской, биологической и клинической литературе (PubMed, bioRxiv, medRxiv), а также arXiv и другие научные источники.

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

  • firecrawl_research_search_papers: поиск метаданных статей и аннотаций по запросу на естественном языке с необязательными фильтрами по автору, категории и дате.
  • firecrawl_research_inspect_paper: получение канонических метаданных для одного идентификатора статьи (arXiv, PMC, PMID или DOI).
  • firecrawl_research_related_papers: расширение от одной или нескольких опорных статей через граф цитирования.
  • firecrawl_research_read_paper: чтение фрагментов полного текста из конкретной статьи.

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

firecrawl_search с categories: ["research"] — это другая поверхность: она фильтрует обычные веб-результаты по сайтам, связанным с исследованиями, и возвращает фрагменты страниц, а не записи статей. Используйте эти инструменты, когда вопрос касается самой литературы, и передавайте несколько различных формулировок одного и того же вопроса — они выдают другие статьи, чем один запрос.

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

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

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

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

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

Используйте 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.

14. Инструмент поиска для разработчиков (firecrawl_developer_search)

Поиск по индексу, созданному для агентов-программистов. Индекс охватывает проблемы GitHub, объединённые pull request'ы, README репозиториев и курируемые сайты документации.

Лучше всего подходит для: вопроса по программированию — поведение кода, библиотека или фреймворк, контракт API, сообщение об ошибке или известная ошибка.

Аргументы:

{
  "name": "firecrawl_developer_search",
  "arguments": {
    "query": "how do I configure retries",
    "k": 10,
    "skills": "only"
  }
}
  • query (обязательный): вопрос разработчика или поисковая фраза.
  • k: количество ранжированных результатов. По умолчанию 10, максимум 100.
  • skills: установите в "only", чтобы искать только файлы навыков агента.

Возвращает: ранжированные результаты. Каждый результат содержит идентификатор, тип источника (issue, pull_request, readme или doc), URL, заголовок и совпадающие фрагменты в Markdown.

firecrawl_search с categories: ["developer"] ищет в том же индексе рядом с веб-результатами. Используйте этот инструмент, когда нужны совпадающие фрагменты, фильтр skills или отсутствие веб-результатов в ответе. Поисковая конечная точка предоставляет оба инструмента, и тот же выбор применим там.

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

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

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

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

[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