MyWebSearch

Não é necessária chave de API! Servidor MCP de pesquisa na web e extração de conteúdo com múltiplos mecanismos (Bing, Baidu, DuckDuckGo, GitHub, ArXiv, etc.) com bypass antibot integrado.

Documentação

🔍 MyWebSearch

Busca na Web com IA Multi-Mecanismo sem Chave e Motor de Extração de Conteúdo de Alta Pureza
Servidor MCP · CLI · Daemon HTTP Local · Fluxos de Trabalho de Agente Guiados por Skill

🇨🇳 简体中文 | 🇺🇸 English

npm version npm downloads license GitHub stars M8ven Live Monitored


Um servidor, quatro formas de usá-lo: conecte um cliente de IA via MCP, execute uma consulta única pela CLI, mantenha um daemon local ativo ou use os diagnósticos integrados antes de entrar em produção.

Ir para: Início rápido · Ferramentas MCP · CLI · Configuração · Diagnósticos · Desenvolvimento

✨ Recursos

my-websearch é um motor completo de busca e documentação técnica criado especificamente para agentes de codificação com IA (Claude Desktop, Cursor, Cherry Studio, Windsurf, Cline, ZCode, etc.). Pronto para uso imediato, compatível com vários clientes de IA populares:

  • 🌐 Busca Federada em 13 Mecanismos e Roteamento Inteligente
    Agrega mecanismos nacionais diretos (Bing, Baidu, CSDN, Juejin, Sogou), mecanismos globais (DuckDuckGo, Brave, Startpage, Exa) e plataformas especializadas para desenvolvedores (GitHub, StackOverflow, Hacker News, arXiv). Inclui roteamento automático por idioma (auto), execução paralela de múltiplas consultas (queries: string[]), deduplicação de URLs e fallback em cascata automático do minResults.
  • ⚡ Protocolo Web Nativo e Solvers de Proof-of-Work (Caminho Rápido sem Navegador)
    Construído sobre wreq-js com emulação nativa de handshake TLS/HTTP2 moderno e cookies de sessão persistentes. Inclui solvers em JS/Rust puro para o desafio Anubis SHA-256 PoW do Startpage e o desafio HTML5/aritmético d.js (isJsaChallenge) do DuckDuckGo, resolvendo respostas de desafio estruturadas em milissegundos sem iniciar um navegador de 400MB. Resolução real de URLs para links de redirecionamento do Sogou, Location do Baidu e links Base64 do Bing.
  • 📄 Extração de Artigos em Markdown de Alta Pureza e Purificadores Dedicados por Site
    Combina o Mozilla Readability com remoção inteligente de ruído de interface. Inclui regras de purificação dedicadas para Contas Oficiais do WeChat (mp.weixin.qq.com), perguntas e respostas aceitas do StackOverflow e roteamento interno transparente para CSDN e Juejin. Remove <nav>, <aside>, <footer> e breadcrumbs, preservando fielmente títulos de artigos, blocos de código e tabelas GFM. Suporta paginação contínua (startIndex), além de três modos de economia de tokens: focus classificados por relevância BM25, extract com seletor CSS para JSON sem LLM e citations numerados.
  • 📚 Consulta Unificada de Documentação de Bibliotecas Context7 (queryDocs)
    Consulta diretamente a documentação oficial com nomes naturais de pacotes (ex.: "next.js", "vue") ou IDs Context7, sem precisar de uma etapa separada de resolução. Inclui classificação automática de candidatos, autocorreção de 404 por suposição cega e descoberta de alternativas relacionadas.
  • 🐙 Buscador Estendido de Recursos GitHub / Gitee
    fetchGithubContent (anteriormente fetchGithubReadme) suporta tanto GitHub quanto Gitee: READMEs de repositórios, qualquer arquivo de código-fonte (/blob/...), árvores de diretórios (/tree/...) e discussões completas de issues / PRs.
  • 🌏 Detecção de Rede sem Configuração e Pronto para Fake-IP
    Detecta automaticamente proxies do sistema operacional (Registro do Windows / scutil do macOS / env do Linux). Roteia automaticamente mecanismos estrangeiros pelo proxy, mantendo os mecanismos nacionais em linhas diretas rápidas. Pré-inclui 198.18.0.0/15 na lista de permissões para compatibilidade com TUN / Fake-IP, aplicando limites rigorosos de segurança SSRF.
  • 🔌 Modos de Implantação Versáteis
    Funciona perfeitamente em MCP STDIO (Claude Desktop/Cursor), Streamable HTTP / SSE (Cherry Studio/clientes remotos), comandos únicos de CLI e um Daemon HTTP Local com reutilização de pool de conexões e monitoramento Prometheus /metrics.

