MCP рецепти

MCP рецепти

Пет готови за поставяне подкани (prompts), които можете да изпълните във всеки съвместим с MCP клиент (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code) след инсталиране на FourA MCP server.

Всяка рецепта оркестрира един или повече от foura_single, foura_proxy, foura_browser за обща задача по извличане на данни (scraping). Два начина за използването им:

  1. Извикване на вградената подкана, всеки MCP клиент показва предоставените от сървъра подкани като slash команда или панел /prompts. Изберете подканата, попълнете аргументите и я стартирайте. MCP server връща шаблонизирания работен процес, а LLM го изпълнява с правилните инструменти.
  2. Копиране на текста по-долу във вашия собствен чат. Същият ефект, но по-трудно откриваемо.

MCP server предоставя следните вградени подкани: scrape_product_page, extract_article, monitor_pricing, check_endpoint_health, bulk_fetch_urls.

Бележка за големи страници (v0.2.0+): по подразбиране телата на response се връщат вградени (inline) в structuredContent независимо от размера, това работи във всеки MCP клиент, включително Claude Desktop. Ако използвате клиент, който поддържа MCP resources/read И искате да спестите token-и при големи страници, предайте offload_large: true в извикването на инструмента. Тогава response >= 50 KB се връщат като resource_link, който вашият клиент изтегля при поискване. Вградените подкани по-долу приемат поведението по подразбиране (inline).

1. Извличане на продуктова страница

За страници с детайли за продукти в електронната търговия, включително single-page-app сайтове и страници зад защити срещу ботове.

Вградена: 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. Most news and blog sites are server-rendered, so HTTP is fastest (200ms-2s).

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 probes и валидиране на 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 (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 тест при внедряване (deploy), watchdog за външни 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, одит за неработещи връзки (link-rot), проверка тип "кои от тези 50 продуктови URL адреса все още съществуват".

6. Заключване на proxy IP при множество повиквания (cross-tool)

Когато имате нужда от последователни повиквания, които да изглеждат така, сякаш идват от един и същ клиент, например при извличане на данни от процес на плащане в няколко стъпки или изтегляне на JS ресурси на страница след нейното рендиране, изберете едно работещо proxy и използвайте повторно неговото ID.

Ръчна подкана:

First, call foura_proxy with maxTries:5 and a quick probe URL (httpbin.org/ip is fine) to find a working proxy. Capture the returned `proxy` ID (looks like "4DZ3VE").

Then for every follow-up call:
- HTTP request: foura_single with the SAME `proxy` value — same exit IP, you preserve any IP-based session.
- Rendered page: foura_browser with the SAME `proxy` value — the browser exits through the same pool IP.

If a specific proxy ID starts failing mid-workflow, call foura_proxy again with ignoreProxies:["<failed_id>"] to get a fresh one.

Кога това е правилната рецепта: извличане на данни от страници, където session състоянието е обвързано с IP, извличане на CSS/JS подресурси след рендиране, A/B тестване на поведението на сайт от конкретна държава или всеки поток с множество повиквания, при който искате предвидим изходен трафик (egress).

7. Верига за WAF предизвикателства (tier-1: Vercel / Cloudflare / Akamai)

Каноничният модел за сайтове зад tier-1 WAF challenge, Vercel Security Checkpoint, Cloudflare 'Just a moment', Akamai Bot Manager. Директното извикване на foura_browser срещу тези цели обикновено улавя страницата с предизвикателството, а не съдържанието след него, тъй като snapshot се задейства преди завършването на отложеното презареждане на предизвикателството. Решете това първо чрез foura_proxy (което изчиства предизвикателството, като опитва множество exit IP адреси, докато някой премине), след което предайте върнатото proxy ID по веригата към foura_browser.

Ръчна подкана:

Step 1 — find an exit IP that clears the challenge:
  foura_proxy({
    maxTries: 30,               // tier-1 WAFs typically need this range
    request: { method: "GET", url: "<TARGET_URL>", unblocker: true }
  })
On success the response carries `proxy: "<BASE36_ID>"`. Capture it.

Step 2 — render the post-challenge page through the same IP:
  foura_browser({
    url: "<TARGET_URL>",
    proxy: "<BASE36_ID>"        // reuse the cleared exit
  })

If foura_proxy still fails after 30 attempts with the same block,
the gate is likely a country / ASN allowlist (country-licensed
bookmakers, government sites). Rotation will never help — pivot
strategy (different data source, partner agreement, etc.).

Сигнали, които трябва да ви насочат към тази рецепта:

  • foura_single връща статус 429 с header x-vercel-mitigated: challenge или cf-mitigated: challenge
  • Заглавието на тялото (body title) съвпада с Vercel Security Checkpoint / Just a moment / Attention Required / We're verifying your browser
  • foura_browser директно улавя малък HTML с предизвикателство вместо реалното съдържание

Кога това е правилната рецепта: SPA, хоствани в Vercel/Netlify зад Vercel WAF (iqair.com, много маркетинг сайтове, рендирани с React), защитени от Cloudflare магазини по време на периоди на режим на атака, защитени от Akamai търговски обекти с голям трафик.

Съвети, приложими за всички седем

  • Започете с foura_single. Това е най-бързият инструмент (200ms-2s) и работи за по-голямата част от публичните сайтове. Преминете към foura_proxy при 403/captcha, и към foura_browser при липсващо JavaScript съдържание.
  • unblocker:true е евтин. Добавя реалистични browser headers на мрежово ниво, сайтове, които ограничават достъпа въз основа на User-Agent или accept-encoding sniffing, ще пропуснат вашия request.
  • Правилата за валидиране спестяват повторни опити. Задайте validate.data.fail:["captcha", "blocked"], така че очевидно блокиран response да се счита за неуспешен и да задейства повторен опит или преминаване към proxy, вместо да се анализира като успешен.
  • Големите тела са вградени (inline) по подразбиране (v0.2.0+). Предайте offload_large: true при всяко извикване на инструмент, за да преминете към resource_link + resources/read за спестяване на token-и при големи страници, това е полезно само в клиенти, които поддържат resources/read (Claude Desktop в момента не поддържа това).

Искате рецепта, която я няма тук?

Изпратете имейл на support@foura.ai с вашия случай на употреба. MCP server предоставя нови подкани със същата честота, с която се пускат версиите на REST API.

Обновено: 1 юли 2026 г.