Web Researcher MCP

Servidor MCP de nível de produção para pesquisa web, extração de conteúdo e pesquisa em múltiplas fontes — 8 ferramentas, 5 provedores de pesquisa com failover automático, pipeline de scraping de 4 camadas. Binário único em Go.

Documentação

web-researcher-mcp logo

web-researcher-mcp

Seu assistente de pesquisa com IA que cita fontes reais e permanece honesto.

Pesquise em toda a web ou restrinja apenas aos sites em que você confia;
periódicos médicos, bancos de dados judiciais, veículos de notícias, artigos acadêmicos.
Analise a fonte completa, não apenas trechos. Links que funcionam, citações em que você pode confiar,
sem resultados pré-sintetizados de jardim fechado inventados.

⭐ Se você está cansado de IA inventando coisas, e web-researcher-mcp ajuda você, dê uma estrela para nós ⭐ — isso ajuda mais equipes a descobrirem o projeto.

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

Comece em 30 segundos

Usuários de Python — uvx (sem compilação, qualquer sistema operacional):

# 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 busca o binário pré-compilado correto para sua plataforma e o executa — sem Go, sem compilação, sem PATH manual. Aponte qualquer cliente MCP para uvx web-researcher-mcp. Também funciona com uv tool install web-researcher-mcp ou pip install web-researcher-mcp.

SDK 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 "?")

Documentação completa: docs/PYTHON_CLIENT.md

Open In Colab

