Fetcher MCP

Obtén y extrae contenido web utilizando un navegador sin interfaz gráfica Playwright, con soporte para extracción inteligente y salida flexible.

Documentación

Fetcher MCP Icon

中文 | Deutsch | Español | français | 日本語 | 한국어 | Português | Русский

Fetcher MCP

Servidor MCP para obtener contenido de páginas web utilizando el navegador headless de Playwright.

🌟 Recomendado: OllaMan - Potente administrador de modelos de IA Ollama.

Ventajas

  • Soporte de JavaScript: A diferencia de los raspadores web tradicionales, Fetcher MCP utiliza Playwright para ejecutar JavaScript, lo que le permite manejar contenido web dinámico y aplicaciones web modernas.

  • Extracción Inteligente de Contenido: El algoritmo Readability integrado extrae automáticamente el contenido principal de las páginas web, eliminando anuncios, navegación y otros elementos no esenciales.

  • Formato de Salida Flexible: Admite formatos de salida HTML y Markdown, lo que facilita la integración con diversas aplicaciones posteriores.

  • Procesamiento en Paralelo: La herramienta fetch_urls permite la obtención concurrente de múltiples URLs, mejorando significativamente la eficiencia para operaciones por lotes.

  • Optimización de Recursos: Bloquea automáticamente recursos innecesarios (imágenes, hojas de estilo, fuentes, medios) para reducir el uso de ancho de banda y mejorar el rendimiento.

  • Manejo Robusto de Errores: El manejo integral de errores y el registro aseguran una operación confiable incluso al tratar con páginas web problemáticas.

  • Parámetros Configurables: Control detallado sobre tiempos de espera, extracción de contenido y formato de salida para adaptarse a diferentes casos de uso.

Inicio Rápido

Ejecute directamente con npx:

npx -y fetcher-mcp

Configuración inicial: instale el navegador requerido ejecutando el siguiente comando en su terminal:

npx playwright install chromium

Transporte HTTP y SSE

Use el parámetro --transport=http para iniciar simultáneamente los servicios de endpoint Streamable HTTP y endpoint SSE:

npx -y fetcher-mcp --log --transport=http --host=0.0.0.0 --port=3000

Después del inicio, el servidor proporciona los siguientes endpoints:

  • /mcp - Endpoint Streamable HTTP (protocolo MCP moderno)
  • /sse - Endpoint SSE (protocolo MCP heredado)

Los clientes pueden elegir el método de conexión según sus necesidades.

Modo de Depuración

Ejecute con la opción --debug para mostrar la ventana del navegador para depuración:

npx -y fetcher-mcp --debug

Configuración de MCP

Configure este servidor MCP en Claude Desktop:

En MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json

En Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "fetcher": {
      "command": "npx",
      "args": ["-y", "fetcher-mcp"]
    }
  }
}

Implementación con Docker

Ejecución con Docker

docker run -p 3000:3000 ghcr.io/jae-jae/fetcher-mcp:latest

Implementación con Docker Compose

Cree un archivo docker-compose.yml:

version: "3.8"

services:
  fetcher-mcp:
    image: ghcr.io/jae-jae/fetcher-mcp:latest
    container_name: fetcher-mcp
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
    # Using host network mode on Linux hosts can improve browser access efficiency
    # network_mode: "host"
    volumes:
      # For Playwright, may need to share certain system paths
      - /tmp:/tmp
    # Health check
    healthcheck:
      test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000"]
      interval: 30s
      timeout: 10s
      retries: 3

Luego ejecute:

docker-compose up -d

