Skip to main content
Glama
Prog-up

Web Scraper MCP

by Prog-up

Web Scraper MCP

Самодостаточный сервер Model Context Protocol, который предоставляет LLM-клиенту (Claude Code, Cursor, ChatGPT) тот же набор инструментов, что и платные сервисы скрапинга — scrape, crawl, map, search, extract, interact, deep_research — работающий полностью на вашем собственном оборудовании.

Никаких платных прокси/CAPTCHA-сервисов: антибот самодостаточен (headless Chromium + playwright-stealth, robots.txt, вежливое ограничение частоты запросов). Защищённые сайты всё ещё могут блокировать; см. Ограничения.

Tools

Tool

Что делает

scrape

Один URL → чистый markdown (без шаблонного кода). Сначала статический, автоматический переход на браузер для JS-страниц.

crawl / check_crawl_status

Фоновая задача обхода BFS (дедупликация, ограничения по глубине/страницам); опрос результатов.

map

Список ссылок на странице (опционально только тот же домен) — решите, что обходить.

search

Веб-поиск. Подключаемый бэкенд: DuckDuckGo (по умолчанию), SearXNG, Brave или Tavily.

extract

Получить страницу и извлечь структурированный JSON, соответствующий вашей схеме, с помощью LLM.

browser_navigate / browser_act / browser_close

Управление постоянной сессией браузера (клик/заполнение/нажатие) с использованием дешёвых по токенам ARIA-снимков.

deep_research

Поиск → чтение лучших источников → возврат отчёта с цитатами.

extract и deep_research требуют ANTHROPIC_API_KEY.

Related MCP server: Universal Web Data Extraction Platform

Quick start

uv sync                      # install deps (uses the pinned uv.lock)
uv run playwright install chromium
export SCRAPER_AUTH_TOKEN=$(openssl rand -hex 32)
uv run web-scraper-mcp       # HTTP server on http://127.0.0.1:8000/mcp

Stdio (локально, для настольного клиента): SCRAPER_TRANSPORT=stdio uv run web-scraper-mcp.

Docker

Самый быстрый способ начать — загрузить готовый образ с DockerHub.

# Pull the latest image
docker pull PROG_UP_USERNAME/web-scraper-mcp:latest

# Run the container (with Anthropic / Claude)
docker run -p 8000:8000 \
  -e SCRAPER_AUTH_TOKEN=your_secure_token_here \
  -e ANTHROPIC_API_KEY=sk-ant-api03-... \
  PROG_UP_USERNAME/web-scraper-mcp:latest

# Or run the container over stdio (useful for local MCP clients)
docker run -i --rm \
  -e SCRAPER_TRANSPORT=stdio \
  -e SCRAPER_AUTH_TOKEN=your_secure_token_here \
  PROG_UP_USERNAME/web-scraper-mcp:latest

(Убедитесь, что вы заменили PROG_UP_USERNAME на ваше реальное имя пользователя DockerHub).

Using Local Models (Ollama) & Context Windows

Если вы предпочитаете запускать модели локально вместо использования API Anthropic, сервер полностью поддерживает Ollama в качестве альтернативного бэкенда для инструментов extract и deep_research.

docker run -p 8000:8000 \
  -e SCRAPER_AUTH_TOKEN=your_secure_token_here \
  -e SCRAPER_OLLAMA_HOST=http://host.docker.internal:11434 \
  -e SCRAPER_EXTRACT_MODEL=qwen3.5:2b \
  -e SCRAPER_RESEARCH_MODEL=qwen3.5:2b \
  PROG_UP_USERNAME/web-scraper-mcp:latest

[!WARNING] Контекстные окна критически важны! Веб-скрапинг создаёт огромное количество Markdown. extract может отправлять до 100 000 символов, а deep_research — до 16 000 символов в LLM.

По умолчанию Claude изначально обрабатывает большие контексты. Однако контекстное окно Ollama (num_ctx) часто настроено всего на 2 048 токенов. Если вы передадите огромную страницу Википедии локальной модели, она молча обрежет промпт (отбросив ваши инструкции) и вернёт пустые строки!

Мы автоматически передаём "num_ctx": 32768 в Ollama в полезной нагрузке API, чтобы предотвратить это обрезание. Убедитесь, что на вашей локальной машине достаточно RAM/VRAM для поддержки контекстного окна 32K при использовании Ollama!

Register in a client (mcp.json)

Если запуск через HTTP:

{
  "mcpServers": {
    "web-scraper": {
      "url": "http://127.0.0.1:8000/mcp",
      "headers": { "Authorization": "Bearer your_secure_token_here" }
    }
  }
}

Если запуск через stdio (Docker):

{
  "mcpServers": {
    "web-scraper": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "SCRAPER_TRANSPORT=stdio",
        "-e", "SCRAPER_OLLAMA_HOST=http://host.docker.internal:11434",
        "-e", "SCRAPER_EXTRACT_MODEL=qwen3.5:2b",
        "-e", "SCRAPER_RESEARCH_MODEL=qwen3.5:2b",
        "PROG_UP_USERNAME/web-scraper-mcp:latest"
      ]
    }
  }
}

