Receptury MCP

Receptury MCP

Sześć gotowych do wklejenia promptów, które możesz uruchomić w dowolnym kliencie kompatybilnym z MCP (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code) po zainstalowaniu serwera FourA MCP.

Każda receptura używa foura_auto (inteligentna opcja domyślna) lub jednego z narzędzi niższego poziomu foura_single, foura_proxy, foura_browser do typowego zadania scrapowania. Dwa sposoby użycia:

  1. Wywołaj wbudowany prompt - każdy klient MCP udostępnia prompty serwera jako komendę z ukośnikiem lub panel /prompts. Wybierz prompt, wypełnij argumenty, uruchom. Serwer MCP zwraca szablonowy workflow, a LLM wykonuje go za pomocą odpowiednich narzędzi.
  2. Skopiuj poniższy tekst do własnego czatu. Taki sam efekt, ale trudniejsze do znalezienia.

Serwer MCP dostarcza je jako natywne prompty: smart_fetch, scrape_product_page, extract_article, monitor_pricing, check_endpoint_health, bulk_fetch_urls.

Uwaga dotycząca dużych stron (v0.2.0+): domyślnie ciała odpowiedzi wracają inline w structuredContent niezależnie od rozmiaru, co działa w każdym kliencie MCP włączając Claude Desktop. Jeśli używasz klienta, który obsługuje MCP resources/read ORAZ chcesz zaoszczędzić tokeny na dużych stronach, przekaż offload_large: true w wywołaniu narzędzia. Odpowiedzi >= 50 KB wracają wtedy jako resource_link, które Twój klient pobiera na żądanie. Wbudowane prompty poniżej przyjmują zachowanie domyślne (inline).

Open source na GitHub; w npm jako @fouradata/mcp.

Inteligentne pobieranie (auto): zacznij tutaj

Najprostsza receptura: przekaż adres URL do foura_auto i pozwól mu wykonać ograniczoną liczbę prób dostępnymi metodami requestu. Używaj, gdy po prostu potrzebujesz treści i nie musisz samodzielnie wybierać pierwszego narzędzia.

Wbudowane: smart_fetch(url, must_contain?, extract?)

Ręczny 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.

Kiedy to właściwa recepta: pierwsza próba, w której FourA powinno wybrać metodę, zwłaszcza gdy walidacja treści pozwala odróżnić prawdziwą stronę od strony blokady.

1. Scrapuj stronę produktu

Dla stron ze szczegółami produktów e-commerce, w tym witryn single-page-app i stron chronionych przez zabezpieczenia anti-bot.

Wbudowane: scrape_product_page(url)

Ręczny 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": "..."}

Kiedy użyć tego rozwiązania: agent porównywania cen, powiadomienia o dostępności towaru, arkusz analizy konkurencji.

2. Ekstrakcja artykułu

Do artykułów informacyjnych, wpisów na blogu, dokumentacji technicznej i wszystkiego, gdzie potrzebny jest czysty tekst do czytania bez nawigacji, reklam i szumu ze stopki.

Wbudowane: extract_article(url)

Ręczny 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": "..."}

Kiedy to jest odpowiednia receptura: podsumowanie badań, kanał RSS jednej strony, codzienny przegląd wiadomości.

3. Monitorowanie ceny

Do stron z cennikami i ofertami produktów, z opcjonalnym porównaniem z ceną docelową.

Wbudowane: monitor_pricing(url, target_price?)

Ręczny 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"}

Kiedy to odpowiednie rozwiązanie: agent alertów oszczędnościowych, monitor cen podróży, tracker cen konkurencji B2B.

4. Sprawdź stan endpointu

Do sond uptime i walidacji endpointów API.

Wbudowane: check_endpoint_health(url, expected_text?)

Ręczny 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}

Kiedy to jest odpowiednie rozwiązanie: zewnętrzny monitor dostępności, smoke test po wdrożeniu, watchdog dla zewnętrznego API.

5. Pobieranie listy URL równolegle

Dla zadań wsadowych, gdzie potrzebujesz metadanych o wielu adresach URL bez pobierania ich zawartości (body).

