mcpField
F
fetchmcp

fetchmcp

ローカル
github.com/labtoolsstudioブラウザ自動化011 週間前に更新

fetchmcp について

fetchmcpは、ウェブページをMarkdownとして取得するMCPサーバーです。JavaScriptが必要なページはブラウザーで描画し、取得できない場合は明示的なエラー状態を返します。ドキュメント向けの読み取り機能と、長い結果のページ分割にも対応します。

主な機能

  1. 01ウェブページをMarkdownに変換
  2. 02必要に応じてJavaScriptページを描画
  3. 03ナビゲーション要素を除いて文書を読み取り
  4. 04長い結果をページ分割
  5. 05ブロックや取得失敗を状態付きで報告

活用シーン

  1. 01JavaScript依存のページから内容を取得
  2. 02APIドキュメントを読みやすいテキストで抽出
  3. 03初回結果に収まらないページの続きを読む

MCP 対応

ウェブページやドキュメントを取得するread_urlおよびread_docsツールをMCPクライアントに公開します。描画、整形、ページ分割に対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"labtools-studio-fetchmcp": {
"command": "npx",
"args": [
"-y",
"@labtoolsstudio/fetchmcp"
]
}
}
}
起動コマンドnpx -y @labtoolsstudio/fetchmcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@labtoolsstudio/fetchmcp0.1.1

ツール

2

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
rawbooleanいいえtrue の場合、抽出した Markdown ではなく、ページの生 HTML を返します。デフォルト:false。
urlstringはい取得する URL(http または https)。
renderbooleanいいえ実際のブラウザーでの JS レンダリング:true = 常にレンダリング、false = レンダリングしない。デフォルト:自動 — 静的 HTML が空の SPA シェルの場合にのみレンダリングします。
headersobjectいいえ送信する追加の HTTP ヘッダー。ログインが必要なページ用の Authorization bearer token や Cookie など。例:{"Authorization": "Bearer ...", "Cookie": "session=..."}。
max_lengthintegerいいえ返す最大文字数。デフォルト:0 = 無制限(ページ全体)。出力が切り詰められた場合、レスポンスでその旨と続行方法を知らせます。
start_indexintegerいいえ長いページをページ分割して読む際の開始文字オフセット。デフォルト:0。

詳細

fetchmcp

現代のウェブページでも実際に動作する、公式 fetch MCP のドロップイン置き換えです。

npm node license PRs welcome

公式の fetch MCP は JavaScript を多用するページで動作せず、出力は 5,000 文字で切り詰められ、未修正の SSRF 脆弱性も含まれています。fetchmcp は、JavaScript が必要な場合はレンダリングし、有料プロキシなしで基本的なボット対策を通過して、ページがブロックされた場合はコンテンツを捏造せず正直に伝えながら、あらゆる URL から LLM で使いやすいクリーンな Markdown を返します。npx で実行するだけです。

導入前と導入後:公式 fetch MCP は空の SPA シェルを返し、fetchmcp はクリーンな Markdown を返します

// Replace the official fetch server with this — one line in your MCP config:
"fetchmcp": { "command": "npx", "args": ["-y", "@labtoolsstudio/fetchmcp"] }

Cursor に追加   VS Code にインストール

切り替える理由

公式 fetchfetchmcp
JavaScript ページ❌ 空または動作しない✅ 実際のブラウザーで自動レンダリング
出力の長さ✂️ 5,000 文字で切り詰め✅ ページ分割に対応したページ全体
ボット対策(403/Cloudflare)❌ 何も通知せず失敗✅ 中程度の対策を通過、有料プロキシ不要
ブロックされたページ❌ CAPTCHA を「コンテンツ」として返す✅ 型付きエラーで正直に通知し、決して偽装しない
SSRF 対策❌ CVE-2025-65513(CVSS 9.3)✅ プライベート IP/メタデータ IP をデフォルトで拒否
コスト無料無料、セルフホスト可能、$0

インストール

MCP クライアントの設定(claude_desktop_config.json、Cursor の mcp.json、Cline など)に追加します。

{
  "mcpServers": {
    "fetchmcp": {
      "command": "npx",
      "args": ["-y", "@labtoolsstudio/fetchmcp"]
    }
  }
}

