web-scrapper-stdio
Web Scrapper Service (MCP Stdin/Stdout & HTTP)
堅牢なヘッドレスWebスクレイピングのためのPythonベースのMCPサーバーです。Webページから主要なテキストコンテンツを抽出し、AIや自動化ツールとのシームレスな統合のためにMarkdown、テキスト、またはHTMLとして出力します。
主な機能
ヘッドレスブラウザスクレイピング (Playwright, BeautifulSoup, Markdownify)
Markdown、テキスト、またはHTMLでの出力
MCP (Model Context Protocol) stdio/JSON-RPC統合向けに設計
デュアルトランスポート: stdio (デフォルト) および共有サービスモード用のストリーミング可能なHTTP
永続的なブラウザプール: Chromiumがリクエスト間も起動し続けるため、高速なスクレイピングが可能
スマートDOM待機: 固定の待機時間ではなく、MutationObserverベースのコンテンツ安定化機能
Docker化済み、ビルド済みイメージを提供
環境変数による設定可能
堅牢なエラー処理 (タイムアウト、HTTPエラー、Cloudflareなど)
ドメインごとのレート制限
AIツールやIDE (Cursor, Claude Desktop, Continue, JetBrains, Zedなど) との容易な統合
Cursor向けのワンクリックインストール、Claude向けの対話型インストーラー
Related MCP server: Fetcher MCP
クイックスタート
Dockerで実行 (stdioモード — クライアントごとに1コンテナ)
docker run -i --rm ghcr.io/justazul/web-scrapper-stdio共有HTTPサービスとして実行 (1コンテナで複数クライアントに対応)
docker run -d --name web-scraper \
-e MCP_TRANSPORT=streamable-http \
-e MCP_HTTP_PORT=8080 \
-e BROWSER_POOL_SIZE=3 \
-p 8080:8080 \
--shm-size=3gb \
ghcr.io/justazul/web-scrapper-stdioまたはDocker Composeを使用:
docker compose --profile service up -dワンクリックインストール (Cursor IDE)
トランスポートモード
stdio (デフォルト)
各MCPクライアントが docker run -i を介して独自のコンテナを起動します。シンプルで設定不要、あらゆるMCPクライアントで動作します。
{
"mcpServers": {
"web-scrapper-stdio": {
"command": "docker",
"args": ["run", "-i", "--rm", "ghcr.io/justazul/web-scrapper-stdio"]
}
}
}ストリーミング可能なHTTP (共有サービス)
HTTP経由で複数のMCPクライアントにサービスを提供する、永続的なコンテナを1つ実行します。複数のAIツールインスタンス (例: 複数のClaude Codeセッション) を実行する際にリソースを節約できます。
サービスを開始:
docker run -d --name web-scraper \
-e MCP_TRANSPORT=streamable-http \
-e MCP_HTTP_PORT=8080 \
-p 8080:8080 \
--shm-size=3gb \
ghcr.io/justazul/web-scrapper-stdioMCPクライアントから接続:
{
"mcpServers": {
"web-scrapper": {
"url": "http://localhost:8080/mcp"
}
}
}AIツールおよびIDEとの統合
このサービスは、Model Context Protocol (MCP) を実装する幅広いAIツールやIDEとの統合をサポートしています。以下に、主要な環境向けのすぐに使える設定例を示します。カスタムビルドが必要な場合は、必要に応じてイメージやタグを置き換えてください。
Cursor IDE
.cursor/mcp.json (プロジェクトレベル) または ~/.cursor/mcp.json (グローバル) に追加してください:
{
"mcpServers": {
"web-scrapper-stdio": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/justazul/web-scrapper-stdio"
]
}
}
}Claude Desktop
Claude DesktopのMCP設定 (通常は claude_desktop_config.json) に追加してください:
{
"mcpServers": {
"web-scrapper-stdio": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/justazul/web-scrapper-stdio"
]
}
}
}Claude Code
.mcp.json またはグローバルな ~/.claude.json に追加してください:
stdioモード (セッションごとに1コンテナ):
{
"mcpServers": {
"web-scrapper-stdio": {
"command": "docker",
"args": ["run", "-i", "--rm", "ghcr.io/justazul/web-scrapper-stdio"]
}
}
}HTTPモード (共有サービス — 最初にサービスを開始してください):
{
"mcpServers": {
"web-scrapper": {
"url": "http://localhost:8080/mcp"
}
}
}Continue (VSCode/JetBrainsプラグイン)
continue.config.json またはContinueプラグインのMCP設定に追加してください:
{
"mcpServers": {
"web-scrapper-stdio": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/justazul/web-scrapper-stdio"
]
}
}
}IntelliJ IDEA (JetBrains AI Assistant)
Settings > Tools > AI Assistant > Model Context Protocol (MCP) に移動し、新しいサーバーを追加してください。以下を使用します:
{
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/justazul/web-scrapper-stdio"
]
}Zed Editor
ZedのMCP設定に追加してください (正確なパスについてはZedのドキュメントを参照):
{
"mcpServers": {
"web-scrapper-stdio": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/justazul/web-scrapper-stdio"
]
}
}
}使用方法
MCPサーバー (ツール/プロンプト)
このWebスクラッパーはMCP (Model Context Protocol) ツールとして使用され、AIモデルやその他の自動化ツールから直接利用できます。
ツール: scrape_web
パラメータ:
url(文字列、必須): スクレイピングするURLmax_length(整数、オプション): 返されるコンテンツの最大長 (デフォルト: 無制限)timeout_seconds(整数、オプション): ページ読み込みのタイムアウト時間 (秒) (デフォルト: 30)user_agent(文字列、オプション): ブラウザに直接渡されるカスタムUser-Agent文字列 (デフォルトはランダムなエージェント)wait_for_network_idle(ブール値、オプション): スクレイピング前にネットワークアクティビティが落ち着くのを待つ (デフォルト: true)custom_elements_to_remove(文字列のリスト、オプション): 抽出前に削除する追加のHTML要素 (CSSセレクタ)grace_period_seconds(浮動小数点数、オプション): ナビゲーション後にJSレンダリングを待機する時間。スマート検出のためにMutationObserverを使用します。完全にスキップするには0に設定してください。(デフォルト: 0.5)output_format(文字列、オプション):markdown、text、またはhtml(デフォルト:markdown)click_selector(文字列、オプション): 指定された場合、ナビゲーション後かつ抽出前に、このセレクタに一致する要素をクリックします
戻り値:
Webページから抽出されたMarkdown形式のコンテンツ (文字列)
エラーは
[ERROR] ...で始まる文字列として報告されます
例: click_selector と custom_elements_to_remove の使用
{
"url": "http://uitestingplayground.com/clientdelay",
"click_selector": "#ajaxButton",
"grace_period_seconds": 10,
"custom_elements_to_remove": [".ads-banner", "#popup"],
"output_format": "markdown"
}プロンプト: scrape
パラメータ:
url(文字列、必須): スクレイピングするURLoutput_format(文字列、オプション):markdown、text、またはhtml(デフォルト:markdown)
戻り値:
選択した形式でWebページから抽出されたコンテンツ
注意:
Markdownがデフォルトで返されますが、
output_formatを介してテキストやHTMLを要求できます。スクレイッパーはrobots.txtを確認せず、提供されたURLの取得を試みます。
REST APIやCLIツールは含まれていません。これは純粋なMCP stdio/JSON-RPCツールです。
スクレイッパーは常にWebページの完全な
<body>コンテンツを抽出し、本質的なノイズ除去 (script、style、nav、footer、aside、headerなどの非コンテンツタグの削除) のみを適用します。スクレイッパーはCloudflareのチャレンジ画面を検出し、特定の文字列エラーを返します。
設定
環境変数を使用して、ほとんどの設定オプションを上書きできます:
コア設定
DEFAULT_TIMEOUT_SECONDS: ページ読み込みとナビゲーションのタイムアウト (デフォルト: 30)DEFAULT_MIN_CONTENT_LENGTH: 抽出されたテキストの最小コンテンツ長 (デフォルト: 100)DEFAULT_MIN_CONTENT_LENGTH_SEARCH_APP: search.appドメインの最小コンテンツ長 (デフォルト: 30)DEFAULT_MIN_SECONDS_BETWEEN_REQUESTS: 同じドメインへのリクエスト間の最小遅延 (デフォルト: 2)DEFAULT_GRACE_PERIOD_SECONDS: JSレンダリングのデフォルト待機期間 (デフォルト: 0.5)DEBUG_LOGS_ENABLED: デバッグレベルのログを有効にするにはtrueに設定 (デフォルト:false)
ブラウザプール
BROWSER_POOL_ENABLED: 永続的なブラウザプールを有効にする (デフォルト:true)。リクエストごとのブラウザ起動 (元の動作) にはfalseに設定してください。BROWSER_POOL_SIZE: 起動し続けるChromiumインスタンスの数 (デフォルト: 2)。各インスタンスは約100-200MBのRAMを使用します。
トランスポート
MCP_TRANSPORT: トランスポートモード —stdioまたはstreamable-http(デフォルト:stdio)MCP_HTTP_PORT: streamable-httpトランスポート使用時のHTTPサーバーポート (デフォルト: 8080)MCP_HTTP_HOST: HTTPサーバーのバインドアドレス (デフォルト:0.0.0.0)
Cloudflareバイパス
CAPTCHA_API_KEY: キャプチャ解決サービス用のAPIキー。設定すると、Cloudflare Turnstileチャレンジが自動的に解決されます。空の場合 (デフォルト)、CF保護されたページはエラーを返します。CAPTCHA_PROVIDER: キャプチャ解決プロバイダー —2captcha、capsolver、またはcapmonster(デフォルト:2captcha)CAPTCHA_BASE_URL: カスタム解決APIエンドポイント (デフォルト: プロバイダーの公式URLを使用)CAPTCHA_TIMEOUT: キャプチャ解決のタイムアウト時間 (秒) (デフォルト: 120)
テスト設定
DEFAULT_TEST_REQUEST_TIMEOUT: テストリクエストのタイムアウト (デフォルト: 10)DEFAULT_TEST_NO_DELAY_THRESHOLD: テストで人工的な遅延をスキップするためのしきい値 (デフォルト: 0.5)
エラー処理と制限事項
スクレイッパーは、ナビゲーションの失敗、タイムアウト、HTTPエラー (404を含む)、およびCloudflareのボット対策チャレンジを検出し、エラーを返します。
レート制限はドメインごとに適用されます (デフォルト: リクエスト間2秒)。
Cloudflareバイパス: 受動的な回避のために Patchright (CDPレベルの検知回避) を使用します。ほとんどのCF保護サイトは、チャレンジをトリガーすることなくスクレイピングされます。Turnstileチャレンジがトリガーされ、
CAPTCHA_API_KEYが設定されている場合、サードパーティAPIを介して自動的に解決されます。制限事項:
REST APIやCLIツールはありません (MCP stdio/JSON-RPCのみ)
HTML以外のコンテンツ (PDF、画像など) はサポートしていません
保護されたページに対する認証やセッション管理はありません
大規模なスクレイピングやサイトの利用規約に違反する目的での使用は意図していません
開発とテスト
テストの実行 (Docker Compose)
すべてのテストはDocker Composeを使用して実行する必要があります。Docker以外でテストを実行しないでください。
すべてのテスト:
docker compose up --build --abort-on-container-exit testMCPサーバーのテストのみ:
docker compose up --build --abort-on-container-exit test_mcpスクレイッパーのテストのみ:
docker compose up --build --abort-on-container-exit test_scrapper
ベンチマークの実行
docker compose run --rm benchmark結果は benchmarks/RESULTS.md に保存されます。
貢献
貢献を歓迎します!バグ修正、機能追加、改善については、Issueを開くかプルリクエストを送信してください。大幅な変更を計画している場合は、提案を議論するためにまずIssueを開いてください。
ライセンス
このプロジェクトは MIT License の下でライセンスされています。
This server cannot be deployed
Maintenance
Related MCP Connectors
Cloud scraping & crawling API for AI agents. Turn any URL into clean, LLM-ready markdown.
Clean Markdown and AI-readability scoring for any URL. Built for AI agents.
Web scraping for AI agents. Converts URLs to clean, LLM-ready Markdown with anti-bot bypass.
Web scraping for agents. Point it at a URL and it returns the page as clean markdown, JavaScript-rendered pages included. Point it at a site and it maps the URLs or crawls the section you need in the background, a few pages at a time so results fit in the conversation. Search the web and read full pages, extract fields with a JSON schema you define (validated, never invented), read a store's catalogue or a blog's posts from the platform's own feed, and check whether a page has changed. Failed requests cost nothing. The free plan includes 1,500 credits a month.
Related MCP Servers
- AlicenseAqualityAmaintenanceThis server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.21156,058 PyPI91,120MIT
- -licenseCqualityNot gradedmaintenanceA server that allows fetching web page content using Playwright headless browser with AI-powered capabilities for efficient information extraction.25,346 npm7-
- AlicenseNot gradedqualityBmaintenanceA context-optimized web scraping server that converts HTML to markdown/text and applies CSS selectors server-side, reducing token usage by 70-90% while providing AI tools with clean, filtered web content.7MIT
- AlicenseNot gradedqualityDmaintenanceProvides advanced web scraping with HTTP client, smart content extraction to Markdown, browser automation via Playwright, screenshot/PDF generation, and Docker sandbox execution environments.1MIT