Web Researcher MCP

Servidor MCP de grado productivo para búsqueda web, extracción de contenido e investigación multifuente: 8 herramientas, 5 proveedores de búsqueda con conmutación por error automática, canal de scraping de 4 niveles. Binario único en Go.

Documentación

web-researcher-mcp logo

web-researcher-mcp

Tu asistente de investigación con IA que cita fuentes reales y se mantiene honesto.

Busca en toda la web o limítalo solo a los sitios en los que confías;
revistas médicas, bases de datos judiciales, medios de noticias, artículos académicos.
Analiza la fuente completa, no solo fragmentos. Enlaces que funcionan, citas en las que puedes confiar,
sin resultados pre-sintetizados inventados de jardines cerrados.

⭐ Si estás cansado de que la IA invente cosas, y web-researcher-mcp te ayuda, danos una estrella ⭐ — ayuda a que más equipos descubran el proyecto.

CI Go Report Card OpenSSF Scorecard Go Reference License: MIT Release Docker PyPI web-researcher-mcp MCP server GitHub Stars MCP Toplist

Comienza en 30 segundos

Usuarios de Python — uvx (sin compilar, cualquier sistema operativo):

# One-time: install uv (skip if you already have it)
curl -LsSf https://astral.sh/uv/install.sh | sh        # macOS/Linux  (Windows: winget install astral-sh.uv)

claude mcp add --scope user web-researcher -- uvx web-researcher-mcp

uv obtiene el binario precompilado correcto para tu plataforma y lo ejecuta — sin Go, sin compilar, sin PATH manual. Apunta cualquier cliente MCP a uvx web-researcher-mcp. También funciona con uv tool install web-researcher-mcp o pip install web-researcher-mcp.

SDK de Python

from web_researcher_mcp import WebResearcherClient

async with WebResearcherClient() as client:
    response = await client.web_search("CRISPR off-target effects 2024", num_results=5)
    for r in response.results:
        verified = await client.verify_citation(r.url)
        print(r.title, "—", "✓" if verified.exists else "?")

Documentación completa: docs/PYTHON_CLIENT.md

Open In Colab

Wrapper síncrono (para scripts y notebooks que no usan async):

with WebResearcherClient.sync() as client:
    response = client.web_search("climate change 2024")
    print(response.results[0].title)

macOS (Homebrew):

brew install zoharbabin/tap/web-researcher-mcp
claude mcp add --scope user web-researcher -- web-researcher-mcp

macOS / Linux (sin gestor de paquetes):

curl -fsSL https://raw.githubusercontent.com/zoharbabin/web-researcher-mcp/main/install.sh | sh

Windows (PowerShell):

powershell -ExecutionPolicy Bypass -c "irm https://raw.githubusercontent.com/zoharbabin/web-researcher-mcp/main/install.ps1 | iex"

No se necesitan herramientas de desarrollo — cada método incluye el mismo binario firmado (los wheels de PyPI lo incluyen; los demás lo descargan y verifican su checksum) y lo coloca en tu PATH. Los instaladores de curl/PowerShell también lo registran automáticamente con Claude Code cuando el CLI de claude está presente; Homebrew instala el binario, así que ejecuta la línea de claude mcp add de arriba para conectarlo.

Instalación con un clic:

Add to Cursor Install in VS Code Add to LM Studio

Los botones de Cursor / VS Code / LM Studio instalan la configuración de uvx sin configuración (tu editor te pedirá confirmación antes de agregarla; necesita uv — ver arriba). Ejecuta búsqueda web de DuckDuckGo sin clave de API — ideal para probar al instante; image_search/news_search y proveedores más completos necesitan una clave (2 min, ver Configuración). Claude Desktop: descarga el paquete de .mcpb para tu plataforma y haz doble clic (Configuración → Extensiones), o usa la línea de uvx de arriba.

¿Usas un cliente MCP diferente o quieres pasar claves de API? Consulta Conecta a tu asistente de IA para la configuración por aplicación, y Configuración para elegir un proveedor de búsqueda.

Tu IA ahora puede buscar en la web, leer artículos completos, encontrar artículos académicos, consultar patentes y realizar investigaciones de varios pasos — solo de las fuentes que elijas.


¿Por qué existe esto?

Perplexity se equivoca en sus citas más de un tercio de las veces. Enlaza a artículos que no existen, inventa DOIs y presenta spam de SEO con la misma confianza que la investigación revisada por pares. La búsqueda web de ChatGPT no es mucho mejor — no puede distinguir una publicación de blog de un documento judicial.

Si tu trabajo se cita, se publica, se presenta ante un tribunal o se muestra a un cliente — no puedes permitirte fuentes "probablemente reales".

Esta herramienta corrige la causa raíz: en lugar de buscar en toda la web y esperar, le dices a tu IA exactamente qué fuentes buscar. A esto lo llamamos "lentes de búsqueda" — listas curadas de sitios confiables para cada campo.

