「このページ、AIに読ませておいて」。そう頼んで返ってきたのが、中身の薄い断片だけだった。AIエージェントにWebを読ませ始めると、たいてい一度はここでつまずきます。

つまずきの原因は、AI側の読解力ではありません。どの経路でページを取りに行ったかです。同じURLでも、通る経路が違えば手元に届く中身が変わります。ログインの先にあるページや社内のイントラは、経路の側が最初から届かない設計になっていることもあります。

この記事は、MCPの公式リファレンス実装であるFetch MCPを題材に、AIにWebを読ませる経路の選び分けを整理します。運営元WEBMARKSは、Fetch MCPを自社の本番業務へ接続していません。ここから先は公式リポジトリとドキュメントの記述確認(2026-08-03確認)に基づく設計論で、実際に使ってどうだったかという体感は書きません。

こんなふうに調べていませんか

  • AIに読ませたいページがある。標準の機能とMCPのどちらを使うか決めきれない
  • Fetch MCPを入れてみたい。ただ、社内のURLまで届いてしまわないかが気になる
  • 取得した中身が空で返る。ページ側の問題なのか、経路側の問題なのか切り分けたい

この記事を読み終えたときに手に入るもの

  • Fetch MCPに任せられるページと、任せても読めないページを線引きできるようになります
  • 標準のWebFetchとFetch MCPを、届く中身の違いから選び分けられるようになります
  • robots.txtと権限設定の扱いを、接続する前に決めきれるようになります

結論30秒でわかる、この記事の結論

  • Fetch MCPが引き受けるのは、取ってきてMarkdownに直すところまでです。ブラウザは動かしません。
  • 標準のWebFetchとの分かれ目は、届く中身・ページの状態・絞り込みの単位の3つにあります。
  • 読めない場面は事前に分かります。ログイン・後から描かれる画面・社内限定のURLが境界です。
経路を選ぶ前に、ここだけ見ます迷うのはページの前ではなく、経路の前です経路を選ぶ前に、ここだけ見ます分かれ目その一手元に何が残るか要約が残るのか、原文が残るのか分かれ目その二そのページの成り立ち返ってきたHTMLだけで足りるか分かれ目その三許可を刻める細かさ宛先まで刻めるか、道具名までか鈴木さん迷うのはページの前ではなく、経路の前です
経路を選ぶ前に、ここだけ見ます — 迷うのはページの前ではなく、経路の前です

進行役は3人です。若葉さんが言葉の側から聞き、高梨課長が動かす側から聞き、鈴木さん(本誌監修)が答えます。

01Fetch MCPって、AIエージェントに何をさせる部品なんですか?

若葉さん
若葉さんの発言

MCPのサーバーはたくさんありますよね。Fetch MCPは、その中でどういう役回りなんでしょうか。

鈴木さん
鈴木さんの発言

出前を受け取る係に近いと思っています。玄関まで取りに行って、袋から出して皿へ移すところまで。味見はしませんし、食べるかどうかも決めません。

Fetch MCPは、指定したURLの内容を取得し、HTMLをMarkdownへ変換して返すMCPの公式リファレンス実装です。

公式リポジトリのREADMEは、役割を「Web content fetching and conversion for efficient LLM usage」と一言で書いています(出典: 公式リポジトリREADME)。ブラウザは起動しません。HTTPリクエストでページを取り、その場でMarkdownへ直すだけです。

リポジトリ全体の位置づけにも明記があります。収録サーバーは教育用のリファレンス実装であり、本番運用を前提にしたソリューションではないとされています(出典: 同リポジトリREADME)。Filesystem MCPやGitHub MCPなど、同居する他のサーバーも同じ扱いです。

