MCP-Rezepte
MCP-Rezepte
Neun sofort nutzbare Prompts, die du in jedem MCP-kompatiblen Client (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code) nach der Installation des FourA-MCP-Servers ausführen kannst.
Jedes Rezept nutzt foura_auto (den intelligenten Standard) oder eines bzw. mehrere der Low-Level-Tools foura_single, foura_proxy, foura_browser für typische Scraping-Aufgaben. Zwei Nutzungswege:
- Integrierten Prompt aufrufen: Jeder MCP-Client stellt vom Server bereitgestellte Prompts als Slash-Befehl oder über ein
/prompts-Panel bereit. Wähle den Prompt, fülle die Argumente aus und starte ihn. Der MCP-Server liefert den vorstrukturierten Workflow, das LLM führt ihn mit den passenden Tools aus. - Text kopieren: Kopiere den Text unten in deinen eigenen Chat. Gleicher Effekt, weniger komfortabel.
Der MCP-Server liefert diese Prompts nativ mit: 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 der Größe inline in
structuredContentzurückgegeben. Das funktioniert in jedem MCP-Client inklusive Claude Desktop. Wenn du einen Client nutzt, der MCP-resources/readunterstützt UND du bei großen Seiten Tokens sparen möchtest, übergiboffload_large: trueim Tool-Aufruf. Antworten >= 50 KB werden dann alsresource_linkzurückgegeben, die dein Client bei Bedarf abruft. Die integrierten Prompts unten setzen den Standard (inline) voraus.
Open Source auf GitHub; auf npm als @fouradata/mcp.
Smart Fetch (Auto): Hier starten
Das einfachste Rezept: Übergib eine URL an foura_auto und überlasse dem Tool begrenzte Versuche über die verfügbaren Request-Methoden hinweg. Nutze es immer dann, wenn du den Inhalt benötigst und das erste Tool nicht selbst wählen möchtest.
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 dies das richtige Rezept ist: ein erster Versuch, bei dem FourA die Methode wählen soll, besonders wenn die Inhaltsvalidierung eine echte Seite von einer Ablehnungsseite unterscheiden kann.
1. Eine Produktseite scrapen
Für E-Commerce-Produktdetailseiten, einschließlich Single-Page-Apps und Seiten mit Site-Check.
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 dies das richtige Rezept ist: ein Preisvergleichs-Agent, eine Wieder-auf-Lager-Benachrichtigung, eine Tabelle zur Konkurrenzanalyse.
2. Artikel extrahieren
Für Nachrichtenartikel, Blogbeiträge, technische Dokumentation, alles, bei dem du sauberen Lesetext ohne Navigation, Werbung und Footer-Rauschen 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, a verification 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 dies das richtige Rezept ist: ein Recherche-Summarizer, ein RSS-Feed für eine einzelne Website, ein täglicher News-Digest.
3. Einen Preis überwachen
Für Preisseiten und Produktangebote, mit optionalem Abgleich gegen einen Zielpreis.
Integriert: monitor_pricing(url, target_price?)
Manueller Prompt:
Use foura_proxy with maxTries:5 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 passt: Spar-Alarm-Agenten, Reisekosten-Tracker, B2B-Mitbewerber-Preisüberwachung.
4. Endpoint-Health 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 (the total_time field is in seconds: multiply by 1000)
- 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 passt: externer Uptime-Monitor, Deploy-Smoke-Test, Third-Party-API-Watchdog.
5. Eine Liste von URLs parallel abrufen
Für Batch-Jobs, bei denen du Metadaten zu vielen URLs benötigst, ohne deren Bodies inline 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, a verification 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 dieses Rezept passt: ein Sitemap-Erreichbarkeits-Sweep, ein Link-Rot-Audit, ein Check, welche dieser 50 Produkt-URLs noch existieren.
6. Einen länderspezifischen Exit wählen und wiederverwenden
Nutze dies, wenn das Ziel den Request aus einem bestimmten Land 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 dieses Rezept passt: regionale Inhalte, lizenzierte Märkte, länderspezifische Preise oder Workflows, die ein verifiziertes Zielland benötigen und den gewählten Exit danach wiederverwenden. Country Scoping ist ab dem Startup-Plan enthalten; bei anderen Plänen gibt foura_proxy plan_limit_feature zurück, was kein Retry behebt.
7. Geschützte Seite: Zuerst Proxy, Browser wenn JavaScript nötig ist
Nutze einen begrenzten Proxy-Versuch mit Content-Validierung, wenn ein direkter Request eine Ablehnungsseite zurückgibt. Wenn die validierte Response erfolgreich ist, die gewünschten Inhalte aber noch JavaScript erfordern, verwende genau diese Proxy-ID im Browser wieder. Ein sichtbarer Schutzanbieter ist keine Garantie dafür, dass eine Methode funktioniert.
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 dies das richtige Rezept ist: Ein geschütztes Ziel, bei dem HTTP einen funktionierenden Exit wählen kann, der finale Inhalt jedoch JavaScript-Rendering erfordert.
8. Auf einer statischen Seite blockiert: Ändere den vorgegebenen Browser
Nutze dies, wenn ein statisches Ziel eine Blockierung oder Challenge-Seite zurückgibt und JavaScript nicht das Problem ist. Der Request gibt standardmäßig das neueste Google Chrome vor; manche 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 refusal 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 dies das richtige Rezept ist: Ein serverseitig gerendertes Ziel, das nach dem erkannten Client filtert statt nach der Exit-Adresse. Den übergebenen Browser zu ändern kostet nichts extra und lohnt sich vor einer Proxy-Rotation.
Tipps, die für alle gelten
- Nicht sicher, 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 willst.
- Starte mit
foura_single, wenn einfaches HTTP reicht. 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 aktiv (
unblocker). Behalte die Content-Validierung bei, damit eine Sperrseite nicht als Erfolg gewertet wird, und ändere den übergebenen Browser mitbrowser,osoderversion, falls 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 geparst zu werden. - Länder-Scope ist strikt. Ein
no_eligible_proxy-Ergebnis ist keine Erlaubnis für einen Retry ohneexitCountries. Behalte die Anforderung bei oder frage den Nutzer, bevor du sie änderst. - Große Bodies sind standardmäßig inline (v0.2.0+). Übergib
offload_large: true, um auf Clients, die diese Funktionen unterstützen, zuresource_link+resources/readzu wechseln.
Fehlt dir ein bestimmtes Rezept?
Sende eine E-Mail mit deinem Anwendungsfall an support@foura.ai. Der MCP-Server veröffentlicht neue Prompts im selben Rhythmus wie REST-API-Releases.