🌍 13 Mecanismos de Busca

MecanismoConectividade na China ContinentalChave de APITecnologia CentralMelhor Para
bing🇨🇳 DiretoNenhumaImpersonação TLS do Chrome + resolução de URL real Base64 + fallback furtivoBusca técnica geral, consultas mistas EN/ZH
baidu🇨🇳 DiretoNenhumaResolução concorrente de redirecionamento Location + detecção de desafioNotícias chinesas, documentação, fóruns nacionais
csdn🇨🇳 DiretoNenhumaPersistência de cookie jar do WAF + nova tentativa automática em resposta vaziaLogs de erro chineses, tutoriais de depuração
juejin🇨🇳 DiretoNenhumaConsulta direta à API oficial para artigos longos e limposBlogs técnicos modernos de frontend/backend
sogou🇨🇳 DiretoNenhumaAnálise dupla desktop e mobile + decodificação de links de redirecionamento + remoção de anúnciosLinks do ecossistema WeChat e consultas de cauda longa
duckduckgo🌐 Proxy na CNNenhumaPré-carregamento de d.js + solver JS isJsaChallenge integrado (HTTP 202 = limite de taxa por IP de saída)Busca técnica em inglês e discussões de código aberto
startpage🌐 Proxy na CNNenhumaSolver Anubis SHA-256 PoW multi-worker (dificuldade ≤ 6) + sessão de cookie (sem navegador)Resultados de alta privacidade com respaldo do Google
brave🌐 Proxy na CNNenhumaImpressão digital TLS nativa + remoção rigorosa de anúncios patrocinadosÍndice independente em inglês e blogs técnicos
exa🌐 API DiretaChave Gratuita OpcionalAPI oficial de busca semântica (ignorada se a chave não estiver definida)Similaridade semântica, pesquisa em IA e artigos
github🌐 Proxy na CNNenhumaAPI REST oficial de Busca do GitHub + caminho rápido exato owner/repo (issues e repositórios)Issues do GitHub, relatórios de bugs, repositórios e busca exata de repo
stackoverflow🌐 Proxy na CNNenhumaAPI oficial StackExchange 2.3 com decodificação de entidades HTMLSolução de problemas de desenvolvedores, stack traces e respostas
hackernews🌐 Proxy na CNNenhumaAPI de Busca Algolia HN com pontos, comentários e metadados de autorDiscussões técnicas, lançamentos de startups e notícias de engenharia
arxiv🌐 Proxy na CNNenhumaAnálise da API oficial Atom XML do arXiv com títulos, autores e resumosArtigos científicos, aprendizado de máquina e pesquisa em IA
code🇨🇳 DiretoNenhumaBusca na API grep.app em código GitHub global com repo, caminho e números de linha exatosImplementações de código-fonte, padrões de uso de API

🛠️ 4 Ferramentas MCP Principais (Mínimas e Eficientes em Tokens)

💡 Orçamento de Tokens e Enxugamento: Todas as descrições de ferramentas são estritamente mantidas em até 250 caracteres (total de caracteres de descrição ≤ 1000). A orientação detalhada de roteamento é delegada ao McpServer({ instructions }), reduzindo significativamente o consumo de contexto do LLM.

