Web Search MCP Server: Búsqueda Web Local de LLM sin Claves API

Servidor Web Search MCP

Un Servidor Web Search MCP es un servidor MCP (Modelo de Protocolo de Contexto) ligero basado en TypeScript que brinda capacidades de búsqueda web en tiempo real y en local a los LLMs alojados localmente. Elimina la necesidad de APIs pagas al conectarse directamente a motores de búsqueda populares—Bing, Brave y DuckDuckGo—y extraer contenido completo de las páginas o fragmentos ligeros.

Por qué usarlo?

Requisito Por qué importa
Sin claves API Muchas implementaciones de LLM evitan costos externos y latencia potencial.
Estrategia multi‑motor Cambia de motor cuando falla otro.
Extracción de página completa Obtiene el artículo completo para un contexto de alta calidad.
Procesamiento concurrente Recupera múltiples resultados en paralelo, reduciendo el tiempo total de espera.
Soporte Playwright Simula navegación humana para evitar detección de bots.
Configurable vía variables de entorno Ajusta timeout, recuento de navegadores y umbrales de relevancia sin tocar el código.

Instalación Rápida

# 1. Clonar el repositorio
git clone https://github.com/mrkrsl/web-search-mcp.git
cd web-search-mcp

# 2. Instalar Node.js v18+ y npm v8+
#    (Usa instaladores oficiales o nvm para gestionar versiones.)

# 3. Instalar dependencias y navegadores Playwright
npm install
npx playwright install

# 4. Compilar el código TypeScript
npm run build

# 5. Ejecutar el servidor (modo desarrollo)
npm start   # o "npm run dev" para recarga en caliente

Consejo: En Windows, reemplaza las barras inclinadas y usa comandos de PowerShell.

Configuración

Crea o edita mcp.json en la raíz de tu proyecto (o cualquier ubicación que prefieras) para indicar a tu cliente MCP dónde encontrar el binario del servidor.

{
  "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"
      }
    }
  }
}
  • command – típicamente node.
  • args – ruta absoluta a dist/index.js.
  • env – variables de entorno opcionales para afinar parámetros.

Variables de entorno comunes

Variable Valor por defecto Propósito
MAX_CONTENT_LENGTH 500000 Máximo de caracteres a devolver de la extracción de página.
DEFAULT_TIMEOUT 6000 Tiempo de espera de la solicitud en milisegundos.
MAX_BROWSERS 3 Máximo de instancias de navegador concurrentes.
BROWSER_TYPES chromium,firefox Los navegadores a lanzar.
ENABLE_RELEVANCE_CHECKING true Activa la puntuación de calidad de búsqueda.
RELEVANCE_THRESHOLD 0.3 Puntaje mínimo de calidad.
FORCE_MULTI_ENGINE_SEARCH false Obliga a consultar todos los motores incluso si uno responde.

Visión General de la Herramienta MCP

El servidor expone tres herramientas distintas que pueden ser llamadas a través de cualquier cliente compatible con MCP (LM Studio, LibreChat, o tu propia aplicación).

Característica Detalle
Lógica de búsqueda Prioriza Bing → Brave → DuckDuckGo.
Carga útil del resultado Array de objetos con url, title, description, y opcionalmente content.
Personalización limit (1‑10), includeContent (booleano).

Ejemplo de solicitud

{
  "name": "full-web-search",
  "arguments": {
    "query": "TypeScript MCP server",
    "limit": 3,
    "includeContent": true
  }
}

2. get-web-search-summaries

Misma estrategia de búsqueda que full-web-search pero devuelve solo los fragmentos/descripciones—sin contenido completo de la página. Ideal para búsquedas rápidas o cuando el ancho de banda es limitado.

Ejemplo de solicitud

{
  "name": "get-web-search-summaries",
  "arguments": {
    "query": "best TypeScript web search",
    "limit": 5
  }
}

3. get-single-web-page-content

Útil cuando ya conoces la URL deseada y solo necesitas el contenido principal.

Ejemplo de solicitud

{
  "name": "get-single-web-page-content",
  "arguments": {
    "url": "https://example.com/article.html",
    "maxContentLength": 5000
  }
}

Usándolo con un Cliente LLM Local

A continuación se muestra un ejemplo minimalista para integrar el servidor en una configuración de LibreChat.

# librechat.yaml
mcpServers:
  web-search:
    type: stdio
    command: node
    args:
      - /app/mcp/web-search-mcp/dist/index.js
    env:
      MAX_CONTENT_LENGTH: "10000"
    serverInstructions: true

En un mensaje de chat:

{{{ full-web-search(query="nodejs web search", limit=5, includeContent=true) }}}

El LLM recibirá el JSON estructurado con URLs, títulos, descripciones y contenido completo, que se puede usar como contexto para la generación.

Consejos de rendimiento

Ajuste Por qué ayuda
DEFAULT_TIMEOUT = 4000 Fallos más rápidos en redes lentas; reduce tiempo total de ida y vuelta.
MAX_BROWSERS = 1 Reduce el consumo de memoria; útil en entornos con pocos recursos.
BROWSER_HEADLESS = true Elimina el sobrecoste de renderizado en modo sin cabeza.
RELEVANCE_THRESHOLD = 0.5 Filtro más estricto para obtener resultados de mayor calidad.

Recuerda: Ajustar estos valores depende de tu red, CPU y el tamaño de las peticiones LLM.

Solución de problemas

Síntoma Causa Posible Solución
npm install falla Node/NPM desactualizados Actualiza a Node 18+ y NPM 8+
La instalación del navegador se queda colgada Restricciones de proxy/red Ejecuta npx playwright install --with-deps detrás de VPN o configura proxies
Resultados de búsqueda vacíos Motor bloqueado Incrementa BROWSER_FALLBACK_THRESHOLD o activa FORCE_MULTI_ENGINE_SEARCH
Memoria insuficiente Demasiados navegadores Reduce MAX_BROWSERS
Errores inesperados HTTP/2 Problema de soporte de protocolo El servidor cambia automáticamente; asegúrate de que BROWSER_HEADLESS=true

Ampliando el Servidor

El código es modular. Se pueden añadir nuevas herramientas fácilmente:

  1. Crea un archivo bajo src/tools/ implementando una función run.
  2. Expórtalo en src/index.ts.
  3. Actualiza package.json y mcp.json si es necesario.

Consejo: Aprovecha la validación de esquemas zod ya presente para garantizar los argumentos.

Licencia

El proyecto está licenciado bajo la Licencia MIT. Siéntete libre de bifurcar, modificar e incorporar en tus propias tuberías.

Conclusiones

El Servidor Web Search MCP cierra una brecha significativa para los desarrolladores de LLMs locales: navegación web instantánea y sin API. Combinando varios motores de búsqueda, extracción de contenido sofisticada e interfaz MCP limpia, ofrece tanto profundidad (contenido completo) como velocidad (modo resumen) en un solo repositorio. Ya sea que desarrolles un asistente de investigación pequeño o un chatbot de producción, esta herramienta brinda a tu LLM el conocimiento actualizado que necesita sin costos externos.

¡Feliz búsqueda!

Artículo original: Ver original

Compartir este artículo