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
| Herramienta | Argumentos | Qué hace | Costo |
|---|---|---|---|
contextfetch_search | query, 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_url | url, 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_similar | url, num_results (1-25, predeterminado 5) | Páginas similares a una URL, excluyendo su propio dominio. | 1 crédito |
contextfetch_research | query, 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_research | query, 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_answer | query, 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_crawl | url, 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_map | url, 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_balance | ninguno | Cré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_key | ninguno | Reclama 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_reload | enabled, 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:
- la consulta en sí;
- la consulta +
documentation; - la consulta +
benchmarkcuando 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
| Variable | Predeterminado | Significado |
|---|---|---|
CONTEXTFETCH_API_KEY | sin establecer | Tu clave API. Sin establecer o vacía usa el nivel gratuito sin clave. |
CONTEXTFETCH_API_BASE | https://api.contextfetch.dev | URL base de la API. Apúntala a tu propio motor si lo autoalojas. |
Nivel gratuito y precios
| Paquete | Precio | Créditos | Por 1,000 |
|---|---|---|---|
| Prueba sin clave | $0 | 25 por día por IP | gratis, sin registro |
| Instantáneo | $15 | 15,000 | $1.00 |
| Builder (más popular) | $50 | 60,000 | $0.83 |
| Escala | $150 | 200,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