freecrawl — MCP-сервер для работы с вебом

freecrawl --what-is-this

freecrawl — MCP-сервер: любой сайт → чистые данные

freecrawl — это MCP-сервер: он даёт вашему AI-агенту 29 инструментов для работы с интернетом. Сам по себе агент в браузер не ходит. Подключите freecrawl один раз — и можно просто написать «сравни цены у трёх поставщиков и собери таблицу»: агент найдёт страницы, прочитает их, вытащит нужные поля и сохранит файл.

Работает с Claude Code, Cursor, VS Code, Windsurf, Cline, Codex CLI, Gemini CLI и любым другим клиентом, который понимает MCP. Всё считается на вашей машине: ключи API не нужны, платить не за что, данные никуда не уходят. Есть и команда в терминале — тем же самым можно пользоваться руками.

  • Python 3.10+
  • Windows · macOS · Linux
  • работает локально
  • ничего не отправляет на сторону

freecrawl smart https://shop.example/tovar/1024

Каскад в работе: 403 на первом уровне, пусто на втором, успех на третьем

Обычный запрос получил 403, браузер — почти пустую страницу, а живая сессия прошла проверку и вернула 6 214 символов чистого текста. Чем идти, freecrawl решил сам — команда была одна.

cat УСТАНОВКА

Нужен Python 3.10 или новее.

git clone https://github.com/kostya5524/freecrawl.git
cd freecrawl
pip install -e .

Для сайтов, которые рисуют содержимое скриптами, и для поиска картинок нужен браузер — ставится один раз:

playwright install chromium

Проверить, что всё на месте:

freecrawl health

freecrawl --connect-agent

Выберите свой клиент. Путь D:\freecrawl\mcp_server.py замените на путь к файлу в вашей копии репозитория — на macOS и Linux это что-то вроде /home/user/freecrawl/mcp_server.py.

одной командой
claude mcp add freecrawl -s user -- python D:\freecrawl\mcp_server.py

Проверка: наберите в сессии /mcp — freecrawl должен быть в списке со статусом connected.

Чтобы инструменты появлялись только в одном проекте и уезжали в репозиторий вместе с кодом — файл .mcp.json рядом с проектом:

.mcp.json
{
  "mcpServers": {
    "freecrawl": {
      "command": "python",
      "args": ["D:\\freecrawl\\mcp_server.py"]
    }
  }
}

Если сервер не подключился

  • Проверьте вручную: python D:\freecrawl\mcp_server.py. Правильное поведение — процесс запустился и молча ждёт запросы (прервите его Ctrl+C). Если посыпались ошибки, значит этот интерпретатор не видит библиотеки.
  • Внутри виртуального окружения указывайте полный путь к его Python: D:\freecrawl\.venv\Scripts\python.exe.
  • В путях Windows внутри JSON нужны двойные обратные слэши.
  • После pip install -e . вместо пары python + путь можно писать одну команду freecrawl-mcp.
  • После изменения кода сервер надо перезапустить — запущенный процесс живёт со старой версией.

freecrawl --what-to-ask

Формулировки, которые сразу работают — инструменты агент подберёт сам:

  • прочитай эту страницу и выпиши характеристики в таблицу
  • найди, кто ещё продаёт эту деталь, и сравни цены с доставкой
  • собери все статьи из этого раздела блога за 2026 год
  • следи за этой страницей и скажи, когда изменится цена
  • вытащи таблицу цен из этого PDF по ссылке
  • найди, откуда взято это фото, и есть ли версия в лучшем качестве
  • зайди в личный кабинет, открой раздел заказов и сохрани список
  • разберись, как в этой библиотеке сделан X: почитай исходники на GitHub и объясни