Lo que obtienesLo que significa para ti
Lentes de búsqueda — elige tus fuentes por campoTu IA solo ve los sitios en los que confías (PubMed, SEC.gov, arXiv — no blogs aleatorios)
Herramientas de investigación para cada tipo de fuenteArtículos, patentes, presentaciones SEC, registros judiciales de EE. UU., datos económicos, noticias, páginas web, imágenes, lectura de texto completo, respuestas fundamentadas con citas, extracción estructurada e investigación profunda de varios pasos
Siempre tiene un respaldoMúltiples motores de búsqueda trabajando juntos — si uno tiene problemas, los demás se activan automáticamente
Lee artículos completosNo solo te da fragmentos — extrae y lee páginas enteras, PDFs, documentos de Word, incluso transcripciones de YouTube e hilos de Hacker News
Citas reales, formateadasCada fuente viene con una cita APA/MLA adecuada y un enlace que realmente funciona
Tus consultas permanecen privadasSe ejecuta en tu máquina — nadie ve lo que investigas. Ni nosotros, ni nadie.
Rastro documentalCada búsqueda se registra para que puedas reproducir tu proceso de investigación meses después

Funciona con Claude, Claude Desktop, Cursor y cualquier asistente de IA que admita uso de herramientas.

Quién usa esto

  • Investigadores académicos — "Necesito una revisión de literatura con DOIs reales, no citas inventadas"
  • Analistas de negocios — "Mi entregable necesita fuentes que un cliente pueda hacer clic y verificar"
  • Abogados — "Si cito un caso que no existe, me multan con $50,000"
  • Periodistas — "Necesito verificar registros gubernamentales y presentaciones judiciales, no resúmenes de Perplexity"
  • Investigadores médicos — "Decisiones clínicas basadas en un blog de salud podrían dañar a alguien"
  • Estudiantes de posgrado — "Pasé 3 horas rastreando una cita que mi IA inventó"
  • Equipos empresariales — "Nuestra investigación competitiva no puede pasar por los servidores de un tercero"

Same query, two answers — a typical AI search tool presents a fabricated DOI with full confidence; web-researcher-mcp verifies the citation against Crossref before it reaches you


Cómo se compara

web-researcher-mcpPerplexityScite.aiElicit
Tú eliges qué fuentes se buscan (lentes integradas + personalizadas)NoNoNo
Inventa citasNunca — cada enlace es real~37% incorrectasRara vez (solo revistas)Rara vez
Funciona en todos los campos — legal, médico, noticias, patentes, todoSolo revistasSolo artículos
Mantiene tu investigación privada — se ejecuta en tu máquinaNo (ellos ven todo)NoNo
Funciona dentro de tu IA existente (Claude, Cursor, etc.)No (aplicación separada)ParcialmenteNo (aplicación separada)
Puede leer artículos completos, no solo fragmentos — páginas, PDFs, documentos de Word, YouTubeNoNoLimitado
CostoGratis para siempre (código abierto)$20/mes$20/mes$10-49/mes

Cuándo usar qué

  • Perplexity — Consultas rápidas e informales donde no necesitas citar tus fuentes
  • Scite.ai / Elicit — Navegar una base de datos específica de artículos académicos
  • web-researcher-mcp — Cualquier cosa donde tu reputación esté ligada a la investigación: trabajo de clientes, presentaciones judiciales, publicaciones, propuestas de subvenciones, decisiones médicas, periodismo
  • Búsqueda integrada de Claude — Consultas rápidas y puntuales a mitad de conversación

Lo que tu IA puede hacer con esto

37 tools organized by outcome — catch fake citations, cross-check models, track topics over time, search filings and case law

