Web Scraper MCP
Web Scraper MCP
Un servidor autoalojado del Model Context Protocol que ofrece a un cliente LLM (Claude Code, Cursor, ChatGPT) la misma superficie de herramientas que los servicios de scraping de pago — scrape, crawl, map, search, extract, interact, deep_research — ejecutándose completamente en tu propio hardware.
Sin servicios de proxy/CAPTCHA de pago: el anti-bot es autoalojado (Chromium sin interfaz + playwright-stealth, robots.txt, limitación de velocidad cortés). Los sitios endurecidos aún pueden bloquear; ver Limitaciones.
Herramientas
Herramienta | Qué hace |
| Una URL → markdown limpio (sin plantillas). Primero estático, con respaldo automático del navegador para páginas JS. |
| Trabajo de rastreo BFS en segundo plano (deduplicación, límites de profundidad/páginas); consulta los resultados. |
| Lista los enlaces de una página (opcionalmente del mismo dominio) — decide qué rastrear. |
| Búsqueda web. Backend conectable: DuckDuckGo (predeterminado), SearXNG, Brave o Tavily. |
| Obtiene una página y extrae JSON estructurado que coincida con tu esquema, mediante un LLM. |
| Controla una sesión de navegador persistente (clic/rellenar/presionar) usando instantáneas ARIA de bajo costo de tokens. |
| Buscar → leer las mejores fuentes → devolver un informe de síntesis con citas. |
extract y deep_research requieren ANTHROPIC_API_KEY.
Related MCP server: Universal Web Data Extraction Platform
Inicio rápido
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 (local, para un cliente de escritorio): SCRAPER_TRANSPORT=stdio uv run web-scraper-mcp.
Docker
La forma más rápida de empezar es descargando la imagen preconstruida desde 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(Asegúrate de reemplazar PROG_UP_USERNAME con tu nombre de usuario real de DockerHub).
Uso de Modelos Locales (Ollama) y Ventanas de Contexto
Si prefieres ejecutar modelos localmente en lugar de usar la API de Anthropic, el servidor es totalmente compatible con Ollama como backend alternativo para las herramientas extract y 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] ¡Las ventanas de contexto son críticas! El scraping web produce una cantidad masiva de Markdown.
extractpuede enviar hasta 100,000 caracteres ydeep_researchpuede enviar hasta 16,000 caracteres al LLM.Por defecto, Claude maneja contextos masivos de forma nativa. Sin embargo, la ventana de contexto predeterminada de Ollama (
num_ctx) a menudo está configurada a solo 2,048 tokens. Si pasas una página enorme de Wikipedia a un modelo local, truncará silenciosamente el prompt (eliminando tus instrucciones) y devolverá cadenas vacías.Pasamos automáticamente
"num_ctx": 32768a Ollama en las cargas útiles de la API para evitar esta truncación. ¡Asegúrate de que tu máquina local tenga suficiente RAM/VRAM para soportar una ventana de contexto de 32K al usar Ollama!
Registro en un cliente (mcp.json)
Si se ejecuta vía HTTP:
{
"mcpServers": {
"web-scraper": {
"url": "http://127.0.0.1:8000/mcp",
"headers": { "Authorization": "Bearer your_secure_token_here" }
}
}
}Si se ejecuta vía 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"
]
}
}
}Configuración
Todos los ajustes son variables de entorno (prefijo SCRAPER_), o un archivo .env — ver .env.example.
Variable | Predeterminado | Notas |
| (sin establecer) | Token Bearer para el endpoint HTTP. Requerido para cualquier despliegue en red; sin establecer = sin autenticación (se advierte). |
|
| Dirección de enlace. La imagen Docker establece el host |
|
| Límite de concurrencia de páginas sin interfaz (limitado por RAM/CPU). |
|
| Límites máximos para trabajos de rastreo. |
|
| Límite de velocidad cortés por dominio. |
|
| Respetar robots.txt. |
|
| Mantener en false — desactiva la protección SSRF si es true. |
| (sin establecer) | Habilita |
| (sin establecer) | Backends de búsqueda opcionales (el primero configurado gana, si no, DuckDuckGo). |
Seguridad
Protección SSRF — cada URL obtenida (y cada salto de redirección) se resuelve por DNS y se rechaza si apunta a una dirección privada / de bucle local / enlace local / metadatos de nube. El navegador también aborta las solicitudes de subrecursos a IPs privadas.
Autenticación — token Bearer en el transporte HTTP; enlazar a localhost por defecto.
Límites de recursos — tamaño de respuesta, tiempo de espera, concurrencia de páginas, límites de páginas/profundidad de rastreo para proteger el host.
robots.txt + limitación de velocidad activados por defecto.
Contenedor — se ejecuta como usuario no root; secretos solo mediante variables de entorno.
Cadena de suministro — verificación de la imagen
El CI firma la imagen sin claves con cosign (Sigstore) usando la identidad OIDC de GitLab, y adjunta una atestación SBOM SPDX. Verifica antes de ejecutar:
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 puntúa nuestro scrape/extract contra conjuntos de datos públicos y la línea base de Crawl4AI, emitiendo una tarjeta de puntuación (F1/precisión por tipo de página + una sección de Limitaciones). Ejecuta localmente o mediante el trabajo manual de CI benchmark:
uv run python benchmarks/run.py --output scorecard.mdLimitaciones
Sin proxies/CAPTCHA de pago: los sitios muy protegidos (LinkedIn, Amazon, desafíos de Cloudflare) a veces nos bloquearán. La tarjeta de puntuación del benchmark cuantifica dónde.
La extracción de contenido principal es fuerte en artículos, más débil en foros / páginas de productos / listados (una propiedad conocida de todos los extractores).
Estado de rastreo/sesión en memoria — de un solo proceso y un solo usuario por diseño.
Desarrollo
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