Web Scraper MCP
Web Scraper MCP
Ein selbst gehosteter Model Context Protocol-Server, der einem LLM-Client (Claude Code, Cursor, ChatGPT) dieselbe Tool-Oberfläche bietet wie kostenpflichtige Scraping-Dienste — scrape, crawl, map, search, extract, interact, deep_research — und vollständig auf Ihrer eigenen Hardware läuft.
Keine kostenpflichtigen Proxy-/CAPTCHA-Dienste: Der Anti-Bot-Schutz ist selbst gehostet (headless Chromium + playwright-stealth, robots.txt, höfliches Rate Limiting). Härtende Websites können uns dennoch blockieren; siehe Einschränkungen.
Werkzeuge
Tool | Was es tut |
| Eine URL → sauberes Markdown (Boilerplate entfernt). Statisch zuerst, automatischer Browser-Fallback für JS-Seiten. |
| Hintergrund-BFS-Crawl-Job (Deduplizierung, Tiefen-/Seitenlimits); Ergebnisse abfragen. |
| Listet die Links auf einer Seite auf (optional gleiche Domain) — entscheiden Sie, was gecrawlt werden soll. |
| Websuche. Austauschbares Backend: DuckDuckGo (Standard), SearXNG, Brave oder Tavily. |
| Ruft eine Seite ab und extrahiert strukturiertes JSON passend zu Ihrem Schema, über ein LLM. |
| Steuern einer persistenten Browser-Sitzung (Klicken/Ausfüllen/Drücken) mithilfe tokenarmer ARIA-Snapshots. |
| Suche → Top-Quellen lesen → einen zitierten Synthesebericht zurückgeben. |
extract und deep_research erfordern ANTHROPIC_API_KEY.
Related MCP server: Universal Web Data Extraction Platform
Schnellstart
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 (lokal, für einen Desktop-Client): SCRAPER_TRANSPORT=stdio uv run web-scraper-mcp.
Docker
Der schnellste Weg, um loszulegen, ist das Ziehen des vorgefertigten Images von 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(Stellen Sie sicher, dass Sie PROG_UP_USERNAME durch Ihren tatsächlichen DockerHub-Benutzernamen ersetzen).
Verwendung lokaler Modelle (Ollama) und Kontextfenster
Wenn Sie Modelle lieber lokal ausführen möchten, anstatt die Anthropic-API zu verwenden, unterstützt der Server Ollama vollständig als alternatives Backend für die extract- und deep_research-Werkzeuge.
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[!WARNUNG] Kontextfenster sind entscheidend! Web-Scraping erzeugt eine enorme Menge an Markdown.
extractkann bis zu 100.000 Zeichen unddeep_researchbis zu 16.000 Zeichen an das LLM senden.Standardmäßig verarbeitet Claude große Kontexte nativ. Allerdings ist das Standard-Kontextfenster von Ollama (
num_ctx) oft auf nur 2.048 Token eingestellt. Wenn Sie eine riesige Wikipedia-Seite an ein lokales Modell übergeben, wird der Prompt stillschweigend abgeschnitten (Ihre Anweisungen werden verworfen) und leere Zeichenfolgen zurückgegeben!Wir übergeben automatisch
"num_ctx": 32768an Ollama in den API-Payloads, um dieses Abschneiden zu verhindern. Stellen Sie sicher, dass Ihr lokaler Rechner genügend RAM/VRAM hat, um ein 32K-Kontextfenster zu unterstützen, wenn Sie Ollama verwenden!
In einem Client registrieren (mcp.json)
Wenn über HTTP ausgeführt:
{
"mcpServers": {
"web-scraper": {
"url": "http://127.0.0.1:8000/mcp",
"headers": { "Authorization": "Bearer your_secure_token_here" }
}
}
}Wenn über stdio (Docker) ausgeführt:
{
"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"
]
}
}
}Konfiguration
Alle Einstellungen sind Umgebungsvariablen (Präfix SCRAPER_) oder eine .env-Datei — siehe .env.example.
Var | Standard | Hinweise |
| (nicht gesetzt) | Bearer-Token für den HTTP-Endpunkt. Erforderlich für jede Netzwerkbereitstellung; nicht gesetzt = nicht authentifiziert (gewarnt). |
|
| Bind-Adresse. Docker-Image setzt Host |
|
| Gleichzeitigkeitslimit für Headless-Seiten (RAM/CPU-gebunden). |
|
| Harte Obergrenzen für Crawl-Jobs. |
|
| Höfliches Ratenlimit pro Domain. |
|
| robots.txt respektieren. |
|
| Auf false lassen — deaktiviert den SSRF-Schutz, wenn true. |
| (nicht gesetzt) | Aktiviert |
| (nicht gesetzt) | Optionale Such-Backends (erste gesetzte gewinnt, sonst DuckDuckGo). |
Sicherheit
SSRF-Schutz — jede abgerufene URL (und jeder Redirect-Hop) wird per DNS aufgelöst und abgelehnt, wenn sie auf eine private / Loopback- / Link-Local- / Cloud-Metadata-Adresse zeigt. Der Browser bricht auch Subresource-Anfragen an private IPs ab.
Authentifizierung — Bearer-Token auf dem HTTP-Transport; standardmäßig an localhost gebunden.
Ressourcenlimits — Antwortgröße, Timeout, Seiten-Gleichzeitigkeit, Crawl-Seiten-/Tiefenlimits zum Schutz des Hosts.
robots.txt + Ratenlimitierung standardmäßig aktiviert.
Container — läuft als Nicht-Root-Benutzer; Geheimnisse nur über Umgebungsvariablen.
Lieferkette — Überprüfung des Images
CI signiert das Image schlüssellos mit cosign (Sigstore) unter Verwendung der OIDC-Identität von GitLab und fügt eine SPDX-SBOM-Bescheinigung hinzu. Überprüfen Sie vor der Ausführung:
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 bewertet unser scrape/extract gegen öffentliche Datensätze und die Crawl4AI-Baseline und erstellt eine Scorecard (pro Seitentyp F1/Genauigkeit + einen Abschnitt zu Einschränkungen). Führen Sie es lokal oder über den manuellen CI-benchmark-Job aus:
uv run python benchmarks/run.py --output scorecard.mdEinschränkungen
Keine kostenpflichtigen Proxys/CAPTCHA: Stark verteidigte Websites (LinkedIn, Amazon, Cloudflare-Herausforderungen) blockieren uns manchmal. Die Benchmark-Scorecard quantifiziert, wo.
Die Extraktion des Hauptinhalts ist bei Artikeln stark, bei Foren / Produkt- / Listenseiten schwächer (eine bekannte Eigenschaft aller Extraktoren).
In-Memory-Crawl-/Sitzungsstatus — bewusst Single-Process, Single-User.
Entwicklung
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