Configuration

Все настройки — переменные окружения (префикс SCRAPER_) или файл .env — см. .env.example.

Var

Default

Примечания

SCRAPER_AUTH_TOKEN

(unset)

Bearer-токен для HTTP-эндпоинта. Обязателен для любого сетевого развёртывания; не задан = без аутентификации (предупреждение).

SCRAPER_HOST / SCRAPER_PORT

127.0.0.1 / 8000

Адрес привязки. Docker-образ устанавливает хост 0.0.0.0.

SCRAPER_MAX_CONCURRENT_PAGES

8

Максимум одновременных headless-страниц (ограничение по RAM/CPU).

SCRAPER_MAX_CRAWL_PAGES / _DEPTH

100 / 3

Жёсткие пределы для задач обхода.

SCRAPER_PER_DOMAIN_DELAY_S

1.0

Вежливое ограничение частоты запросов на домен.

SCRAPER_RESPECT_ROBOTS

true

Уважать robots.txt.

SCRAPER_ALLOW_PRIVATE_NETWORKS

false

Оставьте false — при true отключает защиту SSRF.

ANTHROPIC_API_KEY

(unset)

Включает extract / deep_research.

SCRAPER_SEARXNG_URL, BRAVE_API_KEY, TAVILY_API_KEY

(unset)

Необязательные поисковые бэкенды (первый заданный имеет приоритет, иначе DuckDuckGo).

Security

  • Защита SSRF — каждый полученный URL (и каждый переход по редиректу) разрешается через DNS и отклоняется, если он указывает на частный / loopback / link-local / cloud-metadata адрес. Браузер также прерывает запросы подресурсов к частным IP.

  • Аутентификация — bearer-токен на HTTP-транспорте; по умолчанию привязка к localhost.

  • Ограничения ресурсов — размер ответа, таймаут, параллельность страниц, лимиты страниц/глубины обхода для защиты хоста.

  • robots.txt + ограничение частоты включены по умолчанию.

  • Контейнер — запускается от непривилегированного пользователя; секреты только через переменные окружения.

Supply chain — verifying the image

CI подписывает образ без ключей с помощью cosign (Sigstore), используя OIDC-идентичность GitLab, и прикрепляет аттестацию SPDX SBOM. Проверьте перед запуском:

cosign verify \
  --certificate-oidc-issuer https://gitlab.cri.epita.fr \
  --certificate-identity-regexp 'https://gitlab.cri.epita.fr/enzo.juhel/web-scraper//.*' \
  registry.gitlab.cri.epita.fr/enzo.juhel/web-scraper@sha256:...

Benchmark

benchmarks/run.py оценивает наши scrape/extract на публичных наборах данных и базовом уровне Crawl4AI, выводя таблицу результатов (F1/точность по типам страниц + раздел «Ограничения»). Запустите локально или через ручную задачу CI benchmark:

uv run python benchmarks/run.py --output scorecard.md

Limitations

  • Нет платных прокси/CAPTCHA: сильно защищённые сайты (LinkedIn, Amazon, Cloudflare challenges) иногда блокируют нас. Таблица результатов бенчмарка показывает, где именно.

  • Извлечение основного контента хорошо работает на статьях, хуже на форумах / страницах товаров / списках (известное свойство всех экстракторов).

  • Состояние обхода/сессии в памяти — однопроцессное, однопользовательское по замыслу.

Development

uv run pre-commit install        # local lint/secret hooks
uv run ruff check . && uv run ruff format --check .
uv run mypy src
uv run pytest -q
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables web scraping and crawling capabilities for LLM clients, supporting single-page scraping, multi-page website crawling, and web search with multiple engines (Playwright, Cheerio, Puppeteer) and flexible output formats including markdown, HTML, text, and screenshots.
    18
    6
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to extract content from websites using automated static and dynamic scraping engines with built-in anti-bot protections. It provides tools for web data retrieval and stores results in MongoDB with support for JSON and CSV exports.
  • A
    license
    A
    quality
    A
    maintenance
    Web scraping, crawling, and structured data extraction for AI agents. 5 tools: scrape (clean markdown from any URL), crawl (entire sites), map (discover URLs), extract (structured JSON), and search. 833ms avg latency, single binary, self-hostable.
    8
    852
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables LLMs to fetch and extract web content using browser automation, OCR, and multiple extraction methods, handling JavaScript rendering and anti-scraping techniques.
    17
    MIT

View all related MCP servers

Related MCP Connectors

  • Enable language models to perform advanced AI-powered web scraping with enterprise-grade reliabili…

  • Scrape, crawl, map & search the web. Open-source, self-hostable Rust crawler & search for AI agents.

  • Live web access for agents: scrape, SERP search, crawl/map, 74 collectors, datasets, proxies.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Prog-up/web-scraper-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server