mcpField
F
Fetch

Fetch

おすすめローカル
modelcontextprotocol.ioブラウザ自動化91.6k今日更新

Fetch について

Fetch は、LLM 向けにウェブページを取得し、HTML を処理しやすい Markdown に変換する MCP サーバーです。長い内容を分割して読み取れ、既定では非公開アドレスへのアクセスを拒否します。

主な機能

  1. 01URL からページ内容を取得
  2. 02HTML を Markdown に変換
  3. 03長いページを分割して抽出
  4. 04原文のまま返す設定
  5. 05robots.txt の規則に準拠

活用シーン

  1. 01LLM 用のウェブ資料を取得
  2. 02長いページを分割して読む
  3. 03後続処理向けにページ内容を抽出

MCP 対応

クライアントに、ウェブ内容を取得・抽出する fetch ツールと対応するプロンプトを提供します。既定ではプライベート、ループバックなどの非公開アドレスへのアクセスを拒否します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"fetch": {
"command": "uvx",
"args": [
"mcp-server-fetch"
]
}
}
}
起動コマンドuvx mcp-server-fetch

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

パッケージ
pypimcp-server-fetch

ツール

1

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

パラメーター型必須説明
urlstringはい取得する URL
max_lengthintegerいいえ返される最大文字数。
start_indexintegerいいえ返却する出力をこの文字インデックスから開始します。前回の取得結果が切り詰められ、さらにコンテキストが必要な場合に便利です。
rawbooleanいいえリクエストしたページの実際の HTML コンテンツを、簡略化せずに取得します。

詳細

Fetch MCP サーバー

Web コンテンツの取得機能を提供する Model Context Protocol サーバーです。このサーバーを使うと、LLM は Web ページからコンテンツを取得して処理し、HTML をより扱いやすい Markdown に変換できます。

ソース:https://github.com/modelcontextprotocol/servers/tree/main/src/fetch

MCP Python SDK 2.x(mcp>=2.3,<3)が必要です。

注意

このサーバーはローカル/内部 IP アドレスにアクセスできるため、セキュリティリスクとなる可能性があります。機密データが漏えいしないよう、この MCP サーバーを使用する際は十分に注意してください。

デフォルトでは、169.254.169.254 などのクラウドメタデータエンドポイントを含む、プライベート、ループバック、リンクローカルなどの非パブリックアドレスへの取得を拒否し、リダイレクトの各段階でも同様に確認します。--allow-private-ips 引数を指定すると、この保護が無効になります。詳しくはカスタマイズ - プライベートアドレスを参照してください。この保護では、リクエストごとにホスト名が解決するアドレスを確認します。そのため、確認後から接続までの間に発生する DNS リバインディングは防げません。また、サーバー自身では解決できず、プロキシだけが解決できるホスト名も確認されません。

fetch ツールはレスポンスを切り詰めますが、start_index 引数を使うと、コンテンツの抽出を開始する位置を指定できます。これにより、モデルは必要な情報が見つかるまで Web ページを分割して読み取れます。

利用可能なツール
  • fetch - インターネット上の URL を取得し、コンテンツを Markdown として抽出します。
    • url(文字列、必須):取得する URL
    • max_length(整数、任意):返す最大文字数(デフォルト:5000)
    • start_index(整数、任意):この文字インデックスからコンテンツを開始します(デフォルト:0)
    • raw(ブール値、任意):Markdown に変換せず、生のコンテンツを取得します(デフォルト:false)
    • アノテーション:readOnlyHint: true、destructiveHint: false、idempotentHint: true、openWorldHint: true(読み取りのみを行い、インターネット上の任意のホストにアクセスします)
プロンプト
  • fetch
    • URL を取得し、コンテンツを Markdown として抽出します
    • 引数:
      • url(文字列、必須):取得する URL
エラー
  • 取得の失敗(robots.txt による拒否、ページに到達できない、HTTP エラーステータス、プライベートアドレスへのアクセス拒否、使用できないプロキシ設定)や、ツールのスキーマに合わない引数は、isError: true を含むツール結果として返されます。そのテキストは Error executing tool fetch: で始まり、問題の内容を示すため、モデルはそれを読み取って対応を判断できます。
  • サーバーにないツールを呼び出すと、仕様で定められているとおり、-32602(Unknown tool: <name>)という JSON-RPC プロトコルエラーになります。サーバーにないプロンプトを取得した場合(Unknown prompt: <name>)や、url を指定せずに fetch プロンプトを取得した場合(URL is required)も同様です。
  • fetch プロンプトの取得に失敗した場合も、プロンプトは返されます。そのメッセージには取得に失敗した理由が含まれます。