インストールは軽量です — ブラウザーは事前にダウンロードされず、静的な読み取り(fetch → Readability → Markdown)はすぐに動作します。ページで初めて JavaScript が必要になると、fetchmcp はステルス Chromium を一度だけ自動的にダウンロード(約 150 MB)してレンダリングします。設定は引き続き不要です。インストール時に事前ダウンロードするには、FETCHMCP_PREINSTALL_BROWSER=1 を設定してください。静的読み取り専用にしてダウンロードを完全に避けるには、FETCHMCP_SKIP_BROWSER_DOWNLOAD=1 を設定してください(その場合、JS ページには正直に needs_js が返されます)。

ツール

read_url

あらゆるウェブページをクリーンな Markdown として取得します。

引数型説明
urlstring取得する URL(http/https)
renderbooleanJS レンダリング:true = 常に実行、false = 実行しない、省略時 = 自動(空の SPA シェルの場合のみ)
rawbooleanMarkdown ではなく生の HTML を返す
headersobject追加のリクエストヘッダー。例:{"Authorization": "Bearer …", "Cookie": "…"}
max_lengthinteger返す文字数の上限(0 = 無制限、デフォルト)
start_indexinteger長いページをページ分割して読む際の開始位置
read_docs

同じエンジンをドキュメント向けに調整したものです。ナビゲーションサイドバー、ヘッダー、フッターを取り除き、API ドキュメントやガイドをクリーンな参照テキストとして返します。url、render、headers、max_length、start_index を受け取ります。

正直なステータス

fetchmcp は、ボット対策画面、エラーページ、実際のコンテンツを装った途中で切れたシェルを返すことはありません。ページを読み取れない場合は、型付きステータスとともに理由を伝えます。ステータスには、blocked(ベンダー名を含むボット対策)、blocked_ssrf、needs_js、http_error、timeout、network_error、unsupported_content、empty があります。

設定(環境変数)

変数デフォルト意味
FETCHMCP_TIMEOUT_MS30000リクエストごとのタイムアウト
FETCHMCP_MAX_RETRIES2ネットワークエラー/429/503 発生時の再試行(バックオフと Retry-After を使用)
FETCHMCP_ALLOW_PRIVATE_IP未設定1 に設定すると、プライベート IP/localhost の IP を許可します(信頼できるイントラネットのドキュメント向け)
FETCHMCP_FLARESOLVERR_URL未設定より難しいチャレンジに対応する、セルフホスト可能な FlareSolverr のエンドポイント
FETCHMCP_SKIP_BROWSER_DOWNLOAD未設定静的コンテンツのみの場合は 1 に設定します。Chromium をダウンロードせず、JS ページは needs_js を返します
FETCHMCP_PREINSTALL_BROWSER未設定初回の JS 利用時ではなく、インストール時に Chromium をダウンロードするには 1 に設定します

開発とテスト

npm install          # installs deps (Chromium downloads on first JS use)
npm run build        # compile TypeScript to dist/
npm test             # unit tests (block detection, SSRF) — no network
npm run test:e2e     # live end-to-end suite against real sites

# Poke at any tool/URL by hand — no need to write a script:
node test/probe.mjs read_url  https://example.com
node test/probe.mjs read_url  https://some-spa.example.com --render
node test/probe.mjs read_docs https://docs.python.org/3/library/json.html
node test/probe.mjs read_url  https://api.example.com --header "Authorization=Bearer x" --max-length 500
node test/probe.mjs read_url  https://example.com --full     # print the whole response

test/probe.mjs --help の動作については、ファイルの先頭に記載されています。

動作の仕組み

必要に応じて段階的に処理する、3 つのティアがあります。

  1. 静的 — 通常の fetch → Readability → Markdown。ほとんどのページで最速の経路です。
  2. ブラウザー — 静的 HTML が空の SPA シェル、ボット対策ページ、または 403/429/503 の場合に、遅延読み込みで patchright(ステルス Chromium)を使用します。
  3. FlareSolverr(オプション)— エンドポイントを設定している場合に限り、ブラウザーでは突破できないチャレンジに使用します。

スター履歴

fetchmcp が「fetch しても何も返らない」という場面をまた一つ解決できたなら、スターを付けると、ほかの人にも見つけてもらいやすくなります。

スター履歴チャート

ライセンス

MIT — LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。