HerramientaQué hace
web_searchBusca en la web — opcionalmente restringido solo a las fuentes en las que confías mediante lentes
scrape_pageLee cualquier URL completa — páginas web, PDFs, documentos de Word, presentaciones, transcripciones de YouTube, hilos de Hacker News (leídos nativamente a través de la API de HN); admite mode: raw para fuente textual sin saneamiento (por ejemplo, inspeccionar JSON o HTML)
search_and_scrapeBusca y luego lee los mejores resultados — con puntuación de calidad para destacar las fuentes más fiables
image_searchEncuentra imágenes por tamaño, tipo, color o formato
news_searchBusca noticias recientes con controles de fecha y filtrado por fuente
academic_searchEncuentra artículos reales con DOIs reales — autores, recuentos de citas, enlaces de acceso abierto
paper_fulltextObtén el texto completo de un artículo en una sola llamada desde su DOI, ID de Semantic Scholar o URL — sin necesidad de encadenar academic_search y luego scrape_page
citation_graphRecorre el vecindario de citas de un artículo — obras que cita y obras que lo citan, con señales de intención/influencia
patent_searchBusca en oficinas de patentes (EE. UU., Europa, internacional) con códigos de clasificación
filing_searchBusca en SEC EDGAR presentaciones de empresas públicas de EE. UU. (10-K, 10-Q, 8-K, …) — o extrae hechos estructurados XBRL de empresas
legal_searchBusca opiniones judiciales y expedientes de EE. UU. a través de CourtListener — casos reales con citas reales
econ_searchConsulta datos económicos — indicadores de desarrollo global del Banco Mundial, indicadores económicos de la OCDE, estadísticas europeas de Eurostat (todos sin clave), y series macro de EE. UU. de FRED (PIB, IPC, desempleo, tasas; requiere FRED_API_KEY)
clinical_searchBusca en ClinicalTrials.gov — registros de ensayos clínicos con estado, fase, patrocinador y si los resultados están publicados (descubrimiento, no consejo médico)
monarch_searchConsulta el grafo de conocimiento biomédico de Monarch Initiative — clasifica enfermedades y genes por similitud fenotípica, consulta entidades de enfermedad/gen/fenotipo, recorre asociaciones gen-enfermedad-fenotipo
awesome_list_searchBusca en la API Awesome de ecosyste.ms listas "awesome-*" curadas por la comunidad sobre un tema de GitHub — cobertura estructurada y filtrable (estrellas, recuento de entradas curadas, temas) más allá de la búsqueda de texto libre
local_searchBusca lugares físicos (restaurantes, tiendas, servicios, puntos de interés) por consulta de intención local — detalles y descripciones estructurados de POI. Requiere BRAVE_API_KEY
brand_researchInvestiga la identidad de marca completa de una empresa — colores (hex), logotipos, tipografía, tono de voz y redes sociales — desde cualquier dominio o nombre de empresa. Devuelve JSON estructurado para generación de contenido con IA. No se requiere clave API; la clave de BrandFetch es opcional para datos más ricos
company_reconReconocimiento OSINT de empresas — SANs de registros de transparencia de certificados, inventario histórico de URLs de Wayback Machine, subdominios derivados y un resumen de la empresa mediante búsqueda web. Cada fase falla de forma suave y es seleccionable de forma independiente
verify_citationVerifica una cita antes de confiar en ella — ¿existe, coincide con un registro real y está retractada o es un enlace muerto? Evidencia, no un veredicto
audit_bibliographyAudita una lista de referencias completa de una sola vez — pega un archivo CSL-JSON/RIS/BibTeX (o una sesión) y obtén marcadores por entrada y a nivel de corpus para citas retractadas, con enlaces muertos y no verificables
verify_recommendationAudita una lista de recomendaciones generada por IA (lista, ranking de productos) por autopromoción, conflictos de interés del autor, reputación del dominio y enlaces muertos — detecta selecciones manipuladas por GEO. Evidencia, no un veredicto
archive_sourceCaptura una instantánea nueva de Internet Archive (Wayback Machine) de una URL mediante Save Page Now para que una fuente citada siga siendo verificable si la página cambia o desaparece después — devuelve URL de la instantánea + marca de tiempo (herramienta de escritura)
sequential_searchInvestigación profunda en varios pasos — tu IA recuerda lo que ya encontró y construye sobre ello
get_research_sessionRecupera una sesión de investigación después de una pérdida de contexto — continúa justo donde lo dejaste
research_exportExporta una sesión de investigación como informe compartible (markdown o JSON), con procedencia completa por paso
format_bibliographyConvierte las fuentes recopiladas en una bibliografía formateada — APA, MLA, BibTeX, RIS o CSL-JSON (listo para Zotero/EndNote/Mendeley)
research_panelHaz la misma pregunta a un panel de LLMs configurados de forma independiente y compara las respuestas — consenso, contradicciones y puntos únicos de cada modelo, calculados de forma determinista, nunca suavizados por un modelo árbitro

La mayoría de las herramientas anteriores están siempre disponibles. Algunas se activan solo cuando está presente el proveedor o la configuración correcta: citation_graph y research_panel requieren al menos un proveedor de respaldo configurado; filing_search requiere EDGAR_CONTACT_EMAIL; local_search requiere BRAVE_API_KEY. Los operadores también pueden habilitar herramientas opcionales con consentimiento (análisis por usuario, memoria a largo plazo, espacios de trabajo compartidos, monitoreo de consultas guardadas) que aparecen solo cuando su función está activada — consulta docs/TOOLS.md para la lista de herramientas autoritativa verificada por CI y los esquemas completos.

Plantillas de investigación listas para usar

El servidor también incluye plantillas de prompt guiadas que tu asistente de IA puede cargar con un clic — lo guían a través de un proceso probado de varios pasos para que no tengas que escribir cada instrucción:

PlantillaQué guía a tu IA a hacer
comprehensive-researchRealiza una inmersión profunda estructurada y de varios pasos sobre un tema
fact-checkVerifica una afirmación contra múltiples fuentes independientes
competitive-analysisEvalúa una empresa y su mercado (noticias, patentes, web)
literature-reviewRevisa sistemáticamente la literatura académica sobre un tema
brand-guidelinesInvestiga una marca y produce dirección creativa específica para el caso de uso (página de destino, correo electrónico, brief de video) — llama a brand_research e interpreta el JSON estructurado por ti
company-reconReconocimiento OSINT profundo de una empresa — mapea infraestructura, presentaciones, personal y huella pública
curriculum-researchInvestiga la cobertura del plan de estudios de un tema, el clima institucional y el contexto de libertad académica — llama a web_search con la lente curriculum

