Recetas de MCP
Recetas de MCP
Seis prompts listos para pegar que puedes ejecutar dentro de cualquier cliente compatible con MCP (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code) después de instalar el servidor MCP de FourA.
Cada receta usa foura_auto (el valor predeterminado inteligente) o una o más de las herramientas de bajo nivel foura_single, foura_proxy, foura_browser para un trabajo de scraping común. Dos formas de usarlas:
- Invoca el prompt integrado: todos los clientes MCP muestran los prompts provistos por el servidor como un comando de barra o panel
/prompts. Elige el prompt, completa los argumentos y ejecútalo. El servidor MCP devuelve el flujo de trabajo con plantilla; el LLM lo ejecuta con las herramientas correctas. - Copia el texto a continuación en tu propio chat. Tiene el mismo efecto, pero es menos fácil de descubrir.
El servidor MCP incluye estos como prompts nativos: smart_fetch, scrape_product_page, extract_article, monitor_pricing, check_endpoint_health, bulk_fetch_urls.
Nota sobre páginas grandes (v0.2.0+): por defecto, los cuerpos de la respuesta vuelven en línea en
structuredContentsin importar su tamaño (esto funciona en cualquier cliente MCP, incluyendo Claude Desktop). Si usas un cliente que soporta MCPresources/readY quieres ahorrar tokens en páginas grandes, pasaoffload_large: trueen la llamada a la herramienta. Las respuestas >= 50 KB llegarán entonces como unresource_linkque tu cliente obtiene a petición. Los prompts integrados a continuación asumen el comportamiento predeterminado (en línea).
Código abierto en GitHub; en npm como @fouradata/mcp.
Fetch inteligente (automático): empieza aquí
La receta más simple: entrega una URL a foura_auto y deja que realice intentos limitados a través de los métodos de petición disponibles. Úsala cuando quieras el contenido y no necesites elegir la primera herramienta tú mismo.
Integrado: smart_fetch(url, must_contain?, extract?)
Prompt manual:
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.
Cuándo esta es la receta adecuada: un primer intento en el que FourA debe elegir el método, especialmente cuando la validación de contenido puede distinguir una página real de una página de bloqueo.
1. Hacer scraping de una página de producto
Para páginas de detalles de productos de comercio electrónico, incluyendo sitios single-page-app y páginas detrás de desafíos anti-bot.
Integrado: scrape_product_page(url)
Prompt manual:
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": "..."}
Cuándo esta es la receta adecuada: un agente de comparación de precios, un notificador de disponibilidad de stock, una hoja de cálculo de análisis competitivo.
2. Extraer un artículo
Para artículos de noticias, publicaciones de blog, documentación técnica, o cualquier caso en el que quieras un texto de lectura limpio sin el ruido de la navegación, anuncios ni el pie de página.
Integrado: extract_article(url)
Prompt manual:
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": "..."}
Cuándo esta es la receta adecuada: un resumidor de investigaciones, un RSS de un solo sitio, un resumen diario de noticias.
3. Monitoriza un precio
Para páginas de precios y ofertas de productos, con comparación opcional frente a un precio objetivo.
Integrado: monitor_pricing(url, target_price?)
Prompt manual:
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"}
Cuándo esta es la receta adecuada: un agente de alertas de ahorro, un rastreador de tarifas de viaje, un rastreador de precios de la competencia B2B.
4. Comprobar el estado del endpoint
Para pruebas de tiempo de actividad y validación de endpoints de API.
Integrado: check_endpoint_health(url, expected_text?)
Prompt manual:
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}
Cuándo usar esta receta: un monitor de tiempo de actividad externo, una prueba de humo de despliegue, un supervisor de API de terceros.
5. Obtener una lista de URL en paralelo
Para trabajos por lotes en los que deseas metadatos sobre muchas URL sin incluir sus cuerpos en línea.
Integrado: bulk_fetch_urls(urls)
Prompt manual:
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.
Cuándo esta es la receta adecuada: un barrido de accesibilidad de sitemap, una auditoría de enlaces rotos, una comprobación de "cuáles de estas 50 URLs de productos aún existen".
6. Elige y reutiliza una salida con alcance de país
Usa esto cuando el objetivo deba ver la request desde un país de un conjunto específico, incluyendo páginas JavaScript donde la selección del proxy debe ocurrir antes del renderizado del navegador.
Prompt manual:
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.
Cuándo usar esta receta: contenido regional, mercados con licencia, precios específicos por zona geográfica o cualquier flujo de trabajo que necesite un país verificado visible para el objetivo y luego reutilice la salida seleccionada.
7. Página protegida: proxy primero, navegador cuando se necesita JavaScript
Usa un intento de proxy limitado con validación de contenido cuando una solicitud directa devuelve una página de bloqueo. Si la respuesta validada tiene éxito pero el contenido deseado aún necesita JavaScript, reutiliza ese ID de proxy exacto en el navegador. Un proveedor de protección visible no garantiza que ningún método tenga éxito.
Prompt manual:
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.
Cuándo usar esta receta: un objetivo protegido donde HTTP puede seleccionar una salida funcional pero el contenido final requiere renderizado de JavaScript.
8. Bloqueado en una página estática: cambia el navegador que presentas
Usa esto cuando un objetivo estático devuelve una página de bloqueo o desafío y JavaScript no es el problema. La request presenta la última versión de Google Chrome por defecto; algunos objetivos aceptan un navegador o plataforma diferente.
Prompt manual:
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.
Cuándo esta es la receta adecuada: un objetivo renderizado en el servidor que filtra por el cliente que ve en lugar de por la dirección de salida. Cambiar el navegador presentado no cuesta nada extra y vale la pena intentarlo antes de la rotación de proxy.
Consejos que se aplican a todos ellos
- ¿No estás seguro de qué herramienta usar? Usa foura_auto. Selecciona el método y maneja la escalada por ti. Recurre a una herramienta específica solo cuando desees control explícito.
- Comienza con
foura_singlecuando HTTP simple sea suficiente. Escala afoura_proxycuando la request directa esté bloqueada y afoura_browsercuando el contenido deseado necesite JavaScript. - Los headers de request similares a los de un navegador están activados por defecto (
unblocker). Mantén la validación de contenido activada para que una página de bloqueo no cuente como un éxito, y cambia el navegador presentado conbrowser,osoversioncuando un objetivo rechace el predeterminado. - Las reglas de validación ahorran reintentos. Configura
validate.data.fail:["captcha", "blocked"]para que una response obviamente bloqueada cuente como falla y active el reintento o la escalada de proxy, en lugar de ser analizada como un éxito. - El alcance del país es estricto. Un resultado
no_eligible_proxyno es permiso para reintentar sinexitCountries; preserva el requisito o pregunta al usuario antes de cambiarlo. - Los cuerpos grandes están en línea por defecto (v0.2.0+). Pasa
offload_large: truepara cambiar aresource_link+resources/readen los clientes que soporten esas capacidades.
¿Quieres una receta que no está aquí?
Envía un correo a support@foura.ai con el caso de uso. El servidor MCP lanza nuevos prompts al mismo ritmo que las versiones de la REST API.