Web Scraper MCP
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 | Что делает |
| Один URL → чистый markdown (без шаблонного кода). Сначала статический, автоматический переход на браузер для JS-страниц. |
| Фоновая задача обхода BFS (дедупликация, ограничения по глубине/страницам); опрос результатов. |
| Список ссылок на странице (опционально только тот же домен) — решите, что обходить. |
| Веб-поиск. Подключаемый бэкенд: DuckDuckGo (по умолчанию), SearXNG, Brave или Tavily. |
| Получить страницу и извлечь структурированный JSON, соответствующий вашей схеме, с помощью LLM. |
| Управление постоянной сессией браузера (клик/заполнение/нажатие) с использованием дешёвых по токенам ARIA-снимков. |
| Поиск → чтение лучших источников → возврат отчёта с цитатами. |
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/mcpStdio (локально, для настольного клиента): 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 | Примечания |
| (unset) | Bearer-токен для HTTP-эндпоинта. Обязателен для любого сетевого развёртывания; не задан = без аутентификации (предупреждение). |
|
| Адрес привязки. Docker-образ устанавливает хост |
|
| Максимум одновременных headless-страниц (ограничение по RAM/CPU). |
|
| Жёсткие пределы для задач обхода. |
|
| Вежливое ограничение частоты запросов на домен. |
|
| Уважать robots.txt. |
|
| Оставьте false — при true отключает защиту SSRF. |
| (unset) | Включает |
| (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.mdLimitations
Нет платных прокси/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 -qMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables 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.186MIT
- FlicenseNot gradedqualityDmaintenanceEnables 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.
- AlicenseAqualityAmaintenanceWeb 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.8852AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables LLMs to fetch and extract web content using browser automation, OCR, and multiple extraction methods, handling JavaScript rendering and anti-scraping techniques.17MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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