Wbudowane: bulk_fetch_urls(urls)

Ręczny 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.

Kiedy to podejście jest właściwe: skanowanie dostępności mapy witryny, audyt wygasłych linków, sprawdzenie "który z tych 50 adresów URL produktów nadal istnieje".

6. Wybierz i ponownie użyj węzła wyjściowego dla danego kraju

Użyj tego, gdy cel musi widzieć żądanie z określonego zestawu krajów, w tym dla stron JavaScript, gdzie wybór proxy musi nastąpić przed renderowaniem przez przeglądarkę.

Ręczne polecenie:

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.

Kiedy jest to właściwe podejście: treści regionalne, rynki licencjonowane, ceny zależne od lokalizacji lub dowolny przepływ pracy, który wymaga zweryfikowanego kraju docelowego, a następnie ponownie wykorzystuje wybrany węzeł wyjściowy.

7. Chroniona strona: najpierw proxy, przeglądarka gdy potrzebny jest JavaScript

Użyj ograniczonej próby użycia proxy z walidacją treści, gdy bezpośredni request zwraca stronę blokady. Jeśli zwalidowana odpowiedź powiedzie się, ale żądana treść nadal wymaga JavaScriptu, użyj dokładnie tego samego identyfikatora proxy w przeglądarce. Widoczny dostawca zabezpieczeń nie gwarantuje, że jakakolwiek metoda zakończy się sukcesem.

Ręczny 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.

Kiedy jest to odpowiedni przepis: chroniony cel, w którym HTTP może wybrać działający punkt wyjściowy, ale ostateczna treść wymaga renderowania JavaScript.

8. Zablokowano na statycznej stronie: zmień prezentowaną przeglądarkę

Użyj tego, gdy statyczny cel zwraca stronę blokady lub wyzwania, a JavaScript nie jest problemem. request domyślnie prezentuje najnowszą przeglądarkę Google Chrome; niektóre cele akceptują inną przeglądarkę lub platformę.

Ręczny 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.

Kiedy to jest odpowiednie rozwiązanie: cel renderowany po stronie serwera, który filtruje na podstawie widocznego klienta, a nie adresu wyjściowego. Zmiana prezentowanej przeglądarki nic nie kosztuje i warto jej spróbować przed rotacją proxy.

Wskazówki dotyczące wszystkich opcji

  • Nie wiesz, którego narzędzia użyć? Użyj foura_auto. Ono wybiera metodę i obsługuje eskalację za Ciebie. Sięgnij po konkretne narzędzie tylko wtedy, gdy chcesz mieć całkowitą kontrolę.
  • Zacznij od foura_single, gdy zwykły HTTP wystarczy. Przejdź do foura_proxy, gdy bezpośredni request jest blokowany, i do foura_browser, gdy żądana treść wymaga JavaScript.
  • Nagłówki request naśladujące przeglądarkę są domyślnie włączone (unblocker). Zachowaj walidację treści, aby strona z blokadą nie liczyła się jako sukces, i zmień prezentowaną przeglądarkę za pomocą browser, os lub version, gdy cel odrzuci ustawienia domyślne.
  • Reguły walidacji ograniczają ponowne próby. Ustaw validate.data.fail:["captcha", "blocked"], aby oczywiście zablokowany response był liczony jako błąd i uruchamiał ponowną próbę lub eskalację proxy, a nie był parsowany jako sukces.
  • Ograniczenia krajów są ścisłe. Wynik no_eligible_proxy nie daje pozwolenia na ponowną próbę bez exitCountries; zachowaj ten wymóg lub zapytaj użytkownika przed jego zmianą.
  • Duże wartości body są domyślnie wysyłane w locie (v0.2.0+). Przekaż offload_large: true, aby przełączyć się na resource_link + resources/read w klientach, którzy obsługują te funkcje.

Szukasz rozwiązania, którego tu nie ma?

Wyślij e-mail na adres support@foura.ai z opisem swojego przypadku użycia. Serwer MCP publikuje nowe prompty z taką samą częstotliwością jak wydania REST API.

Aktualizacja: 6 sierpnia 2026