Wrapper síncrono (para scripts e notebooks que não usam 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 (sem gerenciador de pacotes):

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"

Nenhuma ferramenta de desenvolvimento necessária — cada método envia o mesmo binário assinado (as wheels do PyPI o incluem; os outros o baixam e verificam sua soma de verificação) e o coloca no seu PATH. Os instaladores curl/PowerShell também o registram automaticamente com o Claude Code quando a CLI claude está presente; o Homebrew instala o binário, então execute a linha claude mcp add acima para conectá-lo.

Instalação com um clique:

Add to Cursor Install in VS Code Add to LM Studio

Os botões do Cursor / VS Code / LM Studio instalam a configuração uvx de zero configuração (seu editor solicita confirmação antes de adicioná-la; precisa de uv — veja acima). Ele executa pesquisa web DuckDuckGo sem chave de API — ótimo para testar instantaneamente; image_search/news_search e provedores mais ricos precisam de uma chave (2 min, veja Configuração). Claude Desktop: baixe o pacote .mcpb para sua plataforma e clique duas vezes nele (Configurações → Extensões), ou use a linha uvx acima.

Usando um cliente MCP diferente ou quer passar chaves de API? Veja Conecte ao Seu Assistente de IA para a configuração por aplicativo, e Configuração para escolher um provedor de busca.

Sua IA agora pode pesquisar na web, ler artigos completos, encontrar artigos acadêmicos, consultar patentes e executar pesquisas em várias etapas — apenas de fontes que você escolher.


Por que isso existe?

O Perplexity erra em suas citações mais de um terço das vezes. Ele vincula artigos que não existem, inventa DOIs e apresenta spam de SEO com a mesma confiança de pesquisas revisadas por pares. A busca web do ChatGPT não é muito melhor — não consegue distinguir um post de blog de um documento judicial.

Se o seu trabalho é citado, publicado, submetido a um tribunal ou mostrado a um cliente — você não pode se dar ao luxo de fontes "provavelmente reais".

Esta ferramenta corrige a causa raiz: em vez de pesquisar toda a web e torcer, você diz à sua IA exatamente quais fontes pesquisar. Chamamos isso de "lentes de busca" — listas curadas de sites confiáveis para cada área.

O que você obtémO que isso significa para você
Lentes de busca — escolha suas fontes por áreaSua IA só vê os sites em que você confia (PubMed, SEC.gov, arXiv — não blogs aleatórios)
Ferramentas de pesquisa para cada tipo de fonteArtigos, patentes, documentos SEC, registros judiciais dos EUA, dados econômicos, notícias, páginas web, imagens, leitura de texto completo, respostas fundamentadas com citações, extração estruturada e pesquisa profunda em várias etapas
Sempre tem um backupVários mecanismos de busca trabalhando juntos — se um tiver problemas, os outros assumem automaticamente
Lê artigos completosNão apenas fornece trechos — extrai e lê páginas inteiras, PDFs, documentos Word, até transcrições do YouTube e tópicos do Hacker News
Citações reais, formatadasCada fonte vem com uma citação APA/MLA adequada e um link que realmente funciona
Suas consultas permanecem privadasExecuta na sua máquina — ninguém vê o que você está pesquisando. Nem nós, nem ninguém.
Trilha de auditoriaCada busca é registrada para que você possa reproduzir seu processo de pesquisa meses depois

Funciona com Claude, Claude Desktop, Cursor e qualquer assistente de IA que suporte uso de ferramentas.

Quem usa isso

  • Pesquisadores acadêmicos — "Preciso de uma revisão de literatura com DOIs reais, não citações inventadas"
  • Analistas de negócios — "Meu entregável precisa de fontes que um cliente possa realmente clicar e verificar"
  • Advogados — "Se eu citar um caso que não existe, sou multado em US$ 50.000"
  • Jornalistas — "Preciso verificar registros governamentais e documentos judiciais, não resumos do Perplexity"
  • Pesquisadores médicos — "Decisões clínicas baseadas em um blog de saúde podem prejudicar alguém"
  • Estudantes de pós-graduação — "Passei 3 horas rastreando uma citação que minha IA inventou"
  • Equipes empresariais — "Nossa pesquisa competitiva não pode passar pelos servidores de terceiros"

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


Como se Compara

web-researcher-mcpPerplexityScite.aiElicit
Você escolhe quais fontes são pesquisadasSim (lentes integradas + personalizadas)NãoNãoNão
Inventa citaçõesNunca — todo link é real~37% incorretasRaro (apenas periódicos)Raro
Funciona em todas as áreasSim — jurídico, médico, notícias, patentes, tudoSimApenas periódicosApenas artigos
Mantém sua pesquisa privadaSim — executa na sua máquinaNão (eles veem tudo)NãoNão
Funciona dentro da sua IA existente (Claude, Cursor, etc.)SimNão (aplicativo separado)ParcialmenteNão (aplicativo separado)
Pode ler artigos completos, não apenas trechosSim — páginas, PDFs, documentos Word, YouTubeNãoNãoLimitado
CustoGrátis para sempre (código aberto)US$ 20/mêsUS$ 20/mêsUS$ 10-49/mês

Quando usar o quê

  • Perplexity — Consultas rápidas e casuais onde você não precisa citar suas fontes
  • Scite.ai / Elicit — Navegar em um banco de dados específico de artigos acadêmicos
  • web-researcher-mcp — Qualquer coisa em que sua reputação esteja ligada à pesquisa: trabalho de cliente, documentos judiciais, publicações, propostas de bolsa, decisões médicas, jornalismo
  • Busca integrada do Claude — Consultas rápidas e pontuais no meio da conversa

O que sua IA pode fazer com isso

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

FerramentaO que faz
web_searchPesquise na web — opcionalmente restrito apenas às fontes em que você confia por meio de lentes
scrape_pageLeia qualquer URL por completo — páginas da web, PDFs, documentos do Word, apresentações de slides, transcrições do YouTube, discussões do Hacker News (lidas nativamente via API do HN); suporta mode: raw para fonte verbatim, não sanitizada (por exemplo, inspecionar JSON ou HTML)
search_and_scrapePesquise e depois leia os melhores resultados — com pontuação de qualidade para destacar as fontes mais confiáveis
image_searchEncontre imagens por tamanho, tipo, cor ou formato
news_searchPesquise notícias recentes com controles de data e filtros de fonte
academic_searchEncontre artigos reais com DOIs reais — autores, contagens de citações, links de acesso aberto
paper_fulltextObtenha o texto completo de um artigo em uma única chamada a partir do DOI, ID do Semantic Scholar ou URL — sem necessidade de encadear academic_search e depois scrape_page
citation_graphExplore a vizinhança de citações de um artigo — obras que ele cita e obras que o citam, com sinais de intenção/influência
patent_searchPesquise escritórios de patentes (EUA, Europa, internacional) com códigos de classificação
filing_searchPesquise no SEC EDGAR por arquivamentos de empresas públicas dos EUA (10-K, 10-Q, 8-K, …) — ou extraia fatos estruturados XBRL da empresa
legal_searchPesquise opiniões e dossiês de tribunais dos EUA via CourtListener — casos reais com citações reais
econ_searchConsulte dados econômicos — indicadores de desenvolvimento global do Banco Mundial, indicadores econômicos da OCDE, estatísticas europeias do Eurostat (todos sem chave) e séries macro dos EUA do FRED (PIB, IPC, desemprego, taxas; requer FRED_API_KEY)
clinical_searchPesquise no ClinicalTrials.gov — registros de ensaios clínicos com status, fase, patrocinador e se os resultados foram publicados (descoberta, não aconselhamento médico)
monarch_searchConsulte o grafo de conhecimento biomédico da Monarch Initiative — classifique doenças e genes por similaridade fenotípica, consulte entidades de doença/gene/fenótipo, percorra associações gene-doença-fenótipo
awesome_list_searchPesquise a API Awesome do ecosyste.ms para listas "awesome-*" curadas pela comunidade sobre um tópico do GitHub — cobertura estruturada e filtrável (estrelas, contagem de entradas curadas, tópicos) além da pesquisa de texto livre
local_searchPesquise lugares físicos (restaurantes, lojas, serviços, pontos de interesse) por consulta de intenção local — detalhes e descrições estruturadas de POI. Requer BRAVE_API_KEY
brand_researchPesquise a identidade de marca completa de uma empresa — cores (hex), logotipos, tipografia, tom de voz e redes sociais — a partir de qualquer domínio ou nome de empresa. Retorna JSON estruturado para geração de conteúdo por IA. Nenhuma chave de API necessária; chave BrandFetch opcional para dados mais ricos
company_reconReconhecimento OSINT de empresa — SANs de logs de transparência de certificados, inventário histórico de URLs do Wayback Machine, subdomínios derivados e um resumo da empresa via pesquisa web. Cada fase falha de forma suave e é selecionável independentemente
verify_citationVerifique uma citação antes de confiar nela — ela existe, corresponde a um registro real e está retratada ou é um link morto? Evidência, não um veredito
audit_bibliographyAudite uma lista de referências inteira em uma única passada — cole um arquivo CSL-JSON/RIS/BibTeX (ou uma sessão) e obtenha sinalizações por entrada e em nível de corpus para citações retratadas, com links mortos e não verificáveis
verify_recommendationAudite uma lista de recomendações gerada por IA (lista, classificação de produtos) para autopromoção, conflitos de interesse do autor, reputação de domínio e links mortos — detecta escolhas manipuladas por GEO. Evidência, não um veredito
archive_sourceCapture um novo snapshot do Internet Archive (Wayback Machine) de uma URL via Save Page Now para que uma fonte citada permaneça verificável se a página mudar ou desaparecer depois — retorna URL do snapshot + timestamp (ferramenta de escrita)
sequential_searchPesquisa profunda em várias etapas — sua IA lembra o que já encontrou e constrói em cima disso
get_research_sessionRecupere uma sessão de pesquisa após perda de contexto — continua exatamente de onde você parou
research_exportExporte uma sessão de pesquisa como um relatório compartilhável (markdown ou JSON), com proveniência completa por etapa
format_bibliographyTransforme fontes coletadas em uma bibliografia formatada — APA, MLA, BibTeX, RIS ou CSL-JSON (pronto para Zotero/EndNote/Mendeley)
research_panelFaça a mesma pergunta a um painel de LLMs configurados independentemente e compare as respostas — consenso, contradições e pontos exclusivos do modelo, calculados deterministicamente, nunca suavizados por um modelo árbitro

A maioria das ferramentas acima está sempre disponível. Algumas são ativadas apenas quando o provedor ou a configuração correta está presente: citation_graph e research_panel exigem pelo menos um provedor de suporte configurado; filing_search exige EDGAR_CONTACT_EMAIL; local_search exige BRAVE_API_KEY. Operadores também podem ativar ferramentas opcionais com consentimento (análises por usuário, memória de longo prazo, espaços de trabalho compartilhados, monitoramento de consultas salvas) que aparecem apenas quando o recurso está ativado — veja docs/TOOLS.md para a lista de ferramentas autoritativa e verificada por CI e os esquemas completos.

Modelos de pesquisa prontos

O servidor também inclui modelos de prompt guiados que seu assistente de IA pode usar com um clique — eles o conduzem por um processo comprovado em várias etapas para que você não precise explicitar cada instrução:

ModeloO que ele orienta sua IA a fazer
comprehensive-researchExecute um mergulho profundo estruturado em várias etapas sobre um tópico
fact-checkVerifique uma afirmação contra múltiplas fontes independentes
competitive-analysisAvalie uma empresa e seu mercado (notícias, patentes, web)
literature-reviewRevise sistematicamente a literatura acadêmica sobre um tópico
brand-guidelinesPesquise uma marca e produza direção criativa específica para o caso de uso (landing page, e-mail, briefing de vídeo) — chama brand_research e interpreta o JSON estruturado para você
company-reconReconhecimento OSINT profundo de uma empresa — mapeia infraestrutura, arquivamentos, pessoal e pegada pública
curriculum-researchPesquise a cobertura do currículo de um assunto, o clima institucional e o contexto de liberdade acadêmica — chama web_search com a lente curriculum

Na maioria dos aplicativos de IA, eles aparecem onde você escolhe um prompt ou comando "/". O servidor expõe recursos de status ao vivo (stats://tools, stats://sessions, stats://rate-limits, stats://providers), um catálogo de lentes (lenses://catalog), diagnósticos (diagnostics://errors/recent, diagnostics://health) e um armazenamento de artefatos de grande carga útil (research://artifact/{id}) para que você — ou sua IA — possa verificar uso, limites e quais provedores estão ativos. Veja docs/DEPLOYMENT.md para a lista completa.


Início Rápido

Opção 1: Homebrew (macOS / Linux — recomendado)

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

O Homebrew cuida de confiança, atualizações e PATH para você — sem avisos de assinatura.

Opção 2: Instalação com um comando (qualquer SO — sem necessidade de ferramentas de desenvolvimento)

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"

Baixa o binário, verifica sua soma de verificação SHA-256 contra o release assinado, coloca-o no seu PATH e o registra com o Claude Code se instalado. Personalize o local de instalação:

INSTALL_DIR=/opt/tools curl -fsSL https://raw.githubusercontent.com/zoharbabin/web-researcher-mcp/main/install.sh | sh
Outros métodos de instalação

AUR (Arch Linux):

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

Ou 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

Veja packaging/nix/flake.nix para uso do módulo NixOS.

Continue.dev:
Adicione ao seu ~/.continue/config.json do Continue:

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

Ou copie packaging/continue/config.json como ponto 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 — binário assinado com Developer ID + notarizado):

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

O cask fornece o binário darwin notarizado (limpo pelo Gatekeeper). A maioria dos usuários quer a fórmula acima (brew install zoharbabin/tap/web-researcher-mcp), para a qual o nome simples resolve; passe --cask explicitamente para o artefato notarizado.

Instalação via Go (se você tiver 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 a partir do código-fonte:

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

Conecte ao Seu Assistente de IA

O script de instalação registra com o Claude Code automaticamente. Para outros aplicativos, adicione ao arquivo de configuração da sua 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"
      }
    }
  }
}

