YouTube MCP Server
YouTube MCP Server
Python-сервер на базе Model Context Protocol (MCP), который извлекает образовательный контент из видео YouTube — транскрипты и визуально значимые кадры — и предоставляет его ИИ-ассистентам, таким как Claude, ChatGPT и любому MCP-совместимому клиенту.
Что он делает
Дайте ИИ-ассистенту URL видео YouTube, и он сможет:
Прочитать транскрипт — Полные субтитры с таймкодами, готовые для суммаризации, Q&A или анализа контента.
Увидеть видео — Конвейер компьютерного зрения из 5 этапов извлекает наиболее информативные кадры, оценивает их качество, удаляет дубликаты и возвращает их в виде JPEG-изображений в кодировке base64, которые ИИ может «увидеть».
Без ручного скачивания. Без копирования и вставки. Просто вставьте URL и задавайте вопросы.
Инструменты
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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Fetch transcripts, subtitles, chapters, metadata and frames from YouTube and 10+ video platforms
Provide token-optimized, structured YouTube data to enhance your LLM applications. Access efficien…
Search YouTube transcripts and read a video's frames; answers cite clickable timestamps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/chaitanyapandey09/YouTube-MCP-Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server