mcpField
F
FetchGate

FetchGate

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

FetchGate について

FetchGateは、ページを実際に読み取れたと確認した場合だけ内容を渡す、エージェント向けの決定論的な取得ゲートです。取得失敗や空のページを根拠に回答する代わりに、拒否を返したい開発者に適しています。

主な機能

  1. 01取得済み、失敗、不明の判定
  2. 02ステータス、リダイレクト、抽出テキストの確認
  3. 03ブロックページやエラーページの検出
  4. 04Playwrightによる任意のJavaScript描画
  5. 05コア機能はモデルやAPIキー不要

活用シーン

  1. 01空の取得結果に基づく回答の防止
  2. 02ページが実際に読めたかの確認
  3. 03テキストが少ないJavaScriptページをブラウザー描画で再取得

MCP 対応

FetchGateはMCPクライアントに `fetch_url` ツールを提供します。読み取りが確認できた場合のみ内容を返し、それ以外は拒否します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

FetchGate

HTTP 200 は読み取れたことを意味しません。

AI エージェントがページを取得しても、JavaScript アプリ、403、Cloudflare の壁などによって、気づかれないまま内容が空で返ってくることがあります。それでもエージェントは処理を止めず、ページを実際には読んでいないことを伝えないまま、記憶に基づいて回答することがよくあります。FetchGate は取得の境界に置く小さなゲートで、こうした事態を防ぎます。ページを実際に読み取れた場合にだけ内容をエージェントに渡し、それ以外の場合は正直に拒否します。

決定論的(モデルも API キーも不要)で、コアは標準ライブラリのみで動作し、無料です。

クイックスタート

git clone https://github.com/MoAz06/FetchGate
cd FetchGate
python demo.py https://example.com https://httpbin.org/status/403
https://example.com
  verdict     : RETRIEVED  (clean)
  answerable  : ALLOW
  bytes       : raw 559 / extracted 127
  tiers       : static
  gate-confirmed content (127 chars): Example Domain This domain is for use ...

https://httpbin.org/status/403
  verdict     : FAILED  (transport.http_403)
  answerable  : STOP
  refused: the model gets no content and cannot answer as if it read this page.

テストを実行します(ネットワークもモデルも不要です)。

pip install -e .
python -m unittest discover -s tests

最も簡単な方法:ダブルクリック 1 回(Claude Desktop)

Releases ページから fetchgate.mcpb をダウンロードし、ダブルクリックします。Claude Desktop にインストールボタンが表示されるため、JSON を編集する必要はありません。バンドルのソースは bundle/ にあります。npx @anthropic-ai/mcpb pack bundle fetchgate.mcpb で再ビルドできます。

バイブコーダー向け:エディター内から追加する

Cursor ならワンクリック(uv が必要です。多くの環境にはインストール済みです)。

FetchGate を Cursor に追加

または、AI に頼むだけです。 次の内容を Cursor、Claude Code、Windsurf に貼り付けてください。

この環境に fetchgate MCP サーバーを追加してください。pip install "fetchgate[mcp]" を実行し、コマンド fetchgate-mcp を使う、fetchgate という名前の MCP サーバーとして登録してください。実際には取得できなかったページを読んだかのようにエージェントが回答するのを防ぎます。

アシスタントがインストールを実行し、設定も行います。

Claude Desktop または Cursor で使う(手動)

pip install ".[mcp,http,extract]"    # the fetch tool, real redirect chain, better extraction
pip install ".[browser]"             # optional: render JavaScript pages
python -m playwright install chromium

MCP 設定に追加します(詳細は docs/mcp.md を参照してください)。

{ "mcpServers": { "fetchgate": { "command": "fetchgate-mcp" } } }

エージェントに fetch_url ツールが追加されます。読み取りが確認できた場合にのみ内容を返し、それ以外の場合は拒否します。

このリポジトリは Claude Code プラグインとしても使えます。pip install "fetchgate[mcp]" の実行後:

/plugin marketplace add MoAz06/FetchGate
/plugin install fetchgate@fetchgate

docs/claude-code-plugin.md を参照してください。

独自のエージェントで使う

from fetchgate import default_gate

gate = default_gate()   # renders JS pages if the [browser] extra is installed

def read_url(url: str) -> str:
    out = gate.guarded_fetch(url)
    content = gate.content_for(out.handle)
    if content is None:
        return f"NOT READ: {url} ({out.result.reason}). Do not answer as if you read it."
    return content

判定方法

すべての取得に対して、次のいずれかの判定を返します。

  • RETRIEVED:実際に読み取れました。エージェントは回答し、出典を示せます。
  • FAILED:読み取れなかったことが確定しています(4xx または 5xx、タイムアウト、https から http へのダウングレード、空の本文)。処理を止めます。
  • UNKNOWN:取得はしましたが、読み取れたと確認するには、読める内容が不十分です(JavaScript ページでよく発生します)。処理を止めるか、レンダリングして再試行します。

3 つのレイヤーが判定に使われ、結果には最も厳しい判定が採用されます。

  • transport:ステータスとリダイレクトの連鎖。
  • extraction:読み取り可能なテキストを生のバイト列と分離して保持します。17 バイトの価格 JSON も読み取りとして扱い、テキストが 2 パーセント含まれる 400 KB の記事も読み取りとして扱いますが、テキストのない JS の外殻は読み取りとして扱いません。
  • content-validity:Cloudflare、同意画面、ペイウォール、ソフト 404 の壁を判定するベストエフォートのフィンガープリントです。判定を UNKNOWN に引き下げることしかできず、読み取れたと偽ることはありません。

ページの内容が薄い、または空に見え、レンダリング層が有効な場合、FetchGate は実際のヘッドレスブラウザーに処理を引き継ぎ、再確認します。レンダリングは行いますが、回避はしません。正直にレンダリングした後も壁が残っているページは、読み取れていないままです。

明示されている制限事項

  • content_sha256 は受領確認用のアンカーであり、改ざんの証拠にはなりません。隠蔽されたページも問題なくハッシュ化されます。
  • 来歴は真正性を意味しません。このゲートが防ぐのは、空の内容を取得したときに黙って処理を続けることであり、誤った内容でも取得に成功させることではありません。
  • 読み取れたことは、回答できることを意味しません。RETRIEVED は十分な内容が届いたことを示すだけで、必要な事実が含まれているとは限りません。主張の裏付けは後続処理の役割です。
  • フェイルクローズには可用性上の代償があります。取得を失敗させられる者がいれば、拒否を強制できます。これは正確性と引き換えにするものです。

実装内容

決定論的なコア、署名済みマニフェストを使ったオフライン評価、ビルドを失敗させる不正検出テスト、MCP サーバー、Playwright レンダリング層を備えています。任意の追加機能は [mcp]、[http](httpx のリダイレクト連鎖)、[extract](trafilatura)、[browser](Playwright)、[sign](Ed25519)です。インストールされていれば自動的に使用されます。コアは標準ライブラリのみで動作します。

MIT ライセンスです。

コメント

MCP は初めてですか?

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

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