Skip to main content
Glama
Friezaaaa
by Friezaaaa

SmartFetch V1.8 — MCP-Auffindbarkeit

SmartFetch nimmt eine öffentliche Web-URL und gibt sauberen, agentenbereiten Text, Markdown, Links, Metadaten und die verwendete Abrufmethode zurück. Es versucht zuerst den kostengünstigen HTTP-Abruf und greift bei Bedarf auf einen echten Chromium-Browser zurück.

Was hat sich in V1.8 geändert

  • Das kostenpflichtige MCP-Tool fetch_webpage deklariert jetzt offizielle x402-Bazaar-Metadaten für die Agenten-Auffindbarkeit, ohne sein Ausführungs- oder Zahlungsverhalten zu ändern.

  • Das server.json im Stammverzeichnis bewirbt den vorhandenen /mcp-Streamable-HTTP-Endpunkt als reinen Remote-Server für die Official MCP Registry.

  • Durch dieses Repository-Update werden keine Registry-Veröffentlichung, kein Deployment, keine Änderung von Railway-Variablen und keine Zahlung durchgeführt.

Das gesamte HTTP-Zahlungs-, Bazaar- und native MCP-Verhalten von V1.7 bleibt unverändert:

  • Base Sepolia bleibt das Standard-x402-Netzwerk und verwendet weiterhin https://x402.org/facilitator ohne CDP-Anmeldedaten.

  • Base-Mainnet kann bei expliziter Auswahl den authentifizierten CDP-Facilitator von Coinbase verwenden.

  • Der Mainnet-Start erfordert beide CDP-API-Anmeldedaten und schlägt bei ungültigen Anmeldedaten oder fehlender Facilitator-Unterstützung fehl (Fail-Closed).

  • /meta unterscheidet zwischen aktivierten Testnet- und Mainnet-Zahlungsmodi.

  • cdp-sdk, FastAPI, Uvicorn und x402 sind exakt festgepinnt, sodass Infrastruktur-Upgrades explizit erfolgen.

Die Abruf-Engine, das Extraktions-/Browser-Verhalten, SSRF-Schutzmechanismen, Anfragegrenzen, Ratenbegrenzung und Nebenläufigkeitskontrollen sind unverändert.

Related MCP server: SteadyFetch

API

GET /health

Gibt Dienststatus/-version zurück.

GET /meta

Maschinenlesbare Dienstbeschreibung.

POST /fetch

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

max_chars ist optional (Minimum 1.000; Standard 20.000; Maximum 50.000).

Beispiel-Antwortfelder:

{
  "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"
}

Wenn der x402-Zahlungsschutz aktiviert ist, enthält der PAYMENT-REQUIRED-Header für POST /fetch eine Bazaar-Deklaration mit dem Eingabevertrag aus url, max_chars und force_browser sowie einer repräsentativen erfolgreichen Antwort. /, /health und /meta bleiben kostenlos und werben keine Bazaar-Metadaten.

MCP

Remote-MCP-Clients verbinden sich über Streamable HTTP mit /mcp. Der Server stellt genau ein Tool bereit:

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

Das Tool liest, ruft ab, scrapt oder extrahiert öffentliche Webseiten für Agenten und gibt den vorhandenen SmartFetch-Text, Markdown, Links und Abruf-Metadaten zurück. Es verwendet wie POST /fetch dieselbe SSRF-Validierung, denselben Executor, dasselbe Anfragetimeout, dieselbe Nebenläufigkeitsgrenze, Ausgabegrenze, denselben HTTP-Abruf und denselben Browser-Fallback; es führt keine HTTP-Anfrage zurück an die öffentliche API aus.

Wenn x402 aktiviert ist, gibt ein unbezahlter tools/call-Aufruf die native MCP-x402-Zahlungsaufforderung zurück. Eine gültige Zahlung wird vor dem Abruf verifiziert und nach erfolgreicher Tool-Ausführung einmal abgerechnet. Netzwerk, öffentlicher Zahlungsempfänger und Preis stammen aus X402_NETWORK, X402_PAY_TO und X402_PRICE. Es wird kein privater Verkäuferschlüssel oder Wallet-Geheimnis akzeptiert oder benötigt.

Die unbezahlte MCP-Zahlungsaufforderung enthält eine Bazaar-Deklaration für fetch_webpage mit Transport streamable-http, dem vorhandenen Eingabevertrag und einer repräsentativen SmartFetch-Ausgabe. Ihre Zahlungsressource bleibt mcp://tool/fetch_webpage. Die vorhandene HTTP-Bazaar-Ressource für POST /fetch ist getrennt und unverändert.

