# Firecrawl MCP

> Firecrawl MCP Server integration with browser automation for OpenClaw. Provides web scraping, crawling, search, LLM extraction and interactive browser automation.

- Skill: `maksimlokhmakov/firecrawl-mcp` (Agent Skill, multi-file: 9 files)
- Install (CLI): `npx skillmds@latest add maksimlokhmakov/firecrawl-mcp`
- Raw SKILL.md: https://api.skillmd.com/api/skills/maksimlokhmakov/firecrawl-mcp/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: MaksimLokhmakov (https://skillmd.com/u/maksimlokhmakov)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/maksimlokhmakov/firecrawl-mcp

---


# Firecrawl MCP Skill

Полная интеграция Firecrawl MCP Server с OpenClaw для веб-скрапинга, краулинга и браузерной автоматизации.

## Возможности

- **🔍 Search** — Поиск в интернете с извлечением контента
- **📝 Scrape** — Скрапинг отдельных страниц с опциями
- **🕷️ Crawl** — Краулинг всего сайта с ограничениями
- **🤖 Extract** — LLM-извлечение структурированных данных
- **🌐 Browser Automation** — Интерактивная работа с браузером (click, type, scroll, screenshot)

## Требования

- Node.js 18+
- Переменная окружения `FIRECRAWL_API_KEY` (должна быть установлена в окружении OpenClaw Gateway)
- Доступ к интернету

## Конфигурация MCP

Скилл использует STDIO транспорт для связи с Firecrawl MCP Server. Конфигурация находится в `mcp.json`.

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

### 1. firecrawl_search

Поиск в интернете с автоматическим извлечением контента.

**Пример использования:**
```
Поищи "Python web scraping libraries 2024" и извлеки названия библиотек и их особенности
```

**Параметры:**
- `query` (string, required) — Поисковый запрос
- `limit` (number, optional) — Количество результатов (1-10, default: 5)
- `lang` (string, optional) — Язык поиска (en, ru, etc.)
- `country` (string, optional) — Страна поиска (us, ru, etc.)
- `scrapeOptions` (object, optional) — Опции скрапинга результатов

### 2. firecrawl_scrape

Скрапинг одной страницы с расширенными опциями.

**Пример использования:**
```
Скрапь https://example.com/product и извлеки название, цену и описание в JSON формате
```

**Параметры:**
- `url` (string, required) — URL страницы
- `formats` (array, optional) — Форматы вывода: ["markdown", "json", "html", "branding"]
- `onlyMainContent` (boolean, optional) — Только основной контент (default: true)
- `includeTags` (array, optional) — Включить только эти теги
- `excludeTags` (array, optional) — Исключить эти теги
- `headers` (object, optional) — Кастомные HTTP заголовки
- `waitFor` (number, optional) — Задержка в мс перед скрапингом

**JSON Schema для извлечения:**
```json
{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "price": { "type": "number" },
    "description": { "type": "string" }
  },
  "required": ["name", "price"]
}
```

### 3. firecrawl_batch_scrape

Пакетный скрапинг нескольких URL с rate limiting.

**Пример использования:**
```
Скрапь страницы [url1, url2, url3] и получи markdown контент
```

**Параметры:**
- `urls` (array, required) — Массив URL
- `options` (object, optional) — Опции скрапинга

### 4. firecrawl_crawl

Краулинг всего сайта или раздела.

**⚠️ Внимание:** Может вернуть очень много данных! Используйте limit и maxDepth.

**Пример использования:**
```
Крауль https://example.com/blog с глубиной 2 и лимитом 50 страниц
```

**Параметры:**
- `url` (string, required) — Начальный URL
- `maxDepth` (number, optional) — Максимальная глубина (default: 2)
- `limit` (number, optional) — Лимит страниц (default: 10)
- `allowExternalLinks` (boolean, optional) — Разрешить внешние ссылки
- `deduplicateSimilarURLs` (boolean, optional) — Дедупликация URL

### 5. firecrawl_map

Картирование сайта — получение всех URL на сайте.

**Пример использования:**
```
Получи все URL с сайта https://example.com
```

**Параметры:**
- `url` (string, required) — URL сайта
- `search` (string, optional) — Фильтр поиска

### 6. firecrawl_extract

Извлечение структурированных данных с помощью LLM.

**Пример использования:**
```
Извлеки с https://example.com/products названия товаров и цены в формате JSON
```

**Параметры:**
- `urls` (array, required) — Массив URL
- `prompt` (string, optional) — Промпт для LLM
- `systemPrompt` (string, optional) — Системный промпт
- `schema` (object, optional) — JSON schema для структурированного вывода
- `allowExternalLinks` (boolean, optional)
- `enableWebSearch` (boolean, optional)

### 7. firecrawl_browser_create

Создание сессии браузера для интерактивной автоматизации.

**Пример использования:**
```
Создай браузерную сессию с профилем "my-session" на 10 минут
```

**Параметры:**
- `ttl` (number, optional) — Время жизни сессии в секундах (30-3600)
- `activityTtl` (number, optional) — Таймаут неактивности (10-3600)
- `streamWebView` (boolean, optional) — Включить стриминг вида
- `profile` (object, optional) — Профиль для сохранения состояния
  - `name` (string) — Имя профиля
  - `saveChanges` (boolean) — Сохранять изменения

### 8. firecrawl_browser_execute

