Skip to main content
Glama
NikkeTryHard

fast-webfetch-mcp

by NikkeTryHard

fast-webfetch-mcp

Ein Web-Fetch-MCP-Server, der Seiten mit einem echten Browser auf deinem eigenen Rechner rendert und dem Modell dann sauberes Markdown übergibt – statt einer Token-Rechnung für 2 MB JavaScript.

Das Abrufen kostet hier nichts: keine API-Schlüssel, keine Preisgestaltung pro Seite. Und wenn eine Site behauptet, dich zu blockieren, ist das oft nur ein Headless-Erkennungsskript, das ein echtes Chromium einfach durchläuft.

So funktioniert es

Zwei kleine Programme, ein Job:

MCP client (agent)
   │  JSON-RPC over stdio
   ▼
src/index.ts          Bun + MCP SDK — tool schemas, budgets, rendering
   │  spawns per request
   ▼
crawl4ai_worker.py    Python + Crawl4AI — headless Chromium, markdown extraction
   │
   ▼
The actual internet

Der TypeScript-Server besitzt die Richtlinie: Timeouts, Nebenläufigkeitsgenehmigungen, Ausgabekürzung, optionale Gemini-gestützte Zusammenfassung. Der Python-Worker besitzt die Mechanik: Browser-Lebenszyklus, Rendering, Wiederholungen. Keiner kennt den Job des anderen, und der Vertrag zwischen ihnen ist ein JSON-Dokument auf stdout.

Related MCP server: crawler-mcp

Installation

Voraussetzungen: Bun, Python 3.12+ und eine GPU-agnostische Menge Geduld für den ersten Browser-Download.

git clone <this repo> ~/.local/share/mcp/fast-webfetch-mcp   # or anywhere
cd ~/.local/share/mcp/fast-webfetch-mcp
bun install
uv venv .venv --python 3.12 && uv pip install --python .venv/bin/python crawl4ai

Überprüfe, ob die Browser-Seite funktioniert:

FAST_WEBFETCH_SMOKE_URL=https://example.com bun run src/index.ts

Du solltest Markdown für die Beispiel-Domain sehen. Falls du stattdessen einen Stack-Trace über Playwright-Browser siehst, führe crawl4ai-setup aus der venv aus und versuche es erneut – es installiert den richtigen Chromium-Build für dich.

Binde es in deinen Agenten ein

{
  "mcpServers": {
    "fast-webfetch": {
      "type": "stdio",
      "command": "/usr/bin/mullvad-exclude",
      "args": ["/home/you/.bun/bin/bun", "run", "/path/to/fast-webfetch-mcp/src/index.ts"],
      "env": { "PATH": "/home/you/.bun/bin:/usr/bin:/bin" }
    }
  }
}

Der mullvad-exclude-Wrapper ist optional; er lässt nur den Fetch-Verkehr eine VPN umgehen, sodass Sites deine echte IP sehen. Ein einfaches "command": "bun" funktioniert identisch.

Tools

fast_fetch — eine URL zu Markdown

Argument

Typ

Standard

Hinweise

url

string

erforderlich

prompt

string

Wenn gesetzt, eine fundierte Antwort statt der gesamten Seite

max_length

number

40.000

Mittige Kürzung behält Kopf und Schwanz

full_content

boolean

false

Obergrenze auf 100.000 Zeichen erhöhen

timeout_ms

number

25.000

Harte Obergrenze, inklusive Browser-Rendering

options

object

Rendering-Optionen pro Aufruf, siehe unten

fast_fetch_raw — eine URL zu rohem HTML

Gleiche Argumente minus prompt. Verwende es, wenn Markdown das verliert, was du brauchst: Tabellen, data--Attribute, Meta-Tags, exaktes Markup.

Das options-Objekt

Alle drei Tools akzeptieren ein optionales options-Objekt für Sites, die mehr als ein einfaches Laden-und-Greifen benötigen:

{
  "url": "https://example.com/feed",
  "options": { "full_page": true, "wait_seconds": 1.5, "drop_overlays": true }
}

Schlüssel

Typ

Effekt

full_page

boolean