Qualquer provedor funciona — escolha um e defina sua chave. Por exemplo, Brave (sem necessidade de chaves do Google):

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

Troque por qualquer provedor da tabela Configuração definindo SEARCH_PROVIDER e a chave desse provedor. Pronto — seu assistente de IA agora tem acesso a todas as ferramentas de pesquisa.


Configuração

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

Nenhuma chave de API necessária. DuckDuckGo é o fallback integrado de configuração zero — instale e use. Para aumentar a qualidade dos resultados e desbloquear a pesquisa de imagens/notícias, adicione qualquer um dos provedores abaixo. Todos são opcionais e intercambiáveis — escolha o que você já usa ou prefere; o servidor os trata igualmente.

Provedores de pesquisa

Defina SEARCH_PROVIDER=<name> e forneça a chave desse provedor. Todo provedor funciona com lentes de pesquisa, e qualquer um deles pode ser combinado para failover automático (veja Provedores de Pesquisa).

ProvedorSEARCH_PROVIDERVariável(is) de chaveObter uma chave
DuckDuckGoduckduckgonenhumaIntegrado — configuração zero
Google PSEgoogleGOOGLE_CUSTOM_SEARCH_API_KEY + GOOGLE_CUSTOM_SEARCH_IDconsole da nuvem + mecanismo
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_URLauto-hospedado
TavilytavilyTAVILY_API_KEYapp.tavily.com
ExaexaEXA_API_KEYdashboard.exa.ai
Hacker NewshackernewsnenhumaIntegrado — configuração zero (índice HN Algolia)
RedditredditnenhumaIntegrado — configuração zero (RSS público)
BlueskyblueskynenhumaIntegrado — configuração zero (API pública do AT Protocol)
GitHubgithubnenhuma (GITHUB_TOKEN opcional, aumenta o limite de taxa)Integrado — configuração zero (API pública REST de Pesquisa)
XquikxquikXQUIK_API_KEYdashboard.xquik.com