出前で言うと、どこまでが担当か運ぶ係に、味の判断までは頼めません出前で言うと、どこまでが担当か運ぶ係に、味の判断までは頼めません出前で言うとこの部品で言うと玄関まで受け取りに行くHTTPでページを取りに行く袋から出して皿へ移すHTMLをMarkdownへ直す一度に運べる量は決まっている返せる長さに上限がある残りは次の便で届く続きは位置をずらして受け取る鍵は開けてもらう前提ログイン画面がそのまま返る
出前で言うと、どこまでが担当か — 運ぶ係に、味の判断までは頼めません

たとえの右側に並ぶのは、どれも運ぶことに関わる言葉だけです。選ぶ・確かめる・入口を開けるにあたる言葉が1つも出てきません。守備範囲は、そこで切れています。

02Fetch MCPがAIエージェントから受け取る引数は、何を決めるものなんですか?

公開されているツールはfetchだけです。受け取る引数は4つあります(出典: 同README、2026-08-03確認)。

引数既定値内容
url文字列・必須なし取得対象のURL
max_length整数・任意5000返却する文字数の上限
start_index整数・任意0取得を開始する文字位置。続きを読むときに使う
raw真偽値・任意falsetrueにするとMarkdown変換なしの生データを返す

決めているのは、どこから・どれだけ・どんな形での3つだけです。urlが場所、max_lengthstart_indexが範囲、rawが形にあたります。読み方や使い道を指示する引数は用意されていません。

入り口も軽く作られています。uvx mcp-server-fetchなら追加インストールなしで直接実行できます。pip install mcp-server-fetchのあとpython -m mcp_server_fetchで起動する経路もあります(出典: 同README)。どちらも同じサーバーが立ち上がります。

MCPがAIエージェントの到達範囲を広げる仕組みそのものは、MCPの選び方|AIエージェントに任せる範囲から見る5軸で整理した判断軸と地続きです。Fetch MCPは、その中でもHTTPで取れる静的な内容だけを担当するサーバーだと考えてください。

03Fetch MCPをAIエージェントにつなぐには、どんな手順が要るんですか?

Claude Codeへつなぐ場合は、公式ドキュメントが示すstdio型MCPサーバーの追加構文に沿います(出典: Claude Code公式MCPドキュメント)。

# 1. Fetch MCPをstdio型サーバーとして登録する(自分専用のlocalスコープが既定)
claude mcp add --transport stdio fetch -- uvx mcp-server-fetch

# 2. 接続状態を確認する
claude mcp list

チームで共有するなら--scope projectを付け、.mcp.jsonへ書き出します。local・project・userというスコープの考え方は、他のMCPサーバーを足すときと変わりません。project scopeで追加したサーバーは、承認されるまでclaude mcp listに「⏸ Pending approval」と表示されます。承認するにはclaudeを対話的に起動します(出典: Claude Code公式MCPドキュメント)。

つないだ直後に、返り方まで見る止まるとしたら、ここで先に分かりますつないだ直後に、返り方まで見る止まるとしたら、ここで先に分かります1まず自分の手元だけに入れる共有するかどうかは、あとから決められます2共有する場合だけ、通す手続きを踏む待ちの表示が消えるまでが、その手続きです3小さいページで一度だけ呼ぶどこまで返るかを、その場で目で確かめます
つないだ直後に、返り方まで見る — 止まるとしたら、ここで先に分かります
ステップ実行する操作確認方法
①登録claude mcp addでFetch MCPをstdio型として追加するAdded ...という完了行が出る
②承認project scopeの場合はclaudeを対話的に起動して承認するclaude mcp list✔ Connectedと表示する
③挙動確認fetchツールを一度呼び、max_lengthstart_indexの効き方を見る想定した範囲の本文が返るか確認する

並びは同じでも、③だけ性格が違います。①と②が見ているのは「つながったか」です。③が見ているのは「どう返るか」です。つながった状態と、使える状態は別に数えます。

robots.txtの制限を外したい場合は、起動コマンドに引数を足します。

# robots.txtの制限を無視して取得する場合(取得先の利用規約を確認したうえで判断する)
claude mcp add --transport stdio fetch -- uvx mcp-server-fetch --ignore-robots-txt

