Web Scraper MCP
Web Scraper MCP
셀프 호스팅 Model Context Protocol 서버로, LLM 클라이언트(Claude Code, Cursor, ChatGPT)에게 유료 스크래핑 서비스와 동일한 도구 표면을 제공합니다 — scrape, crawl, map, search, extract, interact, deep_research — 전적으로 자체 하드웨어에서 실행됩니다.
유료 프록시/CAPTCHA 서비스 없음: 안티봇은 자체 호스팅됩니다(헤드리스 Chromium + playwright-stealth, robots.txt, 예의 있는 속도 제한). 강력하게 보호된 사이트는 여전히 차단될 수 있습니다. 제한 사항을 참조하세요.
도구
도구 | 기능 |
| 하나의 URL → 깨끗한 마크다운(보일러플레이트 제거). 정적 우선, JS 페이지용 자동 브라우저 폴백. |
| 백그라운드 BFS 크롤 작업(중복 제거, 깊이/페이지 상한); 결과를 폴링. |
| 페이지의 링크 목록(선택적으로 동일 도메인) — 무엇을 크롤할지 결정. |
| 웹 검색. 플러그형 백엔드: DuckDuckGo(기본), SearXNG, Brave, 또는 Tavily. |
| 페이지를 가져와서 스키마에 맞는 구조화된 JSON을 LLM을 통해 추출. |
| 토큰 효율적인 ARIA 스냅샷을 사용하여 영구 브라우저 세션(클릭/입력/키 누름)을 구동. |
| 검색 → 상위 소스 읽기 → 인용된 종합 보고서 반환. |
extract 및 deep_research에는 ANTHROPIC_API_KEY가 필요합니다.
Related MCP server: Universal Web Data Extraction Platform
빠른 시작
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(실제 DockerHub 사용자 이름으로 PROG_UP_USERNAME을 교체해야 합니다).
로컬 모델(Ollama) 및 컨텍스트 창 사용
Anthropic API 대신 로컬에서 모델을 실행하려는 경우, 서버는 extract 및 deep_research 도구를 위한 대체 백엔드로 Ollama를 완전히 지원합니다.
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] 컨텍스트 창은 중요합니다! 웹 스크래핑은 엄청난 양의 마크다운을 생성합니다.
extract는 최대 100,000자,deep_research는 최대 16,000자를 LLM에 보낼 수 있습니다.기본적으로 Claude는 대규모 컨텍스트를 기본적으로 처리합니다. 그러나 Ollama의 기본 컨텍스트 창(
num_ctx)은 종종 2,048 토큰으로 구성됩니다. 거대한 Wikipedia 페이지를 로컬 모델에 전달하면 프롬프트가 조용히 잘려나가(지침이 누락됨) 빈 문자열이 반환됩니다!우리는 API 페이로드에
"num_ctx": 32768을 자동으로 전달하여 이러한 잘림을 방지합니다. Ollama를 사용할 때 로컬 머신에 32K 컨텍스트 창을 지원할 충분한 RAM/VRAM이 있는지 확인하세요!
클라이언트에 등록 (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"
]
}
}
}구성
모든 설정은 환경 변수(접두사 SCRAPER_) 또는 .env 파일입니다 — .env.example 참조.
변수 | 기본값 | 참고 |
| (설정 안 됨) | HTTP 엔드포인트용 Bearer 토큰. 네트워크 배포에는 필수; 설정 안 됨 = 인증 없음(경고). |
|
| 바인드 주소. Docker 이미지는 호스트 |
|
| 헤드리스 페이지 동시성 상한(RAM/CPU 제한). |
|
| 크롤 작업의 하드 상한. |
|
| 도메인별 예의 있는 속도 제한. |
|
| robots.txt 준수. |
|
| false 유지 — true이면 SSRF 가드를 비활성화합니다. |
| (설정 안 됨) |
|
| (설정 안 됨) | 선택적 검색 백엔드(첫 번째 설정이 우선, 그 외에는 DuckDuckGo). |
보안
SSRF 가드 — 가져온 모든 URL(및 각 리디렉션 홉)은 DNS로 확인되며, 개인/루프백/링크-로컬/클라우드 메타데이터 주소를 가리키면 거부됩니다. 브라우저는 또한 개인 IP에 대한 하위 리소스 요청을 중단합니다.
인증 — HTTP 전송에 Bearer 토큰; 기본적으로 localhost에 바인딩.
리소스 상한 — 응답 크기, 시간 초과, 페이지 동시성, 크롤 페이지/깊이 제한으로 호스트를 보호합니다.
robots.txt + 속도 제한 기본적으로 켜져 있습니다.
컨테이너 — 비루트 사용자로 실행; 비밀은 환경 변수로만 전달.
공급망 — 이미지 검증
CI는 GitLab의 OIDC ID를 사용하여 cosign(Sigstore)으로 이미지에 키 없는 서명을 하고, 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:...벤치마크
benchmarks/run.py는 공개 데이터 세트와 Crawl4AI 기준선에 대해 scrape/extract를 평가하여 스코어카드(페이지 유형별 F1/정확도 + 제한 사항 섹션)를 생성합니다. 로컬 또는 수동 CI benchmark 작업으로 실행:
uv run python benchmarks/run.py --output scorecard.md제한 사항
유료 프록시/CAPTCHA 없음: 강력하게 보호된 사이트(LinkedIn, Amazon, Cloudflare 챌린지)는 때때로 차단됩니다. 벤치마크 스코어카드가 어디서 그런지 정량화합니다.
주요 콘텐츠 추출은 기사에서 강하고, 포럼/제품/목록 페이지에서는 약합니다(모든 추출기의 알려진 속성).
메모리 내 크롤/세션 상태 — 설계상 단일 프로세스, 단일 사용자.
개발
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