Web Search MCP

Extrae resultados de búsqueda de Google utilizando un navegador sin interfaz gráfica. Requiere que Chrome esté instalado.

Documentación

Web Search MCP

Ask DeepWiki

Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona funcionalidad de búsqueda web mediante el raspado de resultados de Google, DuckDuckGo y Bing a través de un navegador sin interfaz gráfica.

Install MCP Server

Características

  • Búsqueda Multi-Motor: Busca en Google, DuckDuckGo y Bing con respaldo automático cuando un motor está bloqueado o no devuelve resultados
  • Resultados Estructurados: Títulos, URLs, dominios, fragmentos y clasificaciones — con URLs de redirección resueltas a sus destinos reales
  • Contenido de Páginas Web: Obtiene y extrae contenido de texto de cualquier página web
  • Backends de Navegador Conectables: Selenium + Chrome sin interfaz gráfica (predeterminado) o el navegador ligero Obscura sin interfaz gráfica, seleccionado mediante una variable de entorno
  • Compatible con MCP: Totalmente compatible con Claude Desktop y otros clientes MCP

Herramientas Disponibles

search_web

Busca en la web a través de múltiples motores (Google → DuckDuckGo → Bing) con respaldo automático y devuelve resultados estructurados.

Parámetros:

  • query (cadena): La cadena de consulta de búsqueda
  • max_results (entero, opcional): Número máximo de resultados a devolver (predeterminado: 10, máximo: 100)
  • include_snippets (booleano, opcional): Si se deben incluir fragmentos de texto (predeterminado: verdadero)

Devuelve:

  • Lista de resultados de búsqueda con:
    • title: Título de la página
    • url: URL completa (envoltorios de redirección resueltos al destino real)
    • domain: Nombre de dominio
    • snippet: Fragmento de texto (si está habilitado)
    • rank: Clasificación del resultado de búsqueda
    • source_engine: Qué motor produjo el resultado (google, duckduckgo o bing)

get_webpage_content

Obtiene y devuelve el contenido de texto de una página web.

Parámetros:

  • url (cadena): La URL de la página web a obtener
  • max_length (entero, opcional): Longitud máxima del contenido (predeterminado: 5000, máximo: 20000)

Devuelve:

  • Diccionario con:
    • url: La URL solicitada
    • title: Título de la página
    • content: Contenido de texto extraído
    • length: Longitud del contenido en caracteres

get_search_engine_status

Informa el backend de navegador activo y la disponibilidad de cada motor de búsqueda.

Devuelve:

  • Diccionario con una clave backend (selenium o obscura) más cada nombre de motor asignado a available o blocked.

reset_search_engines

Limpia la lista de motores marcados como bloqueados durante la sesión (útil si un motor se recupera).

Devuelve:

  • Un mensaje de estado como cadena.

Instalación

  1. Instalar dependencias:

    # Using uv (recommended)
    uv sync
    
    # Or using pip
    pip install -e .
    
  2. Instalar un backend de navegador (elige uno):

    • Selenium (predeterminado) — requiere Chrome:

      • En macOS: brew install --cask google-chrome
      • En Ubuntu: sudo apt-get install google-chrome-stable
      • En Windows: Descargar desde el sitio web de Google Chrome

      ChromeDriver se descarga y gestiona automáticamente mediante webdriver-manager.

    • Obscura — no requiere Chrome. Consulta la sección Backends de Navegador a continuación.

Uso

Ejecutar el Servidor MCP

# Run directly
python main.py

# Or using the installed script
web-search-mcp

El servidor se iniciará y escuchará conexiones MCP.

Uso con Claude Desktop

Añade esta configuración a la configuración MCP de tu Claude Desktop:

{
  "mcpServers": {
    "web-search-mcp": {
      "command": "uvx",
      "args": ["git+https://github.com/pranavms13/web-search-mcp"]
    }
  }
}

Ejemplo de Uso en Claude

Una vez conectado, puedes usar las herramientas de esta manera:

Search for "python web scraping tutorials" and show me the top 5 results.

Get the content from this webpage: https://example.com/article

Configuración

El buscador web usa estas opciones de Chrome por defecto:

  • Modo sin interfaz gráfica (sin ventana de navegador visible)
  • Tamaño de ventana: 1920x1080
  • Agente de usuario: Navegador Chrome moderno
  • Banderas de seguridad para ejecución en contenedores

Backends de Navegador

El servidor puede renderizar páginas con uno de dos backends intercambiables, seleccionados mediante la variable de entorno BROWSER_BACKEND:

BackendValorNotas
Seleniumselenium (predeterminado)Chrome sin interfaz gráfica mediante Selenium + webdriver-manager.
ObscuraobscuraObscura navegador sin interfaz gráfica mediante su CLI. Ligero, sigiloso, sin necesidad de Chrome.

Ambos backends producen HTML completamente renderizado con JS, que luego se analiza con BeautifulSoup, por lo que los resultados de búsqueda son idénticos en forma independientemente del backend.

Uso de Obscura

  1. Instala el binario de Obscura (consulta sus lanzamientos), por ejemplo en macOS:

    curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-x86_64-macos.tar.gz
    tar xzf obscura-x86_64-macos.tar.gz
    
  2. Ejecuta el servidor con Obscura seleccionado:

    BROWSER_BACKEND=obscura web-search-mcp
    

Si obscura no está en tu PATH, apunta explícitamente a él con OBSCURA_BIN=/full/path/to/obscura. Cuando no se puede encontrar el binario, el servidor registra una advertencia y vuelve automáticamente al backend de Selenium.

El backend activo es informado por la herramienta get_search_engine_status bajo la clave backend.

Manejo de Errores

La herramienta incluye manejo integral de errores para:

  • Tiempos de espera de red
  • Fallos de WebDriver
  • Errores de análisis de páginas
  • URLs inválidas

Los errores se registran y se proporcionan respaldos elegantes.

Requisitos

  • Python 3.10+
  • Un backend de navegador: Chrome (Selenium) o el binario de Obscura
  • Conexión a Internet

Dependencias

  • fastmcp: Marco de trabajo del servidor MCP
  • selenium: Automatización de navegador web (backend Selenium)
  • beautifulsoup4: Análisis de HTML
  • webdriver-manager: Gestión del controlador de Chrome (backend Selenium)
  • lxml: Analizador XML/HTML

El backend de Obscura no tiene dependencia de Python — se invoca como un binario CLI externo.

Limitaciones

  • Los motores de búsqueda pueden limitar la velocidad o bloquear el acceso automatizado; el respaldo multi-motor mitiga pero no elimina esto
  • Google en particular a menudo bloquea tráfico sin interfaz gráfica no sigiloso — DuckDuckGo y Bing típicamente permanecen disponibles como respaldos
  • Los resultados pueden variar según la ubicación y la clasificación de cada motor
  • El backend de Selenium requiere Chrome; el backend de Obscura requiere el binario de Obscura

Desarrollo

Para modificar o ampliar la funcionalidad:

  1. Clona el repositorio
  2. Instala en modo de desarrollo: uv sync o pip install -e .
  3. Haz tus cambios
  4. Ejecuta la suite de pruebas: uv run pytest test.py -q
  5. Prueba de humo del servidor: python main.py (o BROWSER_BACKEND=obscura OBSCURA_BIN=/path/to/obscura python main.py)

Licencia

Este proyecto está licenciado bajo la Licencia MIT. Puedes consultarla en - LICENCIA

Contribuciones

¡Las contribuciones son bienvenidas! No dudes en enviar una Solicitud de Extracción (Pull Request).