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、ポライトなレート制限)です。防御の固いサイトではブロックされる可能性があります。制限事項を参照してください。
ツール
ツール | 機能 |
| 1つのURL → クリーンなMarkdown(ボイラープレート除去)。静的優先、JSページには自動でブラウザフォールバック。 |
| バックグラウンドのBFSクロールジョブ(重複排除、深さ/ページ上限)。結果をポーリング。 |
| ページ上のリンクを一覧表示(オプションで同一ドメインのみ)— 何をクロールするか決定。 |
| Web検索。プラグイン可能なバックエンド:DuckDuckGo(デフォルト)、SearXNG、Brave、またはTavily。 |
| ページを取得し、LLMを介してスキーマに一致する構造化JSONを抽出。 |
| トークン効率の良い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(PROG_UP_USERNAME を実際のDockerHubユーザー名に置き換えてください)。
ローカルモデル(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] コンテキストウィンドウは重要です! Webスクレイピングは大量のMarkdownを生成します。
extractは最大100,000文字、deep_researchは最大16,000文字をLLMに送信できます。デフォルトでは、Claudeは巨大なコンテキストをネイティブに処理します。しかし、Ollamaのデフォルトのコンテキストウィンドウ(
num_ctx)は多くの場合わずか2,048トークンに設定されています。巨大なWikipediaページをローカルモデルに渡すと、プロンプトが静かに切り詰められ(指示が失われ)、空文字列が返される可能性があります!APIペイロードでOllamaに
"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 + レート制限 がデフォルトで有効。
コンテナ — 非rootユーザーとして実行。シークレットは環境変数のみ。
サプライチェーン — イメージの検証
CIはcosign(Sigstore)を使用してGitLabのOIDC IDでイメージにキーレス署名し、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