起動時に渡せる引数は3つあります(出典: 公式リポジトリREADME)。

引数効果指定例
--user-agent=文字列User-Agentを独自の文字列に置き換える--user-agent=MyCompanyBot/1.0
--ignore-robots-txtrobots.txtの制限を無視する値を取らず、付けるだけで有効になる
--proxy-url=URL社内プロキシ等を経由して取得する--proxy-url=http://proxy.internal:8080

この章のまとめ

登録・承認・挙動確認までをひと続きにします。返り方を見ないまま先へ進むと、後半が切れていることに気づけません。

04WebFetchは、AIエージェントに返す前に何をしているんですか?

高梨課長
高梨課長の発言

Claude Codeには、もともとWebを読む機能がありますよね。わざわざMCPを足す意味はあるんでしょうか。

鈴木さん
鈴木さんの発言

届くものが違います。標準のほうは、間に小さなモデルがもう1つ入って、そのモデルの答えが返ってきます。ページそのものではありません。

高梨課長
高梨課長の発言

要約が返ってくる、という理解でいいですか。

鈴木さん
鈴木さんの発言

大きくは外していないと思います。要約で足りるなら標準のほうが手軽です。原文を並べて突き合わせたいときに、この差が効いてきます。

Claude Codeには、MCPを足さなくても使える組み込みのWebFetchがあります。公式ツールリファレンスは、その挙動を具体的に説明しています(出典: Claude Code公式ツールリファレンス、2026-08-03確認)。

WebFetchはURLとプロンプトを受け取り、ページを取得してHTMLならMarkdownへ変換し、小さく速いモデルにそのプロンプトを実行させます。Claudeが受け取るのは、多くの場合そのモデルの回答であり、ページそのものではありません(出典: 同ツールリファレンス)。この変換ステップは設定で変更できません。

応答は15分間キャッシュされます。大きなページは処理前に一定の文字数で切り詰められます。別ホストへリダイレクトする場合は追わずに、元のURLとリダイレクト先を伝える結果を返します(出典: 同ツールリファレンス)。

手元に来るまでに、間で起きていること読んでいるのは、最後のひと箱だけです手元に来るまでに、間で起きていること読んでいるのは、最後のひと箱だけです1場所と問いを渡す読みたい先と、聞きたいことを一緒に2取って読める形に直すここまでは、どの経路でも変わらない3別のモデルが目を通す問いに沿って、短くまとめ直す4その答えだけが返るページそのものは、手元に残らない
手元に来るまでに、間で起きていること — 読んでいるのは、最後のひと箱だけです

Claudeが読むのは、最後のひと箱だけです。手前の段は、Claudeの目には触れません。 どこまでが自分で読んだ内容なのかを見失わないために、この境目は覚えておく価値があります。

05標準のWeb取得とFetch MCPでは、AIエージェントに届く中身が違うんですか?

中の段取りが分かったところで、両者を並べます。同じ「URLを読む」でも、揃わない項目が並びます。

同じURLでも、手元に残るものが違う軽さを取るか、原文を取るかの分かれ目です同じURLでも、手元に残るものが違う軽さを取るか、原文を取るかの分かれ目です組み込みの取得機能別のモデルが先に読む返るのはそのモデルの答えこの段取りは変えられない軽く済むかわりに、原文は手元に残りませんFetch MCP直したページがそのまま返る続きは位置を指定して取り直す呼ぶたびに取りに行く重いかわりに、原文を並べて見比べられます
同じURLでも、手元に残るものが違う — 軽さを取るか、原文を取るかの分かれ目です
比較軸標準のWebFetch(Claude Code組み込み)Fetch MCP
Claudeに届く内容小さく速いモデルがプロンプトに沿って要約した結果max_lengthの範囲でMarkdown化された本文そのもの
長いページの扱い一定の文字数で切り詰めてから処理するstart_indexを進めて複数回fetchを呼び、続きを取得できる
キャッシュ15分間の自己クリア型キャッシュがある標準の仕組みは無く、呼ぶたびに再取得する
絞り込みの単位WebFetch(domain:example.com)でドメイン単位に絞れるmcp__fetchというサーバー単位までしか絞れない
追加設定組み込み済みで追加インストール不要claude mcp addでの登録とサーバー起動が必要

