youtube-mcp
youtube-mcp
YouTube MCP с OAuth-аутентификацией для владельцев каналов — редактируйте метаданные видео, отвечайте на комментарии и модерируйте их, управляйте плейлистами, запрашивайте аналитику канала, а также создавайте и устанавливайте ИИ-превью через мост с ComfyUI. Выходит далеко за рамки обычных оберток Data API v3 с доступом только для чтения, которые доминируют в этой сфере.
Часть серии MCP-серверов.
Идея
Большинство существующих YouTube MCP используют API-ключ для Data API v3 — поиск видео, получение публичных метаданных, только чтение. Этот сервер использует OAuth 2.0 (Authorization Code + PKCE), поэтому он действительно может писать на ваш канал: обновлять названия/описания/теги видео, отвечать на комментарии, модерировать спам, управлять плейлистами. Кроме того, он обращается к отдельному YouTube Analytics API для статистики канала и — это главный инструмент — генерирует превью через ComfyUI и загружает его на YouTube за один вызов MCP.
Claude, use generate_and_set_thumbnail on video abc123:
prompt: "cyberpunk hacker at keyboard, neon blue and pink, high contrast"→ ComfyUI рендерит 1280×720 → youtube-mcp получает байты → отправляет POST в thumbnails.set. Готово.
Установка
# npx — no install
npx @miller-joe/youtube-mcp --help
# Docker
docker run -p 9120:9120 \
-e YOUTUBE_CLIENT_ID=... \
-e YOUTUBE_CLIENT_SECRET=... \
-e YOUTUBE_TOKEN_FILE=/token/token.json \
-v $PWD/token:/token \
ghcr.io/miller-joe/youtube-mcp:latestНастройка — разовая процедура в Google Cloud (~10 мин)
Аккаунт Google + YouTube-канал — используйте личный аккаунт, а не рабочий, который вы можете потерять.
Проект Google Cloud на https://console.cloud.google.com — назовите его как угодно (например,
youtube-mcp).Включите API:
YouTube Data API v3
YouTube Analytics API
Экран согласия OAuth — Внешний (External), название приложения, контактный email; в области действия (Scopes) добавьте:
youtube.uploadyoutube.force-sslyt-analytics.readonly
Оставайтесь в режиме Тестирования. Добавьте себя в качестве тестового пользователя (обязательно). Поскольку вы владелец проекта, ваш токен обновления не истечет.
Создайте OAuth Client ID: Тип приложения = Desktop app. Скачайте JSON.
Запустите интерактивный процесс авторизации:
npx @miller-joe/youtube-mcp --auth --client-secret-file ./client_secret.jsonОткроется браузер → вы войдете в аккаунт Google, привязанный к вашему YouTube-каналу → предоставите запрошенные права доступа. В случае успеха токен обновления будет сохранен в
~/.config/youtube-mcp/token.json.Запустите сервер:
npx @miller-joe/youtube-mcp --client-secret-file ./client_secret.jsonИли укажите учетные данные клиента через переменные окружения:
YOUTUBE_CLIENT_SECRET_FILEилиYOUTUBE_CLIENT_ID+YOUTUBE_CLIENT_SECRET.
Подключение MCP-клиента
claude mcp add --transport http youtube http://localhost:9120/mcpИли укажите вашему MCP-шлюзу Streamable HTTP-эндпоинт.
Конфигурация
Флаг CLI | Переменная окружения | По умолчанию | Примечания |
|
| — | Путь к JSON Google OAuth |
|
| — | Альтернатива файлу секрета |
|
| — | Альтернатива файлу секрета |
|
|
| Хранилище токенов обновления |
|
|
| Хост для привязки |
|
|
| Порт для привязки |
|
| (не задано — мост отключен) | HTTP URL ComfyUI для инструментов моста |
— |
|
| Чекпоинт по умолчанию для инструмента моста |
Инструменты
Видео
list_my_videos— постраничный список загруженных видео авторизованного каналаget_video— полная информация об одном видеоupdate_video_metadata— название / описание / теги / категория / конфиденциальностьdelete_video— безвозвратное удаление видео. Требует, чтобыconfirm_video_titleточно совпадал с текущим названием, в качестве защиты от случайного удаления не того видео.
Субтитры
list_captions— список дорожек субтитров к видео (язык, название, статус, флаг черновика)upload_caption— загрузка дорожки субтитров в формате SRT или WebVTT к видеоdelete_caption— удаление дорожки субтитров
Shorts
list_my_shorts— поиск Shorts среди недавних загрузок (фильтрация по длительности ≤60с)get_shorts_analytics— запрос к YouTube Analytics, ограниченный только Shorts (creatorContentType==SHORTS)
Плейлисты
create_playlist— создание плейлиста (по умолчанию приватного)add_to_playlist— добавление видео в существующий плейлист
Комментарии
list_comments— ветки комментариев верхнего уровня к видеоreply_to_comment— ответ на комментарий верхнего уровняmoderate_comment— удержание / одобрение / отклонение комментария
Аналитика
query_channel_analytics— метрики за выбранный период с опциональными измерениями и фильтрами
Мост (когда настроен COMFYUI_URL)
generate_and_set_thumbnail— генерация превью через ComfyUI и установка его на видео за один вызов
Примечания по квотам
Бесплатный уровень YouTube Data API = 10 000 единиц в день. Стоимость ключевых операций:
videos.list,commentThreads.list— 1 единица каждаяvideos.update,comments.insert,thumbnails.set— 50 единиц каждаяvideos.insert(загрузка) — 1 600 единиц → ~6 загрузок в день на бесплатном уровне
Большинство рабочих процессов создателей контента укладываются в бесплатный лимит.
Архитектура
┌────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ MCP client │────▶│ youtube-mcp │────▶│ YouTube APIs │
│ (Claude etc.) │◀────│ (this server) │◀────│ (Data/Analytics)│
└────────────────┘ └────────┬─────────┘ └─────────────────┘
│
│ (bridge tools only)
▼
┌──────────────────┐
│ ComfyUI │
│ (txt2img) │
└──────────────────┘Токены обновления OAuth кэшируются локально и обновляются непосредственно перед истечением срока действия. Инструмент моста загружает байты изображения из ComfyUI внутренне — ComfyUI не обязательно должен быть доступен извне.
Разработка
git clone https://github.com/miller-joe/youtube-mcp
cd youtube-mcp
npm install
npm run dev
npm run build
npm testТребуется Node 20+.
Дорожная карта
[x] Список видео / получение / обновление метаданных
[x] Создание плейлиста + добавление в него
[x] Список комментариев / ответ / модерация
[x] Запрос аналитики канала
[x] Мост превью ComfyUI (
generate_and_set_thumbnail)[x] Загрузка субтитров + список + удаление (
upload_caption,list_captions,delete_caption)[x] Удаление видео с защитой подтверждения названия
[x] Эргономика Shorts:
list_my_shorts(фильтр длительности) +get_shorts_analytics(creatorContentType==SHORTS)[ ] Загрузка видео (
video_upload) — поддержка возобновляемой загрузки[ ] Reporting API для массового экспорта исторических данных
Лицензия
MIT © Joe Miller
Поддержка
Если это экономит ваше время, рассмотрите возможность поддержки разработки:
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/miller-joe/youtube-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server