Firecrawl MCP

MCP MCP Servers Open Source

MCP-сервер Firecrawl для интеллектуального веб-скрапинга: crawl, scrape, extract структурированных данных с сайтов прямо в AI-агент через единое API.

v0.1
v3.2.1
26.09.2025 current
Добавлен 03.07.2026 · Обновлён 03.07.2026 · MCP Servers
Установка
Требуется Firecrawl API Key: https://www.firecrawl.dev

# Claude Desktop — claude_desktop_config.json:
{
  "mcpServers": {
    "firecrawl": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": { "FIRECRAWL_API_KEY": "fc-ВАШ_КЛЮЧ" }
    }
  }
}

# Claude Code (CLI):
claude mcp add firecrawl -e FIRECRAWL_API_KEY=fc-ВАШ_КЛЮЧ -- npx -y firecrawl-mcp

# OpenCode — ~/.config/opencode/opencode.json:
{
  "mcp": {
    "firecrawl": {
      "type": "local",
      "command": ["npx", "-y", "firecrawl-mcp"],
      "environment": { "FIRECRAWL_API_KEY": "fc-ВАШ_КЛЮЧ" }
    }
  }
}
переведено ИИ

<img src="https://raw.githubusercontent.com/firecrawl/firecrawl-mcp-server/main/img/fire.png" height="140"

Сервер Firecrawl MCP

Сервер 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-сервера и руководстве по внедрению агента.

Запуск через 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. Введите следующий код: json { "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. Введите следующее:
  5. Name: "firecrawl-mcp" (или ваше предпочтительное имя)
  6. Type: "command"
  7. 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 на ваш Firecrawl API-ключ. Если у вас его еще нет, вы можете создать учетную запись и получить его на https://www.firecrawl.dev/app/api-keys

После добавления обновите список MCP-серверов, чтобы увидеть новые инструменты. Композиторный агент будет автоматически использовать Firecrawl MCP при необходимости, но вы можете явно запросить его, описав ваши потребности в веб-скрапинге. Доступ к Композитору через 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 (устаревший метод)

Для автоматической установки Firecrawl для Claude Desktop через Smithery:

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

Запуск в VS Code

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

Установить с помощью NPX в VS Code Установить с помощью NPX в 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: Ваш Firecrawl API-ключ
  • Требуется при использовании облачного API (по умолчанию)
  • Необязательно при использовании самостоятельного экземпляра с FIRECRAWL_API_URL
  • FIRECRAWL_API_URL (Необязательно): Пользовательская конечная точка API для самостоятельных экземпляров
  • Пример: https://firecrawl.your-domain.com
  • Если не указано, будет использоваться облачный API (требуется API-ключ)

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

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

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

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

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

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

export FIRECRAWL_API_KEY=your-api-key

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

# Требуется для самостоятельного экземпляра
export FIRECRAWL_API_URL=https://firecrawl.your-domain.com

# Необязательная аутентификация для самостоятельного экземпляра
export FIRECRAWL_API_KEY=your-api-key  # Если ваш экземпляр требует аутентификации

Использование с 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-адрес: используйте скрап (с JSON-форматом для структурированных данных)
  • Если у вас есть несколько известных URL-адресов: вызовите скрап для каждого URL. Если вам нужна одна массовая операция API, используйте пакетный эндпоинт Firecrawl API вне MCP.
  • Если вам нужно найти URL-адреса на сайте: используйте карта
  • Если вы хотите искать информацию в интернете: используйте поиск
  • Если вам нужен сложный анализ по нескольким неизвестным источникам: используйте агент
  • Если вы хотите проанализировать целый сайт или его раздел: используйте ползание (с ограничениями!)
  • Если вам нужна интерактивная автоматизация браузера (нажатия, ввод текста, навигация): используйте взаимодействие с URL для новой страницы или скрап + взаимодействие, если вы уже получили данные страницы или вам нужно более тонкое управление процессом скрапинга.

Краткая таблица сравнения

Инструмент Лучше всего подходит для Возвращает
скрап Содержимое одной страницы JSON (предпочтительно) или markdown
взаимодействие Взаимодействие с URL или уже полученной страницей Результат выполнения + scrapeId для режима URL
карта Обнаружение URL-адресов на сайте URL[]
ползание Извлечение данных с нескольких страниц (с ограничениями) Финальный статус/данные после внутреннего опроса
разбор Файлы и ссылки на загруженные документы markdown, JSON или другой формат документа
извлечение Структурированное извлечение из URL JSON структурированные данные
поиск Веб-поиск информации results[]
агент Сложные исследования из нескольких источников JSON (структурированные данные)
мониторинг Периодическая проверка страниц метаданные проверки/мониторинга и отличия
исследование Анализ научных статей и репозиториев GitHub Результаты исследования и совпадения по репозиториям

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

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

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

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

1. Инструмент скрапинга (firecrawl_scrape)

Получает содержимое с одной URL-страницы с расширенными опциями.

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

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

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

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

Типичные ошибки:

  • Передача списка URL в один вызов скрап. В MCP вызывайте скрап один раз для каждого URL. Если вам нужна одна массовая операция 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: Извлекает комплексную бренд-айдентику (цвета, шрифты, типографику, отступы, логотип, UI-компоненты) для анализа дизайна или репликации стиля. Конфиденциальность: Установите redactPII: true, чтобы возвращать контент с замаскированной персональной идентифицирующей информацией.

Возвращает:

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

2. Инструмент карты (firecrawl_map)

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

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

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

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

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

Типичные ошибки:

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

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

«Перечислите все URL на example.com.»

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

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

Возвращает:

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

3. Инструмент поиска (firecrawl_search)

Ищет в интернете и опционально извлекает контент из результатов поиска.

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

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

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

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

Типичные ошибки:

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

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

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

Возвращает:

  • Массив результатов поиска (с опциональным полученным контентом), плюс поле 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'"
  }
}

