Skip to main content
Glama
Friezaaaa
by Friezaaaa

SmartFetch V1.8 — MCP ディスカバリビリティ

SmartFetch は公開ウェブ URL を受け取り、エージェントがすぐに使えるクリーンなテキスト、Markdown、リンク、メタデータ、および使用された取得方法を返します。

まず低コストな HTTP 取得を試み、必要な場合は実際の Chromium ブラウザにフォールバックします。

V1.8 での変更点

  • 有料 MCP ツール fetch_webpage は、エージェントによるディスカバリのために、実行や支払いの動作を変更することなく、正式な x402 Bazaar メタデータを宣言するようになりました。

  • ルートの server.json は、既存の /mcp Streamable HTTP エンドポイントを、Official MCP Registry 向けのリモート専用サーバーとしてアドバタイズします。

  • このリポジトリ更新では、Registry への公開、デプロイ、Railway 変数の変更、支払いは一切実行されません。

V1.7 の HTTP 支払い、Bazaar、およびネイティブ MCP の動作はすべて変更されません:

  • Base Sepolia はデフォルトの x402 ネットワークのままであり、CDP 認証情報なしで https://x402.org/facilitator を引き続き使用します。

  • Base mainnet は、明示的に選択された場合に、Coinbase の認証付き CDP facilitator を使用できます。

  • mainnet の起動には CDP API 認証情報の両方が必要であり、無効な認証情報や facilitator サポートの欠如に対してはフェイルクローズド(失敗時は安全側に閉じる)します。

  • /meta は、有効なテストネットと mainnet の支払いモードを区別します。

  • cdp-sdk、FastAPI、Uvicorn、x402 は正確に固定されているため、インフラストラクチャのアップグレードは明示的です。

取得エンジン、抽出/ブラウザ動作、SSRF 保護、リクエスト制限、レート制限、および並行性制御は変更されていません。

Related MCP server: SteadyFetch

API

GET /health

サービスヘルス/バージョンを返します。

GET /meta

機械可読なサービス説明。

POST /fetch

{
  "url": "https://example.com/article",
  "max_chars": 20000,
  "force_browser": false
}

max_chars はオプションです(最小 1,000、デフォルト 20,000、最大 50,000)。

レスポンスフィールドの例:

{
  "success": true,
  "requested_url": "https://example.com/article",
  "final_url": "https://example.com/article",
  "status_code": 200,
  "render_method": "http",
  "title": "…",
  "content": "…",
  "markdown": "…",
  "links": [],
  "word_count": 1000,
  "content_hash": "…",
  "truncated": false,
  "elapsed_ms": 350,
  "request_id": "…",
  "service_version": "1.8.0"
}

x402 支払い保護が有効な場合、POST /fetch の PAYMENT-REQUIRED ヘッダーには、url、max_chars、force_browser の入力コントラクトと代表的な成功レスポンスを含む Bazaar 宣言が含まれます。/、/health、/meta は無料のままであり、Bazaar メタデータをアドバタイズしません。

MCP

リモート MCP クライアントは Streamable HTTP を使用して /mcp に接続します。サーバーは正確に 1 つのツールを公開します:

fetch_webpage
  url: required string
  max_chars: optional integer (default 20000, minimum 1000, maximum 50000)
  force_browser: optional boolean (default false)

このツールは、エージェント向けに公開ウェブページを読み取り、取得、スクレイピング、または抽出し、既存の SmartFetch テキスト、Markdown、リンク、および取得メタデータを返します。POST /fetch と同じ SSRF 検証、executor、リクエストタイムアウト、並行性上限、出力上限、HTTP 取得、ブラウザフォールバックを使用します。公開 API への HTTP リクエストは行いません。

x402 が有効な場合、未払いの tools/call はネイティブ MCP x402 支払いチャレンジを返します。有効な支払いは取得前に検証され、ツールの実行成功後に 1 回決済されます。ネットワーク、公開受取人、価格は X402_NETWORK、X402_PAY_TO、X402_PRICE から取得されます。売り手の秘密鍵やウォレットシークレットは受け付けられず、必要もありません。

未払いの MCP 支払いチャレンジには、トランスポート streamable-http、既存の入力コントラクト、および代表的な SmartFetch 出力を含む、fetch_webpage の Bazaar 宣言が含まれます。その支払いリソースは mcp://tool/fetch_webpage のままです。POST /fetch の既存の HTTP Bazaar リソースは別物であり、変更されていません。

ルートの server.json は、https://smartfetch-production-ea53.up.railway.app/mcp の公開リモートエンドポイントを記述します。Registry への公開は、認証されたオペレーターによる別個のアクションです。マニフェストを追加しても、サービスが公開されたりデプロイされたりすることはありません。

ローカルでの実行

python -m pip install -r requirements.txt
python -m smartfetch.server

次に:

curl http://127.0.0.1:8787/health
curl -X POST http://127.0.0.1:8787/fetch \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://example.com"}'