Cada provedor tem seu próprio nível gratuito, fluxo de inscrição e combinação de recursos (imagens, notícias, atualidade). Veja docs/PROVIDERS.md para uma comparação completa (classificação de índice, matriz de recursos, guia de escolha rápida) e docs/API_SETUP.md para configuração passo a passo das chaves. Configure mais de um e o servidor fará failover automaticamente — veja Provedores de Pesquisa.

Quando SEARCH_PROVIDER não está definido, o servidor usa o Google se suas chaves estiverem presentes e, caso contrário, recorre ao provedor DuckDuckGo de configuração zero — então sempre funciona de fábrica, com ou sem chaves.

Pesquisa Acadêmica (Opcional — sem necessidade de inscrição)

Provedores de pesquisa acadêmica (OpenAlex, CrossRef) aceitam um e-mail de contato para desbloquear acesso mais rápido via pool educado — sem registro, apenas um e-mail. Veja docs/API_SETUP.md para configuração e docs/DEPLOYMENT.md para a referência completa de variáveis.

Com estes definidos, academic_search retorna artigos reais com DOIs, autores, contagens de citações e links de PDF de acesso aberto. Sem eles, ainda funciona, mas usa pesquisa web como fallback.

Pesquisa de Patentes (Opcional)

Patent providers (EPO, USPTO, The Lens) exigem chaves de API para dados estruturados de patentes. Consulte docs/API_SETUP.md para configuração passo a passo e docs/DEPLOYMENT.md para a referência completa de variáveis.

