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
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.
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úsquedamax_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áginaurl: URL completa (envoltorios de redirección resueltos al destino real)domain: Nombre de dominiosnippet: Fragmento de texto (si está habilitado)rank: Clasificación del resultado de búsquedasource_engine: Qué motor produjo el resultado (google,duckduckgoobing)
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 obtenermax_length(entero, opcional): Longitud máxima del contenido (predeterminado: 5000, máximo: 20000)
Devuelve:
- Diccionario con:
url: La URL solicitadatitle: Título de la páginacontent: Contenido de texto extraídolength: 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(seleniumoobscura) más cada nombre de motor asignado aavailableoblocked.
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
-
Instalar dependencias:
# Using uv (recommended) uv sync # Or using pip pip install -e . -
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.
- En macOS:
-
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:
| Backend | Valor | Notas |
|---|---|---|
| Selenium | selenium (predeterminado) | Chrome sin interfaz gráfica mediante Selenium + webdriver-manager. |
| Obscura | obscura | Obscura 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
-
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 -
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 MCPselenium: Automatización de navegador web (backend Selenium)beautifulsoup4: Análisis de HTMLwebdriver-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:
- Clona el repositorio
- Instala en modo de desarrollo:
uv syncopip install -e . - Haz tus cambios
- Ejecuta la suite de pruebas:
uv run pytest test.py -q - Prueba de humo del servidor:
python main.py(oBROWSER_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).