MCP Рецепти
MCP рецепти
Девет готови за поставяне prompt-а, които можете да стартирате във всеки съвместим с MCP клиент (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code) след инсталиране на FourA MCP server.
Всяка рецепта използва foura_auto (интелигентната опция по подразбиране) или един или повече от инструментите от по-ниско ниво foura_single, foura_proxy, foura_browser за често срещана задача за scraping. Два начина за използването им:
- Извикване на вградения prompt - всеки MCP клиент показва предоставените от сървъра prompt-ове като slash команда или
/promptsпанел. Изберете prompt-а, попълнете аргументите, стартирайте. MCP сървърът връща шаблонирания работен процес; LLM го изпълнява с правилните инструменти. - Копиране на текста по-долу във вашия чат. Същият ефект, но по-малко откриваем.
MCP сървърът доставя следните като вградени prompt-ове: smart_fetch, scrape_product_page, extract_article, monitor_pricing, check_endpoint_health, bulk_fetch_urls.
Бележка за големи страници (v0.2.0+): по подразбиране response телата се връщат вградени в
structuredContentнезависимо от размера - това работи във всеки MCP клиент, включително Claude Desktop. Ако използвате клиент, който поддържа MCPresources/readИ искате да спестите token-и при големи страници, подайтеoffload_large: trueв извикването на инструмента. Responses >= 50 KB тогава се връщат катоresource_link, което вашият клиент извлича при поискване. Вградените prompt-ове по-долу предполагат опцията по подразбиране (вградени).
Отворен код в GitHub; в npm като @fouradata/mcp.
Smart fetch (auto): започнете оттук
Най-простата рецепта: подайте URL на foura_auto и го оставете да направи ограничени опити чрез наличните методи за request. Използвайте го винаги, когато искате съдържанието и не е необходимо сами да избирате първия инструмент.
Вграден: smart_fetch(url, must_contain?, extract?)
Ръчен 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.
Кога това е правилният подход: първи опит, при който FourA трябва да избере метода, особено когато валидирането на съдържанието може да различи реална страница от страница с отказ.
1. Извличане на продуктова страница
За страници с детайли за продукти в е-търговията, включително single-page-app сайтове и страници със site check.
Вградено: scrape_product_page(url)
Ръчен промпт:
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": "..."}
Кога това е правилният подход: агент за сравнение на цени, известия за наличност, таблица за анализ на конкуренти.
2. Извличане на статия
За новинарски статии, публикации в блогове, техническа документация, всичко, където искате изчистен текст за четене без шум от навигация, реклами и футъри.
Вградено: extract_article(url)
Ръчен промпт:
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": "..."}
Кога това е правилната рецепта: обобщаване на проучвания, RSS за един сайт, ежедневен дайджест с новини.
3. Мониторинг на цена
За страници с цени и продуктови оферти, с опционално сравнение спрямо целева цена.
Вградено: monitor_pricing(url, target_price?)
Ръчен промпт:
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"}
Кога това е правилната рецепта: агент за известия за спестявания, инструмент за следене на цени на пътувания, тракер на конкурентни B2B цени.
4. Проверка на изправността на endpoint
За сонди за uptime и валидация на API endpoint.
Вградено: check_endpoint_health(url, expected_text?)
Ръчен промпт:
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}
Кога това е правилната рецепта: външен мониторинг на ъптайма, smoke тест при deploy, наблюдение на third-party API.
5. Паралелно извличане на списък с URL адреси
За batch задачи, при които ви трябват метаданни за множество URL адреси без вграждане на техните тела.
Вградено: bulk_fetch_urls(urls)
Ръчен 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.
Кога това е правилната рецепта: обхождане за достъпност на sitemap, одит за неработещи линкове (link-rot), проверка от типа "кои от тези 50 продуктови URL адреса все още съществуват".
6. Избор и повторно използване на изходна точка по държава
Използвайте това, когато целевият сайт трябва да вижда заявката от конкретен набор от държави, включително JavaScript страници, където изборът на proxy трябва да се извърши преди рендирането в браузъра.
Ръчен промпт:
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.
Кога това е правилната рецепта: регионално съдържание, лицензирани пазари, гео-специфично ценообразуване или всеки работен процес, който изисква потвърдена видима за целта държава и след това преизползва избрания изход. Задаването на държава е включено от план Startup нагоре; при останалите планове foura_proxy връща plan_limit_feature, което не се изчиства с повторен опит.
7. Защитена страница: първо proxy, браузър при нужда от JavaScript
Използвайте ограничен proxy опит с валидация на съдържанието, когато директната заявка върне страница с отказ. Ако валидираният отговор е успешен, но желаното съдържание все още изисква JavaScript, използвайте повторно същия proxy ID в браузъра. Видимият доставчик на защита не е гаранция, че който и да е метод ще успее.
Ръчен промпт:
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.
Кога това е правилната рецепта: защитена цел, при която HTTP може да избере работещ изходен възел, но финалното съдържание изисква JavaScript рендериране.
8. Блокирани на статична страница: променете браузъра, който представяте
Използвайте това, когато статична цел връща страница с блокиране или предизвикателство, а JavaScript не е проблемът. Заявката представя най-новия Google Chrome по подразбиране; някои цели приемат различен браузър или платформа.
Ръчен промпт:
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.
Кога това е правилната рецепта: сървърно рендирана цел, която филтрира по виждания клиент, а не по изходния адрес. Промяната на подавания браузър не струва нищо допълнително и си струва да се опита преди ротация на proxy.
Съвети, приложими за всички тях
- Не сте сигурни кой инструмент да изберете? Използвайте foura_auto. Той избира метода и управлява ескалацията вместо вас. Използвайте конкретен инструмент само когато искате изричен контрол.
- Започнете с
foura_single, когато обикновен HTTP е достатъчен. Ескалирайте доfoura_proxy, когато директната заявка е блокирана, и доfoura_browser, когато желаното съдържание изисква JavaScript. - Заявките с наподобяващи браузър headers са включени по подразбиране (
unblocker). Запазете валидацията на съдържанието, за да не се брои страница с отказ за успех, и сменете подавания браузър сbrowser,osилиversion, когато целта отхвърли този по подразбиране. - Правилата за валидация спестяват повторни опити. Задайте
validate.data.fail:["captcha", "blocked"], така че очевидно блокиран response да се счита за неуспех и да задейства повторен опит или ескалация към proxy, вместо да се обработва като успешен. - Обхватът по държава е строг. Резултатът
no_eligible_proxyне е разрешение за повторен опит безexitCountries; запазете изискването или попитайте потребителя, преди да го промените. - Големите тела са вградени (inline) по подразбиране (v0.2.0+). Подайте
offload_large: true, за да превключите къмresource_link+resources/readпри клиенти, поддържащи тези възможности.
Търсите рецепта, която липсва тук?
Пишете на support@foura.ai с вашия случай на употреба. MCP сървърът предоставя нови prompts със същата честота като изданията на REST API.