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
- Откройте настройки Cursor
- Перейдите в «Функции» > «MCP-серверы»
- Нажмите «+ Добавить новый глобальный MCP-сервер»
- Введите следующий код:
{ "mcpServers": { "firecrawl-mcp": { "command": "npx", "args": ["-y", "firecrawl-mcp"], "env": { "FIRECRAWL_API_KEY": "YOUR-API-KEY" } } } }
Чтобы настроить Firecrawl MCP в Cursor v0.45.6
- Откройте настройки Cursor
- Перейдите в «Функции» > «MCP-серверы»
- Нажмите «+ Добавить новый MCP-сервер»
- Введите следующее:
- Имя: "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
Для установки в один клик нажмите одну из кнопок установки ниже...
Для ручной установки добавьте следующий блок 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: Пользовательский промпт для извлечения LLMsystemPrompt: Системный промпт для направления LLMschema: Схема 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, чтобы проверить завершение и получить результаты.
Асинхронный рабочий процесс:
- Вызовите
firecrawl_agentс вашим промптом/схемой → возвращает ID задания - Занимайтесь другой работой, пока агент исследует (для сложных запросов могут потребоваться минуты)
- Опрашивайте
firecrawl_agent_statusс ID задания для проверки прогресса - Когда статус «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
Участие в разработке
- Сделайте форк репозитория
- Создайте ветку для вашей функции
- Запустите тесты:
npm test - Отправьте pull request
Благодарности участникам
Спасибо @vrknetha, @cawstudios за первоначальную реализацию!
Спасибо MCP.so и Klavis AI за хостинг, а также @gstarwd, @xiangkaiz и @zihaolin96 за интеграцию нашего сервера.
Лицензия
Лицензия MIT — подробности см. в файле LICENSE