Scrollt die gesamte Seite vor der Extraktion – erfasst Lazy-Load- und Infinite-Scroll-Inhalte. Langsamer; bei endlosen Feeds scrollt es bis zum Timeout

wait_seconds

number

Verzögerung vor der Erfassung, z.B. 1.5 für Seiten, die spät hydrieren

iframes

boolean

Zieht iframe-Inhalte in das Ergebnis

drop_overlays

boolean

Entfernt Cookie-Banner und Modals vor der Extraktion

Falsch geschriebene Schlüssel werden stillschweigend verworfen, nicht durchgereicht – die Options-Payload wird auf der Python-Seite zu CrawlerRunConfig-Flags.

fast_fetch_multiple — bis zu 15 URLs in einem Batch

Argument

Typ

Standard

Hinweise

urls

string[]

erforderlich

1–15 absolute http(s)-URLs

max_length

number

40.000

Pro URL

full_content

boolean

false

Pro URL

timeout_ms

number

25.000

Gesamter Batch, geteilt

options

object

Gleiche Optionen, auf jede URL angewendet

Jede URL kommt als eigener Abschnitt mit einem Metadaten-Header (url, status, elapsed_ms, truncated) zurück. Eine langsame Site kann die anderen nicht aushungern – sie erhält nur einen Fehler pro Element wegen Timeout, während ihre Batch-Genossen erfolgreich sind.

Konfiguration

Alles optional, alles Umgebungsvariablen.

Server-Einstellungen

Variable

Standard

Zweck

FAST_WEBFETCH_MAX_LENGTH

40000

Standard-Zeichenlimit pro Seite

FAST_WEBFETCH_HARD_MAX_LENGTH

100000

Obergrenze für full_content

FAST_WEBFETCH_TIMEOUT_MS

25000

Standard-Fetch-Timeout

FAST_WEBFETCH_MULTIPLE_CONCURRENCY

12

Parallele Browser-Slots (max. 32)

FAST_WEBFETCH_DISABLE_SUMMARY

nicht gesetzt

1 entfernt die prompt-Unterstützung vollständig

FAST_WEBFETCH_PYTHON

<repo>/.venv/bin/python

Worker-Interpreter

FAST_WEBFETCH_WORKER

<repo>/crawl4ai_worker.py

Worker-Pfad

GEMINI_API_KEY / GEMINI_API_KEY_FILE

Nur für die prompt-Zusammenfassung benötigt

Browser-Einstellungen

Variable

Standard

Zweck

CRAWL4AI_STEALTH

an (1)

Anti-Erkennungs-Patches: Webdriver-Flag, Plugins, WebGL-Anbieter, Chrome-APIs. Setze 0 zum Deaktivieren

CRAWL4AI_PROXY_URL

aus

Proxy für ausgehenden Verkehr

CRAWL4AI_WAIT_UNTIL

domcontentloaded

Playwright-Wartestrategie

CRAWL4AI_SCAN_FULL_PAGE

aus

Vor der Extraktion scrollen – auch pro Aufruf als options.full_page verfügbar

CRAWL4AI_DELAY_SECONDS

0

Wartezeit vor der HTML-Erfassung – auch pro Aufruf als options.wait_seconds

Verhalten, das man kennen sollte

JS-lastige Sites liefern unter der Standard-Wartestrategie oft eine leere Hülle. Wenn eine 200 ohne Inhalt zurückkommt, versucht der Worker einmal erneut mit networkidle, innerhalb desselben Timeout-Budgets – im schlimmsten Fall wartest du einmal, nicht zweimal. Verbindungsfehler und HTTP-Fehler bleiben dagegen Einzelversuche: Eine tote Host erneut zu versuchen, ist nur ein langsamerer Weg zu scheitern.

fast_fetch und fast_fetch_multiple schöpfen aus demselben Pool von 12 Browser-Slots, sodass ein großer Batch einen gleichzeitigen Einzel-Fetch nicht aushungern kann. Nachfrage über den Pool hinaus wird in die Warteschlange gestellt; ein Batch, der mehr Slots anfordert als existieren, bekommt, was frei ist.

Schließlich existiert max_length, weil das Kontextfenster deines Agenten ein Budget ist, keine Müllhalde.

Wenn etwas schiefgeht, erhältst du einen Log-Pfad

