ContextFetch

API de búsqueda web y servidor MCP para agentes de IA: resultados como Markdown limpio con contexto podado por consulta, además de investigación, rastreo y mapa. $1 por cada 1,000 búsquedas; 25 al día gratis sin clave.

Servidor MCP alojado

npx add-mcp 'https://api.contextfetch.dev/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

@contextfetch/mcp

Servidor MCP para ContextFetch: búsqueda web neuronal y Markdown limpio y listo para LLM para agentes de IA desde $0.75 por cada 1,000 búsquedas. Funciona sin registro: no se necesita clave para el nivel gratuito.

Instalación

Claude Code (una línea, sin clave):

claude mcp add contextfetch -- npx -y @contextfetch/mcp

Con una clave de pago:

claude mcp add contextfetch -e CONTEXTFETCH_API_KEY=your_key -- npx -y @contextfetch/mcp

Cursor: añade a ~/.cursor/mcp.json (global) o .cursor/mcp.json (proyecto):

{
  "mcpServers": {
    "contextfetch": {
      "command": "npx",
      "args": ["-y", "@contextfetch/mcp"],
      "env": { "CONTEXTFETCH_API_KEY": "your_key" }
    }
  }
}

Windsurf: añade a ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "contextfetch": {
      "command": "npx",
      "args": ["-y", "@contextfetch/mcp"],
      "env": { "CONTEXTFETCH_API_KEY": "your_key" }
    }
  }
}

Para usar el nivel gratuito, elimina el bloque env (o deja CONTEXTFETCH_API_KEY vacío). El mismo JSON funciona en el claude_desktop_config.json de Claude Desktop y en cualquier otro cliente MCP que lance servidores stdio.

Requiere Node.js 18 o superior.

Herramientas

HerramientaArgumentosQué haceCosto
contextfetch_searchquery, num_results (1-25, predeterminado 5), include_domains?, exclude_domains?Búsqueda web. Cada resultado incluye título, URL y solo los pasajes relevantes a tu consulta (Markdown podado con codificador cruzado).1 crédito
contextfetch_extract_urlurl, query?Cualquier página pública (documentación, artículos, archivos de GitHub, arXiv) como Markdown limpio con tablas conservadas. Con query, devuelve solo los pasajes relevantes.1 crédito
contextfetch_find_similarurl, num_results (1-25, predeterminado 5)Páginas similares a una URL, excluyendo su propio dominio.1 crédito
contextfetch_researchquery, sub_queries? (hasta 5), num_results_per_query (1-10, predeterminado 5)Investigación del lado del servidor: ejecuta las subconsultas en paralelo, elimina duplicados de páginas por URL, las clasifica todas contra query con el codificador cruzado y devuelve un paquete de evidencia en Markdown (fuentes numeradas [n] con sus pasajes podados por consulta, citados textualmente; nada generado), encabezado por las subconsultas, el recuento de fuentes, tokens y créditos utilizados.1 crédito por subconsulta (máx. 5)
contextfetch_deep_researchquery, sub_queries? (hasta 3), num_results_per_query (1-25, predeterminado 5; se usan como máximo 10)El nombre anterior de contextfetch_research, conservado para configuraciones existentes: mismo paquete de evidencia del lado del servidor, hasta 3 subconsultas.1 crédito por subconsulta (máx. 3)
contextfetch_answerquery, num_results (1-10, predeterminado 5)Respuesta extractiva: los pasajes con mejor puntuación de las páginas principales, citados textualmente con marcadores [n] y una lista numerada de fuentes. No se genera texto, por lo que es adecuado para consultas factuales más que para preguntas abiertas.1 crédito
contextfetch_crawlurl, max_depth (0-3, predeterminado 1), limit (1-50, predeterminado 10), query?, include_paths?, exclude_paths? (expresiones regulares en la ruta de la URL)Rastrea un sitio desde url (enlaces del mismo sitio, robots.txt respetado) y devuelve cada página como Markdown con su profundidad. Con query, las páginas se clasifican por relevancia y se podan a los pasajes relevantes.1 crédito por página devuelta
contextfetch_mapurl, limit (1-5,000, predeterminado 100), include_paths?, exclude_paths?Lista las URLs de un sitio desde sus sitemaps y los enlaces de la página de inicio sin obtener las páginas.1 crédito
contextfetch_balanceningunoCréditos restantes, tasa de consumo (créditos/día en los últimos 7 días) y configuración de recarga automática, incluido el último error de recarga automática si falló un pago. Necesita CONTEXTFETCH_API_KEY.gratis
contextfetch_get_free_keyningunoReclama la clave API gratuita de la red (2,500 búsquedas, una por red) y la usa durante el resto de la sesión. Entrégasela a tu usuario para que la guarde en CONTEXTFETCH_API_KEY.gratis
contextfetch_auto_reloadenabled, threshold? (100-100,000), pack? (instant, builder, scale), monthly_max_usd? (máx. 500)Activa o desactiva la recarga automática o la modifica: cuando los créditos caen por debajo de threshold, la tarjeta guardada al pagar compra pack nuevamente, hasta el límite mensual. Necesita CONTEXTFETCH_API_KEY y una tarjeta guardada. El límite no puede superar los $500 aquí.gratis

