MCP-Rezepte
MCP-Rezepte
Sechs sofort einsatzbereite Prompts, die du in jedem MCP-kompatiblen Client (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code) ausführen kannst, nachdem du den FourA MCP-Server installiert hast.
Jedes Rezept verwendet foura_auto (den intelligenten Standard) oder einen oder mehrere der Low-Level-Befehle foura_single, foura_proxy, foura_browser für einen gängigen Scraping-Job. Es gibt zwei Möglichkeiten, sie zu nutzen:
- Den integrierten Prompt aufrufen: Jeder MCP-Client zeigt vom Server bereitgestellte Prompts als Slash-Befehl oder im
/prompts-Panel an. Wähle den Prompt, fülle die Argumente aus und führe ihn aus. Der MCP-Server gibt den als Vorlage dienenden Workflow zurück. Das LLM führt ihn mit den richtigen Tools aus. - Den Text kopieren, der unten steht, und in deinen eigenen Chat einfügen. Gleicher Effekt, aber weniger leicht zu finden.
Der MCP-Server liefert diese als native Prompts aus: smart_fetch, scrape_product_page, extract_article, monitor_pricing, check_endpoint_health, bulk_fetch_urls.
Hinweis zu großen Seiten (v0.2.0+): Standardmäßig werden Response-Bodies unabhängig von ihrer Größe inline in
structuredContentzurückgegeben. Das funktioniert in jedem MCP-Client, einschließlich Claude Desktop. Wenn du einen Client verwendest, der MCPresources/readunterstützt, UND du bei großen Seiten Token sparen möchtest, übergiboffload_large: trueim Tool-Aufruf. Responses >= 50 KB werden dann alsresource_linkzurückgegeben, die dein Client bei Bedarf abruft. Die folgenden integrierten Prompts gehen vom Standard (inline) aus.
Open Source auf GitHub; auf npm als @fouradata/mcp.
Smart Fetch (Auto): Hier starten
Das einfachste Rezept: Übergib eine URL an foura_auto und lass es begrenzte Versuche über die verfügbaren Request-Methoden hinweg durchführen. Verwende dies, wenn du den Inhalt möchtest und das erste Tool nicht selbst auswählen musst.
Integriert: smart_fetch(url, must_contain?, extract?)
Manueller Prompt:
Fetch <URL> using foura_auto.
Pass validate.data.accept:["<a string the real page must contain>"] so only the real page counts as success. Auto makes bounded attempts and returns an error if none satisfies the validation.
For a plain follow-up, call foura_single with session.proxy as proxy, session.cookies serialized as a Cookie header, and session.userAgent as a User-Agent header. For JavaScript, pass the session values to the matching foura_browser fields.
Return the content, or extract the requested fields as JSON.
Wann dieses Rezept geeignet ist: ein erster Versuch, bei dem FourA die Methode wählen soll, besonders wenn die Inhaltsvalidierung echte Seiten von Blockseiten unterscheiden kann.
1. Eine Produktseite scrapen
Für Produktdetailseiten im E-Commerce, inklusive Single-Page-Apps und Seiten hinter Anti-Bot-Challenges.
Integriert: scrape_product_page(url)
Manueller Prompt:
Fetch the product page at <URL> using foura_browser - most product pages are single-page apps and need JavaScript to render.
From the response body extract:
- product title
- price (with currency)
- primary product image URL (absolute, not relative)
- availability / stock status
- product SKU or ID if visible
Return as JSON: {"title": "...", "price": 0, "currency": "USD", "image_url": "...", "in_stock": true, "sku": "..."}
Wann dieses Rezept geeignet ist: ein Preisvergleichsagent, eine Benachrichtigung bei Wiederverfügbarkeit, ein Spreadsheet zur Wettbewerbsanalyse.
2. Einen Artikel extrahieren
Für Nachrichtenartikel, Blogbeiträge, technische Dokumentationen und alles, wo du sauberen Lesetext ohne Navigation, Werbung und Footer benötigst.
Integriert: extract_article(url)
Manueller Prompt:
Fetch <URL> using foura_single with unblocker:true. Use plain HTTP first when the article is present in the server-rendered response.
If foura_single returns a 403, captcha page, or empty content, retry the same URL with foura_proxy (maxTries:3) - it routes through a rotating proxy pool.
From the response, extract:
- headline (the main H1, not the page title bar)
- author byline (may be inside .author, [rel=author], itemprop)
- publication date (look for <time>, .published, or JSON-LD)
- main article body (strip navigation, ads, related-content, footer, comments)
- canonical URL (rel=canonical or og:url)
Return as JSON: {"title": "...", "author": "...", "date_published": "ISO8601", "body": "...", "canonical_url": "..."}
Wann dieses Rezept das richtige ist: ein Recherche-Zusammenfasser, ein RSS-Feed für eine einzige Website, eine tägliche Nachrichtenübersicht.
3. Einen Preis überwachen
Für Preisseiten und Produktangebote, mit optionalem Vergleich zu einem Zielpreis.
Integriert: monitor_pricing(url, target_price?)
Manueller Prompt:
Use foura_proxy with maxTries:5 and unblocker:true to fetch <URL>. Pricing pages often have aggressive bot detection, so go through the proxy pool from the start.
Extract the current price (look for visible $/€/£ amounts, JSON-LD Offer schema, [itemprop=price]).
If a target price is provided, compare: report whether current is below/at/above target and the absolute difference.
Return as JSON: {"url": "...", "current_price": 0.00, "currency": "USD", "target_price": 0, "difference": 0, "status": "below|at|above"}
Wann dieses Rezept das richtige ist: ein Agent für Sparalarme, ein Beobachter für Reisepreise, ein Preis-Tracker für B2B-Wettbewerber.
4. Endpoint-Status prüfen
Für Uptime-Probes und API-Endpoint-Validierung.
Integriert: check_endpoint_health(url, expected_text?)
Manueller Prompt:
Use foura_single with GET on <URL>, timeout_ms:5000, and validate.status.accept:[200]. If an expected substring is provided, also set validate.data.accept:["<EXPECTED>"] so the request only counts as success when the body contains it.
Report:
- reachable (true if any response came back, false on connection error/timeout)
- status_code (HTTP code from target)
- total_time_ms (from the total_time field)
- validation_passed (true if status + body validation conditions were met)
Return as JSON: {"url": "...", "reachable": true, "status_code": 200, "total_time_ms": 0, "validation_passed": true}
Wann dieses Rezept geeignet ist: ein externer Uptime-Monitor, ein Deploy-Smoke-Test, ein Watchdog für eine Drittanbieter-API.
5. Eine Liste von URLs parallel abrufen
Für Batch-Jobs, bei denen du Metadaten über viele URLs benötigst, ohne deren Bodies einzubinden.
Integriert: bulk_fetch_urls(urls)
Manueller Prompt:
Parse the following comma-separated URLs and fetch each one concurrently using foura_single (unblocker:true).
URLs: <COMMA_SEPARATED>
For any URL that returns 403, captcha page, or empty body - retry that single URL with foura_proxy (maxTries:3).
Return a JSON array, one entry per URL in input order:
[{"url": "...", "status": 200, "success": true, "body_size_bytes": 0, "via": "single|proxy", "error": null}, ...]
Do NOT inline full response bodies in the output - only metadata. If you need body content, call foura_single individually after this report.
Wann dies das richtige Rezept ist: eine Prüfung der Sitemap-Erreichbarkeit, ein Audit auf tote Links, ein Check, welche dieser 50 Produkt-URLs noch existieren.
6. Länderspezifischen Exit wählen und wiederverwenden
Nutze dies, wenn das Ziel die Request aus bestimmten Ländern sehen muss, einschließlich JavaScript-Seiten, bei denen die Proxy-Auswahl vor dem Browser-Rendering erfolgen muss.
Manueller Prompt:
First call foura_proxy for the actual target:
{
"maxTries": 5,
"exitCountries": ["FR", "GB"],
"request": { "method": "GET", "url": "<TARGET_URL>" }
}
Treat exitCountries as a strict allowlist. On success, verify that exitCountry is FR or GB and capture the returned proxy ID.
If the page then needs JavaScript, call foura_browser with the returned proxy ID in foura_browser.proxy. Do not start a new proxy selection, because that may choose a different exit.
If foura_proxy returns no_eligible_proxy, preserve the requested country scope and retry later. Change or widen the list only after the user explicitly changes the requirement. Never retry silently without exitCountries.
Wann dies das richtige Rezept ist: regionale Inhalte, lizenzierte Märkte, geospezifische Preisgestaltung oder jeder Workflow, der ein verifiziertes, für das Ziel sichtbares Land erfordert und dann den ausgewählten Ausgang wiederverwendet.
7. Geschützte Seite: Zuerst Proxy, Browser wenn JavaScript benötigt wird
Verwende einen begrenzten Proxy-Versuch mit Inhaltsvalidierung, wenn ein direkter Request eine Blockseite zurückgibt. Wenn die validierte Response erfolgreich ist, der gewünschte Inhalt aber noch JavaScript benötigt, verwende genau diese Proxy-ID im Browser wieder. Ein sichtbarer Schutzanbieter ist keine Garantie dafür, dass eine Methode erfolgreich ist.
Manueller Prompt:
Step 1 - call foura_proxy for <TARGET_URL>. Put a string unique to the real page in request.validate.data.accept. If the user supplied an allowed country list, pass it as exitCountries; do not guess country codes.
Step 2 - if the response passes validation and JavaScript is still required, call foura_browser with the returned proxy ID in the proxy field.
Do not call foura_proxy again after a successful selection, because the new call may choose a different exit. If the bounded attempt fails, report the failure honestly instead of claiming support for the target's protection vendor.
Wann dieses Rezept richtig ist: ein geschütztes Ziel, bei dem HTTP einen funktionierenden Exit auswählen kann, der endgültige Inhalt jedoch JavaScript-Rendering erfordert.
8. Auf einer statischen Seite blockiert: Ändere den präsentierten Browser
Verwende dies, wenn ein statisches Ziel eine Block- oder Challenge-Seite zurückgibt und JavaScript nicht das Problem ist. Der Request präsentiert standardmäßig das neueste Google Chrome; einige Ziele akzeptieren einen anderen Browser oder eine andere Plattform.
Manueller Prompt:
Step 1 - call foura_single for <TARGET_URL> with request validation: put a string unique to the real page in validate.data.accept.
Step 2 - if the response is a block page, or defense comes back with solved false, call foura_single again with a different presented browser, for example {"browser": "Firefox"} or {"browser": "Chrome", "os": "Android"}. Keep the same validation.
If the tool answers that the combination does not exist, pick one from the list it returns. Do not retry the same impossible combination, and do not assume another browser was used instead: the request was refused, not substituted.
Step 3 - if changing the presented browser does not help, escalate to foura_proxy for a different exit, and to foura_browser only when the content genuinely needs JavaScript.
Wann dieses Rezept geeignet ist: ein serverseitig gerendertes Ziel, das eher nach dem erkannten Client filtert als nach der Exit-Adresse. Das Ändern des präsentierten Browsers kostet nichts extra und ist einen Versuch wert, bevor Proxy-Rotation angewendet wird.
Tipps, die für alle gelten
- Unsicher, welches Tool? Nutze foura_auto. Es wählt die Methode und übernimmt die Eskalation für dich. Greife nur zu einem bestimmten Tool, wenn du explizite Kontrolle möchtest.
- Starte mit
foura_single, wenn reines HTTP ausreicht. Eskaliere zufoura_proxy, wenn der direkte Request blockiert wird, und zufoura_browser, wenn der gewünschte Inhalt JavaScript benötigt. - Browser-ähnliche Request-Header sind standardmäßig aktiviert (
unblocker). Behalte die Inhaltsvalidierung bei, damit eine Blockseite nicht als Erfolg zählt, und ändere den präsentierten Browser mitbrowser,osoderversion, wenn ein Ziel den Standard ablehnt. - Validierungsregeln sparen Retries. Setze
validate.data.fail:["captcha", "blocked"], damit eine offensichtlich blockierte Response als Fehler zählt und Retry/Proxy-Eskalation auslöst, anstatt als Erfolg gewertet zu werden. - Länder-Scope ist strikt. Ein
no_eligible_proxy-Ergebnis ist keine Erlaubnis, ohneexitCountrieseinen Retry durchzuführen; behalte die Anforderung bei oder frage den Benutzer, bevor du sie änderst. - Große Bodys sind standardmäßig inline (v0.2.0+). Übergebe
offload_large: true, um auf Clients, die diese Funktionen unterstützen, zuresource_link+resources/readzu wechseln.
Suchst du ein Rezept, das hier nicht steht?
Sende eine E-Mail an support@foura.ai mit dem Anwendungsfall. Der MCP-Server liefert neue Prompts im gleichen Takt wie REST-API-Releases.