Skip to main content
Glama
Prog-up

Web Scraper MCP

by Prog-up

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、ポライトなレート制限)です。防御の固いサイトではブロックされる可能性があります。制限事項を参照してください。

ツール

ツール

機能

scrape

1つのURL → クリーンなMarkdown(ボイラープレート除去)。静的優先、JSページには自動でブラウザフォールバック。

crawl / check_crawl_status

バックグラウンドのBFSクロールジョブ(重複排除、深さ/ページ上限)。結果をポーリング。

map

ページ上のリンクを一覧表示(オプションで同一ドメインのみ)— 何をクロールするか決定。

search

Web検索。プラグイン可能なバックエンド:DuckDuckGo(デフォルト)、SearXNG、Brave、またはTavily。

extract

ページを取得し、LLMを介してスキーマに一致する構造化JSONを抽出。

browser_navigate / browser_act / browser_close

トークン効率の良いARIAスナップショットを使用して、永続的なブラウザセッションを操作(クリック/入力/キー押下)。

deep_research

検索 → 上位ソースを読む → 引用付きの総合レポートを返す。

extractdeep_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/mcp

Stdio(ローカル、デスクトップクライアント用):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の代わりにローカルでモデルを実行したい場合、サーバーは extractdeep_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 を参照してください。

変数

デフォルト

備考

SCRAPER_AUTH_TOKEN

(未設定)

HTTPエンドポイントのBearerトークン。ネットワーク展開では必須。未設定 = 認証なし(警告あり)。

SCRAPER_HOST / SCRAPER_PORT

127.0.0.1 / 8000

バインドアドレス。Dockerイメージはホストを 0.0.0.0 に設定。

SCRAPER_MAX_CONCURRENT_PAGES

8

ヘッドレスページの同時実行上限(RAM/CPU依存)。

SCRAPER_MAX_CRAWL_PAGES / _DEPTH

100 / 3

クロールジョブのハード上限。

SCRAPER_PER_DOMAIN_DELAY_S

1.0

ドメインごとのポライトなレート制限。

SCRAPER_RESPECT_ROBOTS

true

robots.txtを尊重。

SCRAPER_ALLOW_PRIVATE_NETWORKS

false

falseのままにしてください — trueにするとSSRFガードが無効になります。

ANTHROPIC_API_KEY

(未設定)

extract / deep_research を有効にします。

SCRAPER_SEARXNG_URLBRAVE_API_KEYTAVILY_API_KEY

(未設定)

オプションの検索バックエンド(最初に設定されたものが優先、それ以外は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 -q
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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.
    18
    6
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
  • A
    license
    A
    quality
    A
    maintenance
    Web 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.
    8
    852
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables LLMs to fetch and extract web content using browser automation, OCR, and multiple extraction methods, handling JavaScript rendering and anti-scraping techniques.
    17
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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