Com elas, patent_search retorna dados estruturados de patentes com códigos de classificação, datas e inventores. Sem elas, ele recorre à pesquisa na web.

Avançado: modo HTTP, OAuth e todas as outras configurações

As configurações de modo HTTP, OAuth, limite de taxa, cache, scraping e observabilidade estão documentadas em docs/DEPLOYMENT.md.


Por Dentro do Funcionamento

Arquitetura (para desenvolvedores e contribuidores)

O mapa completo por pacote e o diagrama em camadas (transportes MCP → despacho de ferramentas → camada de serviços → infraestrutura) estão em ARCHITECTURE.md — mantidos em um único lugar para evitar divergências.

Princípios de Design (para desenvolvedores)
  1. Zero estado global — todas as dependências injetadas via construtores
  2. Orientado a interfaces — toda dependência externa atrás de uma interface para testes e substituição
  3. Concorrência limitada — semáforos explícitos para chamadas de API externas
  4. Defesa em profundidade — proteção SSRF, limite de taxa, sanitização de conteúdo em todas as camadas
  5. Falhe alto — erros retornados, nunca engolidos; validação nas fronteiras

Provedores de Pesquisa

Você escolhe qual mecanismo de busca alimenta sua pesquisa. Todos funcionam com lentes.

ProvedorWeb CompletaImagensNotíciasObservações
DuckDuckGoSimPadrão sem configuração (sem necessidade de chave de API); limitado por taxa para uso intenso
Google PSESimSimSimMecanismo de Pesquisa Programável; camada gratuita: 100 consultas/dia
Brave SearchSimSimSimÍndice independente; camada gratuita disponível
Serper.devSimSimSimResultados idênticos ao Google
SearXNGSimSimSimAuto-hospedado, focado em privacidade, implantações isoladas
SearchAPI.ioSimSimSimAPI unificada com múltiplos backends de mecanismos
TavilySimSimBusca para agentes de IA; conteúdo limpo e pronto para LLM
ExaSimSimBusca neural/semântica; também alimenta academic_search e a camada opcional de scraping pago
Hacker NewsSomente HNSimSem configuração (índice HN Algolia); busca em threads do HN, não na web completa
RedditSomente RedditSimSem configuração (RSS público); busca em posts do Reddit, não na web completa
BlueskySomente BlueskySem configuração (API pública do Protocolo AT); busca em posts do Bluesky, não na web completa
GitHubSomente GitHubSimSem configuração (API pública REST de Busca); busca em issues/PRs, não na web completa