表の各行は、どれも同じ1つの違いから枝分かれしています。読む前に、別の頭をもう1つ通すかどうかです。通せば軽くなり、通さなければ原文が残ります。優劣の話ではなく、手元に何を残したいかで決まります。

06長いページの続きは、Fetch MCPとAIエージェントのどちらが面倒を見るんですか?

見落としやすい接続点があります。Claude Codeは、MCPサーバーからの出力が10,000トークンを超えると警告を出します。既定では25,000トークンで打ち切ります(出典: Claude Code公式MCPドキュメント)。

max_lengthを大きく設定しても、この上限に当たれば出力は途中で切り詰められます。長いページを分けて読みたいときは、max_lengthを既定値の付近に留め、start_indexで区切って複数回呼ぶほうが安定します。

続きを取りに行くのは、呼ぶ側です覚えている人がいないので、段取りで補います続きを取りに行くのは、呼ぶ側です覚えている人がいないので、段取りで補います1控えめな長さで頼む上限いっぱいを狙わない2先頭から受け取る返ってきた分だけが手元に残る3開始の位置をずらす次に読みたい場所を指す4もう一度頼む終わりまで、同じ形を繰り返す鈴木さん刻んで何度も頼むほうが、結果として最後まで届きます
続きを取りに行くのは、呼ぶ側です — 覚えている人がいないので、段取りで補います

続きを取りに行くのは、Fetch MCP側ではありません。位置を進めてもう一度呼ぶのは、呼び出す側の仕事です。 Fetch MCPは、渡された位置から渡された長さぶんを切って返すだけで、前回どこまで返したかを覚えていません。

だからこの分割は、AIエージェント側の段取りとして設計します。一度で全部取ろうとして上限に当たるより、控えめに刻んで複数回呼ぶほうが、結果として最後まで読み切れます。

07Fetch MCPでは、ログインの先にあるページは、AI社員に任せても読めないんですか?

Fetch MCPには、認証やログイン状態を扱う仕組みがありません。公式READMEが挙げるパラメータと起動引数は前述のものだけで、Cookieやセッションを保存・再利用する機能への言及はありません(2026-08-03確認)。ログイン必須のページを渡すと、ログイン画面のHTMLがそのまま返るだけになります。

渡す前に、ページの側を見分ける止まる場所は、渡す前にほとんど分かります渡す前に、ページの側を見分ける止まる場所は、渡す前にほとんど分かります開いた時点で、本文がもう入っている鍵をかけずに、権限のない人にも見えます入ってからでないと見えない画面入るための仕組みを持っていません開いた後に、中身が組み上がる画面組み上がる前のHTMLだけを読みます社内からしか見えない宛先止める仕組みが無いので、届いてしまいます
渡す前に、ページの側を見分ける — 止まる場所は、渡す前にほとんど分かります
状況Fetchで動くか理由
公開されている静的なニュース記事・ドキュメント動くHTTPで取得しHTMLをMarkdown化するだけで完結する
ログイン必須のダッシュボード・社内ポータル動かないCookieやセッションを保持・再利用する仕組みが無い
JavaScriptで内容が後から描画されるページ動かない、または内容が薄いブラウザを起動せずHTTPレスポンスをそのまま読む
社内ネットワーク限定のURL・イントラサイト到達してしまう可能性があるローカル・内部IPアドレスへのアクセスを制限する仕組みが無い
robots.txtが取得を禁じているページ自律呼び出しでは止まる--ignore-robots-txtを付ければ無視できる