Возвращает:

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

3c. Инструмент Общей Обратной Связи (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": "Таблица с ценами отсутствовала в markdown-выводе.",
    "url": "https://example.com/pricing",
    "pageNumbers": [1],
    "metadata": {
      "format": "markdown"
    }
  }
}

Возвращает:

  • JSON-ответ: { success, feedbackId, creditsRefunded, creditsRefundedToday?, dailyRefundCap?, dailyCapReached?, alreadySubmitted?, warning? }.

4. Инструмент Сканирования (firecrawl_crawl)

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

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

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

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

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

Предупреждение: Ответы сканирования могут быть очень большими и превышать лимиты токенов. Ограничьте глубину сканирования и количество страниц, или используйте 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
  }
}

Возвращает:

  • Итоговый статус и данные сканирования после внутреннего опроса, включая 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. Инструмент Парсинга (firecrawl_parse)

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

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

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

Процесс для хостинговой версии MCP: Хостинговая версия MCP не может напрямую читать файловую систему вызывающего приложения. Вызовите firecrawl_parse с параметром filePath, чтобы получить кратковременную команду загрузки и nextToolCall, загрузите файл локально, затем снова вызовите firecrawl_parse с полученным uploadRef. Создание URL для загрузки в хостинге требует аутентификации Firecrawl или соответствия требованиям keyless-доступа. В локальном режиме 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. Инструмент Извлечения (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": "Извлеките информацию о продукте, включая название, цену и описание",
    "systemPrompt": "Вы полезный ассистент, извлекающий информацию о продуктах",
    "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": "Пример Продукта",
        "price": 99.99,
        "description": "Это пример описания продукта"
      }
    }
  ],
  "isError": false
}

8. Инструмент Агента (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": "Найдите топ-5 AI-стартапов, основанных в 2024 году, и размеры их финансирования",
    "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": "Сравните функциональность и информацию о ценах с этих страниц"
  }
}

Возвращает:

  • 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. Инструмент взаимодействия (firecrawl_interact)

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

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

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

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

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

{
  "name": "firecrawl_interact",
  "arguments": {
    "url": "https://example.com",
    "prompt": "Нажмите на ссылку «Цены» и кратко опишите видимые планы"
  }
}

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

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

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

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

12. Инструменты исследования (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. Инструменты мониторинга (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": "Оповещать при изменении цен, пакетов или маркетинговых сообщений."
  }
}

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

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "pages": ["https://example.com/pricing", "https://example.com/changelog"],
    "goal": "Оповещать при изменении цен, пакетов или маркетинговых сообщений.",
    "webhookUrl": "https://example.com/webhooks/firecrawl"
  }
}

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

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

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "body": {
      "name": "Монитор документации",
      "schedule": { "text": "hourly", "timezone": "UTC" },
      "goal": "Оповещать, когда страницы документации добавляют, удаляют или существенно изменяют поведение API.",
      "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 успешно инициализирован
[INFO] Начало сканирования URL: https://example.com
[ERROR] Превышен лимит запросов

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

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

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

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

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

Разработка

# Установка зависимостей
npm install

# Сборка
npm run build

# Запуск тестов
npm test

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

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

Благодарности контрибьюторам

Благодарности @vrknetha, @cawstudios за начальную реализацию!

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

Лицензия

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

Комментарии
Войдите, чтобы оставить комментарий