Múltiplos Provedores (recomendado)

Configure vários mecanismos de busca para que, se um tiver problemas, sua pesquisa não pare:

export SEARCH_ROUTING=brave,google,serper

Se o Brave estiver fora do ar, ele tenta automaticamente o Google. Se o Google estiver com limite de taxa, ele recorre ao Serper. Sua pesquisa simplesmente funciona.

Consulte docs/PROVIDERS.md para uma comparação completa de provedores (classificação de índice, capacidades, camadas gratuitas) e docs/DEPLOYMENT.md para opções avançadas de roteamento (roteamento por tópico, provedores específicos de patentes, etc.).

Provedor Único

Se você tiver apenas uma chave de API de busca, isso também funciona — basta configurá-la e pronto.

Exemplos de Configuração de Provedores

Roteamento multi-provedor (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=...

Provedor único — Brave Search:

export SEARCH_PROVIDER=brave
export BRAVE_API_KEY=BSAxxxxxxxxxx

Provedor único — SearXNG (auto-hospedado, focado em privacidade):

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

Provedor único — Exa:

export SEARCH_PROVIDER=exa
export EXA_API_KEY=...

Provedor único — Google PSE:

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

Qualquer provedor da tabela Configuração funciona da mesma forma — defina SEARCH_PROVIDER e sua(s) chave(s) correspondente(s).


Lentes de Busca

As lentes de busca permitem que você controle quais sites sua IA pode pesquisar. Em vez de buscar em toda a web (e obter blogs, spam e conteúdo gerado por IA), uma lente restringe os resultados apenas às fontes em que você confia para aquele tópico.

Lentes Integradas

LenteFoco
docsDocumentação oficial e referências de API apenas
academicServidores de preprint, repositórios, periódicos de acesso aberto
academic-extendedServidores de preprint, agregadores de acesso aberto e repositórios além dos índices principais de periódicos
biomedFontes de conhecimento biomédico sobre doenças raras — portais de ontologia, bancos de dados gene-doença, registros curados de doenças raras
clinicalEnsaios clínicos, segurança de medicamentos, medicina baseada em evidências
curriculumDados de currículos acadêmicos, clima institucional de liberdade de expressão e estatísticas globais de educação
securityCVEs, avisos, pesquisa de vulnerabilidades
investigative_recordsRegistros públicos, arquivamentos corporativos, FOIA
programmingDocumentação de código, tutoriais, Q&A
programming-goggleResultados priorizados para desenvolvedores, reordenados pelo Programming Goggle do Brave — destaca documentação, repositórios e conteúdo técnico autoritativo (requer Brave)
devopsInfraestrutura e operações — Kubernetes, Docker, Terraform, nuvem, CI/CD
newsEventos atuais, jornalismo
techIndústria de tecnologia
legalDireito, casos, estatutos
medicalSaúde, medicina
financeMercados, arquivamentos
sciencePesquisa, artigos
governmentPolíticas, regulamentações
osintInteligência de código aberto — registros públicos, registros corporativos, pegada social, infraestrutura
awesome-listsListas "awesome-*" curadas pela comunidade no GitHub — coleções de ferramentas e recursos revisadas por PR em todos os domínios

Você também pode criar suas próprias lentes para qualquer área — basta listar os domínios em que confia.

Como funciona

Quando você (ou sua IA) usa uma lente, os resultados vêm apenas dos sites dessa lente. Por exemplo, usar a lente medical significa que sua IA pesquisa PubMed, WHO, NIH e outras fontes clínicas — nunca blogs de saúde ou anúncios de suplementos.

Sua IA usa lentes automaticamente quando você pede. Por exemplo: "Pesquise descobertas recentes sobre inibidores de SGLT2 usando a lente clínica."

Criando Sua Própria Lente

Crie um diretório para suas lentes personalizadas e adicione um arquivo JSON para cada uma:

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

Depois, aponte o servidor para seu diretório de lentes:

export CUSTOM_LENSES_PATH=/path/to/my-lenses

Sua IA agora terá my-industry como uma lente disponível. Lentes personalizadas carregam após o conjunto integrado — uma lente personalizada com o mesmo name de uma integrada a substitui. Você pode adicionar até ~10 domínios por lente.

Opções avançadas (opcionais — a maioria dos usuários pode ignorar):

  • cx — Se você tiver um Mecanismo de Pesquisa Programável do Google com até 5.000 domínios, coloque o ID do mecanismo aqui
  • routing — Force esta lente a usar um provedor de busca específico (ex.: "google")

Privacidade e Segurança

Suas consultas de pesquisa vão diretamente da sua máquina para o provedor de busca escolhido. Elas nunca passam pelos nossos servidores (não temos servidores). A ferramenta roda inteiramente no seu computador.

Detalhes técnicos de segurança (para equipes empresariais / de conformidade)
  • Proteção SSRF — bloqueia acesso a redes internas, endpoints de metadados de nuvem, ataques de rebinding de DNS
  • OAuth 2.1 (modo HTTP) — validação de token JWKS, isolamento por locatário, validação de público/emissor
  • Limite de taxa (modo HTTP) — limites por locatário + globais para proteger APIs upstream
  • Sanitização de conteúdo — HTML limpo via política de lista de permissões, deduplicação, pontuação de qualidade

Para o modelo de ameaças completo, consulte docs/SECURITY.md.


Configuração para Cada Aplicativo de IA

Claude Code

Adicione à sua configuração MCP (~/.claude.json). Defina SEARCH_PROVIDER e a chave correspondente para o provedor que você usar (veja a tabela Configuração) — este exemplo usa o 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

Adicione a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %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

Adicione a .cursor/mcp.json na raiz do seu projeto:

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

Modo HTTP (Equipes / Servidor Compartilhado)

Para equipes que querem uma instância compartilhada à qual todos se conectam:

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

Depois, conecte qualquer aplicativo de IA a http://localhost:3000/mcp/.

Exemplo 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: O comportamento da ferramenta é idêntico em todos os modos de conexão (STDIO e HTTP). As únicas diferenças são autenticação (HTTP requer OAuth) e limite de taxa (HTTP impõe limites por locatário; STDIO tem apenas cotas de API upstream). Consulte docs/DEPLOYMENT.md para detalhes.


Desempenho

As buscas retornam em menos de um segundo. Resultados já vistos são armazenados em cache, então repetições são instantâneas. A extração completa de artigos funciona em 95%+ da web — incluindo sites que tentam bloquear bots. Sites com muito JavaScript recebem um navegador real nos bastidores (automático, sem necessidade de configuração).


Desenvolvimento

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)

