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
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 dominResults. - ⚡ Protocolo Web Nativo e Solvers de Proof-of-Work (Caminho Rápido sem Navegador)
Construído sobrewreq-jscom 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éticod.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,Locationdo 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:focusclassificados por relevância BM25,extractcom seletor CSS para JSON sem LLM ecitationsnumerados. - 📚 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(anteriormentefetchGithubReadme) 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é-inclui198.18.0.0/15na 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
| Mecanismo | Conectividade na China Continental | Chave de API | Tecnologia Central | Melhor Para |
|---|---|---|---|---|
bing | 🇨🇳 Direto | Nenhuma | Impersonação TLS do Chrome + resolução de URL real Base64 + fallback furtivo | Busca técnica geral, consultas mistas EN/ZH |
baidu | 🇨🇳 Direto | Nenhuma | Resolução concorrente de redirecionamento Location + detecção de desafio | Notícias chinesas, documentação, fóruns nacionais |
csdn | 🇨🇳 Direto | Nenhuma | Persistência de cookie jar do WAF + nova tentativa automática em resposta vazia | Logs de erro chineses, tutoriais de depuração |
juejin | 🇨🇳 Direto | Nenhuma | Consulta direta à API oficial para artigos longos e limpos | Blogs técnicos modernos de frontend/backend |
sogou | 🇨🇳 Direto | Nenhuma | Análise dupla desktop e mobile + decodificação de links de redirecionamento + remoção de anúncios | Links do ecossistema WeChat e consultas de cauda longa |
duckduckgo | 🌐 Proxy na CN | Nenhuma | Pré-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 CN | Nenhuma | Solver 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 CN | Nenhuma | Impressão digital TLS nativa + remoção rigorosa de anúncios patrocinados | Índice independente em inglês e blogs técnicos |
exa | 🌐 API Direta | Chave Gratuita Opcional | API oficial de busca semântica (ignorada se a chave não estiver definida) | Similaridade semântica, pesquisa em IA e artigos |
github | 🌐 Proxy na CN | Nenhuma | API 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 CN | Nenhuma | API oficial StackExchange 2.3 com decodificação de entidades HTML | Solução de problemas de desenvolvedores, stack traces e respostas |
hackernews | 🌐 Proxy na CN | Nenhuma | API de Busca Algolia HN com pontos, comentários e metadados de autor | Discussões técnicas, lançamentos de startups e notícias de engenharia |
arxiv | 🌐 Proxy na CN | Nenhuma | Análise da API oficial Atom XML do arXiv com títulos, autores e resumos | Artigos científicos, aprendizado de máquina e pesquisa em IA |
code | 🇨🇳 Direto | Nenhuma | Busca na API grep.app em código GitHub global com repo, caminho e números de linha exatos | Implementaçõ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 Ferramenta | Propósito | Destaques Principais |
|---|---|---|
search | Busca 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 |
fetchWebContent | Extração de páginas web, Markdown e análise transparente de PDF | Extrator 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) |
fetchGithubContent | Leitor abrangente de conteúdo GitHub / Gitee | Busca 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 |
queryDocs | Documentação oficial de bibliotecas tudo-em-um | Resolve 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
fetchCsdnArticleefetchJuejinArticlesão roteados automaticamente sobfetchWebContent; o legadoresolveLibraryIdé mesclado emqueryDocs(que aceita um nomelibraryou o alias legadolibraryId). As ferramentas legadas separadas foram removidas — o switchREGISTER_LEGACY_ARTICLE_TOOLSnã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/15está 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:
-
O log de inicialização mostra
🌐 Proxy: disabledmesmo comproxy.urldefinido?- Verifique a flag
useProxy: Em~/.my-websearch/config.json, definir"useProxy": falsetem precedência e substitui e desativa explicitamenteurl(definindoPROXY_URL='false'). Altere"useProxy": trueou simplesmente omita o campo (fornecer umurlvá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 explicitamentePROXY_URL(por exemplo,http://127.0.0.1:7897ou7890).
- Verifique a flag
-
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 comoBRAVE_API_KEYpara SLA garantido.
- 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
⚙️ 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": falsesubstitui e desativa explicitamenteurl. Se você quiser o proxy habilitado, defina"useProxy": trueou 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ável | Padrão | Valores Permitidos / Descrição |
|---|---|---|
DEFAULT_SEARCH_ENGINE | auto | Mecanismo 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_ENGINES | all | Lista branca separada por vírgulas de mecanismos de busca permitidos (por exemplo, bing,baidu,duckduckgo) |
BING_BASE_URL | https://cn.bing.com/search | URL 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_RESULTS | 5 | Limiar de cascata: aciona mecanismos de fallback quando os resultados utilizáveis são menores que este valor |
DEFAULT_SEARCH_LIMIT | 10 | Limite padrão de resultados quando não especificado explicitamente nas chamadas de ferramenta (máx. 50) |
SEARCH_DEADLINE_MS | 30000 | Prazo limite global para execução de busca multi-mecanismo (milissegundos) |
ENGINE_CIRCUIT_BASE_COOLDOWN_MS | 30000 | Primeiro cooldown do circuit breaker para um mecanismo (429 / 202 / bot_challenge). Falhas repetidas aumentam exponencialmente (30s → 60s → 120s…). |
ENGINE_CIRCUIT_MAX_COOLDOWN_MS | 300000 | Limite superior para o backoff exponencial do circuit breaker (padrão 5 minutos). |
SEARCH_AUTHORITY_DOMAINS | vazio | Lista branca adicional de domínios de autoridade para reordenação de resultados (separada por vírgulas, anexada à lista integrada) |
SEARCH_MODE | auto | Modo 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_ENGINES | bing,duckduckgo | Mecanismos separados por vírgulas para roteamento automático padrão em inglês |
AUTO_ROUTE_ZH_ENGINES | baidu,sogou | Mecanismos separados por vírgulas para roteamento automático padrão em chinês |
2. 🌐 Proxy e Segurança de Rede
| Variável | Padrão | Valores Permitidos / Descrição |
|---|---|---|
PROXY_URL | vazio (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_CIDRS | 198.18.0.0/15 | CIDRs na lista branca para modo Fake-IP / TUN para evitar bloqueio falso-positivo de SSRF |
IMPERSONATE_BROWSER | chrome_149 | Perfil de fingerprint TLS/H2 do navegador wreq-js (por exemplo, chrome_149, safari_18) |
IMPERSONATE_OS | windows | Plataforma do sistema operacional para impersonação de fingerprint (windows, macos, linux) |
BING_IMPERSONATE | true | Alterna 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_DIFFICULTY | 6 | Limiar 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_MS | 3500 | Timeout em ms para sondagens de conexão direta antes do fallback para proxy |
FETCH_WEB_INSECURE_TLS | false | Desativa a verificação de certificado TLS apenas para fetchWebContent (para certificados de sites legados quebrados) |
GITHUB_README_CDN_FIRST | false | Quando 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ável | Padrão | Valores Permitidos / Descrição |
|---|---|---|
CONTEXT7_API_KEY | vazio | Chave de API do Context7 (fortemente recomendada para usuários de proxy/TUN para evitar cotas de IP compartilhado) |
EXA_API_KEY | vazio | Chave de API gratuita do Exa (necessária apenas se usar o mecanismo de busca semântica exa) |
BRAVE_API_KEY | vazio | Chave de API do Brave Search (opcional; usa a API oficial de alta confiabilidade quando definida) |
GITHUB_TOKEN | vazio | Token de Acesso Pessoal do GitHub (opcional; eleva o limite de requisições para 5.000 req/h) |
GITEE_TOKEN | vazio | Token de Acesso Pessoal do Gitee (opcional; eleva os limites de API do Gitee e habilita repositórios privados) |
STACKOVERFLOW_API_KEY | vazio | Chave do Stack Apps (opcional; eleva a cota para 10.000 req/dia) |
4. 🖥️ Modos de Servidor, Concorrência e Session Reaper
| Variável | Padrão | Valores Permitidos / Descrição |
|---|---|---|
MODE | both | Modo de transporte MCP: stdio (apenas stdin/stdout), http (apenas HTTP/SSE), both (concorrente) |
PORT | 3211 | Porta de escuta HTTP/SSE do MCP (o daemon persistente local usa 3210 por padrão) |
MAX_CONCURRENT_SEARCHES | 20 | Máximo de buscas concorrentes no modo daemon (0 para ilimitado) |
MCP_MAX_SESSIONS | 100 | Máximo de sessões HTTP MCP retidas antes de retornar HTTP 429 Too Many Requests |
MCP_SESSION_TTL_MS | 1800000 | Duração de expiração de sessão ociosa antes da coleta (padrão 30 min) |
MCP_SESSION_REAPER_MS | 300000 | Intervalo de varredura do session reaper (padrão 5 min) |
LOG_LEVEL | info | Nível de log: quiet (completamente silencioso), debug, info, warn, error |
SECURITY_AUDIT | false | Habilita o bloqueio de SSRF e o registro de auditoria de segurança do host header |
OPEN_WEBSEARCH_ALLOWED_HOSTS | loopback | Lista 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_FALLBACKeSTARTPAGE_PLAYWRIGHT_FALLBACKforam consolidados emSEARCH_MODE(por exemplo,SEARCH_MODE=bingouSEARCH_MODE=request). A compatibilidade retroativa é preservada automaticamente.
| Variável | Padrão | Valores Permitidos / Descrição |
|---|---|---|
PLAYWRIGHT_CDP_ENDPOINT | vazio | URL do endpoint CDP remoto do Chrome/Edge (por exemplo, http://127.0.0.1:9222 ou ws://...) |
PLAYWRIGHT_EXECUTABLE_PATH | auto | Caminho absoluto para o executável do navegador (detecta automaticamente Edge/Chrome do sistema por padrão) |
PLAYWRIGHT_HEADLESS | true | Executar em modo headless (no Windows, utiliza automaticamente uma janela de desktop oculta isolada) |
PLAYWRIGHT_NAVIGATION_TIMEOUT_MS | 20000 | Timeout rígido de navegação de página para o Playwright (milissegundos) |
6. 🛠️ Diretório da Aplicação e Personalização de Ferramentas
| Variável | Padrão | Valores Permitidos / Descrição |
|---|---|---|
MYWEBSEARCH_DATA_DIR | ~/.my-websearch | Diretório raiz para configuração e arquivos persistentes de cookies |
OPEN_WEBSEARCH_RESPONSE_CAP_BYTES | 60000 | Limite máximo de caracteres retornados aos LLMs para evitar explosão do contexto do prompt |
MCP_TOOL_SEARCH_NAME | search | Nome de registro personalizado para a ferramenta de busca no MCP |
MCP_TOOL_FETCH_WEB_NAME | fetchWebContent | Nome de registro personalizado para a ferramenta de extração de conteúdo |
MCP_TOOL_FETCH_GITHUB_NAME | fetchGithubContent | Nome 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ãoPLAYWRIGHT_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ãoLOG_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