Windows ユーザーは、setup_windows.bat を実行してから、start_windows.bat を実行できます。

X402_ENABLED が未設定または false の場合、起動に支払い設定は不要で、/fetch はローカルおよびリモートテスト用に無料のままです。

x402 支払いモード

支払いは、明示的に有効にしない限り無効のままです。Base Sepolia がデフォルトであり、公開受取アドレスのみが必要です:

X402_ENABLED=true
X402_PAY_TO=0xYOUR_PUBLIC_RECEIVING_ADDRESS
X402_PRICE=$0.005
X402_NETWORK=eip155:84532

X402_PRICE と X402_NETWORK は、省略時は表示されている値を使用します。デフォルト価格は $0.005 のままです。

Base mainnet は明示的に選択する必要があり、Coinbase の認証付き CDP facilitator を使用します:

X402_ENABLED=true
X402_PAY_TO=0xYOUR_PUBLIC_RECEIVING_ADDRESS
X402_PRICE=$0.005
X402_NETWORK=eip155:8453
CDP_API_KEY_ID=YOUR_CDP_API_KEY_ID
CDP_API_KEY_SECRET=YOUR_CDP_API_KEY_SECRET

mainnet には CDP 認証情報の両方が必要です。認証情報の欠落、無効、または使用不可、サポートされていない Base-mainnet の完全一致支払い、または facilitator/ミドルウェアの初期化失敗があると、起動は中断されます。SmartFetch は、mainnet が選択されている場合、無料アクセスやテストネット facilitator にフォールバックすることはありません。Base Sepolia と Base mainnet 以外のすべてのネットワークは拒否されます。

保護されるのは POST /fetch のみです。/health、/、/meta は常に無料のままです。有効な /meta レスポンスは、設定値を公開せずに x402-enabled-testnet または x402-enabled-mainnet を報告します。

SmartFetch は公開受取アドレスとして X402_PAY_TO を使用し、CDP_WALLET_SECRET は必要ありません。売り手の MetaMask 秘密鍵やリカバリーフレーズを決して提供しないでください: SmartFetch はそのいずれも必要とせず、読み取らず、受け付けず、ログに記録せず、保存もしません。

ローカル検証

python tests/security_smoke.py
python tests/api_local_smoke.py

api_local_smoke.py は、localhost フィクスチャを使用できるように、テストプロセス内でのみ意図的にプライベートネットワークアクセスを有効にします。

コンテナ

docker build -t smartfetch:v1.8 .
docker run --rm -p 8787:8787 smartfetch:v1.8

コンテナは Chromium を自動的にインストールします。

公開デプロイ

このパッケージは Docker 対応です。Railway は同梱の Dockerfile と railway.json をデプロイできます。アウトバウンド HTTPS と Chromium プロセス 1 つ分の十分な RAM を提供する任意の Docker ホストでも動作するはずです。

推奨される初期環境変数:

MAX_CONCURRENT_BROWSERS=1
MAX_CONCURRENT_FETCHES=4
DEFAULT_MAX_OUTPUT_CHARS=20000
MAX_OUTPUT_CHARS=50000
FETCH_TIMEOUT_SECONDS=12
BROWSER_TIMEOUT_SECONDS=15
TOTAL_REQUEST_TIMEOUT_SECONDS=25
RATE_LIMIT_PER_MINUTE=30
RATE_LIMIT_BURST=10
X402_ENABLED=false

本番環境では ALLOW_PRIVATE_NETWORK=1 を設定しないでください。

重要な SSRF デプロイに関する注意

アプリケーションレベルの URL 検証は含まれていますが、ブラウザレンダリングはページのサブリソースを実行できます。有料の公開デプロイでは、ブラウザコンテナを、ホスト/ネットワークの egress ポリシーによって、クラウドメタデータおよびプライベート RFC1918 ネットワークからさらに分離する必要があります。一時的なレート制限を削除する前、および x402 のローンチ前に、これを再度強化します。

公開デプロイのテスト

Windows では test_remote_windows.bat を実行し、公開 URL を貼り付けて、tests/remote_20_results.json をアップロードします。

または:

python tests/remote_20.py https://YOUR-PUBLIC-URL

デプロイゲートは、5 件すべての強制ブラウザリクエストを含め、最低 18/20 のままです。

支払いローンチ状況

V1.8 は既存の Base Sepolia および Base mainnet の支払い設定を維持します。このリポジトリ変更自体は、MCP Registry への公開、サービスのデプロイ、または Railway 変数の変更を行いません。アクティブな支払いネットワークは X402_NETWORK によって制御されます: Base Sepolia の場合は eip155:84532、Base mainnet の場合は eip155:8453 です。

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to read web pages reliably, returning clean markdown content, hyperlinks, and metadata without navigation or ad noise.
    3
    6 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI agents with reliable web fetching capabilities, handling retries, caching, and anti-bot bypass automatically.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to scrape any URL through a stealth browser with anti-bot bypass, returning clean Markdown, and optionally pay per request via x402 micropayments.
    1
    MIT