As ferramentas lint, gosec e govulncheck são fixadas como diretivas de ferramenta go.mod, então make verify as executa nas versões exatas que o CI usa (sem necessidade de instalações globais). A proteção de branch exige que as verificações Lint, Test, Security e E2E passem.

Consulte CONTRIBUTING.md para o fluxo de trabalho completo de desenvolvimento, guia de estilo de código e processo de PR.


Solução de Problemas

O servidor inicia, mas as ferramentas falham com erros de "chave de API"

O servidor inicia mesmo sem credenciais (para permitir o handshake MCP). Defina suas chaves de API no bloco env da configuração do seu cliente MCP, não no seu perfil de shell.

Algumas páginas retornam vazias

Para sites com muito JavaScript, a ferramenta usa um navegador real (Chromium). Com a instalação binária, ele baixa automaticamente no primeiro uso (~200MB). Se você já tiver o Chrome instalado, defina CHROME_PATH para apontar para ele. A imagem Docker vem com Chromium incluído (predefinição CHROME_PATH), então a renderização de JavaScript funciona imediatamente — sem download.

Cache servindo resultados desatualizados após atualização

O cache em disco fica no diretório de cache do seu sistema operacional (ex.: ~/Library/Caches/web-researcher-mcp/ no macOS, ~/.cache/web-researcher-mcp/ no Linux). Exclua esse diretório para limpá-lo, ou defina CACHE_DIR para um caminho personalizado.