Nome da FerramentaPropósitoDestaques Principais
searchBusca federada na web e em código (14 mecanismos)Suporta consultas paralelas, filtro de data timeRange: day|week|month|year, filtro site: string[], injeção de prévia fetchTop, mecanismo code (grep.app); engines explícito tem como padrão minResults=0 (sem cascata irrestrita); retorna diagnostics inline em caso de falha
fetchWebContentExtração de páginas web, Markdown e análise transparente de PDFExtrator de conteúdo tudo-em-um: Cache de Markdown em nível de disco integrado (Node 22 node:sqlite / fallback JSON particionado, LRU de 200MB, cache: default|reload); análise transparente de PDF (até 20MB / 50 páginas, tags [page N], detecção de documentos digitalizados); paginação e direcionamento por palavra-chave focus (bm25 blocos classificados por relevância por padrão, window para a janela fixa legada); selector para limitar a extração a uma subárvore CSS (gera erro em vez de retornar silenciosamente a página inteira); extract para JSON com seletor CSS sem LLM; citations para referências numeradas; retainLinks para remover URLs (-50% em páginas de índice)
fetchGithubContentLeitor abrangente de conteúdo GitHub / GiteeBusca README, um arquivo de código-fonte (/blob/<ref>/<path>), árvores de diretórios (/tree/) e discussões de Issue / PR; ref pode ser um branch, tag ou commit; não é um clone de repositório; paridade com Gitee via API (arquivo/árvore/issue/PR, GITEE_TOKEN opcional); retorna warnings
queryDocsDocumentação oficial de bibliotecas tudo-em-umResolve diretamente nomes de bibliotecas ou IDs Context7; inclui proteção contra baixa confiança e cadeia de fallback automática (registro npm → PyPI JSON → README do GitHub); retorna source: context7|npm|pypi|github-readme, confidence e warnings

💡 Compatibilidade Retroativa: Os legados fetchCsdnArticle e fetchJuejinArticle são roteados automaticamente sob fetchWebContent; o legado resolveLibraryId é mesclado em queryDocs (que aceita um nome library ou o alias legado libraryId). As ferramentas legadas separadas foram removidas — o switch REGISTER_LEGACY_ARTICLE_TOOLS não existe mais, pois manter três handlers não registrados ainda consumia orçamento de descrição de ferramentas sem motivo.


🚀 Início Rápido

1. Executar com NPX (Configuração Zero)

Nenhuma instalação necessária:

npx -y my-websearch@latest

💡 Descoberta Automática de Proxy: O servidor detecta automaticamente as configurações de proxy do seu sistema operacional. Se um ambiente de proxy local estiver ativo, os mecanismos estrangeiros usam automaticamente o proxy enquanto os mecanismos nacionais permanecem em linhas diretas rápidas. 198.18.0.0/15 está na lista de permissões por padrão para ambientes Fake-IP.

2. Configurar em Clientes de IA

🔹 Configuração automatizada (recomendada)

init detecta clientes MCP instalados, grava a entrada do servidor em seus arquivos de configuração e mantém um backup .bak:

npx -y my-websearch@latest init                      # auto-detect and write
npx -y my-websearch@latest init --dry-run            # preview the diff, write nothing
npx -y my-websearch@latest init --client cursor,code # target specific clients

Suportados por padrão: Claude Desktop, Cursor e VS Code (workspace .vscode/mcp.json). Uma entrada existente nunca é sobrescrita a menos que você passe --force, arquivos de configuração corrompidos são deixados intactos e, no Windows, ele grava cmd /c npx para você. Reinicie o cliente e verifique com my-websearch doctor.

🔹 Configuração manual

Claude Desktop / Cursor / Windsurf / Cline (Modo STDIO)

Adicione ao seu arquivo de configurações MCP:

{
  "mcpServers": {
    "my-websearch": {
      "command": "npx",
      "args": ["-y", "my-websearch@latest"],
      "env": {
        "MODE": "stdio"
      }
    }
  }
}

(Para Windows: init faz isso automaticamente. Ao configurar manualmente, se npx não estiver no caminho do sistema, defina command como cmd e args como ["/c", "npx", "-y", "my-websearch@latest"])

🔹 Cherry Studio (Modo Streamable HTTP)

Inicie o servidor no seu terminal com npx my-websearch@latest (porta padrão 3211) e então configure:

{
  "mcpServers": {
    "web-search": {
      "name": "MyWebSearch",
      "type": "streamableHttp",
      "baseUrl": "http://localhost:3211/mcp"
    }
  }
}

💻 CLI e Daemon Local

my-websearch pode ser usado diretamente no seu terminal como uma ferramenta CLI autônoma ou daemon persistente. Use --json em automação e mantenha o daemon em 127.0.0.1 a menos que você precise explicitamente de acesso remoto:

# Global install
npm install -g my-websearch

# Detect installed MCP clients and write their config (--dry-run to preview)
my-websearch init

# Start persistent local HTTP daemon (port 3210 by default)
my-websearch serve

# One-shot terminal search (reuses running daemon automatically)
my-websearch search "Model Context Protocol best practices" --limit 5 --min-results 5 --json

# Extract web page as clean Markdown
my-websearch fetch-web "https://blog.vuejs.org/posts/vue-3-5" --max-chars 15000 --json

# View daemon status and Prometheus metrics (/health, /status, /metrics)
my-websearch status --json

# Clear in-memory search cache
my-websearch cache-clear

🩺 Diagnósticos

Use o comando doctor integrado antes de solucionar problemas de proxy, navegador ou mecanismo:

# Local configuration and browser checks
my-websearch doctor

# Real proxy/engine probes (may contact upstream services)
my-websearch doctor --network

# Limit network probes to selected engines
my-websearch doctor --network --engine bing,duckduckgo --json

# Reset and clear cached engine circuit breaker / health state
my-websearch doctor --reset-health

O relatório separa configuração, alcançabilidade TCP do proxy, alcançabilidade HTTP, análise da aplicação, inicialização do navegador e status de verificação de desafio. O modo de rede realiza requisições reais e não deve ser usado como verificação de saúde de alta frequência.

🌐 Solução de Problemas de Proxy e Limitação de Taxa Upstream

