Last translated: 26 Jun 2025

Translation Not Available Yet

This repository's README hasn't been translated yet. Once translated, it will be easier to read and understand in your native language (中文).

After translating, add the links to README so others can view it directly.

Fetcher MCP Icon

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

Fetcher MCP

MCP-сервер для получения содержимого веб-страниц с использованием безголового браузера Playwright.

🌟 Рекомендуем: OllaMan — мощный менеджер моделей AI Ollama.

Преимущества

  • Поддержка JavaScript: В отличие от традиционных веб-скрейперов, Fetcher MCP использует Playwright для выполнения JavaScript, что позволяет работать с динамическим контентом и современными веб-приложениями.

  • Интеллектуальное извлечение контента: Встроенный алгоритм Readability автоматически извлекает основной контент веб-страниц, удаляя рекламу, навигацию и другие несущественные элементы.

  • Гибкий формат вывода: Поддерживает вывод как в HTML, так и в Markdown, что упрощает интеграцию с различными приложениями.

  • Параллельная обработка: Инструмент fetch_urls позволяет одновременно загружать несколько URL, значительно повышая эффективность пакетных операций.

  • Оптимизация ресурсов: Автоматически блокирует ненужные ресурсы (изображения, таблицы стилей, шрифты, медиа) для снижения нагрузки на пропускную способность и повышения производительности.

  • Надежная обработка ошибок: Комплексная система обработки ошибок и логирования обеспечивает стабильную работу даже с проблемными веб-страницами.

  • Настраиваемые параметры: Точный контроль над таймаутами, извлечением контента и форматированием вывода для различных сценариев использования.

Быстрый старт

Запуск напрямую с помощью npx:

npx -y fetcher-mcp

Первоначальная настройка — установите необходимый браузер, выполнив следующую команду в терминале:

npx playwright install chromium

HTTP и SSE транспорт

Используйте параметр --transport=http для одновременного запуска потокового HTTP-эндпоинта и SSE-эндпоинта:

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

После запуска сервер предоставляет следующие эндпоинты:

  • /mcp — Потоковый HTTP-эндпоинт (современный протокол MCP)
  • /sse — SSE-эндпоинт (устаревший протокол MCP)

Клиенты могут выбрать подходящий метод подключения в зависимости от своих потребностей.

Режим отладки

Запустите с опцией --debug, чтобы отобразить окно браузера для отладки:

npx -y fetcher-mcp --debug

Настройка MCP

Настройте этот MCP-сервер в Claude Desktop:

На MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json

На Windows: %APPDATA%/Claude/claude_desktop_config.json

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

Развертывание в Docker

Запуск с Docker

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

Развертывание с Docker Compose

Создайте файл 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

Затем выполните:

docker-compose up -d

Возможности

  • fetch_url — Получение содержимого веб-страницы по указанному URL

    • Использует безголовый браузер Playwright для обработки JavaScript
    • Поддерживает интеллектуальное извлечение основного контента и преобразование в Markdown
    • Поддерживает следующие параметры:
      • url: URL веб-страницы для загрузки (обязательный параметр)
      • timeout: Таймаут загрузки страницы в миллисекундах, по умолчанию 30000 (30 секунд)
      • waitUntil: Определяет, когда навигация считается завершенной, варианты: 'load', 'domcontentloaded', 'networkidle', 'commit', по умолчанию 'load'
      • extractContent: Извлекать ли основной контент интеллектуально, по умолчанию true
      • maxLength: Максимальная длина возвращаемого контента (в символах), по умолчанию без ограничений
      • returnHtml: Возвращать ли контент в формате HTML вместо Markdown, по умолчанию false
      • waitForNavigation: Ожидать ли дополнительную навигацию после первоначальной загрузки страницы (полезно для сайтов с антибот-проверкой), по умолчанию false
      • navigationTimeout: Максимальное время ожидания дополнительной навигации в миллисекундах, по умолчанию 10000 (10 секунд)
      • disableMedia: Отключать ли медиаресурсы (изображения, таблицы стилей, шрифты, медиа), по умолчанию true
      • debug: Включить ли режим отладки (показывать окно браузера), переопределяет флаг --debug в командной строке, если указан
  • fetch_urls — Пакетное получение содержимого нескольких URL параллельно

    • Использует параллельную загрузку в нескольких вкладках для повышения производительности
    • Возвращает объединенные результаты с четким разделением между веб-страницами
    • Поддерживает следующие параметры:
      • urls: Массив URL для загрузки (обязательный параметр)
      • Остальные параметры аналогичны fetch_url

Советы

Обработка особых сценариев веб-сайтов

Борьба с антискрейпинг-механизмами

  • Ожидание полной загрузки: Для сайтов с CAPTCHA, редиректами или другими проверочными механизмами укажите в запросе:

    Пожалуйста, дождитесь полной загрузки страницы
    

    Это активирует параметр waitForNavigation: true.

  • Увеличение таймаута: Для медленно загружающихся сайтов:

    Пожалуйста, установите таймаут загрузки страницы в 60 секунд
    

    Это соответствующим образом настроит параметры timeout и navigationTimeout.

Настройка извлечения контента

  • Сохранение оригинальной HTML-структуры: Когда извлечение контента может завершиться неудачей:

    Пожалуйста, сохраните оригинальное HTML-содержимое
    

    Устанавливает extractContent: false и returnHtml: true.

  • Получение полного содержимого страницы: Когда извлеченного контента недостаточно:

    Пожалуйста, загрузите полное содержимое веб-страницы, а не только основной контент
    

    Устанавливает extractContent: false.

  • Возврат контента в HTML: Когда требуется формат HTML вместо Markdown:

    Пожалуйста, верните контент в формате HTML
    

    Устанавливает returnHtml: true.

Отладка и аутентификация

Включение режима отладки

  • Динамическая активация отладки: Для отображения окна браузера во время конкретной операции:
    Пожалуйста, включите режим отладки для этой операции
    
    Устанавливает debug: true, даже если сервер был запущен без флага --debug.

Использование пользовательских куки для аутентификации

  • Ручной вход: Для входа с использованием своих учетных данных:

    Пожалуйста, запустите в режиме отладки, чтобы я мог вручную войти на сайт
    

    Устанавливает debug: true или использует флаг --debug, оставляя окно браузера открытым для ручного входа.

  • Взаимодействие с браузером в режиме отладки: Когда режим отладки включен:

    1. Окно браузера остается открытым
    2. Вы можете вручную войти на сайт, используя свои учетные данные
    3. После входа контент будет загружен с вашей аутентифицированной сессией
  • Включение отладки для конкретных запросов: Даже если сервер уже запущен, вы можете включить режим отладки для конкретного запроса:

    Пожалуйста, включите режим отладки для этого шага аутентификации
    

    Устанавливает debug: true только для этого запроса, открывая окно браузера для ручного входа.

Разработка

Установка зависимостей

npm install

Установка браузера Playwright

Установите браузеры, необходимые для Playwright:

npm run install-browser

Сборка сервера

npm run build

Отладка

Используйте MCP Inspector для отладки:

npm run inspector

Вы также можете включить видимый режим браузера для отладки:

node build/index.js --debug

Связанные проекты

  • g-search-mcp: Мощный MCP-сервер для поиска в Google, позволяющий одновременно выполнять поиск по нескольким ключевым словам. Идеально подходит для пакетных операций поиска и сбора данных.

Лицензия

Распространяется под лицензией MIT License

Powered by DartNode