Das server.json im Stammverzeichnis beschreibt den öffentlichen Remote-Endpunkt unter https://smartfetch-production-ea53.up.railway.app/mcp. Die Registry-Veröffentlichung ist eine separate, authentifizierte Operator-Aktion; das Hinzufügen des Manifests veröffentlicht oder deployed den Dienst nicht.

Lokal ausführen

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

Dann:

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-Benutzer können setup_windows.bat und dann start_windows.bat ausführen.

Wenn X402_ENABLED nicht gesetzt oder falsch ist, erfordert der Start keine Zahlungseinstellungen und /fetch bleibt für lokale und entfernte Tests kostenlos.

x402-Zahlungsmodi

Zahlungen bleiben deaktiviert, sofern nicht explizit aktiviert. Base Sepolia ist die Standardeinstellung und erfordert nur die öffentliche Empfängeradresse:

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

X402_PRICE und X402_NETWORK verwenden die angezeigten Werte, wenn sie weggelassen werden. Der Standardpreis bleibt $0.005.

Base-Mainnet muss explizit ausgewählt werden und verwendet den authentifizierten CDP-Facilitator von Coinbase:

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 erfordert beide CDP-Anmeldedaten. Fehlende, ungültige oder unbrauchbare Anmeldedaten, nicht unterstützte exakte Base-Mainnet-Zahlungen oder jeglicher Facilitator-/Middleware-Initialisierungsfehler brechen den Start ab. SmartFetch fällt niemals auf kostenlosen Zugriff oder den Testnet-Facilitator zurück, wenn Mainnet ausgewählt ist. Jedes andere Netzwerk außer Base Sepolia und Base-Mainnet wird abgelehnt.

Nur POST /fetch ist geschützt. /health, / und /meta bleiben immer kostenlos. Aktivierte /meta-Antworten melden x402-enabled-testnet oder x402-enabled-mainnet, ohne Konfigurationswerte preiszugeben.

SmartFetch verwendet X402_PAY_TO als öffentliche Empfängeradresse und benötigt kein CDP_WALLET_SECRET. Geben Sie niemals einen privaten MetaMask-Schlüssel oder eine Wiederherstellungsphrase eines Verkäufers an: SmartFetch erfordert, liest, akzeptiert, protokolliert oder speichert keines von beidem.

Lokale Validierung

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

api_local_smoke.py aktiviert absichtlich den Zugriff auf private Netzwerke nur innerhalb des Testprozesses, damit es ein localhost-Fixture verwenden kann.

Container

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

Der Container installiert Chromium automatisch.

Öffentliches Deployment

Dieses Paket ist Docker-bereit. Railway kann das enthaltene Dockerfile und railway.json deployen; jeder Docker-Host, der ausgehenden HTTPS und genügend RAM für einen Chromium-Prozess bereitstellt, sollte ebenfalls funktionieren.

Empfohlene anfängliche Umgebungsvariablen:

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

Setzen Sie ALLOW_PRIVATE_NETWORK=1 in der Produktion nicht.

Wichtiger SSRF-Deployment-Hinweis

Die URL-Validierung auf Anwendungsebene ist enthalten, aber das Browser-Rendering kann Seiten-Subressourcen ausführen. Für ein bezahltes öffentliches Deployment sollte der Browser-Container zusätzlich durch Host-/Netzwerk-Egress-Richtlinien von Cloud-Metadaten und privaten RFC1918-Netzwerken isoliert werden. Wir werden dies erneut härten, bevor das temporäre Ratenlimit entfernt wird und bevor der x402-Start erfolgt.

Testen des öffentlichen Deployments

Führen Sie unter Windows test_remote_windows.bat aus, fügen Sie die öffentliche URL ein und laden Sie tests/remote_20_results.json hoch.

Oder:

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

Unser Deployment-Gate bleibt mindestens 18/20, einschließlich aller fünf erzwungenen Browser-Anfragen.

Status des Zahlungsstarts

V1.8 bewahrt die vorhandene Zahlungskonfiguration für Base Sepolia und Base-Mainnet. Diese Repository-Änderung veröffentlicht selbst nicht in der MCP Registry, deployed den Dienst nicht und ändert keine Railway-Variablen. Das aktive Zahlungsnetzwerk wird über X402_NETWORK gesteuert: eip155:84532 für Base Sepolia oder eip155:8453 für Base-Mainnet.

Maintenance

ActivityActive
ResponsivenessNo issues

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