Todas las herramientas devuelven texto en Markdown. Sin clave, contextfetch_balance y contextfetch_auto_reload devuelven un mensaje breve indicando que la necesitan, con el enlace de compra. En el nivel gratuito, los resultados comienzan con un aviso de una línea que muestra cuántas búsquedas gratuitas quedan hoy. Cuando la API lo informa, una línea final muestra la latencia (total y por etapa: recuperación, obtención, reclasificación), si la respuesta provino de caché y el ahorro de tokens (tokens podados frente a tokens de página sin procesar).

Subconsultas de contextfetch_research

Pasa tus propias sub_queries (diferentes ángulos sobre la pregunta); la descripción de la herramienta le indica al modelo que lo haga. Si las omites, la API las deriva de query con reglas fijas:

  1. la consulta en sí;
  2. la consulta + documentation;
  3. la consulta + benchmark cuando menciona velocidad, rendimiento, latencia, memoria o una comparación (vs, compare), de lo contrario la consulta + example.

Un sufijo que la consulta ya contiene se omite (por lo que react useActionState example ejecuta 2 búsquedas, no 3). Toda la investigación se ejecuta del lado del servidor en una sola llamada /v1/research que cuesta 1 crédito por subconsulta; una subconsulta que falla se reembolsa y se nombra en el encabezado. Si todas fallan, la herramienta devuelve el error.

Variables de entorno

VariablePredeterminadoSignificado
CONTEXTFETCH_API_KEYsin establecerTu clave API. Sin establecer o vacía usa el nivel gratuito sin clave.
CONTEXTFETCH_API_BASEhttps://api.contextfetch.devURL base de la API. Apúntala a tu propio motor si lo autoalojas.

Nivel gratuito y precios

PaquetePrecioCréditosPor 1,000
Prueba sin clave$025 por día por IPgratis, sin registro
Instantáneo$1515,000$1.00
Builder (más popular)$5060,000$0.83
Escala$150200,000$0.75

Pagos únicos; los créditos nunca caducan. La recarga automática opcional vuelve a comprar un paquete cuando tu saldo cae por debajo de un umbral, hasta un límite mensual.

Cuando los créditos o el nivel gratuito se agotan (HTTP 402), la herramienta devuelve los paquetes con precios y un enlace de compra de un clic cada uno (paquete recomendado primero), más una línea para pasar a tu usuario. Los enlaces de compra van directamente a Stripe Checkout (tarjeta, Apple Pay, Google Pay): https://api.contextfetch.dev/buy/instant, /buy/builder, /buy/scale. Luego establece CONTEXTFETCH_API_KEY como se muestra arriba.

Reintentos y conexiones

Los fallos de conexión antes de enviar la solicitud (rechazada, DNS, tiempo de espera de conexión), HTTP 429 y HTTP 5xx se reintentan con retroceso exponencial y fluctuación (aproximadamente 0.25-0.5 s, luego 0.5-1 s), con un máximo de 3 intentos por llamada API y 30 segundos en total, incluidos los reintentos. Un 429 o 5xx con un encabezado Retry-After espera exactamente ese tiempo, a menos que eso supere el presupuesto de 30 segundos. Las respuestas 400, 401, 402, 422 y otras 4xx nunca se reintentan. Una conexión que se cae después de enviar la solicitud tampoco se reintenta, ya que la búsqueda puede ya haberse facturado. Las conexiones se agrupan y se mantienen activas mediante el fetch integrado de Node (undici), por lo que no hay dependencia HTTP adicional.

Errores

Los errores nunca bloquean el servidor; regresan como resultados de herramientas con isError: true y una explicación clara: clave inválida (401), sin créditos o límite gratuito alcanzado (402, lista los paquetes con sus enlaces de compra), sin tarjeta guardada para recarga automática (409, con el enlace de compra), URL no permitida (400, solo URLs públicas http(s)), una página que contextfetch_extract_url no pudo obtener (con el motivo, como HTTP 404), límite de velocidad (429), errores del servidor (5xx), fallos de red y un límite de 30 segundos por llamada (incluidos los reintentos).

Desarrollo

npm install
npm run build          # compiles src/ to dist/ and marks dist/index.js executable
npm test               # builds, then drives dist/index.js over stdio against a local mock API (no network)
CONTEXTFETCH_API_BASE=http://localhost:8000 node dist/index.js

Publicación

Publicar @contextfetch/mcp necesita la organización npm contextfetch (créeala en npmjs.com y agregue la cuenta de publicación como miembro). Luego npm publish desde esta carpeta; publishConfig.access ya está public y prepublishOnly compila primero.

Licencia

MIT