fast-webfetch-mcp
fast-webfetch-mcp
Webページを実際のブラウザでレンダリングし、モデルに2MBのJavaScriptのトークン請求書ではなく、クリーンなMarkdownを渡す、WebフェッチMCPサーバーです。
ここでのフェッチは無料です。APIキーも、ページごとの課金もありません。また、サイトがブロックしているように見えても、それは多くの場合、実際のChromiumがそのまま通り抜けるヘッドレス検出スクリプトに過ぎません。
How it works
2つの小さなプログラム、1つの仕事:
MCP client (agent)
│ JSON-RPC over stdio
▼
src/index.ts Bun + MCP SDK — tool schemas, budgets, rendering
│ spawns per request
▼
crawl4ai_worker.py Python + Crawl4AI — headless Chromium, markdown extraction
│
▼
The actual internetTypeScriptサーバーはポリシーを担当します:タイムアウト、並行性の許可、出力の切り詰め、オプションのGeminiによる要約。Pythonワーカーはメカニクスを担当します:ブラウザのライフサイクル、レンダリング、リトライ。どちらも相手の仕事を知らず、両者間の契約はstdout上の1つのJSONドキュメントです。
Related MCP server: crawler-mcp
Install
要件:Bun、Python 3.12+、そして最初のブラウザダウンロードに対するGPUに依存しない忍耐力。
git clone <this repo> ~/.local/share/mcp/fast-webfetch-mcp # or anywhere
cd ~/.local/share/mcp/fast-webfetch-mcp
bun install
uv venv .venv --python 3.12 && uv pip install --python .venv/bin/python crawl4aiブラウザ側が動作することを確認します:
FAST_WEBFETCH_SMOKE_URL=https://example.com bun run src/index.tsサンプルドメインのMarkdownが表示されるはずです。代わりにPlaywrightブラウザに関するスタックトレースが表示された場合は、venvからcrawl4ai-setupを実行して再試行してください。適切なChromiumビルドがインストールされます。
Wire it into your agent
{
"mcpServers": {
"fast-webfetch": {
"type": "stdio",
"command": "/usr/bin/mullvad-exclude",
"args": ["/home/you/.bun/bin/bun", "run", "/path/to/fast-webfetch-mcp/src/index.ts"],
"env": { "PATH": "/home/you/.bun/bin:/usr/bin:/bin" }
}
}
}mullvad-excludeラッパーはオプションです。フェッチトラフィックがVPNをバイパスして、サイトが実際のIPを確認できるようにするだけです。通常の"command": "bun"も同じように機能します。
Tools
fast_fetch — 1つのURLをMarkdownに変換
引数 | 型 | デフォルト | 備考 |
| string | 必須 | |
| string | — | 設定すると、ページ全体の代わりに根拠のある回答 |
| number | 40,000 | 中央切り詰めで先頭と末尾を保持 |
| boolean | false | 上限を100,000文字に引き上げ |
| number | 25,000 | ハード上限、ブラウザレンダリングを含む |
| object | — | 呼び出しごとのレンダリング調整、下記参照 |
fast_fetch_raw — 1つのURLを生のHTMLに変換
promptを除く同じ引数。Markdownが失うもの(テーブル、data-属性、メタタグ、正確なマークアップ)が必要な場合に使用します。
options オブジェクト
3つのツールすべてが、単純なロード&取得以上のものを必要とするサイト向けに、オプションのoptionsオブジェクトを受け入れます:
{
"url": "https://example.com/feed",
"options": { "full_page": true, "wait_seconds": 1.5, "drop_overlays": true }
}キー | 型 | 効果 |
| boolean | 抽出前にページ全体をスクロール — 遅延読み込みや無限スクロールのコンテンツを取得。遅い。無限フィードではタイムアウトまでスクロール |
| number | キャプチャ前の待機時間。例:遅延ハイドレーションのページには |
| boolean | iframeコンテンツを結果に取り込む |
| boolean | 抽出前にクッキーバナーやモーダルを削除 |
誤って入力されたキーは渡されずに静かに破棄されます — optionsペイロードはPython側でCrawlerRunConfigフラグになります。
fast_fetch_multiple — 1バッチで最大15のURL
引数 | 型 | デフォルト | 備考 |
| string[] | 必須 | 1〜15の絶対http(s)URL |
| number | 40,000 | URLごと |
| boolean | false | URLごと |
| number | 25,000 | バッチ全体で共有 |
| object | — | 同じ調整、すべてのURLに適用 |
各URLは、メタデータヘッダー(url、status、elapsed_ms、truncated)を持つ独自のセクションとして返されます。1つの遅いサイトが他のサイトを飢えさせることはありません — バッチの仲間が成功する間、そのアイテムだけがアイテムごとのタイムアウトエラーを受け取ります。
Configuration
すべてオプション、すべて環境変数。
Server knobs
変数 | デフォルト | 目的 |
|
| デフォルトのページごとの文字数上限 |
|
|
|
|
| デフォルトのフェッチタイムアウト |
|
| 並列ブラウザスロット(最大32) |
| unset |
|
|
| ワーカーインタープリター |
|
| ワーカーパス |
| — |
|
Browser knobs
変数 | デフォルト | 目的 |
| on ( | 検出防止パッチ:webdriverフラグ、プラグイン、WebGLベンダー、Chrome API。無効にするには |
| off | 外部接続用プロキシ |
|
| Playwrightの待機戦略 |
| off | 抽出前にスクロール — 呼び出しごとに |
|
| HTMLキャプチャ前の待機時間 — 呼び出しごとに |
Behavior worth knowing
JSを多用するサイトは、デフォルトの待機戦略では空のシェルを返すことがよくあります。200がコンテンツなしで返された場合、ワーカーは同じタイムアウト予算内でnetworkidleを使用して1回再試行します — 最悪の場合、2回ではなく1回待つことになります。一方、接続失敗とHTTPエラーは単一試行のままです:死んだホストを再試行するのは、失敗するまでの時間が長くなるだけです。
fast_fetchとfast_fetch_multipleは同じ12のブラウザスロットのプールから取得するため、大きなバッチが同時の単一フェッチを飢えさせることはありません。プールを超える需要はキューに入ります。存在するスロットよりも多くのスロットを要求するバッチは、空いているものを取得します。
最後に、max_lengthが存在するのは、エージェントのコンテキストウィンドウが予算であり、埋め立て地ではないからです。
When things break, you get a log path
失敗は2つの山に分類されます:インターネットが不安定な場合(タイムアウト、遅いサイト、アイテムごとのバッチ期限エラー)と、ツールが実際に壊れている場合(ワーカーが起動しない、ワーカーがクラッシュした、stdoutオーバーフロー、解析不能な出力)。ログを書き込むのは2番目の山だけです — 1番目は正直なエラータグを受け取るだけです。
ツール側の失敗は次のように終わります:
log: /path/to/fast-webfetch-mcp/logs/2026-08-22T09-02-06-780Z-fast_fetch.json内部には:ツール、正確な引数、ワーカー入力、完全な失敗記録(ステージ、終了コード、シグナル、stderrの末尾)— リクエストをそのまま再現するのに十分です:
FAST_WEBFETCH_INPUT='{"url":"https://example.com","max_length":40000}' \
.venv/bin/python crawl4ai_worker.pyFAST_WEBFETCH_LOGS_DIRでリダイレクトします。
Staying under 30 seconds
エージェントハーネスは通常、30秒前後でMCP呼び出しを強制終了するため、このサーバーは28秒をハードリミットとして扱います。すべてのツールはその前に応答します:フェッチが成功した場合は完了した結果、そうでない場合はどのステージが時間を消費したかを示す構造化されたアイテムごとのエラー。予算を使い切ったバッチでも、完了したアイテムは返されます。
Troubleshooting
症状 | 考えられる原因と修正 |
| リポジトリが移動しました。 |
|
|
Everything times out on one site | サイトが本当に遅いか敵対的です。 |
| 予想通り:共有25秒の予算で、遅延アイテムはアイテムごとのエラーを受け取ります |
Empty markdown on SPAs | リトライで自己修復されるはずです。されない場合は |
Development
bun install
bun test # 18 tests, no network needed
bun run typecheck # tsc --noEmit, strict + noUncheckedIndexedAccessPythonワーカーは直接駆動できます。MCPレイヤーなしでフェッチ動作をデバッグする最速の方法です:
FAST_WEBFETCH_INPUT='{"url":"https://example.com","max_length":500}' \
.venv/bin/python crawl4ai_worker.pySee also
ddg-search — 自然なフロントエンド:検索して、結果のURLをこのサーバーに渡します
Crawl4AI — 基盤となるクローリングエンジン
Model Context Protocol — ワイヤープロトコル
License
MIT.
This server cannot be installed
Maintenance
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
- AlicenseAqualityBmaintenanceMCP server that lets Claude Code fetch web content using real Chrome browsers. Renders JavaScript-heavy pages, handles bot mitigation, and runs up to 14 parallel browsers locally with zero API keys. Makes outbound HTTP requests only to URLs the user explicitly asks Claude to fetch.21491MIT
- FlicenseAqualityCmaintenanceWeb-crawler MCP server that fetches web pages with static parsing or headless browser fallback, enabling Claude to fetch, extract links, crawl sites, and select content via CSS selectors.4
- AlicenseAqualityCmaintenanceAn MCP server that enables AI assistants to fetch web content in multiple formats (HTML, JSON, text, Markdown) with intelligent content extraction, chunk management, and browser automation support.55215MIT
- AlicenseNot gradedqualityBmaintenanceAn open-source web retrieval MCP server that fetches, crawls, and searches the web, returning clean markdown for AI agents. It integrates with Claude MCP, LangChain, and other frameworks for agentic web access.1MIT
Related MCP Connectors
Zenrows MCP server — Fetch, Extract, Batch, and Browser Sessions for AI coding assistants
Firecrawl MCP — wraps the Firecrawl API (firecrawl.dev) for web
SEO MCP server: crawl your site, find AI-visibility gaps, and ship the fix from your coding agent.
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/NikkeTryHard/fast-webfetch-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server