Atingindo limites de busca (erros 429)

Se a camada gratuita do seu provedor acabar (ex.: Google PSE permite 100 buscas/dia):

  • Troque para um provedor diferente — defina SEARCH_PROVIDER para qualquer outra opção (veja Configuração); cada um tem sua própria camada gratuita
  • Configure vários provedores (ex.: SEARCH_ROUTING=brave,google) — se um estiver com limite de taxa, ele automaticamente recorre ao próximo
  • Ou faça upgrade do plano do seu provedor
macOS: "Falha ao reconectar" / erro -32000 após uma atualização manual

Isso acontece somente se você substituiu o binário copiando novos bytes sobre o arquivo existente no lugar (cp new /path/to/web-researcher-mcp). Em Apple Silicon, o macOS armazena em cache a assinatura de código ad-hoc do binário em relação ao arquivo, e sobrescrevê-lo no lugar pode fazer com que a próxima inicialização seja encerrada antes de começar. Os instaladores oficiais (Homebrew, o comando único install.sh e o plugin Claude Code) evitam isso instalando em um arquivo novo. Para corrigir uma instalação manual, substitua-o de forma limpa e assine novamente:

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

Em seguida, reconecte seu cliente. (Executar novamente install.sh faz isso corretamente para você.)


Contribuindo

Contribuições são bem-vindas. Consulte CONTRIBUTING.md para diretrizes de estilo de código, fluxo de trabalho de desenvolvimento e como enviar pull requests.


Documentação

DocumentoDescrição
ARCHITECTURE.mdDecisões de design, stack de tecnologia, dependências
CONTRIBUTING.mdConfiguração de desenvolvimento, estilo de código, fluxo de PR
docs/TOOLS.mdEspecificações de ferramentas e esquemas de parâmetros
docs/EXAMPLES.mdExemplos de uso com chamadas de ferramentas em JSON
docs/API_SETUP.mdConfiguração de chave de API do provedor de busca para todos os provedores
docs/SECURITY.mdModelo de ameaças, SSRF, autenticação, conformidade (SOC2/GDPR/FedRAMP)
docs/PRIVACY.mdQuais dados vão para onde, processadores terceiros, retenção
docs/DEPLOYMENT.mdBuild, Docker, Kubernetes, configurações de cliente, escalonamento
docs/PYTHON_CLIENT.mdSDK Python — referência WebResearcherClient, wrapper síncrono, instalação
docs/LESSONS_LEARNED.mdHistória da migração de Node.js para Go e lições aprendidas
docs/SESSION_PERSISTENCE.mdComo as sessões sobrevivem à perda de contexto — design, fluxo de dados, citações
docs/MIGRATION.mdMigrando do google-researcher-mcp descontinuado

Licença

MIT


Construído por Zohar Babin, com Go e o Model Context Protocol