この表で、社内ネットワークの行だけ性質が違います。ほかの行は読めるか読めないかの話です。その行は読めてしまうことが問題になる行です。動かないことより、動いてしまうことのほうが厄介な場面があります。

08Fetch MCPでrobots.txtの扱いは、生成AIの呼び出し方で変わるんですか?

robots.txtの扱いも一様ではありません。既定では、AIがツール経由で自律的に呼び出した場合だけrobots.txtに従い、人がプロンプトで直接URLを指定した場合は従いません(出典: 公式リポジトリREADME)。--ignore-robots-txtを付けると、この区別自体が無効になります。

呼び出し元によってUser-Agentも切り替わります。自律呼び出しはModelContextProtocol/1.0 (Autonomous; ...)です。直接指定はModelContextProtocol/1.0 (User-Specified; ...)になります(出典: 同README)。

同じ設定でも、呼んだのが誰かで変わるサーバーの側ではなく、呼び方の側で分かれます同じ設定でも、呼んだのが誰かで変わるサーバーの側ではなく、呼び方の側で分かれますAIが自分で判断して呼ぶrobots.txtの指示に従う名乗りは自律の側になる断られて止まることがある取れないときは、まずここを疑います人が名指しで頼むrobots.txtの指示には従わない名乗りは指定された側になるそのまま取りに行く取れてしまう前提で、渡す先を選びます
同じ設定でも、呼んだのが誰かで変わる — サーバーの側ではなく、呼び方の側で分かれます

分かれ目にあるのは設定ではなく、呼んだのが誰かです。同じサーバーへ同じURLを渡しても、AIが自分で判断して呼んだのか、人が名指しで頼んだのかで扱いが変わります。取れたり取れなかったりする場面では、この違いを先に確かめます。

09Fetch MCPで、社内ネットワークのURLを、AIエージェントに渡すと何が起きるんですか?

高梨課長
高梨課長の発言

社内のイントラのURLを渡してしまったら、どうなるんでしょうか。エラーで止まりますか。

鈴木さん
鈴木さんの発言

止める仕組みは入っていません。届いてしまう可能性があるほうを想定しておくほうが安全だと思います。

高梨課長
高梨課長の発言

設定で塞げないものですか。

鈴木さん
鈴木さんの発言

この部品の側には、その設定が用意されていません。だから、渡すURLを決める運用の側で塞ぐことになります。

公式READMEは、より直接的な注意を書いています。このサーバーはローカル・内部IPアドレスにアクセス可能であり、セキュリティリスクを代表しうる、という記述です(出典: 同README)。

MCP公式のセキュリティ文書も、代表的な攻撃パターンの1つとしてSSRFを挙げています。悪意あるサーバーが、クラウドの内部メタデータエンドポイント(169.254.169.254等)へリクエストを向ける手口です(出典: MCP公式セキュリティ文書)。Fetch MCPは認可フローを持たない単純なHTTP取得ですが、社外向けと社内向けを区別せずURLを渡せてしまうという構造は共通しています。

線を引くのは、道具か、入れる側か違うのは機能の数ではなく、宿題の置き場所です線を引くのは、道具か、入れる側か違うのは機能の数ではなく、宿題の置き場所ですAPI側の取得ツール私設の宛先を最初から断る断られたことが決まった形で返る判断が道具に埋め込まれている考えなくても、そこから先へは行きませんFetch MCP同じ既定の遮断を持たない内側の宛先にも手が届く外すかどうかは起動時に決めるどこまで行かせるかが、そのまま宿題になります
線を引くのは、道具か、入れる側か — 違うのは機能の数ではなく、宿題の置き場所です

似た機能を持つAnthropic公式のAPI版web fetchツール(Messages APIのサーバーツール)もあります。こちらはプライベートアドレスやrobots.txt拒否URLを、url_not_allowedとして最初から弾きます(出典: Anthropic公式APIドキュメント)。Fetch MCPには同種の既定ブロックが無く、無視するかどうかの判断は運用者に委ねられています。

