YouTube Knowledge MCP
YouTube Knowledge MCP
A Model Context Protocol (MCP) server that gives AI assistants the ability to search, analyze, and extract knowledge from YouTube videos. Works with Claude Desktop, Claude Code, Claude.ai, Cursor and any MCP-compatible client.
Supports both local (stdio) and remote (Streamable HTTP) transports.
![]()
Возможности
Находите и читайте
Ищите видео и каналы по ключевому слову
Получайте видео из плейлиста или канала
Метаданные видео, канала и плейлиста, главы и популярные комментарии
Транскрипты с временными метками, нарезанные по временному диапазону или главе, и ограниченные по размеру, чтобы трёхчасовое видео не переполнило ваш контекст
Ищите внутри транскрипта и получайте ссылки
?t=, открывающие видео в нужный моментПакетные инструменты: транскрипты сразу для многих видео или дайджест целого плейлиста
Извлекайте для монтажа
Нарезайте временной диапазон без скачивания всего видео; режьте точно или по ключевым кадрам, по временной метке или названию главы
Аудиоклипы в форматах mp3, m4a, wav, flac или opus
Захватывайте кадр в любой момент времени без скачивания файла
Экспортируйте субтитры в форматах SRT, WebVTT или обычного текста для Premiere, Resolve или CapCut
Скачивайте полностью с пресетами качества
Сохраняйте то, что узнали (локальный режим)
Сохраняйте сводки и заметки о навыках в локальную библиотеку
Читайте их обратно и ищите по всем ним с полнотекстовым ранжированием
Тегируйте, меняйте теги и удаляйте
Создайте базу знаний для канала (локальный режим)
Считывайте целый канал в доступный для поиска корпус фрагментов с временными метками на любом языке субтитров; процесс возобновляемый и безопасно прерываемый — повторный запуск продолжает с места остановки и подхватывает новые загрузки
Спрашивайте, что автор говорил о чём угодно, по всем видео, и получайте сами моменты со ссылками, открывающими видео в нужном месте
Измеряйте канал: сколько было читаемого, ритм публикаций, темп речи и фразы, повторяющиеся в разных видео
Ведите письменный профиль рядом с корпусом, основанный на фрагментах, на которые можно ссылаться
Создан для стабильной работы
WebVTT разбирается эталонной реализацией W3C, а не самодельным сопоставителем
Типизированные, практичные ошибки — «нет субтитров на en, попробуйте: fr, es, de» вместо стены yt-dlp stderr
Таймауты, повторные попытки с экспоненциальной задержкой и ограничение параллелизма для каждого вызова yt-dlp
check_healthдиагностирует отсутствующие или устаревшие yt-dlp и ffmpegСтруктурированный вывод для каждого инструмента, а также MCP-ресурсы, подсказки и дополнения
Related MCP server: YouTube Translate MCP
Предварительные требования
Node.js 22+
yt-dlp — требуется для каждого инструмента.
brew install yt-dlp(macOS) илиpip install -U yt-dlpffmpeg — требуется для загрузки, извлечения клипов и захвата кадров. Всё остальное работает без него.
Запустите инструмент check_health, чтобы убедиться, что оба установлены и актуальны. Устаревший yt-dlp — самая частая причина необъяснимых сбоев, поскольку YouTube часто меняется; yt-dlp -U исправляет большинство из них.
Установка
Через npm (рекомендуется)
npm install -g youtube-knowledge-mcpЧерез npx (без установки)
Настройте напрямую через npx (см. раздел «Конфигурация»).
Из исходного кода
git clone https://github.com/teobouancheau/youtube-knowledge-mcp.git
cd youtube-knowledge-mcp
npm install
npm run buildКонфигурация
Локальный (stdio) -- Claude Desktop, Claude Code, Cursor
Быстрый старт с npx
{
"mcpServers": {
"youtube-knowledge": {
"command": "npx",
"args": ["-y", "youtube-knowledge-mcp"]
}
}
}При глобальной установке
npm install -g youtube-knowledge-mcp{
"mcpServers": {
"youtube-knowledge": {
"command": "youtube-knowledge-mcp"
}
}
}Расположение файлов конфигурации
Клиент | Путь |
Claude Desktop (macOS) |
|
Claude Desktop (Windows) |
|
Claude Desktop (Linux) |
|
Claude Code |
|
Cursor |
|
Перезапустите клиент после обновления конфигурации.
Удалённый (HTTP) -- Claude.ai, Claude Mobile, Custom Connectors
Сервер поддерживает транспорт Streamable HTTP для удалённого доступа через официальные коннекторы Claude.
Каждое удалённое развёртывание — это ваше собственное. По замыслу здесь нет общего экземпляра, на который можно навести коннектор: каждый вызов обращается к yt-dlp, поэтому один хост, обслуживающий чужой трафик, — это хост, который YouTube ограничивает по скорости для всех сразу. Кнопка ниже разворачивает этот репозиторий в вашем собственном аккаунте Render примерно за две минуты, без клонирования.
Самостоятельное развёртывание
npm run build
npm run start:httpСервер слушает порт PORT (по умолчанию 3000). Чтобы изменить, задайте переменную окружения PORT.
Docker
docker build -t youtube-knowledge-mcp .
TOKEN=$(openssl rand -hex 32) && echo "MCP_AUTH_TOKEN=$TOKEN"
docker run -p 3000:10000 -e MCP_AUTH_TOKEN="$TOKEN" youtube-knowledge-mcpТокен выводится, потому что больше его не напечатает ничто: сервер пишет в журнал, что требуется токен, но никогда не выводит его значение. Отправляйте его как Authorization: Bearer $TOKEN.
Образ устанавливает PORT=10000 и открывает его; публикуйте его на любом порту хоста. Сборка происходит внутри образа, поэтому локально npm run build не нужен.
Развёртывание на Render
Кнопка открывает поток Blueprint в Render для render.yaml в этом репозитории, который собирает Docker-образ, направляет проверку здоровья на /health и генерирует MCP_AUTH_TOKEN для вас. Ни форка, ни клонирования, ни заполнения настроек — сервис ваш, в вашем аккаунте.
Нажмите кнопку и подтвердите. Render соберёт образ и развернёт его.
Откройте вкладку Environment сервиса и скопируйте сгенерированный
MCP_AUTH_TOKEN. HTTP-транспорт отклоняет любой запрос без него, поэтому утёкший URL не означает открытый сервер.Добавьте
https://<your-service>.onrender.com/mcpкак пользовательский коннектор с заголовкомAuthorization: Bearer <token>.
После создания сервиса стоит сделать следующее: задайте MCP_ALLOWED_HOSTS равным имени хоста вашего сервиса (<your-service>.onrender.com). Его нельзя заполнить из Blueprint, потому что имени хоста не существует, пока не существует сервиса, и он отклоняет запросы, приходящие под любым другим именем.
Ваш экземпляр не следует за этим репозиторием. Blueprint задаёт autoDeployTrigger: off, потому что автодеплой запускал бы код, отправленный сюда, в вашем аккаунте и под вашим токеном, без предварительного ознакомления. Чтобы получить более новую версию, используйте Manual Deploy в сервисе.
Бесплатный план засыпает после бездействия, поэтому первый вызов после паузы ждёт холодного старта. Любой платный план это устраняет.
Подключение через Claude.ai
Перейдите в Settings > Connectors
Нажмите Add custom connector
Введите URL вашего сервера (например,
https://your-app.onrender.com/mcp)Добавьте заголовок
Authorization: Bearer <token>, если вы задалиMCP_AUTH_TOKENНажмите Add
Инструменты MCP
33 инструмента. 14 инструментов только для чтения работают через оба транспорта; 19, которые обращаются к вашей файловой системе, регистрируются только в локальном (stdio) режиме, поэтому удалённое развёртывание не может получить доступ к диску хоста.
Каждый инструмент возвращает читаемый текст и типизированный структурированный вывод, а также сообщает об ошибках в виде практичного сообщения — [NO_CAPTIONS] No "en" captions are available for this video. Call get_transcript again with one of: fr, es, de.
Обнаружение — удалённый + локальный
Инструмент | Ключевые параметры | Возвращает |
|
| Соответствующие видео с продолжительностью, каналами и количеством просмотров |
|
| Соответствующие каналы с количеством подписчиков |
|
| Видео в плейлисте или канале |
|
| Название, канал, продолжительность, просмотры, лайки, описание, теги |
|
| Имя, хэндл, количество подписчиков, описание |
|
| Название, канал, количество видео, дата последнего обновления |
|
| Названия глав с временем начала/окончания и глубокими ссылками |
|
| Комментарии верхнего уровня по популярности |
|
| Доступные форматы, сгруппированные по видео+аудио, только видео, только аудио |
| — | Статус yt-dlp и ffmpeg, версии и предупреждения об устаревании |
Транскрипты — удалённый + локальный
Инструмент | Ключевые параметры | Возвращает |
|
| Транскрипт в виде обычного текста, строк с временными метками или реплик |
|
| Совпадения с временными метками и глубокими ссылками |
|
| Транскрипты для многих видео; ошибки сообщаются для каждого видео |
|
| Метаданные по каждому видео, главы и статистика транскриптов |
format: "timestamped" добавляет к каждой строке префикс [MM:SS] — используйте это, когда нужно сослаться на момент или дать ссылку на него. maxChars вместе с offset читает длинный транскрипт частями, а не возвращает сразу 100 000+ токенов.
Извлечение для монтажа — только локально
Инструмент | Ключевые параметры | Возвращает |
|
| Путь к нарезанному видео |
|
| Путь к аудиофайлу |
|
| Один файл для каждого диапазона |
|
| Путь к кадру в формате PNG или JPG |
|
| Путь к файлу субтитров |
|
| Путь к скачанному видео |
Клипы нарезаются
Библиотека знаний — только локально
Инструмент | Ключевые параметры | Результат |
|
| Путь к сохранённой заметке |
|
| Сохранённые элементы, сначала новые |
|
| Сохранённый markdown и его метаданные |
|
| Ранжированные совпадения с выдержками |
|
| Обновлённые теги |
|
| Что было удалено |
| — | Количество переиндексированных заметок |
Мозги каналов — только локально
Инструмент | Ключевые параметры | Результат |
|
| Что было прочитано, что было исключено и статистика |
|
| Фрагменты с временными метками и ссылками |
| — | Все мозги, созданные локально |
|
| Охват, статистика и повторяющиеся фразы |
|
| Путь к сохранённому профилю |
|
| Что было удалено |
build_brain — единственный, кто обращается к сети. Остальные получают канал из того, что уже есть на диске, поэтому работают офлайн и ничего не стоят при вызове.
Мозг хранит один язык субтитров; передайте language, чтобы прочитать другой, и создайте отдельный мозг для каждого языка.
since и minDurationSeconds описывают мозг, а не только вызов, который их передал. Они применяются заново каждый раз, поэтому сужение одного отбрасывает фрагменты исключённых видео, а расширение снова их читает — именно поэтому build_brain помечен как разрушительный. То, соответствует ли видео критериям, определяется по уже записанным дате и длительности, так что изменение решения не требует запросов, пока нет новых данных для получения. Эти значения берутся из метаданных каждого видео, а не из предположений: плоский список канала вообще не содержит даты публикации.
build_brain также восстанавливает. Если файл фрагментов утерян или обрезан, видео, которые он больше не может учесть, будут прочитаны снова при следующем вызове, а не пропущены навсегда как уже обработанные.
Промпты
Многократно используемые рабочие процессы, которые ваш клиент может вызывать напрямую: summarize_video, extract_skill, compare_videos, research_topic, channel_deep_dive, clip_from_quote (найти фразу, затем вырезать клип вокруг неё), а также — только локально — review_library, create_brain (собрать корпус канала, затем составить из него профиль) и ask_creator (ответить на вопрос строго по мозгу, с цитатами).
Ресурсы
youtube://transcript/{videoId}— расшифровка с временными метками, получается и кэшируется при первом чтенииyoutube://library/{videoId}/{summary|skill}— сохранённая заметка (только локально, перечисляемая)youtube://brain/{channelId}/{manifest|profile}— что покрывает мозг канала или профиль, созданный из него (только локально, перечисляемый)
Коды ошибок
Ошибки сообщаются внутри результата, чтобы модель могла их прочитать и восстановиться; каждая сопровождается кодом и следующим шагом.
Код | Значение |
| Видео недоступно |
| yt-dlp сообщает, что для видео требуется аккаунт со входом |
| Нет субтитров на запрошенном языке; в сообщении перечислены существующие |
| Предстоящая трансляция или запись, которая всё ещё обрабатывается |
| Временные; автоматически повторяются с задержкой перед отображением |
| Проблема с инструментами; в сообщении указано, как её исправить |
| Неверный аргумент, перехваченный до любого сетевого вызова |
| Клиент отменил запрос |
Переменные окружения
Все необязательные.
Переменная | По умолчанию | Назначение |
| не задано | Требовать этот bearer-токен на HTTP-транспорте. Установите его, если вы открываете сервер за пределами localhost. |
| не задано | Разрешённый список Host через запятую; включает защиту от DNS-rebinding |
| не задано | Разрешённый список Origin через запятую |
|
| Интерфейс для привязки |
|
| HTTP-порт. Docker-образ устанавливает |
|
| Запросов за окно на клиента |
|
| Окно ограничения скорости |
|
| Закрывать HTTP-сессии, простаивающие так долго |
|
| Отклонять новые сессии сверх этого количества |
|
| Одновременные процессы yt-dlp |
| 30 дней | Время жизни кэша расшифровок |
Хранилище библиотеки
Содержимое хранится в ~/.youtube-knowledge/:
~/.youtube-knowledge/
├── transcripts/ # Cached timestamped transcripts
│ └── {video_id}.{lang}.json
├── library/ # Saved notes
│ └── {video_id}/
│ ├── metadata.json
│ ├── summary.md
│ └── skill.md
├── brains/ # Channel brains
│ └── {channel_id}/
│ ├── manifest.json # What the brain covers, and where a build stopped
│ ├── chunks.json # The timestamped passages
│ └── profile.md # The written account, if one was saved
├── downloads/ # Full downloads
├── clips/ # Extracted clips
├── frames/ # Captured stills
├── subtitles/ # Exported SRT / VTT / TXT
├── index.json # Library index
└── search-index.json # Full-text search indexРасшифровки кэшируются по умолчанию 30 дней; передайте refresh: true любому инструменту работы с расшифровками, чтобы обойти кэш, или установите YOUTUBE_MCP_TRANSCRIPT_TTL_MS.
Каждый инструмент, который записывает файлы, ограничивает вывод вашим домашним каталогом, а outputDir отклоняется, если указывает куда-либо ещё.
Примеры использования
Найти момент и процитировать его
"Find where this video talks about rate limiting and give me the timestamp:
https://youtube.com/watch?v=..."search_transcript возвращает каждое совпадение со ссылкой, открывающей видео на этой секунде, так что утверждение можно проверить, а не принимать на веру.
Найти момент и вырезать клип
"Find where she says 'the real bottleneck was the database' and cut me a
30-second clip around it"search_transcript находит момент, extract_clip вырезает его. Загружается только диапазон байтов, покрывающий клип.
Прочитать один раздел длинного видео
"Summarize just the 'Benchmarks' chapter of this 3-hour podcast"get_chapters находит раздел, затем get_transcript с параметром chapter: "Benchmarks" читает только эту часть, а не всё целиком.
Дёшево обозреть плейлист
"What does this 40-video course cover, and which three videos should I watch?"digest_playlist возвращает метаданные и главы для каждого видео за один вызов.
Подготовить материалы для монтажа
"Pull these four moments as separate clips and export the subtitles as SRT"extract_clips вырезает все четыре за один вызов; export_subtitles записывает файл, который ваш редактор может импортировать.
Создать и запросить базу знаний
"Summarize this video and save it to my library tagged 'databases'"
"What have I saved about connection pooling?"save_to_library сохраняет его; search_library ищет по всему сохранённому с полнотекстовым ранжированием.
Создать мозг для автора
"Build a brain for @Fireship, then tell me everything they've said about Rust"build_brain читает канал во фрагменты с временными метками — прервите его и вызовите снова, чтобы продолжить. Затем ask_brain отвечает на основе того, что было действительно сказано, возвращая сами моменты, чтобы каждое утверждение можно было проверить по видео. Запустите build_brain снова через месяц, и он прочитает только новые загрузки.
Тестирование
npm test # Run all tests
npm run test:watch # Watch mode
npm run test:coverage # Coverage report, with thresholds enforcedНабор тестов покрывает чистую логику напрямую, запускает реальный сервер через MCP-клиент по транспорту в памяти, проверяет библиотеку на настоящей временной файловой системе и сохраняет снимок манифеста инструментов, чтобы любое изменение публичной поверхности отображалось в виде просматриваемого диффа.
Разработка
npm run dev # Watch mode
npm run build # Build for production
npm run rebuild # Clean and rebuild
npm start # Run server (stdio)
npm run start:http # Run server (HTTP)
npm run validate # Typecheck + lint + format check + testCI прогоняет те же проверки на Node 22 и 24 для каждого пуша и pull request, затем запускает собранный сервер как реальный MCP-клиент для проверки манифеста.
Вклад
Вклад приветствуется — см. CONTRIBUTING.md о структуре проекта, стандартах кодирования и о том, как добавить инструмент.
Безопасность
HTTP-транспорт не требует аутентификации, если вы не установите MCP_AUTH_TOKEN. См. SECURITY.md перед тем, как открывать его за пределами localhost, а также для сообщения об уязвимости.
Лицензия
Лицензия MIT — подробности см. в LICENSE.
Благодарности
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 Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables AI assistants to extract transcripts from YouTube videos, allowing AI to analyze and work with video content directly.8153MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol server that enables access to YouTube video content through transcripts, translations, summaries, and subtitle generation in various languages.54MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that analyzes YouTube videos, enabling users to extract transcripts, generate summaries, and query video content using Gemini AI.13MIT
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that enables searching YouTube videos, retrieving and storing transcripts, and performing semantic search over video content without using the official YouTube API.29MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
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/teobouancheau/youtube-knowledge-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server