このサーバーは MCP Python SDK の高水準 MCPServer を基盤としています。ツールとプロンプトはデコレータを付けた関数であり、それらの型ヒントとフィールドの説明が入力スキーマおよびプロンプトの引数になります。

プロトコルバージョン

このサーバーは、設定不要で、stdio 経由で Model Context Protocol の両世代に対応します。2026-07-28 のクライアント(server/discover で検出し、セッションなし)と、2025-11-25 のクライアント(initialize ハンドシェイク)を利用できます。最初のリクエストによって、使用するクライアントが決まります。ツールとプロンプトはどちらでも同じように動作します。ping など、2026-07-28 仕様で削除されたメソッドに応答するのは、2025-11-25 の接続だけです。

インストール

任意:node.js をインストールすると、fetch サーバーはより堅牢な別の HTML 簡略化ツールを使用するようになります。

uv を使用する(推奨)

uv を使用する場合、特別なインストールは不要です。uvx を使って mcp-server-fetch を直接実行します。

PIP の使用

別の方法として、mcp-server-fetch を pip でインストールできます。

pip install mcp-server-fetch

インストール後、次のコマンドでスクリプトとして実行できます。

python -m mcp_server_fetch

設定

Claude.app の設定

Claude の設定に追加します。

uvx を使用する場合
{
  "mcpServers": {
    "fetch": {
      "command": "uvx",
      "args": ["mcp-server-fetch"]
    }
  }
}
docker を使用する場合
{
  "mcpServers": {
    "fetch": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "mcp/fetch"]
    }
  }
}
pip でインストールする場合
{
  "mcpServers": {
    "fetch": {
      "command": "python",
      "args": ["-m", "mcp_server_fetch"]
    }
  }
}
VS Code の設定

すばやくインストールするには、以下のワンクリックインストールボタンのいずれかを使用します…

VS Code に UV でインストール VS Code Insiders に UV でインストール

VS Code に Docker でインストール VS Code Insiders に Docker でインストール

手動でインストールするには、以下の JSON ブロックを VS Code のユーザー設定(JSON)ファイルに追加します。Ctrl + Shift + P を押して Preferences: Open User Settings (JSON) と入力すると実行できます。

必要に応じて、ワークスペース内の .vscode/mcp.json というファイルに追加することもできます。これにより、設定を他のユーザーと共有できます。

mcp.json ファイルを使用する場合は、mcp キーが必要です。

uvx を使用する場合
{
  "mcp": {
    "servers": {
      "fetch": {
        "command": "uvx",
        "args": ["mcp-server-fetch"]
      }
    }
  }
}
Docker を使用する場合
{
  "mcp": {
    "servers": {
      "fetch": {
        "command": "docker",
        "args": ["run", "-i", "--rm", "mcp/fetch"]
      }
    }
  }
}
カスタマイズ - robots.txt

デフォルトでは、モデルからのリクエスト(ツール経由)の場合、サーバーはウェブサイトの robots.txt に従いますが、ユーザーが開始したリクエスト(プロンプト経由)の場合は従いません。ツールによるフェッチでリダイレクトが発生するたびに、リクエストされた URL と同様に、遷移先ホストの robots.txt を確認します。設定の args リストに --ignore-robots-txt 引数を追加すると、この動作を無効にできます。

カスタマイズ - プライベートアドレス

デフォルトでは、サーバーは、リダイレクト先や robots.txt の取得先も含め、ホストがグローバルにルーティングできないアドレス(ループバック(127.0.0.0/8、::1)、プライベート(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、fc00::/7)、リンクローカル(169.254.0.0/16、fe80::/10)、共有アドレス空間(100.64.0.0/10)、マルチキャスト、未指定、ドキュメント用、およびその他の IANA 特別用途アドレス範囲)に解決されるリクエストを拒否します。IPv4 マップアドレス(::ffff:0:0/96)または既知の NAT64 アドレス(64:ff9b::/96)は、内包する IPv4 アドレスに基づいて判定されます。ホスト名にこれらの範囲内のアドレスが1つでも含まれる場合、そのホスト名は拒否されます。 拒否されたアドレスを示すエラーがクライアントに返されます。