左右で入れ替わっているのは、機能の多さではありません。線引きを誰が持つかです。既定で弾く側は、道具に線が引いてあります。委ねる側では、線を引く仕事がそのまま導入する側へ回ってきます。

AIに何を触れさせるかという境界の考え方は、AIエージェントに機密情報を渡さない|3段階の分離と検査で扱った分離設計の続きとして捉えられます。

この章のまとめ

届かない仕組みが無い以上、届いてよい範囲は導入する側で決めます。決めないまま入れると、既定の挙動がそのまま自社の方針になります。

10ブラウザ系MCPとFetch MCPは、AI活用の場面でどう選び分けるんですか?

「ブラウザ系」と呼ばれるMCPの中には、実際にブラウザを起動して画面をレンダリングするものがあります。Playwright MCPはその代表です。スクリーンショットではなくアクセシビリティツリーを介してブラウザを操作します(出典: Playwright MCPはどこまで動くか|認証4パターンと権限設計)。

Google公式のChrome DevTools MCPも同じ系統です。Chromeを実際に起動し、DOMやパフォーマンスを調べます(出典: 公式リポジトリChromeDevTools/chrome-devtools-mcp)。

Fetch MCPはこの系統とは設計が根本から違います。ブラウザプロセスを持たず、HTTPリクエストと軽いHTML変換だけで完結します。JavaScriptを実行しないため、内容が後から描かれるページでは取得結果がほぼ空になります。

項目Fetch MCPPlaywright MCPChrome DevTools MCP
取得方式HTTPリクエストのみ実ブラウザを起動して操作実ブラウザ(Chrome)を起動して操作
JavaScriptの実行しないするする
ログイン状態の再利用仕組みが無い永続プロファイル・storage-state等で可能ブラウザプロファイル経由で可能
セットアップの重さuvx1コマンドで起動ブラウザ本体の管理が要るChromeの管理が要る
主な用途記事・ドキュメントの内容取得フォーム操作を含む自動操作・検証表示崩れ・パフォーマンスの検証

11Fetch MCPでは、描画と持ち越しは、AIエージェントの経路選びでなぜ同時に決まるんですか?

表の行をそのまま覚える必要はありません。2つの軸に置き直すと、覚えることがぐっと減ります。

斜めに移る道は、用意されていない画面を描くことと、状態を持ち越すことは同時に決まります斜めに移る道は、用意されていない画面を描くことと、状態を持ち越すことは同時に決まりますここに入る経路は無い描くのに、ブラウザを持たないという組み合わせブラウザを起こす経路Playwright MCP/Chrome DevTools MCPFetch MCP取って直すところまで。軽さはここから来ますここに入る経路も無い持ち越すのに、ブラウザを持たない組み合わせ上:描き終えた画面を見る / 下:返ってきたHTMLだけを見る左:毎回まっさらで訪ねる / 右:入った状態を持ち越せる
斜めに移る道は、用意されていない — 画面を描くことと、状態を持ち越すことは同時に決まります

置き直すと、表では見えないものが見えます。斜めに移る道が無いことです。描画と持ち越しは別々に足せる機能ではなく、ブラウザを持つかどうかで同時に決まります。だから選択は、機能を1つずつ比べる作業ではなく、経路そのものを乗り換える判断になります。

使い分けの判断は単純です。静的HTMLの範囲で読めるページなら、ブラウザの管理が要らないFetch MCPで足ります。クリック・入力・ログイン状態の再利用が要る作業は、ブラウザ系MCPへ切り替えます。両方をひとつのサーバーに任せようとすると、Fetch MCPには無い機能を求めることになります。

12権限設定では、Fetch MCPをAIエージェントのどこに置くんですか?

高梨課長
高梨課長の発言

取得先を都度確かめたいのですが、ドメインごとに許可を分けられますか。

鈴木さん
鈴木さんの発言