Ao configurar ou diagnosticar a conectividade do proxy, consulte estes casos extremos comuns:

  1. O log de inicialização mostra 🌐 Proxy: disabled mesmo com proxy.url definido?

    • Verifique a flag useProxy: Em ~/.my-websearch/config.json, definir "useProxy": false tem precedência e substitui e desativa explicitamente url (definindo PROXY_URL='false'). Altere "useProxy": true ou simplesmente omita o campo (fornecer um url válido habilita o proxy automaticamente).
    • Nenhum proxy de sistema ativo sem PROXY_URL: Se nenhum proxy de sistema ou cliente de proxy local estiver em execução, os mecanismos estrangeiros serão bloqueados por padrão. Declare explicitamente PROXY_URL (por exemplo, http://127.0.0.1:7897 ou 7890).
  2. O proxy está configurado corretamente, mas os mecanismos estrangeiros falham ou atingem timeout? (Rate Limiting de IP de saída, NÃO é um Erro de Configuração)

    • DuckDuckGo retorna HTTP 202 / challenge: O DDG aplica rate limit no IP de saída. A primeira consulta pode ter sucesso e as seguintes retornam anomalyDetectionBlock; o aquecimento de cookies não resolve esse rate limit upstream. Altere o IP de saída ou aguarde o cooldown.
    • Bing retorna HTTP 200 mas 0 resultados: o caminho de impersonação wreq agora recorre automaticamente ao caminho SERP via axios quando analisa uma página vazia. Se ambos os caminhos permanecerem vazios, a consulta/IP provavelmente está sob rate limit.
    • Brave retorna HTTP 429 Too Many Requests: o Brave Search aplica rate limit em faixas de IP de datacenter ruidosas.
    • Startpage atinge timeout ou a dificuldade do PoW do Anubis dispara: a dificuldade 6 agora é resolvida inline por até 4 threads de trabalho (~3–12s); >6 é ignorado. Erros de socket de pass-challenge / 5xx transitórios são repetidos automaticamente.
    • 💡 Resolução: Esses sintomas indicam que o IP de saída público acionou o rate limiting upstream, não um bug em my-websearch. Troque para um IP de servidor proxy diferente, recorra a mecanismos domésticos/diretos ou forneça uma chave de API oficial como BRAVE_API_KEY para SLA garantido.

⚙️ Configuração e Variáveis de Ambiente

Configuração Global (~/.my-websearch/config.json)

Para compartilhar configurações entre todos os clientes MCP sem configuração duplicada:

{
  "apiKeys": {
    "context7": "ctx7sk-...",
    "exa": "..."
  },
  "proxy": {
    "url": "http://127.0.0.1:7897",
    "useProxy": true,
    "engines": ["duckduckgo", "exa", "brave", "startpage"]
  }
}

⚠️ Nota sobre useProxy: Quando "url" está configurado, o proxy é habilitado automaticamente. Definir "useProxy": false substitui e desativa explicitamente url. Se você quiser o proxy habilitado, defina "useProxy": true ou omita o campo completamente.

📋 Referência Exaustiva de Variáveis de Ambiente

Podem ser definidas via arquivo de configuração global (~/.my-websearch/config.json), .env local ou variáveis de ambiente do sistema:

1. 🔍 Orquestração de Busca e Roteamento

VariávelPadrãoValores Permitidos / Descrição
DEFAULT_SEARCH_ENGINEautoMecanismo padrão: auto (roteamento inteligente de consultas: chinês baidu,sogou, inglês/estrangeiro bing,duckduckgo). Suporta todos os 13 mecanismos: auto, bing, baidu, sogou, duckduckgo, brave, csdn, juejin, startpage, exa, github, stackoverflow, hackernews, arxiv (mecanismos verticais para desenvolvedores podem ser configurados como padrão, embora auto ou mecanismos web gerais sejam recomendados para o padrão global)
ALLOWED_SEARCH_ENGINESallLista branca separada por vírgulas de mecanismos de busca permitidos (por exemplo, bing,baidu,duckduckgo)
BING_BASE_URLhttps://cn.bing.com/searchURL base para consultas ao Bing. Usuários no exterior ou nós de proxy reverso podem definir como https://www.bing.com/search (alias legado OPEN_WEBSEARCH_BING_HOST suportado)
DEFAULT_MIN_RESULTS5Limiar de cascata: aciona mecanismos de fallback quando os resultados utilizáveis são menores que este valor
DEFAULT_SEARCH_LIMIT10Limite padrão de resultados quando não especificado explicitamente nas chamadas de ferramenta (máx. 50)
SEARCH_DEADLINE_MS30000Prazo limite global para execução de busca multi-mecanismo (milissegundos)
ENGINE_CIRCUIT_BASE_COOLDOWN_MS30000Primeiro cooldown do circuit breaker para um mecanismo (429 / 202 / bot_challenge). Falhas repetidas aumentam exponencialmente (30s → 60s → 120s…).
ENGINE_CIRCUIT_MAX_COOLDOWN_MS300000Limite superior para o backoff exponencial do circuit breaker (padrão 5 minutos).
SEARCH_AUTHORITY_DOMAINSvazioLista branca adicional de domínios de autoridade para reordenação de resultados (separada por vírgulas, anexada à lista integrada)
SEARCH_MODEautoModo de busca e política de navegador. Suporta modo único, multi-mecanismo por modo e combinações compostas multi-modo:
• Modo global: auto (fallback padrão), request/none (HTTP puro), playwright (força navegador)
• Modo único, múltiplos mecanismos: playwright:bing,startpage, auto:bing,startpage, bing,startpage
• Múltiplos modos compostos: playwright:bing;auto:startpage (bing força navegador, startpage usa fallback automático), auto;request:startpage (global automático mas startpage usa HTTP puro)
AUTO_ROUTE_EN_ENGINESbing,duckduckgoMecanismos separados por vírgulas para roteamento automático padrão em inglês
AUTO_ROUTE_ZH_ENGINESbaidu,sogouMecanismos separados por vírgulas para roteamento automático padrão em chinês

2. 🌐 Proxy e Segurança de Rede

VariávelPadrãoValores Permitidos / Descrição
PROXY_URLvazio (desligado)Configuração consolidada de proxy upstream (mescla os anteriores USE_PROXY e PROXY_ENGINES). Não necessário no modo TUN.
• Proxy padrão: passar PROXY_URL="" ou PROXY_URL=true vazio ativa o http://127.0.0.1:7897 padrão (portas de proxy local comuns incluem 7897, 7890, 10809; mecanismos estrangeiros usam proxy, mecanismos domésticos permanecem diretos)
• Endereço personalizado: PROXY_URL=http://127.0.0.1:10809
• Mecanismos personalizados: PROXY_URL="http://127.0.0.1:7897;duckduckgo,brave" ou todos os mecanismos PROXY_URL=";all"
FAKE_IP_CIDRS198.18.0.0/15CIDRs na lista branca para modo Fake-IP / TUN para evitar bloqueio falso-positivo de SSRF
IMPERSONATE_BROWSERchrome_149Perfil de fingerprint TLS/H2 do navegador wreq-js (por exemplo, chrome_149, safari_18)
IMPERSONATE_OSwindowsPlataforma do sistema operacional para impersonação de fingerprint (windows, macos, linux)
BING_IMPERSONATEtrueAlterna a impersonação TLS do Chrome para o modo HTTP do Bing (aciona automaticamente o circuit breaker após resultados vazios consecutivos)
ANUBIS_MAX_POW_DIFFICULTY6Limiar máximo de dificuldade para o solucionador de PoW do Anubis do Startpage; ignora/recorre ao fallback quando a dificuldade excede este valor
DIRECT_FIRST_PROBE_TIMEOUT_MS3500Timeout em ms para sondagens de conexão direta antes do fallback para proxy
FETCH_WEB_INSECURE_TLSfalseDesativa a verificação de certificado TLS apenas para fetchWebContent (para certificados de sites legados quebrados)
GITHUB_README_CDN_FIRSTfalseQuando true, força pular a sondagem direta de raw.githubusercontent.com e consulta o CDN jsDelivr primeiro (aceleração de rede doméstica)

3. 🔐 Credenciais e Chaves de API

VariávelPadrãoValores Permitidos / Descrição
CONTEXT7_API_KEYvazioChave de API do Context7 (fortemente recomendada para usuários de proxy/TUN para evitar cotas de IP compartilhado)
EXA_API_KEYvazioChave de API gratuita do Exa (necessária apenas se usar o mecanismo de busca semântica exa)
BRAVE_API_KEYvazioChave de API do Brave Search (opcional; usa a API oficial de alta confiabilidade quando definida)
GITHUB_TOKENvazioToken de Acesso Pessoal do GitHub (opcional; eleva o limite de requisições para 5.000 req/h)
GITEE_TOKENvazioToken de Acesso Pessoal do Gitee (opcional; eleva os limites de API do Gitee e habilita repositórios privados)
STACKOVERFLOW_API_KEYvazioChave do Stack Apps (opcional; eleva a cota para 10.000 req/dia)

4. 🖥️ Modos de Servidor, Concorrência e Session Reaper

VariávelPadrãoValores Permitidos / Descrição
MODEbothModo de transporte MCP: stdio (apenas stdin/stdout), http (apenas HTTP/SSE), both (concorrente)
PORT3211Porta de escuta HTTP/SSE do MCP (o daemon persistente local usa 3210 por padrão)
MAX_CONCURRENT_SEARCHES20Máximo de buscas concorrentes no modo daemon (0 para ilimitado)
MCP_MAX_SESSIONS100Máximo de sessões HTTP MCP retidas antes de retornar HTTP 429 Too Many Requests
MCP_SESSION_TTL_MS1800000Duração de expiração de sessão ociosa antes da coleta (padrão 30 min)
MCP_SESSION_REAPER_MS300000Intervalo de varredura do session reaper (padrão 5 min)
LOG_LEVELinfoNível de log: quiet (completamente silencioso), debug, info, warn, error
SECURITY_AUDITfalseHabilita o bloqueio de SSRF e o registro de auditoria de segurança do host header
OPEN_WEBSEARCH_ALLOWED_HOSTSloopbackLista branca de host header para o servidor HTTP (proteção contra DNS Rebinding, separada por vírgulas)

5. 🧭 Controles do Navegador Playwright e Stealth

[!NOTE] BING_PLAYWRIGHT_FALLBACK e STARTPAGE_PLAYWRIGHT_FALLBACK foram consolidados em SEARCH_MODE (por exemplo, SEARCH_MODE=bing ou SEARCH_MODE=request). A compatibilidade retroativa é preservada automaticamente.

VariávelPadrãoValores Permitidos / Descrição
PLAYWRIGHT_CDP_ENDPOINTvazioURL do endpoint CDP remoto do Chrome/Edge (por exemplo, http://127.0.0.1:9222 ou ws://...)
PLAYWRIGHT_EXECUTABLE_PATHautoCaminho absoluto para o executável do navegador (detecta automaticamente Edge/Chrome do sistema por padrão)
PLAYWRIGHT_HEADLESStrueExecutar em modo headless (no Windows, utiliza automaticamente uma janela de desktop oculta isolada)
PLAYWRIGHT_NAVIGATION_TIMEOUT_MS20000Timeout rígido de navegação de página para o Playwright (milissegundos)

6. 🛠️ Diretório da Aplicação e Personalização de Ferramentas

VariávelPadrãoValores Permitidos / Descrição
MYWEBSEARCH_DATA_DIR~/.my-websearchDiretório raiz para configuração e arquivos persistentes de cookies
OPEN_WEBSEARCH_RESPONSE_CAP_BYTES60000Limite máximo de caracteres retornados aos LLMs para evitar explosão do contexto do prompt
MCP_TOOL_SEARCH_NAMEsearchNome de registro personalizado para a ferramenta de busca no MCP
MCP_TOOL_FETCH_WEB_NAMEfetchWebContentNome de registro personalizado para a ferramenta de extração de conteúdo
MCP_TOOL_FETCH_GITHUB_NAMEfetchGithubContentNome de registro personalizado para a ferramenta de conteúdo do GitHub/Gitee (defina como fetchGithubReadme para compatibilidade retroativa)

💡 Atualizações Zero-Config (Variáveis Redundantes Removidas):

  • Switches de CORS (ENABLE_CORS/CORS_ORIGIN): O CORS é desabilitado por padrão; habilite-o explicitamente e restrinja as origens quando clientes de navegador precisarem de acesso cross-origin.
  • Seleção do Pacote Playwright (PLAYWRIGHT_PACKAGE/PLAYWRIGHT_MODULE_PATH): Agora 100% automatizada via descoberta inteligente de cliente e binários do sistema.
  • Endpoint de Navegador Remoto (PLAYWRIGHT_WS_ENDPOINT): Unificado no padrão PLAYWRIGHT_CDP_ENDPOINT.
  • Switch de Emoji (OPEN_WEBSEARCH_NO_EMOJI): A detecção automática de code page do console recorre suavemente a tags ASCII em terminais legados.
  • Flag de Debug Fragmentada (OPEN_WEBSEARCH_DEBUG): Unificada no padrão LOG_LEVEL=debug.
  • TTL de Persistência de Cookies (MYWEBSEARCH_COOKIE_TTL_DAYS): Solidificado em 30 dias com renovação deslizante automatizada.

🤝 Contribuição e Testes

Pull requests e issues são bem-vindos! Para executar a suíte de testes localmente:

npm install
npm run build
npm test              # Run the Vitest suite (55 files, 459 tests at the current baseline)
npm run test:live     # Run bounded-concurrency live integration tests
npm run eval:live     # Run 23-case live STDIO JSON-RPC evaluation suite

Agradecimentos

Autor: wtznicy Este projeto evoluiu a partir do Open-WebSearch (originalmente criado por Aas-ee) — agradecimentos especiais ao autor original. Agradecimentos também a:

  • wreq-js pela impersonação nativa de fingerprint TLS/HTTP2 do Chrome
  • Context7 por viabilizar a recuperação de documentação oficial
  • Mozilla Readability & Turndown pela extração de conteúdo e formatação em Markdown GFM