Fehler werden in zwei Haufen sortiert: das Internet ist unzuverlässig (Timeouts, langsame Sites, Batch-Deadline-Fehler pro Element) und das Tool bricht tatsächlich (Worker startet nicht, Worker abgestürzt, stdout-Überlauf, nicht parsebare Ausgabe). Nur der zweite Haufen schreibt ein Log – der erste bekommt nur ein ehrliches Fehler-Tag.

Ein Tool-seitiger Fehler endet mit:

log: /path/to/fast-webfetch-mcp/logs/2026-08-22T09-02-06-780Z-fast_fetch.json

Darin: das Tool, exakte Argumente, Worker-Eingabe und der vollständige Fehlerdatensatz (Stufe, Exit-Code, Signal, stderr-Ende) – genug, um die Anfrage wörtlich zu wiederholen:

FAST_WEBFETCH_INPUT='{"url":"https://example.com","max_length":40000}' \
  .venv/bin/python crawl4ai_worker.py

Umleiten mit FAST_WEBFETCH_LOGS_DIR.

Unter 30 Sekunden bleiben

Agent-Harnesses neigen dazu, MCP-Aufrufe um die 30-Sekunden-Marke zu beenden, daher behandelt dieser Server 28s als harte Wand. Jedes Tool antwortet davor: fertige Ergebnisse, wenn der Fetch es geschafft hat, andernfalls strukturierte Fehler pro Element, die sagen, welche Stufe die Zeit gefressen hat. Ein Batch, der das Budget überschreitet, gibt trotzdem die Elemente zurück, die fertig wurden.

Fehlerbehebung

Symptom

Wahrscheinliche Ursache und Lösung

Crawl4AI worker missing

Repository verschoben; prüfe, dass FAST_WEBFETCH_WORKER auf crawl4ai_worker.py zeigt

Crawl4AI python missing

.venv fehlt oder falscher Interpreter; setze FAST_WEBFETCH_PYTHON

Alles läuft bei einer Site in einen Timeout

Site ist wirklich langsam oder feindselig; versuche CRAWL4AI_STEALTH=1

Batch deadline exceeded bei einigen Elementen

Erwartet: gemeinsames 25s-Budget, Nachzügler erhalten Fehler pro Element

Leeres Markdown bei SPAs

Sollte sich durch Wiederholung selbst heilen; wenn nicht, erhöhe CRAWL4AI_DELAY_SECONDS

Entwicklung

bun install
bun test            # 18 tests, no network needed
bun run typecheck   # tsc --noEmit, strict + noUncheckedIndexedAccess

Der Python-Worker kann direkt angesteuert werden, was der schnellste Weg ist, Fetch-Verhalten ohne die MCP-Schicht zu debuggen:

FAST_WEBFETCH_INPUT='{"url":"https://example.com","max_length":500}' \
  .venv/bin/python crawl4ai_worker.py

Siehe auch

Lizenz

MIT.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    MCP server that lets Claude Code fetch web content using real Chrome browsers. Renders JavaScript-heavy pages, handles bot mitigation, and runs up to 14 parallel browsers locally with zero API keys. Makes outbound HTTP requests only to URLs the user explicitly asks Claude to fetch.
    2
    14
    91
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Web-crawler MCP server that fetches web pages with static parsing or headless browser fallback, enabling Claude to fetch, extract links, crawl sites, and select content via CSS selectors.
    4
  • A
    license
    A
    quality
    C
    maintenance
    An MCP server that enables AI assistants to fetch web content in multiple formats (HTML, JSON, text, Markdown) with intelligent content extraction, chunk management, and browser automation support.
    5
    52
    15
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An open-source web retrieval MCP server that fetches, crawls, and searches the web, returning clean markdown for AI agents. It integrates with Claude MCP, LangChain, and other frameworks for agentic web access.
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Zenrows MCP server — Fetch, Extract, Batch, and Browser Sessions for AI coding assistants

  • Firecrawl MCP — wraps the Firecrawl API (firecrawl.dev) for web

  • SEO MCP server: crawl your site, find AI-visibility gaps, and ship the fix from your coding agent.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/NikkeTryHard/fast-webfetch-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server