Características

  • fetch_url - Recupera el contenido de una página web desde una URL especificada

    • Utiliza el navegador headless de Playwright para analizar JavaScript
    • Admite la extracción inteligente del contenido principal y la conversión a Markdown
    • Admite los siguientes parámetros:
      • url: La URL de la página web a obtener (parámetro requerido)
      • timeout: Tiempo de espera de carga de la página en milisegundos, el valor predeterminado es 30000 (30 segundos)
      • waitUntil: Especifica cuándo se considera completada la navegación, opciones: 'load', 'domcontentloaded', 'networkidle', 'commit', el valor predeterminado es 'load'
      • extractContent: Si extraer inteligentemente el contenido principal, el valor predeterminado es true
      • maxLength: Longitud máxima del contenido devuelto (en caracteres), el valor predeterminado es sin límite
      • returnHtml: Si devolver contenido HTML en lugar de Markdown, el valor predeterminado es false
      • waitForNavigation: Si esperar navegación adicional después de la carga inicial de la página (útil para sitios con verificación anti-bot), el valor predeterminado es false
      • navigationTimeout: Tiempo máximo de espera para navegación adicional en milisegundos, el valor predeterminado es 10000 (10 segundos)
      • disableMedia: Si deshabilitar recursos multimedia (imágenes, hojas de estilo, fuentes, medios), el valor predeterminado es true
      • debug: Si habilitar el modo de depuración (mostrando la ventana del navegador), anula el indicador de línea de comandos --debug si se especifica
  • fetch_urls - Recupera por lotes el contenido de múltiples URLs en paralelo

    • Utiliza obtención paralela con múltiples pestañas para mejorar el rendimiento
    • Devuelve resultados combinados con una separación clara entre páginas web
    • Admite los siguientes parámetros:
      • urls: Matriz de URLs a obtener (parámetro requerido)
      • Otros parámetros son los mismos que fetch_url
  • browser_install - Instala automáticamente el binario del navegador Chromium de Playwright

    • Instala el binario de Chromium requerido cuando no está disponible
    • Se sugiere automáticamente cuando ocurren errores de instalación del navegador
    • Admite los siguientes parámetros:
      • withDeps: Instala las dependencias del sistema requeridas por el navegador Chromium, el valor predeterminado es false
      • force: Fuerza la instalación incluso si Chromium ya está instalado, el valor predeterminado es false

Consejos

Manejo de Escenarios Especiales de Sitios Web

Tratamiento de Mecanismos Anti-Raspado

  • Esperar la Carga Completa: Para sitios web que utilizan CAPTCHA, redirecciones u otros mecanismos de verificación, incluya en su indicación:

    Please wait for the page to fully load
    

    Esto utilizará el parámetro waitForNavigation: true.

  • Aumentar la Duración del Tiempo de Espera: Para sitios web que cargan lentamente:

    Please set the page loading timeout to 60 seconds
    

    Esto ajusta los parámetros timeout y navigationTimeout en consecuencia.

Ajustes de Recuperación de Contenido

  • Preservar la Estructura HTML Original: Cuando la extracción de contenido podría fallar:

    Please preserve the original HTML content
    

    Establece extractContent: false y returnHtml: true.

  • Obtener el Contenido Completo de la Página: Cuando el contenido extraído es demasiado limitado:

    Please fetch the complete webpage content instead of just the main content
    

    Establece extractContent: false.

  • Devolver el Contenido como HTML: Cuando se necesita el formato HTML en lugar del Markdown predeterminado:

    Please return the content in HTML format
    

    Establece returnHtml: true.

Depuración y Autenticación

Habilitación del Modo de Depuración

  • Activación Dinámica de Depuración: Para mostrar la ventana del navegador durante una operación de obtención específica:
    Please enable debug mode for this fetch operation
    
    Esto establece debug: true incluso si el servidor se inició sin el indicador --debug.

Uso de Cookies Personalizadas para Autenticación

  • Inicio de Sesión Manual: Para iniciar sesión con sus propias credenciales:

    Please run in debug mode so I can manually log in to the website
    

    Establece debug: true o utiliza el indicador --debug, manteniendo la ventana del navegador abierta para el inicio de sesión manual.

  • Interacción con el Navegador de Depuración: Cuando el modo de depuración está habilitado:

    1. La ventana del navegador permanece abierta
    2. Puede iniciar sesión manualmente en el sitio web con sus credenciales
    3. Después de completar el inicio de sesión, el contenido se obtendrá con su sesión autenticada
  • Habilitar Depuración para Solicitudes Específicas: Incluso si el servidor ya está en ejecución, puede habilitar el modo de depuración para una solicitud específica:

    Please enable debug mode for this authentication step
    

    Establece debug: true solo para esta solicitud específica, abriendo la ventana del navegador para el inicio de sesión manual.

Desarrollo

Instalar Dependencias

npm install

Instalar el Navegador de Playwright

Instale los navegadores necesarios para Playwright:

npm run install-browser

Compilar el Servidor

npm run build

Depuración

Use MCP Inspector para depurar:

npm run inspector

También puede habilitar el modo de navegador visible para depuración:

node build/index.js --debug

Proyectos Relacionados

  • g-search-mcp: Un potente servidor MCP para búsqueda en Google que permite búsquedas paralelas con múltiples palabras clave simultáneamente. Perfecto para operaciones de búsqueda por lotes y recopilación de datos.

Licencia

Licenciado bajo la Licencia MIT

Powered by DartNode