En la mayoría de las aplicaciones de IA, estos aparecen donde eliges un prompt o el comando "/". El servidor expone recursos de estado en vivo (stats://tools, stats://sessions, stats://rate-limits, stats://providers), un catálogo de lentes (lenses://catalog), diagnósticos (diagnostics://errors/recent, diagnostics://health) y un almacén de artefactos de gran tamaño (research://artifact/{id}) para que tú — o tu IA — puedan verificar el uso, los límites y qué proveedores están activos. Consulta docs/DEPLOYMENT.md para la lista completa.


Inicio rápido

Opción 1: Homebrew (macOS / Linux — recomendado)

brew install zoharbabin/tap/web-researcher-mcp
claude mcp add --scope user web-researcher -- web-researcher-mcp

Homebrew gestiona la confianza, las actualizaciones y el PATH por ti — sin advertencias de firma.

Opción 2: Instalación con un comando (cualquier sistema operativo — sin necesidad de herramientas de desarrollo)

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/zoharbabin/web-researcher-mcp/main/install.sh | sh

Windows (PowerShell):

powershell -ExecutionPolicy Bypass -c "irm https://raw.githubusercontent.com/zoharbabin/web-researcher-mcp/main/install.ps1 | iex"

Descarga el binario, verifica su suma de verificación SHA-256 contra la versión firmada, lo coloca en tu PATH y lo registra con Claude Code si está instalado. Personaliza la ubicación de instalación:

INSTALL_DIR=/opt/tools curl -fsSL https://raw.githubusercontent.com/zoharbabin/web-researcher-mcp/main/install.sh | sh
Otros métodos de instalación

AUR (Arch Linux):

# Using any AUR helper (yay, paru, etc.)
yay -S web-researcher-mcp

O manualmente: git clone https://aur.archlinux.org/web-researcher-mcp.git && cd web-researcher-mcp && makepkg -si

Nix / NixOS:

# Run without installing
nix run github:zoharbabin/web-researcher-mcp

# Add to your flake inputs
nix profile install github:zoharbabin/web-researcher-mcp

Consulta packaging/nix/flake.nix para el uso del módulo NixOS.

Continue.dev:
Añade a tu ~/.continue/config.json de Continue:

{
  "mcpServers": {
    "web-researcher": {
      "command": "uvx",
      "args": ["web-researcher-mcp"]
    }
  }
}

O copia packaging/continue/config.json como punto de partida.

WinGet (Windows):

winget install zoharbabin.web-researcher-mcp

Scoop (Windows):

scoop bucket add zoharbabin https://github.com/zoharbabin/scoop-bucket
scoop install web-researcher-mcp

Chocolatey (Windows):

choco install web-researcher-mcp

Homebrew Cask (macOS — binario firmado con Developer ID + notarizado):

brew install --cask zoharbabin/tap/web-researcher-mcp

El cask incluye el binario darwin notarizado (limpio para Gatekeeper). La mayoría de los usuarios quieren la fórmula anterior (brew install zoharbabin/tap/web-researcher-mcp), a la que resuelve el nombre simple; pasa --cask explícitamente para el artefacto notarizado.

Instalación con Go (si tienes Go):

go install github.com/zoharbabin/web-researcher-mcp/cmd/web-researcher-mcp@latest
claude mcp add --scope user web-researcher -- web-researcher-mcp

Docker:

# STDIO mode needs -i so the container's stdin stays attached for MCP JSON-RPC
docker run -i --rm \
           -e GOOGLE_CUSTOM_SEARCH_API_KEY=YOUR_KEY \
           -e GOOGLE_CUSTOM_SEARCH_ID=YOUR_CX \
           docker.io/zoharbabin/web-researcher-mcp:latest

Compilar desde el código fuente:

git clone https://github.com/zoharbabin/web-researcher-mcp.git
cd web-researcher-mcp
go build -o web-researcher-mcp ./cmd/web-researcher-mcp

Conéctate a tu asistente de IA

El script de instalación se registra automáticamente con Claude Code. Para otras aplicaciones, añade a tu archivo de configuración de IA:

{
  "mcpServers": {
    "web-researcher": {
      "command": "web-researcher-mcp",
      "env": {
        "GOOGLE_CUSTOM_SEARCH_API_KEY": "YOUR_GOOGLE_API_KEY",
        "GOOGLE_CUSTOM_SEARCH_ID": "YOUR_SEARCH_ENGINE_ID"
      }
    }
  }
}

Cualquier proveedor funciona — elige uno y establece su clave. Por ejemplo, Brave (sin necesidad de claves de Google):

{
  "mcpServers": {
    "web-researcher": {
      "command": "web-researcher-mcp",
      "env": {
        "SEARCH_PROVIDER": "brave",
        "BRAVE_API_KEY": "YOUR_BRAVE_API_KEY"
      }
    }
  }
}

Cambia a cualquier proveedor de la tabla de Configuración estableciendo SEARCH_PROVIDER y la clave de ese proveedor. Listo — tu asistente de IA ahora tiene acceso a todas las herramientas de investigación.


Configuración

30+ providers across web, academic, patent, legal, economic, and clinical domains — with automatic failover and STDIO/HTTP·Docker deployment

No se requiere clave API. DuckDuckGo es el respaldo integrado de configuración cero — instala y listo. Para aumentar la calidad de los resultados y desbloquear la búsqueda de imágenes/noticias, añade cualquiera de los proveedores a continuación. Todos son opcionales e intercambiables — elige el que ya uses o prefieras; el servidor los trata por igual.

Proveedores de búsqueda

Establece SEARCH_PROVIDER=<name> y proporciona la clave de ese proveedor. Cada proveedor funciona con lentes de búsqueda, y cualquiera de ellos se puede combinar para conmutación por error automática (consulta Proveedores de búsqueda).

ProveedorSEARCH_PROVIDERVariable(s) de claveObtener una clave
DuckDuckGoduckduckgoningunaIntegrado — configuración cero
Google PSEgoogleGOOGLE_CUSTOM_SEARCH_API_KEY + GOOGLE_CUSTOM_SEARCH_IDconsola en la nube + motor
BravebraveBRAVE_API_KEYbrave.com/search/api
SerperserperSERPER_API_KEYserper.dev
SearchAPI.iosearchapiSEARCHAPI_API_KEYsearchapi.io
You.comyoucomYOUDOTCOM_API_KEYyou.com/docs/api-reference/search/v1-search
SearXNGsearxngSEARXNG_URLautoalojado
TavilytavilyTAVILY_API_KEYapp.tavily.com
ExaexaEXA_API_KEYdashboard.exa.ai
Hacker NewshackernewsningunaIntegrado — configuración cero (índice HN Algolia)
RedditredditningunaIntegrado — configuración cero (RSS público)
BlueskyblueskyningunaIntegrado — configuración cero (API pública del Protocolo AT)
GitHubgithubninguna (GITHUB_TOKEN opcional, aumenta el límite de tasa)Integrado — configuración cero (API pública de búsqueda REST)
XquikxquikXQUIK_API_KEYdashboard.xquik.com

Cada proveedor tiene su propio nivel gratuito, flujo de registro y combinación de capacidades (imágenes, noticias, actualidad). Consulta docs/PROVIDERS.md para una comparación completa (clasificación de índices, matriz de capacidades, guía de selección rápida) y docs/API_SETUP.md para la configuración de claves paso a paso. Configura más de uno y el servidor conmuta por error automáticamente — consulta Proveedores de búsqueda.

Cuando SEARCH_PROVIDER no está establecido, el servidor usa Google si sus claves están presentes y, de lo contrario, recurre al proveedor DuckDuckGo de configuración cero — por lo que siempre funciona desde el primer momento, con o sin claves.

Búsqueda académica (Opcional — sin necesidad de registro)

Los proveedores de búsqueda académica (OpenAlex, CrossRef) aceptan un correo electrónico de contacto para desbloquear acceso más rápido a través del grupo de cortesía — sin registro, solo un correo. Consulta docs/API_SETUP.md para la configuración y docs/DEPLOYMENT.md para la referencia completa de variables.

Con estos establecidos, academic_search devuelve artículos reales con DOIs, autores, recuentos de citas y enlaces PDF de acceso abierto. Sin ellos, sigue funcionando pero usa la búsqueda web como respaldo.

Búsqueda de patentes (Opcional)

Los proveedores de patentes (EPO, USPTO, The Lens) requieren claves API para datos estructurados de patentes. Consulta docs/API_SETUP.md para la configuración paso a paso y docs/DEPLOYMENT.md para la referencia completa de variables.

Con estas, patent_search devuelve datos estructurados de patentes con códigos de clasificación, fechas e inventores. Sin ellas, recurre a la búsqueda web.

Avanzado: modo HTTP, OAuth y todos los demás ajustes

El modo HTTP, OAuth, límites de tasa, caché, scraping y ajustes de observabilidad están documentados en docs/DEPLOYMENT.md.


Bajo el Capó

Arquitectura (para desarrolladores y contribuidores)

El mapa completo por paquete y el diagrama en capas (transportes MCP → despacho de herramientas → capa de servicios → infraestructura) viven en ARCHITECTURE.md — mantenidos en un solo lugar para evitar divergencias.

Principios de diseño (para desarrolladores)
  1. Cero estado global — todas las dependencias se inyectan mediante constructores
  2. Orientado a interfaces — cada dependencia externa detrás de una interfaz para pruebas e intercambio
  3. Concurrencia acotada — semáforos explícitos para llamadas API externas
  4. Defensa en profundidad — protección SSRF, límites de tasa, saneamiento de contenido en cada capa
  5. Fallar alto — los errores se devuelven, nunca se tragan; validación en los límites

Proveedores de Búsqueda

Tú eliges qué motor de búsqueda impulsa tu investigación. Todos funcionan con lentes.

ProveedorWeb completaImágenesNoticiasNotas
DuckDuckGoPredeterminado sin configuración (no requiere clave API); limitado por tasa para uso intensivo
Google PSEMotor de Búsqueda Programable; nivel gratuito: 100 consultas/día
Brave SearchÍndice independiente; nivel gratuito disponible
Serper.devResultados idénticos a Google
SearXNGAutoalojado, centrado en privacidad, despliegues aislados
SearchAPI.ioAPI unificada con múltiples motores backend
TavilyBúsqueda para agentes de IA; contenido limpio y listo para LLM
ExaBúsqueda neuronal/semántica; también respalda academic_search y el nivel de scraping pago opcional
Hacker NewsSolo HNSin configuración (índice HN Algolia); busca hilos de HN, no toda la web
RedditSolo RedditSin configuración (RSS público); busca publicaciones de Reddit, no toda la web
BlueskySolo BlueskySin configuración (API pública AT Protocol); busca publicaciones de Bluesky, no toda la web
GitHubSolo GitHubSin configuración (API REST pública de búsqueda); busca issues/PRs, no toda la web

Múltiples Proveedores (recomendado)

Configura múltiples motores de búsqueda para que si uno tiene problemas, tu investigación no se detenga:

export SEARCH_ROUTING=brave,google,serper

Si Brave está caído, automáticamente prueba Google. Si Google está limitado por tasa, pasa a Serper. Tu investigación simplemente funciona.

Consulta docs/PROVIDERS.md para una comparación completa de proveedores (clasificación de índices, capacidades, niveles gratuitos) y docs/DEPLOYMENT.md para opciones de enrutamiento avanzadas (enrutamiento por tema, proveedores específicos de patentes, etc.).

Proveedor Único

Si solo tienes una clave API de búsqueda, eso también funciona — solo configúrala y listo.

Ejemplos de Configuración de Proveedores

Enrutamiento multi-proveedor (recomendado):

export SEARCH_ROUTING=brave,google,serper
export BRAVE_API_KEY=BSAxxxxxxxxxx
export GOOGLE_CUSTOM_SEARCH_API_KEY=AIza...
export GOOGLE_CUSTOM_SEARCH_ID=017...
export SERPER_API_KEY=...

Proveedor único — Brave Search:

export SEARCH_PROVIDER=brave
export BRAVE_API_KEY=BSAxxxxxxxxxx

Proveedor único — SearXNG (autoalojado, centrado en privacidad):

export SEARCH_PROVIDER=searxng
export SEARXNG_URL=http://localhost:8080

Proveedor único — Exa:

export SEARCH_PROVIDER=exa
export EXA_API_KEY=...

Proveedor único — Google PSE:

export SEARCH_PROVIDER=google
export GOOGLE_CUSTOM_SEARCH_API_KEY=AIza...
export GOOGLE_CUSTOM_SEARCH_ID=017...

Cualquier proveedor de la tabla de Configuración funciona de la misma manera — establece SEARCH_PROVIDER y su(s) clave(s).


Lentes de Búsqueda

Las lentes de búsqueda te permiten controlar qué sitios web tu IA puede buscar. En lugar de buscar en toda la web (y obtener blogs, spam y basura generada por IA), una lente restringe los resultados solo a las fuentes en las que confías para ese tema.

Lentes Integradas

LenteEnfoque
docsSolo documentación oficial y referencias API
academicServidores de preprints, repositorios, revistas de acceso abierto
academic-extendedServidores de preprints, agregadores de OA y repositorios más allá de los índices de revistas principales
biomedFuentes de conocimiento biomédico sobre enfermedades raras — portales de ontologías, bases de datos gen-enfermedad, registros curados de enfermedades raras
clinicalEnsayos clínicos, seguridad de medicamentos, medicina basada en evidencia
curriculumDatos de currículos académicos, clima de libertad de expresión institucional y estadísticas globales de educación
securityCVEs, avisos, investigación de vulnerabilidades
investigative_recordsRegistros públicos, presentaciones corporativas, FOIA
programmingDocumentación de código, tutoriales, Q&A
programming-goggleResultados centrados en desarrolladores re-clasificados por el Goggle de Programación de Brave — muestra documentación, repositorios y contenido técnico autoritativo (requiere Brave)
devopsInfraestructura y operaciones — Kubernetes, Docker, Terraform, nube, CI/CD
newsEventos actuales, periodismo
techIndustria tecnológica
legalDerecho, casos, estatutos
medicalSalud, medicina
financeMercados, presentaciones
scienceInvestigación, artículos
governmentPolíticas, regulaciones
osintInteligencia de código abierto — registros públicos, registros corporativos, huella social, infraestructura
awesome-listsListas "awesome-*" curadas por la comunidad en GitHub — colecciones de herramientas y recursos revisadas por PR en cada dominio

También puedes crear tus propias lentes para cualquier campo — solo lista los dominios en los que confías.

Cómo funciona

Cuando tú (o tu IA) usas una lente, los resultados provienen solo de los sitios en esa lente. Por ejemplo, usar la lente medical significa que tu IA busca en PubMed, WHO, NIH y otras fuentes clínicas — nunca blogs de salud o anuncios de suplementos.

Tu IA usa lentes automáticamente cuando se lo pides. Por ejemplo: "Busca hallazgos recientes sobre inhibidores de SGLT2 usando la lente clínica."

Creando Tu Propia Lente

Crea un directorio para tus lentes personalizadas y agrega un archivo JSON para cada una:

{
  "name": "my-industry",
  "description": "Only searches sources I trust for my field",
  "domains": [
    "trusted-source.com",
    "industry-journal.org",
    "official-database.gov"
  ],
  "cx": "",
  "routing": ""
}

Luego apunta el servidor a tu directorio de lentes:

export CUSTOM_LENSES_PATH=/path/to/my-lenses

Tu IA ahora tendrá my-industry como una lente disponible. Las lentes personalizadas se cargan después del conjunto integrado — una lente personalizada con el mismo name que una integrada la sobrescribe. Puedes agregar hasta ~10 dominios por lente.

Opciones avanzadas (opcional — la mayoría de los usuarios pueden ignorarlas):

  • cx — Si tienes un Motor de Búsqueda Programable de Google con hasta 5,000 dominios, coloca el ID del motor aquí
  • routing — Fuerza esta lente a usar un proveedor de búsqueda específico (por ejemplo, "google")

Privacidad y Seguridad

Tus consultas de investigación van directamente desde tu máquina al proveedor de búsqueda que elegiste. Nunca pasan por nuestros servidores (no tenemos servidores). La herramienta se ejecuta completamente en tu computadora.

Detalles técnicos de seguridad (para equipos empresariales / de cumplimiento)
  • Protección SSRF — bloquea acceso a redes internas, endpoints de metadatos en la nube, ataques de rebinding DNS
  • OAuth 2.1 (modo HTTP) — validación de tokens JWKS, aislamiento por inquilino, validación de audiencia/emisor
  • Límites de tasa (modo HTTP) — límites por inquilino + globales para proteger APIs ascendentes
  • Saneamiento de contenido — HTML limpiado mediante política de lista blanca, deduplicación, puntuación de calidad

Para el modelo de amenazas completo, consulta docs/SECURITY.md.


Configuración para Cada Aplicación de IA

Claude Code

Agrega a tu configuración MCP (~/.claude.json). Establece SEARCH_PROVIDER y la clave correspondiente para el proveedor que uses (consulta la tabla de Configuración) — este ejemplo usa Google:

{
  "mcpServers": {
    "web-researcher": {
      "command": "/path/to/web-researcher-mcp",
      "env": {
        "SEARCH_PROVIDER": "google",
        "GOOGLE_CUSTOM_SEARCH_API_KEY": "AIza...",
        "GOOGLE_CUSTOM_SEARCH_ID": "017..."
      }
    }
  }
}

Claude Desktop

Agrega a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "web-researcher": {
      "command": "/path/to/web-researcher-mcp",
      "env": {
        "GOOGLE_CUSTOM_SEARCH_API_KEY": "AIza...",
        "GOOGLE_CUSTOM_SEARCH_ID": "017..."
      }
    }
  }
}

