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
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.
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
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:
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ém | O que isso significa para você |
|---|---|
| Lentes de busca — escolha suas fontes por área | Sua 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 fonte | Artigos, 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 backup | Vários mecanismos de busca trabalhando juntos — se um tiver problemas, os outros assumem automaticamente |
| Lê artigos completos | Nã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, formatadas | Cada fonte vem com uma citação APA/MLA adequada e um link que realmente funciona |
| Suas consultas permanecem privadas | Executa na sua máquina — ninguém vê o que você está pesquisando. Nem nós, nem ninguém. |
| Trilha de auditoria | Cada 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"

Como se Compara
| web-researcher-mcp | Perplexity | Scite.ai | Elicit | |
|---|---|---|---|---|
| Você escolhe quais fontes são pesquisadas | Sim (lentes integradas + personalizadas) | Não | Não | Não |
| Inventa citações | Nunca — todo link é real | ~37% incorretas | Raro (apenas periódicos) | Raro |
| Funciona em todas as áreas | Sim — jurídico, médico, notícias, patentes, tudo | Sim | Apenas periódicos | Apenas artigos |
| Mantém sua pesquisa privada | Sim — executa na sua máquina | Não (eles veem tudo) | Não | Não |
| Funciona dentro da sua IA existente (Claude, Cursor, etc.) | Sim | Não (aplicativo separado) | Parcialmente | Não (aplicativo separado) |
| Pode ler artigos completos, não apenas trechos | Sim — páginas, PDFs, documentos Word, YouTube | Não | Não | Limitado |
| Custo | Grátis para sempre (código aberto) | US$ 20/mês | US$ 20/mês | US$ 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

