Skip to main content
Glama
AngelN-Halo

MCP Web Search Pro

by AngelN-Halo

MCP Web Search Pro

Un servidor de investigación web extendido y auto-alojado para clientes compatibles con MCP. Proporciona a un asistente de IA herramientas para descubrir páginas web, extraer contenido legible, renderizar aplicaciones JavaScript, usar Internet Archive cuando una página no está disponible y leer subtítulos de YouTube.

El servicio está diseñado para uso local o en redes de confianza. Es sin estado, no requiere claves API y expone el transporte MCP Streamable HTTP en el puerto 8082. Puede ejecutarse junto a un servidor MCP de búsqueda web más ligero en otro puerto.

Se ejecuta como un contenedor separado en el puerto 8082 junto al ligero mcp-web-search (puerto 8081). Apunte los clientes al que mejor se adapte a la tarea: si el profesional alguna vez se vuelve lento, el ligero sigue ahí, intacto.

Características

  • Búsqueda web a través de DuckDuckGo, con límites de resultados y selección de región.

  • Extracción de HTML legible a Markdown, eliminando navegación y contenido superfluo.

  • Detección automática de PDF y extracción de texto.

  • Renderizado con Chromium sin interfaz gráfica para páginas con React, Vue, SPA y otras páginas con mucho JavaScript.

  • Instantáneas de Wayback Machine para páginas no disponibles o modificadas.

  • Transcripciones de YouTube a partir de URLs o IDs de video, con marcas de tiempo opcionales.

  • Endpoint /health para verificar el contenedor y los procesos.

  • Transportes MCP Streamable HTTP y stdio, sin estado.

Related MCP server: Basic MCP Tools

Herramientas MCP

Herramienta

Descripción

web_search

Busca en la web a través de DuckDuckGo (ddgs). Argumentos: query (obligatorio), max_results (1–20), region.

web_fetch

Obtiene una URL → Markdown. Detecta automáticamente PDFs y extrae texto. Usa trafilatura para una extracción limpia de artículos (elimina navegación/anuncios/contenido superfluo). Argumentos: url, timeout.

web_fetch_js

Renderiza una página con mucho JavaScript / SPA con Chromium sin interfaz gráfica y luego extrae texto. Úselo cuando web_fetch devuelva una página vacía o incompleta. Más lento (~5–15s). Argumentos: url, wait_ms (0–15000, predeterminado 2500), timeout.

web_fetch_archive

Obtiene la instantánea más reciente (o con marca de tiempo) archivada de una URL desde Wayback Machine. Reintenta en caso de errores 503 transitorios. Argumentos: url, timestamp (opcional YYYYMMDDhhmm).

youtube_transcript

Obtiene la transcripción de un video de YouTube. Acepta una URL completa de YouTube o un ID de video de 11 caracteres. Argumentos: url, include_timestamps (booleano, predeterminado false).

Use web_fetch para páginas normales porque es más rápido. Use web_fetch_js cuando la primera herramienta devuelva un esqueleto vacío o contenido incompleto porque el sitio depende de JavaScript del lado del cliente.

Ejecutar con Docker

docker compose up -d --build

Verificar:

curl http://localhost:8082/health      # → {"status":"ok"}

Registros / reinicio / detención:

docker compose logs -f
docker compose restart
docker compose down

La primera compilación es grande (~400MB) porque descarga Chromium para Playwright. Las compilaciones posteriores reutilizan la capa en caché.

Conectar clientes

Apunte cualquier cliente compatible con MCP a:

http://<server-host>:8082/mcp

No se requieren cabeceras ni claves API. El servidor se ejecuta en modo sin estado.

Ejecutar localmente sin Docker

Se recomienda Python 3.12:

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
playwright install --with-deps chromium
python server.py

Ejecute el transporte HTTP directamente con:

python server.py --sse --host 127.0.0.1 --port 8082

A pesar del nombre histórico --sse, la implementación HTTP utiliza el transporte MCP Streamable HTTP sin estado.

Notas de rendimiento

  • Solo web_fetch_js es pesado en tiempo de ejecución: lanza Chromium por cada llamada (~5–15s). Las otras cuatro herramientas son Python puro ligeras y se mantienen rápidas.

  • shm_size: 1gb en docker-compose.yml evita fallos del sandbox de Chromium dentro del contenedor.

  • Para páginas normales sin JavaScript, use web_fetch (rápido); reserve web_fetch_js para sitios React/Vue/SPA que renderizan contenido con JavaScript.

Configuración

Para cambiar el puerto, edite tanto el mapeo ports: como command: en docker-compose.yml. Para habilitar el registro de solicitudes/respuestas sin procesar para depuración, cambie a la línea command: comentada con --verbose.

Validación

Este repositorio está pensado para ser enviado como código fuente y configuración de compilación Docker. Actualmente no hay un conjunto de pruebas automatizado. Las comprobaciones recomendadas del proyecto son:

git diff --check
docker compose config
docker compose up -d --build
curl http://localhost:8082/health
docker compose logs --tail=100
docker compose down

No publique este servicio directamente en Internet público sin agregar autenticación o colocarlo detrás de un proxy inverso de confianza. El modo HTTP se vincula a 0.0.0.0, permite solicitudes sin claves API y permite todos los orígenes; eso es conveniente para clientes MCP locales, pero no es una capa de control de acceso.

Notas de seguridad y operación

  • web_fetch y web_fetch_js pueden solicitar URLs HTTP(S) arbitrarias. Restrinja el acceso a la red o agregue protecciones de URL/DNS si usuarios no confiables pueden llamar al servicio.

  • Mantenga --verbose deshabilitado fuera de sesiones cortas de depuración local porque registra los cuerpos de solicitudes y respuestas.

  • Las dependencias usan restricciones de versión mínima. Fije o bloquee las versiones antes de confiar en compilaciones de producción reproducibles.

Archivos

  • server.py — el servidor MCP (5 herramientas)

  • requirements.txt — mcp, httpx, beautifulsoup4, markdownify, ddgs, trafilatura, pypdf, youtube-transcript-api, playwright

  • Dockerfile — Python 3.12-slim + Playwright Chromium

  • docker-compose.yml — servicio en el puerto 8082 con shm_size: 1gb

Licencia

Actualmente no se incluye ningún archivo de licencia. Agregue una licencia antes de aceptar contribuciones externas o redistribuir el proyecto.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Zero-auth multi-source research MCP server that enables web search, reading URLs, PDFs, GitHub repos, and querying Hacker News, Stack Overflow, Semantic Scholar, and YouTube transcripts without API keys.
    11
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    A self-hosted MCP server providing private web search, web page fetching, and current date/time tools, powered by a bundled SearXNG instance for API-key-free local search.
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A fully local MCP server that provides web search via self-hosted SearXNG and page-to-markdown conversion (static and JS-rendered), all aggregated behind a single endpoint for use with AI assistants.
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server enabling local-first web search, fetch, extract, and caching with citeable excerpts, no API key required. Supports research workflows for agents and apps.
    105 npm
    1
    MIT