YouTube MCP Server
YouTube MCP Server
Python-сервер на базе Model Context Protocol (MCP), который извлекает образовательный контент из видео YouTube — транскрипты и визуально значимые кадры — и предоставляет его ИИ-ассистентам, таким как Claude, ChatGPT и любому MCP-совместимому клиенту.
Что он делает
Дайте ИИ-ассистенту URL видео YouTube, и он сможет:
Прочитать транскрипт — Полные субтитры с таймкодами, готовые для суммаризации, Q&A или анализа контента.
Увидеть видео — Конвейер компьютерного зрения из 5 этапов извлекает наиболее информативные кадры, оценивает их качество, удаляет дубликаты и возвращает их в виде JPEG-изображений в кодировке base64, которые ИИ может «увидеть».
Без ручного скачивания. Без копирования и вставки. Просто вставьте URL и задавайте вопросы.
Related MCP server: YouTube Transcript MCP Server
Инструменты
get_transcript
Получает субтитры видео с помощью youtube-transcript-api.
Параметры:
url(обязательный) — URL видео YouTubelanguage(необязательный, по умолчанию:"en") — Предпочитаемый язык субтитровprefer_manual(необязательный, по умолчанию:true) — Предпочитать субтитры, созданные вручную, автоматически сгенерированным
Возвращает: Чистый блок транскрипта с таймкодами:
[00:00:00] So I want to start by offering you a free ...
[00:00:15] The key insight here is that ...get_video_frames
Запускает полный конвейер анализа видео, чтобы выявить наиболее значимые визуальные моменты.
Параметры:
url(обязательный) — URL видео YouTubemax_frames(необязательный, по умолчанию:20) — Максимальное количество возвращаемых кадров (жёсткий лимит:40)scene_threshold(необязательный, по умолчанию:0.25) — Чувствительность обнаружения смены сцен FFmpegoutput_width(необязательный, по умолчанию:640) — Ширина возвращаемых JPEG-изображений (высота пропорциональна)min_importance_score(необязательный, по умолчанию:0.35) — Минимальный совокупный балл качества
Возвращает:
Метаданные:
video_id,duration_seconds,pipeline_stats,fallback_usedБлоки кадров: каждый содержит
timestamp_ms,composite_scoreи JPEG-изображение в кодировке base64Индекс всех возвращённых кадров с их таймкодами и баллами
Конвейер обработки кадров (5 этапов)
Этап | Модуль | Что делает |
1. Загрузка |
| Загружает видео через |
2. Извлечение |
| Обнаруживает смену сцен с помощью |
3. Оценка |
| Оценивает каждый кадр по 5 сигналам: стабильность движения, энтропия, плотность краёв, прямоугольная плотность и количество слов в OCR |
4. Дедупликация |
| Удаляет почти идентичные кадры с помощью DCT-перцептивного хеширования (pHash) с порогом по расстоянию Хэмминга |
5. Загрузка |
| Изменяет размер кадров, сжимает в JPEG (качество 85) и кодирует в base64 для передачи через MCP |
Быстрый старт
Предварительные требования
Python 3.11
ffmpeg — обработка видео
Tesseract OCR — распознавание текста на кадрах
macOS:
brew install ffmpeg tesseractUbuntu / Linux:
sudo apt-get install ffmpeg tesseract-ocr tesseract-ocr-engWindows: Скачайте ffmpeg и Tesseract, затем добавьте оба в переменную PATH.
Проверка:
ffmpeg -version
tesseract --versionУстановка
# Clone the repository
git clone https://github.com/Ayush-Mamgain/youtube-mcp-server.git
cd youtube-mcp-server
# Create a virtual environment
python3 -m venv venv
source venv/bin/activate # macOS / Linux
# venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txtКонфигурация
Создайте файл .env в корне проекта:
LOG_LEVEL=DEBUG
MCP_HTTP_PORT=8000Дополнительная настройка (используются значения по умолчанию из config.py, если параметры не указаны):
Переменная | Значение по умолчанию | Описание |
|
| Отклонять видео длиннее этого значения (секунды) |
|
| Жёсткий лимит на количество возвращаемых кадров |
|
| Порог смены сцен FFmpeg |
|
| Минимальный совокупный балл кадра |
|
| Ширина возвращаемых JPEG-изображений |
Запуск сервера
python server.pyСервер запускается по адресу http://localhost:8000.
Подключение к Claude.ai (локально)
Запустите сервер:
python server.pyПерейдите в Claude.ai → Настройки → Интеграции → Добавить MCP-сервер
Введите:
http://localhost:8000/mcp
Чтобы облачный Claude мог получить доступ к вашему серверу, необходимо опубликовать его в открытом доступе (см. раздел «Развёртывание» ниже).
API-эндпоинты
Эндпоинт | Метод | Описание |
| GET | Проверка работоспособности — проверяет наличие |
| POST | Потоковый HTTP-эндпоинт для вызовов инструментов MCP |
Структура проекта
youtube-mcp-server/
├── server.py # MCP entry point — FastMCP + Starlette HTTP server
├── config.py # Loads and validates environment variables
├── logger.py # stderr-only logging
├── url_parser.py # Validates YouTube URLs and extracts video IDs
├── transcript.py # Fetches captions via youtube-transcript-api
├── downloader.py # Phase 1 — video download with yt-dlp
├── frame_extractor.py # Phase 2 — scene-change frame extraction via ffmpeg
├── scorer.py # Phase 3 — multi-signal frame scoring (OpenCV + Tesseract)
├── deduplicator.py # Phase 4 — perceptual-hash deduplication
├── frame_loader.py # Phase 5 — resize, JPEG encode, base64
├── video_frames.py # Orchestrates Phases 1–5 with semaphore and cleanup
├── requirements.txt # Pinned Python dependencies
└── .gitignore # Excludes .env, venv, caches, test artifactsПроцесс разработки
Проект создавался в 9 самостоятельных этапов, каждый со своим тестовым файлом и шагом проверки:
Этап | Содержание | Тестовый файл |
1 | Каркас проекта, конфигурация, логирование |
|
2 | Парсер и валидатор URL YouTube |
|
3 | Получение транскриптов |
|
4 | Загрузчик видео с ограничением длительности |
|
5 | Извлечение кадров через ffmpeg |
|
6 | Многосигнальная оценка важности |
|
7 | Дедупликация pHash + загрузка base64 |
|
8 | Полная оркестрация конвейера |
|
9 | Точка входа MCP-сервера + проверки здоровья |
|
Золотое правило: Каждый этап проверяется перед переходом к следующему. Запустите
python test_stage{N}.pyдля проверки.
Развёртывание
Поддержка Docker запланирована, но пока не настроена. Этот раздел будет обновлён после завершения контейнеризации.
Пока сервер запускается напрямую на любой машине с установленными Python 3.11, ffmpeg и Tesseract. Рекомендуемые варианты хостинга после готовности Docker:
После развёртывания обновите URL интеграции в Claude.ai на:
https://YOUR-DEPLOYMENT-URL/mcpПринципы проектирования
Все логи пишутся только в stderr.
stdoutзарезервирован исключительно для связи через MCP.Потокобезопасность: Конвейер
get_video_framesиспользуетthreading.Semaphore(1), чтобы предотвратить перегрузку системы параллельными загрузками.Автоматическая очистка: Временные файлы, создаваемые при обработке видео, удаляются после каждого запуска.
Строгая валидация: Идентификаторы видео проверяются по шаблону
^[A-Za-z0-9_-]{11}$. URL только с плейлистами, URL каналов и некорректные входные данные отклоняются с понятными сообщениями об ошибках.Плавная деградация: Если все кадры набрали балл ниже минимального порога важности, конвейер возвращает 5 лучших кадров и устанавливает флаг
fallback_used: true.
Лицензия
MIT © Ayush Mamgain
Благодарности
Создано с использованием FastMCP, Starlette, yt-dlp, youtube-transcript-api и OpenCV.
This server cannot be deployed
Maintenance
Related MCP Connectors
Extract YouTube transcripts, search what was said, and read on-screen frames with cited timestamps.
YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.
Transcripts, summaries, chapters and timestamped answers for video links, for AI agents.
YouTube data for AI agents: channels, videos, transcripts, comments, search. Video research.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to analyze and summarize YouTube videos by extracting captions, subtitles, and comprehensive metadata including title, description, and duration in multiple languages.127 npm62MIT
- FlicenseDqualityDmaintenanceEnables AI assistants to fetch and analyze transcripts from YouTube videos using video IDs or URLs, with support for multiple language preferences.1-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to watch YouTube videos by extracting frames at scene changes and visual references, pairing each frame with the exact words spoken at that timestamp. Provides dense frame-transcript interleaving for any model.9 npm2MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to fetch YouTube video transcripts with precise timestamps, multi-language support, and time-range filtering.31MIT