Cursor

Agrega a .cursor/mcp.json en la raíz de tu proyecto:

{
  "mcpServers": {
    "web-researcher": {
      "command": "/path/to/web-researcher-mcp",
      "env": {
        "GOOGLE_CUSTOM_SEARCH_API_KEY": "AIza...",
        "GOOGLE_CUSTOM_SEARCH_ID": "017..."
      }
    }
  }
}

Modo HTTP (Equipos / Servidor Compartido)

Para equipos que quieren una instancia compartida a la que todos se conecten:

PORT=3000 \
OAUTH_ISSUER_URL=https://auth.example.com \
OAUTH_AUDIENCE=https://api.example.com \
./web-researcher-mcp

Luego conecta cualquier aplicación de IA a http://localhost:3000/mcp/.

Ejemplo de Docker Compose
services:
  web-researcher:
    image: zoharbabin/web-researcher-mcp
    ports:
      - "3000:3000"
    environment:
      PORT: "3000"
      SEARCH_PROVIDER: brave
      BRAVE_API_KEY: ${BRAVE_API_KEY}

Nota: El comportamiento de la herramienta es idéntico en todos los modos de conexión (STDIO y HTTP). Las únicas diferencias son la autenticación (HTTP requiere OAuth) y los límites de tasa (HTTP aplica límites por inquilino; STDIO solo tiene cuotas de API ascendentes). Consulta docs/DEPLOYMENT.md para detalles.


