Firecrawl
официальныйИзвлекайте веб-данные с
Что можно делать с Firecrawl MCP?
- Извлечение структурированных данных с известного URL — Попросите ИИ извлечь определенные поля (например, название, цену) со страницы с помощью
firecrawl_scrapeи JSON-схемы. - Поиск информации в интернете — Попросите ИИ найти релевантные страницы в сети с помощью
firecrawl_search, при необходимости извлекая полное содержимое из результатов. - Картографирование веб-сайта для обнаружения его URL — Попросите ИИ вывести список всех проиндексированных URL на домене с помощью
firecrawl_mapперед тем, как решить, какие страницы парсить. - Запуск автономного мульти-источникового исследования — Попросите ИИ запустить задачу
firecrawl_agent, которая самостоятельно просматривает и собирает данные, а затем опроситьfirecrawl_agent_statusдля получения результатов. - Взаимодействие с динамической страницей — Попросите ИИ нажать, ввести текст или перейти по странице с помощью
firecrawl_interact, указав URL или существующую сессию парсинга.
Документация
Firecrawl MCP Server
Сервер Model Context Protocol (MCP), который предоставляет Firecrawl для MCP-совместимых AI-агентов — поиск, извлечение и взаимодействие с живым вебом для получения чистого, готового к использованию агентом контекста.
Большое спасибо @vrknetha, @knacklabs за первоначальную реализацию!
Возможности
- Поиск в интернете и получение полного содержимого страниц
- Извлечение любого URL в чистые, структурированные данные
- Взаимодействие со страницами — клики, навигация и управление
- Глубокое исследование с автономным агентом
- Автоматические повторные попытки и ограничение частоты запросов
- Поддержка облачного и собственного хостинга
- Поддержка SSE
Поэкспериментируйте с нашим MCP-сервером на игровой площадке MCP.so или на Klavis AI.
Установка
Размещенный MCP (бесплатный уровень без ключа)
Подключитесь к удаленному размещенному серверу без настройки:
https://mcp.firecrawl.dev/v2/mcp
На бесплатном уровне без ключа scrape, search и interact работают без API-ключа (с ограничением частоты запросов). Для других инструментов, таких как crawl, map, agent и extract, по-прежнему требуется ключ.
По возможности используйте API-ключ или OAuth, когда пользователь может зарегистрироваться. Это открывает полный набор инструментов и более высокие лимиты. С ключом используйте:
https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp
Подробности настройки см. в документации MCP-сервера и руководстве по началу работы для агентов.
Конечная точка только для поиска
Поверхность только для чтения и поиска также размещена по адресу:
https://mcp.firecrawl.dev/v2/mcp-search
Она предоставляет фиксированный набор из шести инструментов только для чтения: firecrawl_search и пять инструментов firecrawl_research_*. Она не выполняет получение содержимого страниц и имеет собственную идентификацию OAuth; полная конечная точка выше не изменяется. Полный контракт см. в docs/search-profile.md.
Запуск с npx
env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp
Ручная установка
npm install -g firecrawl-mcp
Запуск в Cursor
Настройка Cursor 🖥️ Примечание: Требуется Cursor версии 0.45.6+ Для получения самых актуальных инструкций по настройке обратитесь к официальной документации Cursor по настройке MCP-серверов: Руководство по настройке MCP-сервера Cursor
Чтобы настроить Firecrawl MCP в Cursor v0.48.6
- Откройте настройки 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 Agent будет автоматически использовать Firecrawl MCP, когда это уместно, но вы можете явно запросить его, описав свои потребности в веб-скрапинге. Откройте Composer через Command+L (Mac), выберите «Agent» рядом с кнопкой отправки и введите свой запрос.
Запуск в Windsurf
Добавьте это в ваш ./codeium/windsurf/model_config.json:
{
"mcpServers": {
"mcp-server-firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "YOUR_API_KEY"
}
}
}
}
Запуск в локальном режиме с потоковой передачей HTTP
Чтобы запустить сервер локально с использованием потоковой передачи HTTP вместо стандартного транспорта stdio:
env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp
Используйте URL: http://localhost:3000/mcp
Установка через Smithery (устаревший способ)
Чтобы установить Firecrawl для Claude Desktop автоматически через Smithery:
npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude
Запуск в VS Code
Для установки в один клик нажмите одну из кнопок установки ниже...
Для ручной установки добавьте следующий блок JSON в файл пользовательских настроек (JSON) в VS Code. Это можно сделать, нажав Ctrl + Shift + P и введя Preferences: Open User Settings (JSON).
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "apiKey",
"description": "Firecrawl API Key",
"password": true
}
],
"servers": {
"firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "${input:apiKey}"
}
}
}
}
}
При желании вы можете добавить его в файл с именем .vscode/mcp.json в вашем рабочем пространстве. Это позволит вам поделиться конфигурацией с другими:
{
"inputs": [
{
"type": "promptString",
"id": "apiKey",
"description": "Firecrawl API Key",
"password": true
}
],
"servers": {
"firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "${input:apiKey}"
}
}
}
}
Конфигурация
Переменные окружения
Обязательно для облачного API
FIRECRAWL_API_KEY: Ваш API-ключ Firecrawl- Обязателен при использовании облачного API (по умолчанию)
- Необязателен при использовании собственного экземпляра с
FIRECRAWL_API_URL
FIRECRAWL_API_URL(Необязательно): Пользовательская конечная точка API для собственных экземпляров- Пример:
https://firecrawl.your-domain.com - Если не указано, будет использоваться облачный API (требуется API-ключ)
- Пример:
MCP OAuth (токены доступа Bearer)
Размещенный Firecrawl может выдавать OAuth токены доступа (fco_…) через сервер авторизации на firecrawl.dev. Этот MCP-сервер передает любые разрешенные учетные данные в Firecrawl API как Authorization: Bearer ….
- Транспорты потоковой передачи HTTP (
CLOUD_SERVICE=true,HTTP_STREAMABLE_SERVER=trueилиSSE_LOCAL=true): Клиенты должны отправлятьAuthorization: Bearer <fco_access_token>в MCP-запросах. Токен OAuth bearer имеет приоритет надx-firecrawl-api-key/x-api-key, если присутствуют оба. - stdio: Используйте
FIRECRAWL_OAUTH_TOKENдля статического токена доступа или продолжайте использоватьFIRECRAWL_API_KEYдля API-ключа.
Используйте только токены доступа (fco_…). Токены обновления (fcr_…) должны обмениваться на конечной точке токенов, а не передаваться в API извлечения/поиска.
Поверхность только для поиска (размещенная)
В размещенном режиме (CLOUD_SERVICE=true) второй экземпляр в процессе обслуживает конечную точку только для поиска. Встроенный сервис имеет фиксированный контракт развертывания: nginx направляет /v2/mcp-search на экземпляр на локальном порту 3001, а идентификатор защищенного ресурса OAuth — https://mcp.firecrawl.dev/v2/mcp-search.
FIRECRAWL_MCP_SEARCH_ENABLED (по умолчанию true) — это поддерживаемый операционный переключатель; установите его в false, чтобы предотвратить запуск поискового экземпляра. Процесс Node также принимает FIRECRAWL_MCP_SEARCH_PORT, FIRECRAWL_MCP_SEARCH_ENDPOINT и FIRECRAWL_MCP_SEARCH_RESOURCE_URL для изолированных тестов. Эти переопределения не перенастраивают встроенные маршруты nginx или список разрешений сервера авторизации и не должны использоваться независимо в размещенном развертывании.
Поисковый экземпляр требует аутентификации для каждого запроса (включая tools/list) и отклоняет токены OAuth, аудитория которых не соответствует его собственному ресурсу.
Примеры конфигурации
Для использования облачного API:
export FIRECRAWL_API_KEY=your-api-key
Для собственного экземпляра:
# Required for self-hosted
export FIRECRAWL_API_URL=https://firecrawl.your-domain.com
# Optional authentication for self-hosted
export FIRECRAWL_API_KEY=your-api-key # If your instance requires auth
Использование с Claude Desktop
Добавьте это в ваш claude_desktop_config.json:
{
"mcpServers": {
"mcp-server-firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
Как выбрать инструмент
Используйте это руководство, чтобы выбрать правильный инструмент для вашей задачи:
- Если вы знаете точный URL: используйте scrape (с форматом JSON для структурированных данных)
- Если у вас несколько известных URL: вызывайте scrape для каждого URL. Если вам специально нужна одна массовая операция API, используйте пакетную конечную точку Firecrawl API вне MCP.
- Если вам нужно найти URL на сайте: используйте map
- Если вы хотите найти информацию в интернете: используйте search
- Если вам нужно сложное исследование по нескольким неизвестным источникам: используйте agent
- Если вы хотите проанализировать весь сайт или раздел: используйте crawl (с ограничениями!)
- Если вам нужна интерактивная автоматизация браузера (клик, ввод, навигация): используйте interact с URL для новой страницы или scrape + interact, если вы уже извлекли страницу или вам нужен более точный контроль извлечения
Краткая справочная таблица
| Инструмент | Лучше всего для | Возвращает |
|---|---|---|
| scrape | Содержимое одной страницы | JSON (предпочтительно) или markdown |
| interact | Взаимодействие с URL или извлеченной страницей | Результат выполнения + scrapeId для режима URL |
| map | Обнаружение URL на сайте | URL[] |
| crawl | Многостраничное извлечение (с ограничениями) | окончательный статус/данные обхода после внутреннего опроса |
| parse | Файлы и ссылки на размещенные загрузки | markdown, JSON или вывод документа |
| extract | Структурированное извлечение из URL | Структурированные данные JSON |
| search | Поиск информации в интернете | results[] |
| agent | Сложное исследование по нескольким источникам | JSON (структурированные данные) |
| monitor | Периодические проверки страниц | метаданные монитора/проверки и различия |
| research | Исследование статей и репозиториев GitHub | результаты исследования и совпадения в репозиториях |
Руководство по выбору формата
При использовании scrape выбирайте правильный формат:
- Формат JSON (рекомендуется в большинстве случаев): Используйте, когда вам нужны конкретные данные со страницы. Определите схему на основе того, что вам нужно извлечь. Это делает ответы небольшими и предотвращает переполнение контекстного окна.
- Формат Markdown (используйте умеренно): Только когда вам действительно нужно полное содержимое страницы, например, для чтения всей статьи для обобщения или анализа структуры страницы.
Доступные инструменты
1. Инструмент Scrape (firecrawl_scrape)
Извлечение содержимого с одного URL с расширенными опциями.
Лучше всего подходит для:
- Извлечения содержимого одной страницы, когда вы точно знаете, на какой странице находится информация.
Не рекомендуется для:
- Извлечения содержимого с нескольких страниц (используйте повторные вызовы scrape для известных URL, или map + scrape для предварительного обнаружения URL, или crawl для полного содержимого страниц)
- Когда вы не уверены, на какой странице находится информация (используйте search)
Распространенные ошибки:
- Передача списка URL в один вызов scrape. Вызывайте scrape один раз для каждого URL в MCP. Если вам специально нужна одна массовая операция API, используйте пакетную конечную точку Firecrawl API вне MCP.
- Использование формата markdown по умолчанию (используйте формат JSON, чтобы извлечь только то, что нужно).
Выбор правильного формата:
- Формат JSON (предпочтительный): В большинстве случаев используйте формат JSON со схемой для извлечения только необходимых конкретных данных. Это делает ответы целенаправленными и предотвращает переполнение контекстного окна.
- Формат Markdown: Только когда задача действительно требует полного содержимого страницы (например, обобщение всей статьи, анализ структуры страницы).
Пример запроса:
"Получи детали продукта с https://example.com/product."
Пример использования (формат JSON - предпочтительный):
{
"name": "firecrawl_scrape",
"arguments": {
"url": "https://example.com/product",
"formats": [
{
"type": "json",
"prompt": "Extract the product information",
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"price": { "type": "number" },
"description": { "type": "string" }
},
"required": ["name", "price"]
}
}
]
}
}
Пример использования (формат markdown - когда нужно полное содержимое):
{
"name": "firecrawl_scrape",
"arguments": {
"url": "https://example.com/article",
"formats": ["markdown"],
"onlyMainContent": true
}
}
Пример использования (формат branding - извлечение фирменного стиля):
{
"name": "firecrawl_scrape",
"arguments": {
"url": "https://example.com",
"formats": ["branding"]
}
}
Формат Branding: Извлекает комплексную идентичность бренда (цвета, шрифты, типографику, интервалы, логотип, компоненты пользовательского интерфейса) для анализа дизайна или копирования стиля.
Конфиденциальность: Установите redactPII: true для возврата содержимого с удаленной личной информацией.
Возвращает:
- Структурированные данные JSON, markdown, профиль бренда или другие форматы по указанию.
2. Инструмент Map (firecrawl_map)
Сканирование веб-сайта для обнаружения всех проиндексированных URL на сайте.
Лучше всего подходит для:
- Обнаружения URL на веб-сайте перед тем, как решить, что извлекать
- Поиска определенных разделов веб-сайта
Не рекомендуется для:
- Когда вы уже знаете, какой конкретный URL вам нужен (используйте scrape)
- Когда вам нужно содержимое страниц (используйте scrape после сканирования)
Распространенные ошибки:
- Использование crawl для обнаружения URL вместо map
Пример запроса:
"Перечисли все URL на example.com."
Пример использования:
{
"name": "firecrawl_map",
"arguments": {
"url": "https://example.com"
}
}
Возвращает:
- Массив URL, найденных на сайте
3. Инструмент Search (firecrawl_search)
Поиск в интернете и, при необходимости, извлечение содержимого из результатов поиска.
Лучше всего подходит для:
- Поиска конкретной информации на нескольких веб-сайтах, когда вы не знаете, на каком сайте есть информация.
- Когда вам нужно наиболее релевантное содержимое по запросу
Не рекомендуется для:
- Когда вы уже знаете, какой сайт извлекать (используйте scrape)
- Когда вам нужен всесторонний охват одного веб-сайта (используйте map или crawl)
Распространенные ошибки:
- Использование crawl или map для открытых вопросов (вместо этого используйте search)
Пример использования:
{
"name": "firecrawl_search",
"arguments": {
"query": "latest AI research papers 2023",
"highlights": true,
"limit": 5,
"lang": "en",
"country": "us",
"scrapeOptions": {
"formats": ["markdown"],
"onlyMainContent": true,
"redactPII": true
}
}
}
Установите highlights в true, чтобы запросить релевантные запросу подсветки, или false, чтобы сохранить исходные поисковые сниппеты. Не указывайте этот параметр, чтобы использовать поведение API по умолчанию.
Возвращает:
- Массив результатов поиска (с опциональным извлечённым содержимым), а также поле
id. Передайте этотidвfirecrawl_search_feedbackпосле использования результатов, чтобы вернуть 1 кредит (поиск стоит 2) и улучшить качество поиска.
Пример промпта:
«Найди последние исследовательские работы по ИИ, опубликованные в 2023 году.»
3b. Инструмент обратной связи по поиску (firecrawl_search_feedback)
Отправляет структурированную обратную связь по предыдущему результату firecrawl_search. Первая обратная связь для каждого search id возвращает 1 кредит и улучшает качество поиска Firecrawl. Идемпотентна для каждого search id.
Вызывайте после каждого поиска, который вы реально использовали (или который не помог). Плохая/частичная обратная связь с missingContent так же ценна, как и хорошая.
Отказ: установите FIRECRAWL_NO_SEARCH_FEEDBACK=1 (или FIRECRAWL_DISABLE_SEARCH_FEEDBACK=1) в переменных окружения при запуске MCP-сервера. Инструмент firecrawl_search_feedback не будет зарегистрирован, и агенты не смогут его вызвать. Администраторы команды также могут отключить обратную связь на стороне сервера; в этом случае инструмент регистрируется, но всегда возвращает feedbackErrorCode: "TEAM_OPTED_OUT".
Самое важное поле: missingContent. Это массив конкретных фрагментов контента, которые агент ожидал найти, но не нашёл. По одной записи на каждую отсутствующую тему — они агрегируются по командам и указывают нам, что индексировать дальше.
Дневной лимит возврата (на команду, за сутки по UTC, по умолчанию 100 кредитов). Как только creditsRefundedToday команды достигает dailyRefundCap, последующие отправки всё ещё записывают обратную связь, но больше не возвращают кредиты. Ответ устанавливает dailyCapReached: true. Агенты должны прекратить вызов этого инструмента до конца суток по UTC, когда видят этот флаг.
Пример использования:
{
"name": "firecrawl_search_feedback",
"arguments": {
"searchId": "0193f6c5-1234-7890-abcd-1234567890ab",
"rating": "good",
"valuableSources": [
{
"url": "https://docs.firecrawl.dev/features/search",
"reason": "Most up-to-date description of /search."
}
],
"missingContent": [
{
"topic": "Pricing for the search endpoint",
"description": "No pricing tier table for /search specifically."
},
{ "topic": "Per-team rate limits" }
],
"querySuggestions": "Boost docs.firecrawl.dev for queries that mention 'firecrawl'"
}
}
Возвращает:
- JSON
{ success, feedbackId, creditsRefunded, alreadySubmitted? }.
3c. Универсальный инструмент обратной связи (firecrawl_feedback)
Отправляет структурированную обратную связь для завершённого задания конечной точки v2 через /v2/feedback.
Используйте для обратной связи на уровне конечной точки по заданиям scrape, parse, map или search.
Для качества результатов поиска предпочтительнее использовать
firecrawl_search_feedback, так как он включает специфичные для поиска рекомендации.
Делайте обратную связь лаконичной: используйте коды проблем, теги, короткие заметки, URL-адреса, номера страниц и небольшие объекты метаданных. Не включайте необработанные результаты скрапинга/парсинга.
Отказ: установите FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 (или FIRECRAWL_DISABLE_ENDPOINT_FEEDBACK=1) в переменных окружения при запуске MCP-сервера. Инструмент firecrawl_feedback не будет зарегистрирован, и агенты не смогут его вызвать.
Пример использования:
{
"name": "firecrawl_feedback",
"arguments": {
"endpoint": "scrape",
"jobId": "0193f6c5-1234-7890-abcd-1234567890ab",
"rating": "partial",
"issues": ["missing_markdown"],
"tags": ["docs"],
"note": "The pricing table was missing from the markdown output.",
"url": "https://example.com/pricing",
"pageNumbers": [1],
"metadata": {
"format": "markdown"
}
}
}
Возвращает:
- JSON
{ success, feedbackId, creditsRefunded, creditsRefundedToday?, dailyRefundCap?, dailyCapReached?, alreadySubmitted?, warning? }.
4. Инструмент обхода (Crawl) (firecrawl_crawl)
Запускает задание обхода, опрашивает его до достижения конечного состояния и возвращает итоговый статус/данные обхода.
Лучше всего подходит для:
- Извлечения контента с нескольких связанных страниц, когда требуется полный охват.
Не рекомендуется для:
- Извлечения контента с одной страницы (используйте scrape)
- Когда важны лимиты токенов (используйте map + scrape для более строгого контроля)
- Когда нужны быстрые результаты (обход может быть медленным)
Предупреждение: Ответы обхода могут быть очень большими и превышать лимиты токенов. Ограничьте глубину обхода и количество страниц или используйте map + scrape для более строгого контроля.
Частые ошибки:
- Установка слишком высокого limit или maxDiscoveryDepth (вызывает переполнение токенов)
- Использование обхода для одной страницы (используйте scrape)
Пример промпта:
«Получи все записи блога с первых двух уровней example.com/blog.»
Пример использования:
{
"name": "firecrawl_crawl",
"arguments": {
"url": "https://example.com/blog/*",
"maxDiscoveryDepth": 2,
"limit": 100,
"allowExternalLinks": false,
"deduplicateSimilarURLs": true
}
}
Возвращает:
- Итоговый статус обхода и данные после внутреннего опроса, включая
id,status,completed,total,creditsUsed,expiresAt,nextиdata. Используйте возвращённыйidсfirecrawl_check_crawl_status, если потребуется перепроверить задание позже.
5. Проверка статуса обхода (firecrawl_check_crawl_status)
Проверяет статус и результаты существующего задания обхода по ID.
{
"name": "firecrawl_check_crawl_status",
"arguments": {
"id": "550e8400-e29b-41d4-a716-446655440000"
}
}
Возвращает:
- Ответ включает статус задания обхода:
6. Инструмент парсинга (Parse) (firecrawl_parse)
Парсит локальные файлы или ссылки на размещённые загрузки с помощью конечной точки /v2/parse Firecrawl.
Лучше всего подходит для: PDF-файлов, документов Word, электронных таблиц, HTML-файлов и других документов, требующих вывода в markdown или структурированном JSON. Размещённый MCP поддерживает двухэтапный процесс загрузки по ссылке; локальное прямое чтение файлов требует самостоятельно размещённого FIRECRAWL_API_URL.
Не рекомендуется для: Удалённых URL (используйте scrape), нескольких файлов в одном вызове (вызывайте parse по одному на файл) или действий только в браузере, таких как скриншоты и клики.
Процесс для размещённого MCP: Размещённый MCP не может напрямую читать файловую систему вызывающей стороны. Вызовите firecrawl_parse с filePath, чтобы получить краткосрочную команду загрузки и nextToolCall, загрузите файл локально, затем снова вызовите firecrawl_parse с возвращённым uploadRef. Создание размещённого URL загрузки требует аутентификации Firecrawl или права на работу без ключа. В локальном режиме npx firecrawl-mcp прямой парсинг файлов в настоящее время требует FIRECRAWL_API_URL, указывающего на самостоятельно размещённый API Firecrawl; обычный локальный сервер только с ключом облачного API не может читать и загружать файлы через этот инструмент.
Пример использования:
{
"name": "firecrawl_parse",
"arguments": {
"filePath": "/absolute/path/to/document.pdf",
"formats": ["markdown"],
"parsers": ["pdf"],
"zeroDataRetention": true
}
}
Возвращает: Распарсенное содержимое документа или инструкции по размещённой загрузке с nextToolCall.
7. Инструмент извлечения (Extract) (firecrawl_extract)
Извлекает структурированную информацию с веб-страниц, используя возможности LLM. Поддерживает как облачный ИИ, так и извлечение с помощью самостоятельно размещённой LLM.
Лучше всего подходит для:
- Извлечения конкретных структурированных данных, таких как цены, имена, детали.
Не рекомендуется для:
- Когда нужно полное содержимое страницы (используйте scrape)
- Когда вы не ищете конкретные структурированные данные
Аргументы:
urls: Массив URL-адресов для извлечения информацииprompt: Пользовательский промпт для извлечения 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 предложений. Укажите, что должно вызывать оповещение, сохраните любую область, заданную пользователем, и включайте специфичные для намерения исключения только тогда, когда они очевидны из запроса. Общий шум, такой как пробелы, изменения только форматирования, ID запросов, параметры отслеживания, общие метаданные и несвязанная хромировка страницы, уже обрабатывается оценщиком, поэтому не повторяйте это в каждой цели. Если пользователь выражается неопределённо, сохраняйте цель широкой; если он просит широкий мониторинг или «любое изменение», сохраните это. Если пользователь говорит, что ему что-то не важно, укажите это явно.
{
"name": "firecrawl_monitor_create",
"arguments": {
"page": "https://example.com/pricing",
"goal": "Alert when pricing, packaging, or launch messaging changes."
}
}
Несколько страниц с вебхуками:
{
"name": "firecrawl_monitor_create",
"arguments": {
"pages": ["https://example.com/pricing", "https://example.com/changelog"],
"goal": "Alert when pricing, packaging, or launch messaging changes.",
"webhookUrl": "https://example.com/webhooks/firecrawl"
}
}
Расширенные запросы создания:
Передайте body, когда вам нужны цели обхода, отслеживание изменений в JSON, пользовательское хранение или явный контроль judgeEnabled.
{
"name": "firecrawl_monitor_create",
"arguments": {
"body": {
"name": "Docs monitor",
"schedule": { "text": "hourly", "timezone": "UTC" },
"goal": "Alert when docs pages add, remove, or materially change API behavior.",
"targets": [{ "type": "crawl", "url": "https://example.com/docs" }]
}
}
}
Другие инструменты мониторинга:
firecrawl_monitor_list: список мониторов.firecrawl_monitor_get: получить один монитор.firecrawl_monitor_update: обновить поля, включаяgoal,judgeEnabled,webhookиnotification.firecrawl_monitor_run: запустить проверку сейчас.firecrawl_monitor_delete: удалить монитор (деструктивное действие; вызывайте только если пользователь намерен его удалить).firecrawl_monitor_checks: список проверок, опционально с фильтрацией по статусу.firecrawl_monitor_check: получить результаты на уровне страницы, включаяdiff,snapshot,judgment.meaningfulиjudgment.meaningfulChanges.
Система логирования
Сервер включает комплексное логирование:
- Статус и ход выполнения операций
- Метрики производительности
- Отслеживание ограничений скорости
- Ошибочные состояния
Примеры сообщений лога:
[INFO] Firecrawl MCP Server initialized successfully
[INFO] Starting scrape for URL: https://example.com
[ERROR] Rate limit exceeded
Обработка ошибок
Сервер обеспечивает надежную обработку ошибок:
- Ошибки ограничения скорости API передаются MCP-клиенту
- Подробные сообщения об ошибках
- Устойчивость к сетевым сбоям
Пример ответа с ошибкой:
{
"content": [
{
"type": "text",
"text": "Error: Rate limit exceeded"
}
],
"isError": true
}
Разработка
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
Участие в разработке
- Сделайте форк репозитория
- Создайте ветку для вашей функции
- Запустите тесты:
npm test - Отправьте pull request
Благодарности участникам
Спасибо @vrknetha, @cawstudios за первоначальную реализацию!
Спасибо MCP.so и Klavis AI за хостинг, а также @gstarwd, @xiangkaiz и @zihaolin96 за интеграцию нашего сервера.
Лицензия
Лицензия MIT — подробности см. в файле LICENSE