MCP側では分けられません。名前で言うとmcp__fetch__fetchという単位までです。ドメインで分けたいなら、標準のWebFetch側の書き方になります。

権限設定では、Fetch MCPが公開するツールがfetchだけである点が効いてきます。サーバー名もツール名もfetchのため、権限ルール上の名称はmcp__fetch__fetchという重なった形になります。

標準のWebFetchはドメイン単位で絞れます(WebFetch(domain:example.com))。一方でMCPのルールは、サーバー名かツール名までの単位で、URLやドメインを直接は見ません(出典: Claude Code公式permissionsドキュメント)。

絞り込みは、この段までしか下りないいちばん上の段は、権限の書き方では埋まりません絞り込みは、この段までしか下りないいちばん上の段は、権限の書き方では埋まりません宛先ごと(最上段・届かない)MCPの規則は、この段を見ていません道具の名前まで(中段)重なった名前を書いて、ひとつに絞る入口の名前まで(土台)その入口ごと、まとめて扱う上の段を埋めたいときは、渡す宛先を決める運用の側で埋めます。
絞り込みは、この段までしか下りない — いちばん上の段は、権限の書き方では埋まりません
{
  "permissions": {
    "ask": [
      "mcp__fetch__fetch"
    ],
    "allow": [
      "WebFetch(domain:code.claude.com)"
    ]
  }
}

取得先を都度確かめたいならaskに、任せてよいならallowにします。この配分の考え方は、Claude Codeの権限設定|AIエージェントに任せる範囲と3列の配分で扱った枠組みと同じです。

段で見ると、いちばん上には手が届きません。どのURLかで許可を変えるという段です。ここを埋めたいなら、権限設定ではなく、渡すURLを決める運用の側で埋めることになります。

13Fetch MCPでつまずくのは、AI導入のどんな場面ですか?

WEBMARKSはFetch MCPを未接続です。ここは実地の体感ではなく、公式ドキュメントの仕様から読み取れる、事前に押さえておく点です。

1. 動的サイトを渡すと、内容がほぼ空になる。 JavaScriptで後から描かれる部分は、Fetch MCPが読むHTTPレスポンスの時点ではまだ存在しません。

2. 長いページの後半が、max_lengthの既定値で切れる。 続きが要るならstart_indexを増やして再度fetchを呼びますが、Claude Code側のMCP出力上限にも同時に注意します。

3. robots.txtで止まったのか、単なるHTTPエラーなのかが返答だけでは区別しにくい。 自律呼び出し時は既定でrobots.txtに従うため、想定外に取得できないときは、まずこの制限を疑います。

症状原因対処
取得した内容がほぼ空・意味のない断片になる対象ページがJavaScriptで内容を後から描画しているPlaywright MCPなどブラウザ系MCPへ切り替える
長いページの後半が読めないmax_length(既定5000)で切り詰められているstart_indexを進めて複数回fetchを呼ぶ
start_indexを増やしても出力が伸びないClaude Code側のMCP出力上限(既定25,000トークン)に達している呼び出しを分け、1回あたりのmax_lengthを控えめにする

3つに共通するのは、はっきりしたエラーが出ないことです。空で返るのも、途中で切れるのも、断られたのも、見た目は静かです。静かな失敗は、動いているように見えます。 だから接続の直後に、返り方を目で見る手順を挟みます。

14Fetch MCPで生成AIに渡すページの範囲は、接続する前にどう決めるんですか?

ここまでの内容を、接続前に決めておく項目へ畳みます。

  • Fetch MCPの登録コマンド(claude mcp add --transport stdio)を確認した
  • localprojectuserのどのスコープで登録するかを決めた
  • max_lengthstart_indexによるページ分割の使い方を確認した
  • --ignore-robots-txtを使うかどうかを、取得先の利用規約を踏まえて判断した
  • 社内ネットワーク・イントラネットのURLへ到達させてよいかを、導入前に確認した
  • ログイン必須のページには使わない前提で、対象ページの範囲を決めた
  • mcp__fetch__fetchをallow・ask・denyのどれにするか、権限設定に明記した
  • JavaScriptで描画されるページには、ブラウザ系MCPへの切り替えを検討した
  • 取得したURLをいつ・何のために取得したか記録する運用を決めた

