Skip to main content
Glama

youtube-mcp

YouTube MCP с OAuth-аутентификацией для владельцев каналов — редактируйте метаданные видео, отвечайте на комментарии и модерируйте их, управляйте плейлистами, запрашивайте аналитику канала, а также создавайте и устанавливайте ИИ-превью через мост с ComfyUI. Выходит далеко за рамки обычных оберток Data API v3 с доступом только для чтения, которые доминируют в этой сфере.

Часть серии MCP-серверов.

GitHub Sponsors Ko-fi

Идея

Большинство существующих 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 мин)

  1. Аккаунт Google + YouTube-канал — используйте личный аккаунт, а не рабочий, который вы можете потерять.

  2. Проект Google Cloud на https://console.cloud.google.com — назовите его как угодно (например, youtube-mcp).

  3. Включите API:

    • YouTube Data API v3

    • YouTube Analytics API

  4. Экран согласия OAuth — Внешний (External), название приложения, контактный email; в области действия (Scopes) добавьте:

    • youtube.upload

    • youtube.force-ssl

    • yt-analytics.readonly

  5. Оставайтесь в режиме Тестирования. Добавьте себя в качестве тестового пользователя (обязательно). Поскольку вы владелец проекта, ваш токен обновления не истечет.

  6. Создайте OAuth Client ID: Тип приложения = Desktop app. Скачайте JSON.

  7. Запустите интерактивный процесс авторизации:

    npx @miller-joe/youtube-mcp --auth --client-secret-file ./client_secret.json

    Откроется браузер → вы войдете в аккаунт Google, привязанный к вашему YouTube-каналу → предоставите запрошенные права доступа. В случае успеха токен обновления будет сохранен в ~/.config/youtube-mcp/token.json.

  8. Запустите сервер:

    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

Переменная окружения

По умолчанию

Примечания

--client-secret-file

YOUTUBE_CLIENT_SECRET_FILE

Путь к JSON Google OAuth

--client-id

YOUTUBE_CLIENT_ID

Альтернатива файлу секрета

--client-secret

YOUTUBE_CLIENT_SECRET

Альтернатива файлу секрета

--token-file

YOUTUBE_TOKEN_FILE

~/.config/youtube-mcp/token.json

Хранилище токенов обновления

--host

MCP_HOST

0.0.0.0

Хост для привязки

--port

MCP_PORT

9120

Порт для привязки

--comfyui-url

COMFYUI_URL

(не задано — мост отключен)

HTTP URL ComfyUI для инструментов моста

COMFYUI_DEFAULT_CKPT

sd_xl_base_1.0.safetensors

Чекпоинт по умолчанию для инструмента моста

Инструменты

Видео

  • 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

Поддержка

Если это экономит ваше время, рассмотрите возможность поддержки разработки:

GitHub Sponsors Ko-fi

-
security - not tested
A
license - permissive license
-
quality - not tested

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