Выполнение команд в браузерной сессии.

**Поддерживаемые команды (bash agent-browser):**
- `agent-browser open <url>` — Открыть URL
- `agent-browser snapshot` — Получить accessibility tree с clickable refs
- `agent-browser click @e5` — Клик по элементу (используй ref из snapshot)
- `agent-browser type @e3 "text"` — Ввод текста
- `agent-browser get title` — Получить заголовок
- `agent-browser screenshot` — Скриншот
- `agent-browser scroll down` — Прокрутка вниз
- `agent-browser --help` — Справка

**Пример использования:**
```
В сессии "session-id" открой https://example.com, сделай скриншот и кликни по кнопке @e5
```

**Параметры:**
- `sessionId` (string, required) — ID сессии
- `code` (string, required) — Код для выполнения
- `language` (string, optional) — Язык: "bash", "python", "javascript"

### 9. firecrawl_browser_click

Клик по элементу в браузере.

**Пример использования:**
```
Кликни в сессии "session-id" по селектору "#submit-button"
```

**Параметры:**
- `sessionId` (string, required)
- `selector` (string, required) — CSS селектор или @ref
- `x` (number, optional) — Координата X
- `y` (number, optional) — Координата Y

### 10. firecrawl_browser_type

Ввод текста в поле.

**Пример использования:**
```
В сессии "session-id" введи "test@example.com" в поле "#email" и нажми Enter
```

**Параметры:**
- `sessionId` (string, required)
- `selector` (string, required) — CSS селектор
- `text` (string, required) — Текст для ввода
- `submit` (boolean, optional) — Нажать Enter после ввода

### 11. firecrawl_browser_scroll

Прокрутка страницы.

**Пример использования:**
```
Прокрути в сессии "session-id" вниз на 3 экрана
```

**Параметры:**
- `sessionId` (string, required)
- `direction` (string, required) — "up", "down", "left", "right"
- `amount` (number, optional) — Количество (default: 1)

### 12. firecrawl_browser_screenshot

Скриншот страницы.

**Пример использования:**
```
Сделай скриншот в сессии "session-id" всей страницы
```

**Параметры:**
- `sessionId` (string, required)
- `fullPage` (boolean, optional) — Полная страница (default: false)
- `selector` (string, optional) — Селектор для скриншота элемента

### 13. firecrawl_browser_wait

Ожидание элемента или времени.

**Пример использования:**
```
Подожди в сессии "session-id" 3 секунды
```

**Параметры:**
- `sessionId` (string, required)
- `selector` (string, optional) — Селектор для ожидания
- `time` (number, optional) — Время в мс

### 14. firecrawl_browser_delete

Удаление сессии браузера.

**Пример использования:**
```
Удали браузерную сессию "session-id"
```

**Параметры:**
- `sessionId` (string, required)

### 15. firecrawl_check_crawl_status / firecrawl_check_batch_status

Проверка статуса асинхронных операций.

**Пример использования:**
```
Проверь статус краула с ID "crawl-id"
```

**Параметры:**
- `id` (string, required) — ID операции

## Оптимизация затрат

### Рекомендации по экономии

1. **Используйте `onlyMainContent: true`** — убирает навигацию, футер, рекламу
2. **JSON формат вместо markdown** — меньше токенов, точечное извлечение
3. **Batch операции** — дешевле, чем отдельные scrape
4. **Кеширование** — сохраняйте результаты в БД, не скрапьте повторно
5. **Map перед Crawl** — сначала получите URL, потом выберите нужные

### Fallback стратегия

Если MCP недоступен, скилл автоматически переключается на HTTP API Firecrawl (требуется тот же API ключ).

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

- **Rate limiting** — автоматические retry с exponential backoff (3 попытки)
- **Timeout** — повторная попытка через 2 секунды
- **Invalid URL** — проверка URL перед запросом
- **MCP недоступен** — fallback на HTTP API

## Примеры сложных сценариев

### Сценарий 1: Авторизация и извлечение данных

```
1. Создай браузерную сессию
2. Открой страницу логина
3. Введи логин и пароль
4. Кликни "Войти"
5. Дождись загрузки профиля
6. Сделай скриншот для проверки
7. Перейди на страницу данных
8. Извлеки информацию в JSON
9. Удали сессию
```

### Сценарий 2: Поиск + пакетный скрапинг

```
1. Поищи "Python tutorials"
2. Получи первые 10 URL
3. Скрапь все страницы пакетно
4. Извлеки заголовки и описания
5. Сохрани в БД
```

### Сценарий 3: Мониторинг цен

```
1. Крауль раздел /products с глубиной 1
2. Проверь статус краула
3. Извлеки цены и названия
4. Сравни с предыдущими ценами
5. Отправь уведомление об изменениях
```

## Безопасность

- API ключ берется только из переменных окружения
- Нет хардкодов в коде
- Поддержка кастомных headers для авторизации
- Возможность использования self-hosted Firecrawl

## Логирование

Все операции логируются:
- `[INFO]` — информация о запуске операций
- `[WARNING]` — предупреждения (rate limit, credit threshold)
- `[ERROR]` — ошибки с деталями

## Поддержка

- Документация Firecrawl: https://docs.firecrawl.dev
- MCP Server GitHub: https://github.com/firecrawl/firecrawl-mcp-server
- OpenClaw Skills: https://docs.openclaw.ai/skills