並べ直すと、道具の確認にあたるのは前半だけです。後半はどこへ行かせないかを決める項目に変わっています。入れるかどうかより、入れたあとに渡す範囲のほうが、決めるのに時間がかかります。

15よくある質問

Fetch MCPは無料で使えますか

Fetch MCP自体はオープンソースで公開されており、uvx mcp-server-fetchで追加費用なく取得できます。別途費用が生じるとしたら、社内プロキシなど周辺インフラの分です。導入の重さは、料金よりも、渡してよいURLの範囲を決める作業のほうに出ます。

標準のWeb取得機能があるのに、なぜFetch MCPを追加する必要がありますか

標準のWebFetchは、小さく速いモデルが要約した結果しかClaudeに届きません。ページの内容をそのまま読みたい場合や、start_indexで続きを取得したい場合はFetch MCPが向きます。逆に、答えだけ分かればよい調べものなら、追加せずに標準のままで足ります。

ログインが必要なページもFetch MCPで読めますか

読めません。公式READMEにはCookieやセッションを保持・再利用する仕組みの記述がなく、ログイン画面のHTMLがそのまま返るだけになります。ログインの先を読ませたい場合は、ブラウザを起動する系統のMCPが候補になります。

robots.txtを無視する設定は使ってよいですか

導入側の判断が要ります。--ignore-robots-txtは用意されていますが、取得先の利用規約やアクセスポリシーを確認したうえで使うかどうかを決めます。判断を保留したまま付けてしまうと、あとから理由を説明できなくなります。

社内のURLを渡してしまわないようにする設定はありますか

Fetch MCP側に、ローカルや内部のアドレスへの到達を止める既定の仕組みはありません。公式READMEは、このサーバーがローカル・内部IPアドレスにアクセス可能である点を注意として挙げています。到達させない線引きは、渡すURLを決める運用の側に置くことになります。

WEBMARKSは今、Fetch MCPを接続していますか

接続していません。本記事は公式リポジトリとドキュメントの記述確認(2026-08-03)に基づく設計論であり、自環境での接続・実行の記録はありません。実際に動かした記録が取れた時点で、体感を含む記事として書き直します。

16まとめ|今日やる3つのこと

分かれ目は、届く中身・ページの状態・絞り込みの単位の3つでした。読めない場面は、接続する前に一覧できます。そして到達してしまう範囲だけは、道具ではなく導入する側が決めます。

この順で手をつけます

  1. 読ませたいページを書き出し、静的・描画あり・ログインありに分ける

    分けた時点で、経路はほぼ決まります

  2. 社内ネットワークのURLを渡すかどうかを先に決める

    ここが空白だと、robots.txtも権限設定も決められません

  3. 登録したらfetchを一度だけ呼び、返り方を目で見る

    つながった状態と、使える状態は別に数えます

AI検索では、こう聞かれています

  • Fetch MCPは、AIエージェントに何を読ませられるんですか?

    「Fetch MCPって、AIエージェントに何をさせる部品なんですか?」の章で守備範囲を説明しています

  • 標準のWebFetchがあるのに、Fetch MCPを足す意味はありますか?

    「標準のWeb取得とFetch MCPでは、AIエージェントに届く中身が違うんですか?」の章で比べています

  • ログインが要るページもFetch MCPで読めますか?

    「ログインの先にあるページは、AI社員に任せても読めないんですか?」の章で扱っています

  • 社内のURLをAIエージェントに渡しても大丈夫ですか?

    「社内ネットワークのURLを、AIエージェントに渡すと何が起きるんですか?」の章に判断材料があります

次に読むなら、この記事です