| Ferramenta | O que faz |
|---|---|
web_search | Pesquise na web — opcionalmente restrito apenas às fontes em que você confia por meio de lentes |
scrape_page | Leia 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_scrape | Pesquise e depois leia os melhores resultados — com pontuação de qualidade para destacar as fontes mais confiáveis |
image_search | Encontre imagens por tamanho, tipo, cor ou formato |
news_search | Pesquise notícias recentes com controles de data e filtros de fonte |
academic_search | Encontre artigos reais com DOIs reais — autores, contagens de citações, links de acesso aberto |
paper_fulltext | Obtenha 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_graph | Explore 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_search | Pesquise escritórios de patentes (EUA, Europa, internacional) com códigos de classificação |
filing_search | Pesquise 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_search | Pesquise opiniões e dossiês de tribunais dos EUA via CourtListener — casos reais com citações reais |
econ_search | Consulte 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_search | Pesquise 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_search | Consulte 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_search | Pesquise 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_search | Pesquise 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_research | Pesquise 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_recon | Reconhecimento 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_citation | Verifique 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_bibliography | Audite 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_recommendation | Audite 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_source | Capture 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_search | Pesquisa profunda em várias etapas — sua IA lembra o que já encontrou e constrói em cima disso |
get_research_session | Recupere uma sessão de pesquisa após perda de contexto — continua exatamente de onde você parou |
research_export | Exporte uma sessão de pesquisa como um relatório compartilhável (markdown ou JSON), com proveniência completa por etapa |
format_bibliography | Transforme fontes coletadas em uma bibliografia formatada — APA, MLA, BibTeX, RIS ou CSL-JSON (pronto para Zotero/EndNote/Mendeley) |
research_panel | Faç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:
| Modelo | O que ele orienta sua IA a fazer |
|---|---|
comprehensive-research | Execute um mergulho profundo estruturado em várias etapas sobre um tópico |
fact-check | Verifique uma afirmação contra múltiplas fontes independentes |
competitive-analysis | Avalie uma empresa e seu mercado (notícias, patentes, web) |
literature-review | Revise sistematicamente a literatura acadêmica sobre um tópico |
brand-guidelines | Pesquise 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-recon | Reconhecimento OSINT profundo de uma empresa — mapeia infraestrutura, arquivamentos, pessoal e pegada pública |
curriculum-research | Pesquise 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

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).
| Provedor | SEARCH_PROVIDER | Variável(is) de chave | Obter uma chave |
|---|---|---|---|
| DuckDuckGo | duckduckgo | nenhuma | Integrado — configuração zero |
| Google PSE | google | GOOGLE_CUSTOM_SEARCH_API_KEY + GOOGLE_CUSTOM_SEARCH_ID | console da nuvem + mecanismo |
| Brave | brave | BRAVE_API_KEY | brave.com/search/api |
| Serper | serper | SERPER_API_KEY | serper.dev |
| SearchAPI.io | searchapi | SEARCHAPI_API_KEY | searchapi.io |
| You.com | youcom | YOUDOTCOM_API_KEY | you.com/docs/api-reference/search/v1-search |
| SearXNG | searxng | SEARXNG_URL | auto-hospedado |
| Tavily | tavily | TAVILY_API_KEY | app.tavily.com |
| Exa | exa | EXA_API_KEY | dashboard.exa.ai |
| Hacker News | hackernews | nenhuma | Integrado — configuração zero (índice HN Algolia) |
reddit | nenhuma | Integrado — configuração zero (RSS público) | |
| Bluesky | bluesky | nenhuma | Integrado — configuração zero (API pública do AT Protocol) |
| GitHub | github | nenhuma (GITHUB_TOKEN opcional, aumenta o limite de taxa) | Integrado — configuração zero (API pública REST de Pesquisa) |
| Xquik | xquik | XQUIK_API_KEY | dashboard.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_searchretorna 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_searchretorna 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)
- Zero estado global — todas as dependências injetadas via construtores
- Orientado a interfaces — toda dependência externa atrás de uma interface para testes e substituição
- Concorrência limitada — semáforos explícitos para chamadas de API externas
- Defesa em profundidade — proteção SSRF, limite de taxa, sanitização de conteúdo em todas as camadas
- 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.
| Provedor | Web Completa | Imagens | Notícias | Observações |
|---|---|---|---|---|
| DuckDuckGo | Sim | — | — | Padrão sem configuração (sem necessidade de chave de API); limitado por taxa para uso intenso |
| Google PSE | Sim | Sim | Sim | Mecanismo de Pesquisa Programável; camada gratuita: 100 consultas/dia |
| Brave Search | Sim | Sim | Sim | Índice independente; camada gratuita disponível |
| Serper.dev | Sim | Sim | Sim | Resultados idênticos ao Google |
| SearXNG | Sim | Sim | Sim | Auto-hospedado, focado em privacidade, implantações isoladas |
| SearchAPI.io | Sim | Sim | Sim | API unificada com múltiplos backends de mecanismos |
| Tavily | Sim | — | Sim | Busca para agentes de IA; conteúdo limpo e pronto para LLM |
| Exa | Sim | — | Sim | Busca neural/semântica; também alimenta academic_search e a camada opcional de scraping pago |
| Hacker News | Somente HN | — | Sim | Sem configuração (índice HN Algolia); busca em threads do HN, não na web completa |
| Somente Reddit | — | Sim | Sem configuração (RSS público); busca em posts do Reddit, não na web completa | |
| Bluesky | Somente Bluesky | — | — | Sem configuração (API pública do Protocolo AT); busca em posts do Bluesky, não na web completa |
| GitHub | Somente GitHub | — | Sim | Sem 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
| Lente | Foco |
|---|---|
docs | Documentação oficial e referências de API apenas |
academic | Servidores de preprint, repositórios, periódicos de acesso aberto |
academic-extended | Servidores de preprint, agregadores de acesso aberto e repositórios além dos índices principais de periódicos |
biomed | Fontes de conhecimento biomédico sobre doenças raras — portais de ontologia, bancos de dados gene-doença, registros curados de doenças raras |
clinical | Ensaios clínicos, segurança de medicamentos, medicina baseada em evidências |
curriculum | Dados de currículos acadêmicos, clima institucional de liberdade de expressão e estatísticas globais de educação |
security | CVEs, avisos, pesquisa de vulnerabilidades |
investigative_records | Registros públicos, arquivamentos corporativos, FOIA |
programming | Documentação de código, tutoriais, Q&A |
programming-goggle | Resultados priorizados para desenvolvedores, reordenados pelo Programming Goggle do Brave — destaca documentação, repositórios e conteúdo técnico autoritativo (requer Brave) |
devops | Infraestrutura e operações — Kubernetes, Docker, Terraform, nuvem, CI/CD |
news | Eventos atuais, jornalismo |
tech | Indústria de tecnologia |
legal | Direito, casos, estatutos |
medical | Saúde, medicina |
finance | Mercados, arquivamentos |
science | Pesquisa, artigos |
government | Políticas, regulamentações |
osint | Inteligência de código aberto — registros públicos, registros corporativos, pegada social, infraestrutura |
awesome-lists | Listas "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_PROVIDERpara 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
| Documento | Descrição |
|---|---|
| ARCHITECTURE.md | Decisões de design, stack de tecnologia, dependências |
| CONTRIBUTING.md | Configuração de desenvolvimento, estilo de código, fluxo de PR |
| docs/TOOLS.md | Especificações de ferramentas e esquemas de parâmetros |
| docs/EXAMPLES.md | Exemplos de uso com chamadas de ferramentas em JSON |
| docs/API_SETUP.md | Configuração de chave de API do provedor de busca para todos os provedores |
| docs/SECURITY.md | Modelo de ameaças, SSRF, autenticação, conformidade (SOC2/GDPR/FedRAMP) |
| docs/PRIVACY.md | Quais dados vão para onde, processadores terceiros, retenção |
| docs/DEPLOYMENT.md | Build, Docker, Kubernetes, configurações de cliente, escalonamento |
| docs/PYTHON_CLIENT.md | SDK Python — referência WebResearcherClient, wrapper síncrono, instalação |
| docs/LESSONS_LEARNED.md | História da migração de Node.js para Go e lições aprendidas |
| docs/SESSION_PERSISTENCE.md | Como as sessões sobrevivem à perda de contexto — design, fluxo de dados, citações |
| docs/MIGRATION.md | Migrando do google-researcher-mcp descontinuado |
Licença
Construído por Zohar Babin, com Go e o Model Context Protocol