ローカルホストや内部ホスト(開発サーバーやイントラネットページ)から取得するには、設定の args リストに --allow-private-ips 引数を追加します。

カスタマイズ - User-agent

デフォルトでは、リクエストがモデルからのもの(ツール経由)か、ユーザーが開始したもの(プロンプト経由)かに応じて、サーバーは次のいずれかの user-agent を使用します。

ModelContextProtocol/1.0 (Autonomous; +https://github.com/modelcontextprotocol/servers)

または

ModelContextProtocol/1.0 (User-Specified; +https://github.com/modelcontextprotocol/servers)

設定の args リストに --user-agent=YourUserAgent 引数を追加すると、これをカスタマイズできます。

カスタマイズ - プロキシ

--proxy-url 引数を使用して、サーバーがプロキシを使用するように設定できます。

--proxy-url を指定しない場合、サーバーは標準の HTTP_PROXY、HTTPS_PROXY、ALL_PROXY 環境変数で設定されたプロキシを使用します(NO_PROXY を尊重します)。http(s):// と SOCKS5 のプロキシに対応しています(SOCKS のサポートはサーバーとともにインストールされます)。多くのデスクトッププロキシ設定でエクスポートされる socks:// プロキシ URL は、socks5:// として扱われます。サーバーが使用できないプロキシ設定の場合、フェッチのたびにその旨を示すツールエラーが発生します。

Windows の設定

Windows でタイムアウトが発生する場合、適切な文字エンコーディングを確保するために、PYTHONIOENCODING 環境変数を設定する必要があります。

Windows の設定(uvx)
{
  "mcpServers": {
    "fetch": {
      "command": "uvx",
      "args": ["mcp-server-fetch"],
      "env": {
        "PYTHONIOENCODING": "utf-8"
      }
    }
  }
}
Windows の設定(pip)
{
  "mcpServers": {
    "fetch": {
      "command": "python",
      "args": ["-m", "mcp_server_fetch"],
      "env": {
        "PYTHONIOENCODING": "utf-8"
      }
    }
  }
}

これにより、Windows システムでサーバーのタイムアウトを引き起こす可能性がある文字エンコーディングの問題に対処できます。

デバッグ

MCP インスペクターを使用してサーバーをデバッグできます。uvx でインストールした場合:

npx @modelcontextprotocol/inspector uvx mcp-server-fetch

または、パッケージを特定のディレクトリにインストールした場合や、開発中の場合:

cd path/to/servers/src/fetch
npx @modelcontextprotocol/inspector uv run mcp-server-fetch

開発

src/fetch から実行します。

uv sync --frozen --all-extras --dev
uv run --frozen pytest

テストでは、インプロセスの MCP ClientSession を通じて serve() を実行し(また、tests/test_eras.py では、2026-07-28 クライアントおよび 2025-11-25 クライアントとして Client を通じて実行します)、HTTP はモック化されているため、ネットワークは不要です。HTML 抽出テストでは、PATH 上に Node.js が必要です(Node が存在する場合、readabilipy は Readability.js を使用し、存在しない場合は純粋な Python のフォールバックを使用します)。

ファイルごとにブランチカバレッジを測定するカバレッジ:

uv run --frozen pytest --cov --cov-report=term-missing --cov-report=json

このコマンドは coverage.json(Git で無視されます)を書き込みます。カバレッジは報告されますが、しきい値は適用されません。目標は、src/mcp_server_fetch 以下のすべてのファイルで、行カバレッジとブランチカバレッジをそれぞれ少なくとも 90% にすることです。

貢献

mcp-server-fetch の改善に役立つ貢献を歓迎します。バグ報告、新しいツールのアイデア、既存機能の強化、ドキュメントの改善はいずれも大歓迎です。

ほかの MCP サーバーや実装パターンの例については、次を参照してください。 https://github.com/modelcontextprotocol/servers

貢献は プルリクエストではなく、イシューとして受け付けます。リポジトリのメンテナーが実装を行います。バグ報告または機能リクエストのフォームからイシューを作成してください。変更をすでに試作している場合は、差分ではなく、使用したプロンプトを共有してください。ポリシーの詳細については、CONTRIBUTING.md を参照してください。

ライセンス

mcp-server-fetch は MIT ライセンスの下でライセンスされています。MIT ライセンスの利用規約に従うことを条件として、このソフトウェアを自由に使用、変更、配布できます。詳細については、プロジェクトリポジトリの LICENSE ファイルを参照してください。

コメント

MCP は初めてですか?

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

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