Rendimiento

Las búsquedas regresan en menos de un segundo. Los resultados previamente vistos se almacenan en caché para que las repeticiones sean instantáneas. La extracción completa de artículos funciona en el 95%+ de la web — incluidos sitios que intentan bloquear bots. Los sitios con mucho JavaScript obtienen un navegador real detrás de escena (automático, sin configuración necesaria).


Desarrollo

go build -o web-researcher-mcp ./cmd/web-researcher-mcp   # Build
go test -race ./...                                        # Test (with race detector)
make verify                                                # Full CI gate (see Makefile for steps)

Las herramientas lint, gosec y govulncheck están fijadas como directivas de herramienta go.mod, por lo que make verify las ejecuta en las versiones exactas que usa CI (sin instalaciones globales necesarias). La protección de ramas requiere que las verificaciones Lint, Test, Security y E2E pasen.

Consulta CONTRIBUTING.md para el flujo de trabajo completo de desarrollo, guía de estilo de código y proceso de PR.


Solución de Problemas

El servidor inicia pero las herramientas fallan con errores de "clave API"

El servidor inicia incluso sin credenciales (para permitir el handshake de MCP). Establece tus claves API en el bloque env de la configuración de tu cliente MCP, no en tu perfil de shell.

Algunas páginas regresan vacías

