MCP Рецепти
MCP рецепти
Шест готови за поставяне prompts, които можете да изпълните във всеки MCP съвместим клиент (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code) след инсталиране на FourA MCP сървър.
Всяка рецепта използва foura_auto (интелигентната опция по подразбиране) или един или повече от по-ниските нива foura_single, foura_proxy, foura_browser за обща scraping задача. Два начина да ги използвате:
- Извикване на вградения prompt, всеки MCP клиент показва предоставените от сървъра prompts като slash команда или
/promptsпанел. Изберете prompt, попълнете аргументите, изпълнете. MCP сървърът връща шаблонизирания работен процес, а LLM го изпълнява с правилните инструменти. - Копиране на текста по-долу във вашия собствен чат. Същият ефект, по-трудно откриваемо.
MCP сървърът ги доставя като native prompts: smart_fetch, scrape_product_page, extract_article, monitor_pricing, check_endpoint_health, bulk_fetch_urls.
Бележка за големи страници (v0.2.0+): по подразбиране response bodies се връщат inline в
structuredContentнезависимо от размера, това работи във всеки MCP клиент, включително Claude Desktop. Ако сте на клиент, който поддържа MCPresources/readИ искате да спестите token при големи страници, подайтеoffload_large: trueв извикването на инструмента. Отговори >= 50 KB след това идват катоresource_link, който вашият клиент извлича при поискване. Вградените prompts по-долу предполагат опцията по подразбиране (inline).
Отворен код в GitHub; в npm като @fouradata/mcp.
Интелигентно извличане (автоматично): започнете оттук
Най-простата рецепта: подайте 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 и страници зад anti-bot проверки.
Вградено: 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, 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": "..."}
Кога това е подходящата рецепта: инструмент за обобщаване на проучвания, RSS за един сайт, ежедневен новинарски дайджест.
3. Наблюдение на цена
За страници с цени и продуктови оферти, с опционално сравнение спрямо целева цена.
Вградено: monitor_pricing(url, target_price?)
Ръчен промпт:
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"}
Кога това е подходящата рецепта: агент за известия за спестявания, наблюдател на цени за пътувания, B2B инструмент за проследяване на цени на конкуренти.
4. Проверка на състоянието на endpoint
За проверки на uptime и валидация на API endpoint.
Вградено: check_endpoint_health(url, expected_text?)
Ръчен 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}
Когато това е правилната рецепта: външен монитор за наличност, smoke тест при внедряване, инструмент за наблюдение на API на трети страни.
5. Извличане на списък с URL адреси паралелно
За пакетни задачи, при които искате метаданни за много URL адреси, без да вмъквате техните тела.
Вградено: bulk_fetch_urls(urls)
Ръчна заявка:
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.
Кога това е подходящият метод: сканиране за достъпност на sitemap, одит на неработещи връзки, проверка "кои от тези 50 URLs на продукти все още съществуват".
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.
Кога това е правилната рецепта: регионално съдържание, лицензирани пазари, географско ценообразуване или всеки работен процес, който изисква потвърдена видима за целта държава и след това преизползва избрания изход.
7. Защитена страница: първо proxy, браузър когато е необходим JavaScript
Използвайте ограничен опит през proxy с валидиране на съдържанието, когато директен request върне страница за блокиране. Ако валидираният response е успешен, но желаното съдържание все още изисква JavaScript, преизползвайте точно това proxy ID в браузъра. Наличието на видим доставчик на защита не гарантира успеха на който и да е метод.
Ръчен 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.
Когато това е правилната рецепта: защитена цел, при която 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 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.
Кога това е правилната рецепта: цел, рендерирана на сървъра, която филтрира по клиента, който вижда, а не по изходния адрес. Промяната на представения браузър не струва нищо допълнително и си струва да се опита преди proxy ротация.
Съвети, които важат за всички
- Не сте сигурни кой инструмент? Използвайте foura_auto. Той избира метода и се справя с ескалацията вместо вас. Посегнете към специфичен инструмент само когато искате явен контрол.
- Започнете с
foura_single, когато обикновен HTTP е достатъчен. Ескалирайте къмfoura_proxy, когато директният request е блокиран, и къмfoura_browser, когато желаното съдържание изисква JavaScript. - Браузър-подобните request 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 сървърът доставя нови промптове със същото темпо като REST API релийзите.