Web Search
Realiza pesquisas na web e extrai o conteúdo completo das páginas dos resultados de busca.
Documentação
Servidor MCP Web Search para uso com LLMs Locais
Um servidor MCP (Model Context Protocol) em TypeScript que fornece capacidades abrangentes de pesquisa na web usando conexões diretas (sem necessidade de chaves de API) com múltiplas ferramentas para diferentes casos de uso.
Recursos
- Pesquisa Web Multi-Mecanismo: Prioriza Bing > Brave > DuckDuckGo para confiabilidade e desempenho ideais
- Extração Completa de Conteúdo de Página: Busca e extrai o conteúdo completo das páginas dos resultados de pesquisa
- Múltiplas Ferramentas de Pesquisa: Três ferramentas especializadas para diferentes casos de uso
- Estratégia Inteligente de Requisições: Alterna entre navegadores playwright e requisições axios rápidas para garantir que os resultados sejam retornados
- Processamento Concorrente: Extrai conteúdo de múltiplas páginas simultaneamente
Como Funciona
O servidor fornece três ferramentas especializadas para diferentes necessidades de pesquisa na web:
1. full-web-search (Ferramenta Principal)
Quando uma pesquisa abrangente é solicitada, o servidor usa uma estratégia de pesquisa otimizada:
- Pesquisa Bing baseada em navegador - Método principal usando instância dedicada do Chromium
- Pesquisa Brave baseada em navegador - Opção secundária usando instância dedicada do Firefox
- Pesquisa DuckDuckGo via Axios - Fallback final usando HTTP tradicional
- Isolamento dedicado de navegador: Cada mecanismo de pesquisa recebe sua própria instância de navegador com limpeza automática
- Extração de conteúdo: Tenta axios primeiro, depois recorre ao navegador com simulação de comportamento humano
- Processamento concorrente: Extrai conteúdo de múltiplas páginas simultaneamente com proteção de timeout
- Recuperação de erros HTTP/2: Alterna automaticamente para HTTP/1.1 quando ocorrem erros de protocolo
2. get-web-search-summaries (Alternativa Leve)
Para resultados de pesquisa rápidos sem extração completa de conteúdo:
- Realiza a mesma pesquisa multi-mecanismo otimizada que
full-web-search - Retorna apenas os trechos/descrições dos resultados de pesquisa
- Não segue links para extrair o conteúdo completo da página
3. get-single-web-page-content (Ferramenta Utilitária)
Para extrair conteúdo de uma página web específica:
- Recebe uma única URL como entrada
- Segue a URL e extrai o conteúdo principal da página
- Remove navegação, anúncios e outros elementos que não são conteúdo
Compatibilidade
Este servidor MCP foi desenvolvido e testado com LM Studio e LibreChat. Não foi testado com outros clientes MCP.
Compatibilidade de Modelos
Importante: Priorize o uso de modelos mais recentes designados para uso de ferramentas.
Modelos mais antigos (mesmo aqueles com uso de ferramentas especificado) podem não funcionar ou funcionar de forma errática. Este parece ser o caso com Llama e Deepseek. Qwen3 e Gemma 3 atualmente têm os melhores resultados.
- ✅ Funciona bem com: Qwen3
- ✅ Funciona bem com: Gemma 3
- ✅ Funciona com: Llama 3.2
- ✅ Funciona com: Llama 3.1 recente (ex: 3.1 swallow-8B)
- ✅ Funciona com: Deepseek R1 recente (ex: 0528 funciona)
- ⚠️ Pode ter problemas com: Algumas versões de Llama e Deepseek R1
- ❌ Pode não funcionar com: Versões mais antigas de Llama e Deepseek R1
Instalação (Recomendada)
Requisitos:
- Node.js 18.0.0 ou superior
- npm 8.0.0 ou superior
-
Baixe o arquivo zip da versão mais recente na página de Releases
-
Extraia o arquivo zip para um local no seu sistema (ex:
~/mcp-servers/web-search-mcp/) -
Abra um terminal na pasta extraída e execute:
npm install npx playwright install npm run buildIsso criará uma pasta
node_modulescom todas as dependências necessárias, instalará os navegadores Playwright e compilará o projeto.Nota: Você deve executar
npm installna raiz da pasta extraída (não emdist/). -
Configure seu
mcp.jsonpara apontar para o arquivodist/index.jsextraído:
{
"mcpServers": {
"web-search": {
"command": "node",
"args": ["/path/to/extracted/web-search-mcp/dist/index.js"]
}
}
}
Caminhos de exemplo:
- macOS/Linux:
~/mcp-servers/web-search-mcp/dist/index.js - Windows:
C:\\mcp-servers\\web-search-mcp\\dist\\index.js
No LibreChat, você pode incluir o servidor MCP no librechat.yaml. Se você estiver executando o LibreChat no Docker, deve primeiro montar seu diretório local no docker-compose.override.yml.
em docker-compose.override.yml:
services:
api:
volumes:
- type: bind
source: /path/to/your/mcp/directory
target: /app/mcp
em librechat.yaml:
mcpServers:
web-search:
type: stdio
command: node
args:
- /app/mcp/web-search-mcp/dist/index.js
serverInstructions: true
Solução de problemas:
- Se
npm installfalhar, tente atualizar o Node.js para a versão 18+ e o npm para a versão 8+ - Se
npm run buildfalhar, certifique-se de ter a versão mais recente do Node.js instalada - Para versões mais antigas do Node.js, você pode precisar usar uma versão mais antiga deste projeto
- Problemas de Comprimento de Conteúdo: Se você tiver comportamento estranho devido aos limites de comprimento de conteúdo, tente definir
"MAX_CONTENT_LENGTH": "10000", ou outro valor, nas variáveis de ambiente do seumcp.json:
{
"mcpServers": {
"web-search": {
"command": "node",
"args": ["/path/to/web-search-mcp/dist/index.js"],
"env": {
"MAX_CONTENT_LENGTH": "10000",
"BROWSER_HEADLESS": "true",
"MAX_BROWSERS": "3",
"BROWSER_FALLBACK_THRESHOLD": "3"
}
}
}
}
Variáveis de Ambiente
O servidor suporta várias variáveis de ambiente para configuração:
MAX_CONTENT_LENGTH: Comprimento máximo de conteúdo em caracteres (padrão: 500000)DEFAULT_TIMEOUT: Timeout padrão para requisições em milissegundos (padrão: 6000)MAX_BROWSERS: Número máximo de instâncias de navegador a manter (padrão: 3)BROWSER_TYPES: Lista separada por vírgulas de tipos de navegador a usar (padrão: 'chromium,firefox', opções: chromium, firefox, webkit)BROWSER_FALLBACK_THRESHOLD: Número de falhas do axios antes de usar o fallback do navegador (padrão: 3)
Qualidade de Pesquisa e Seleção de Mecanismo
ENABLE_RELEVANCE_CHECKING: Ativar/desativar validação de qualidade dos resultados de pesquisa (padrão: true)RELEVANCE_THRESHOLD: Pontuação mínima de qualidade para resultados de pesquisa (0.0-1.0, padrão: 0.3)FORCE_MULTI_ENGINE_SEARCH: Tentar todos os mecanismos de pesquisa e retornar os melhores resultados (padrão: false)DEBUG_BROWSER_LIFECYCLE: Ativar registro detalhado do ciclo de vida do navegador para depuração (padrão: false)
Solução de Problemas
Tempos de Resposta Lentos
- Timeouts otimizados: Timeout padrão reduzido para 6 segundos com processamento concorrente para resultados mais rápidos
- Extração concorrente: O conteúdo agora é extraído de múltiplas páginas simultaneamente
- Reduza ainda mais os timeouts: Defina
DEFAULT_TIMEOUT=4000para respostas ainda mais rápidas (pode reduzir a taxa de sucesso) - Use menos navegadores: Defina
MAX_BROWSERS=1para reduzir o uso de memória
Falhas de Pesquisa
- Verifique a instalação do navegador: Execute
npx playwright installpara garantir que os navegadores estejam disponíveis - Tente o modo headless: Certifique-se de
BROWSER_HEADLESS=true(padrão) para ambientes de servidor - Restrições de rede: Algumas redes bloqueiam automação de navegador - tente uma rede diferente ou VPN
- Problemas de HTTP/2: O servidor lida automaticamente com erros de protocolo HTTP/2 com fallback para HTTP/1.1
Problemas de Qualidade de Pesquisa
- Ative a verificação de qualidade: Defina
ENABLE_RELEVANCE_CHECKING=true(ativado por padrão) - Ajuste o limite de qualidade: Defina
RELEVANCE_THRESHOLD=0.5para requisitos de qualidade mais rigorosos - Force a pesquisa multi-mecanismo: Defina
FORCE_MULTI_ENGINE_SEARCH=truepara tentar todos os mecanismos e retornar os melhores resultados
Uso de Memória
- Limpeza automática: Os navegadores são limpos automaticamente após cada operação para evitar vazamentos de memória
- Limite os navegadores: Reduza
MAX_BROWSERS(padrão: 3) - Avisos do EventEmitter: Corrigido - os navegadores são fechados corretamente para evitar acúmulo de listeners
Para Desenvolvimento
git clone https://github.com/mrkrsl/web-search-mcp.git
cd web-search-mcp
npm install
npx playwright install
npm run build
Desenvolvimento
npm run dev # Development with hot reload
npm run build # Build TypeScript to JavaScript
npm run lint # Run ESLint
npm run format # Run Prettier
Ferramentas MCP
Este servidor fornece três ferramentas especializadas para diferentes necessidades de pesquisa na web:
1. full-web-search (Ferramenta Principal)
A ferramenta de pesquisa web mais abrangente que:
- Recebe uma consulta de pesquisa e um número opcional de resultados (1-10, padrão 5)
- Realiza uma pesquisa web (tenta Bing, depois Brave, depois DuckDuckGo se necessário)
- Busca o conteúdo completo da página de cada URL de resultado com processamento concorrente
- Retorna dados estruturados com resultados de pesquisa e conteúdo extraído
- Confiabilidade aprimorada: Recuperação de erros HTTP/2, timeouts reduzidos e melhor tratamento de erros
Exemplo de Uso:
{
"name": "full-web-search",
"arguments": {
"query": "TypeScript MCP server",
"limit": 3,
"includeContent": true
}
}
2. get-web-search-summaries (Alternativa Leve)
Uma alternativa leve para resultados de pesquisa rápidos:
- Recebe uma consulta de pesquisa e um número opcional de resultados (1-10, padrão 5)
- Realiza a mesma pesquisa multi-mecanismo otimizada que
full-web-search - Retorna apenas trechos/descrições dos resultados de pesquisa (sem extração de conteúdo)
- Mais rápido e eficiente para pesquisas rápidas
Exemplo de Uso:
{
"name": "get-web-search-summaries",
"arguments": {
"query": "TypeScript MCP server",
"limit": 5
}
}
3. get-single-web-page-content (Ferramenta Utilitária)
Uma ferramenta utilitária para extrair conteúdo de uma página web específica:
- Recebe uma única URL como entrada
- Segue a URL e extrai o conteúdo principal da página
- Remove navegação, anúncios e outros elementos que não são conteúdo
- Útil para obter conteúdo detalhado de uma página web conhecida
Exemplo de Uso:
{
"name": "get-single-web-page-content",
"arguments": {
"url": "https://example.com/article",
"maxContentLength": 5000
}
}
Uso Autônomo
Você também pode executar o servidor diretamente:
# If running from source
npm start
Documentação
Consulte API.md para detalhes técnicos completos.
Licença
Licença MIT - consulte LICENSE para detalhes.
Feedback
Este é um projeto de código aberto e recebemos feedback com prazer! Se você encontrar problemas ou tiver sugestões de melhorias, por favor:
- Abra uma issue no GitHub
- Envie um pull request