freecrawl --list-tools

  • smart_scrape — страница любым доступным способом
  • scrape — быстрый уровень: страница в выбранных форматах
  • batch_scrape — несколько страниц параллельно
  • render — браузер: ожидание элемента, скриншот
  • browser_fetch_json — внутренний API изнутри страницы
  • map_urls — собрать все адреса сайта
  • crawl — обход с лимитами и фильтрами путей
  • crawl_async — тот же обход, но в фоне
  • jobs — состояние фоновых задач
  • search — много движков сразу, слияние выдач
  • deep_research — тема в несколько раундов
  • research — GitHub и научные статьи
  • image_search — картинки по описанию
  • image_reverse_search — где ещё есть эта картинка
  • image_find_sources — поискать все картинки со страницы
  • extract — разметка сайта или своя схема полей
  • extract_selectors — извлечение по правилам CSS
  • agent — цель словами, шаги выбираются сами
  • parse_file — PDF, DOCX, XLSX, CSV по ссылке
  • save_result — результат файлом: JSONL, CSV, XLSX, MD
  • monitor — наблюдение за изменениями страницы
  • session — живой браузер: формы, входы, сценарии
  • avito_search, avito_item — пример готового парсера
  • autoru_search, autoru_item — пример готового парсера
  • health — что установлено и что доступно
  • proxies — список прокси и проверка живости
  • clear_cache — очистить локальный кэш

freecrawl smart --explain

Ни один способ достать страницу не работает на всём вебе. Простой запрос быстрый, но его отбивает защита. Браузер проходит почти везде, но он в десятки раз тяжелее. Поэтому freecrawl идёт от дешёвого к тяжёлому и останавливается на первом уровне, который дал содержимое.

1 HTTP с подделкой TLS-отпечатка curl_cffi повторяет рукопожатие настоящего браузера — вплоть до порядка технических полей. Паузы по домену, повторы, кэш. Хватает большинству сайтов. 0,5–2 с
2 Браузер разово Playwright открывает страницу, ждёт нужный элемент, прокручивает до подгрузки. Включается, когда содержимое рисует JavaScript. 3–8 с
3 Живая сессия браузера Сначала главная — там отрабатывает проверка «я не бот», и уже с полученными куками запрашивается нужная страница. 8–20 с
4 Ваш собственный Chrome Подключение к уже запущенному браузеру по отладочному порту: живой профиль и куки. Для сайтов, которые не пускают автоматизацию в принципе. 5–15 с

Что считается успехом. Заглушка защиты бывает многословной: страница «выключите VPN» на 403 по длине текста не отличается от настоящей. Поэтому успех — это и содержимое, и честный статус: код меньше 400 и текста не меньше 400 символов. Иначе включается уровень выше. Если не сработало ничего, вернётся не пустая страница, а ошибка со списком попыток.

Уровень 4: запустить свой Chrome

chrome.exe --remote-debugging-port=9222 --user-data-dir=C:\Users\Вы\.freecrawl\chrome

Дальше задайте переменную окружения FREECRAWL_CDP_URL=http://localhost:9222 — и этот уровень станет доступен агенту без лишних просьб. Профиль и куки настоящие, поэтому проверки проходят как у обычного посетителя; никакие данные браузера не копируются.

Темп важнее хитростей

Самый частый способ получить блокировку — не «неправильный» браузер, а спешка. Серия быстрых запросов приводит к блокировке адреса на десятки минут, и смена отпечатка от неё уже не спасает. Поэтому паузы считаются по домену, а не общей очередью, и по умолчанию щадящие: 2,5–5 секунд со случайным разбросом.

Поиск: почему сразу все движки

Один поисковик индексирует свой срез веба, поэтому запрос уходит во все доступные источники параллельно (DuckDuckGo, Brave, Bing, Mojeek, публичные SearXNG — каждый в двух локалях). Выдачи сливаются взаимно-обратным ранжированием: страница, найденная несколькими движками, поднимается выше. В каждом результате видно, кто её нашёл. Недоступный источник просто выпадает из слияния, а не задерживает ответ.

Подробный разбор — в README на GitHub: чистка HTML, три способа извлечения данных, обратный поиск картинок, наблюдение за изменениями, прокси и ограничения без прикрас.

freecrawl --price

0 ₽. Ключи API не требуются ни для одной основной возможности; необязательные ключи (дополнительные поисковые источники, LLM для извлечения по схеме) имеют бесплатные тарифы. Единственный настоящий ресурс — ваш IP-адрес: именно он ограничивает объёмы, а не лицензия. Без прокси это десятки-сотни страниц в день, а не тысячи.