Para sitios con mucho JavaScript, la herramienta usa un navegador real (Chromium). Con la instalación binaria, se descarga automáticamente en el primer uso (~200MB). Si ya tienes Chrome instalado, establece CHROME_PATH para apuntar a él. La imagen de Docker incluye Chromium integrado (preajuste CHROME_PATH), por lo que el renderizado de JavaScript funciona de inmediato — sin descarga.

La caché sirve resultados obsoletos después de una actualización

La caché de disco vive en el directorio de caché de tu sistema operativo (por ejemplo, ~/Library/Caches/web-researcher-mcp/ en macOS, ~/.cache/web-researcher-mcp/ en Linux). Elimina ese directorio para limpiarlo, o establece CACHE_DIR a una ruta personalizada.

Alcanzando límites de búsqueda (errores 429)

Si el nivel gratuito de tu proveedor se agota (por ejemplo, Google PSE permite 100 búsquedas/día):

  • Cambia a un proveedor diferente — establece SEARCH_PROVIDER a cualquier otra opción (consulta Configuración); cada uno tiene su propio nivel gratuito
  • Configura múltiples proveedores (por ejemplo, SEARCH_ROUTING=brave,google) — si uno está limitado por tasa, automáticamente pasa al siguiente
  • O mejora el plan de tu proveedor
macOS: "Failed to reconnect" / error -32000 después de una actualización manual

Esto ocurre solo si reemplazaste el binario copiando bytes nuevos sobre el archivo existente en su lugar (cp new /path/to/web-researcher-mcp). En Apple Silicon, macOS almacena en caché la firma de código ad-hoc del binario contra el archivo, y sobrescribirlo en su lugar puede hacer que el siguiente lanzamiento se elimine antes de que comience. Los instaladores oficiales (Homebrew, el comando único install.sh y el plugin de Claude Code) evitan esto instalando en un archivo nuevo. Para corregir una instalación manual, reemplázalo limpiamente y vuelve a firmar:

rm -f /path/to/web-researcher-mcp
cp /path/to/new-build /path/to/web-researcher-mcp
codesign --force -s - /path/to/web-researcher-mcp   # ad-hoc re-sign

Luego vuelve a conectar tu cliente. (Volver a ejecutar install.sh hace esto correctamente por ti).


Contribuciones

Las contribuciones son bienvenidas. Consulta CONTRIBUTING.md para conocer las pautas de estilo de código, el flujo de trabajo de desarrollo y cómo enviar solicitudes de extracción.


Documentación

DocumentoDescripción
ARCHITECTURE.mdDecisiones de diseño, pila tecnológica, dependencias
CONTRIBUTING.mdConfiguración de desarrollo, estilo de código, flujo de trabajo de PR
docs/TOOLS.mdEspecificaciones de herramientas y esquemas de parámetros
docs/EXAMPLES.mdEjemplos de uso con llamadas de herramientas JSON
docs/API_SETUP.mdConfiguración de claves API del proveedor de búsqueda para todos los proveedores
docs/SECURITY.mdModelo de amenazas, SSRF, autenticación, cumplimiento (SOC2/GDPR/FedRAMP)
docs/PRIVACY.mdQué datos van a dónde, procesadores de terceros, retención
docs/DEPLOYMENT.mdCompilación, Docker, Kubernetes, configuraciones de cliente, escalado
docs/PYTHON_CLIENT.mdSDK de Python — referencia de WebResearcherClient, envoltorio síncrono, instalación
docs/LESSONS_LEARNED.mdHistoria de migración de Node.js a Go y lecciones aprendidas
docs/SESSION_PERSISTENCE.mdCómo sobreviven las sesiones a la pérdida de contexto — diseño, flujo de datos, citas
docs/MIGRATION.mdMigración desde el obsoleto google-researcher-mcp

Licencia

MIT


Construido por Zohar Babin, con Go y el Model Context Protocol