Skip to main content
Glama

youtube-mcp

MCP-сервер, позволяющий анализировать YouTube-канал @ザビエル-zav напрямую из Claude. Цель — отвечать на вопросы вроде «Какое видео на прошлой неделе имело лучший CTR?», подтягивая реальные данные.

Сделан на Node.js (без Python). YouTube Analytics API / Reporting API / Data API v3 обёрнуты в официальные библиотеки для Node (googleapis, google-auth-library) и опубликованы как инструменты через официальный TypeScript SDK MCP (@modelcontextprotocol/sdk).

Используемые API и их назначение

Нужные данные

API

Способ получения

Просмотры, время просмотра, средний процент удержания, прирост подписчиков, источники трафика, аудитория

YouTube Analytics API

JSON возвращается сразу по запросу

Показы миниатюр, CTR показов

YouTube Reporting API (Bulk Reports)

Предварительная регистрация задания → ежедневная генерация CSV → загрузка и чтение

Названия видео, описания, комментарии

YouTube Data API v3

JSON возвращается сразу по запросу

CTR получается принципиально другим способом (bulk-отчёты), поэтому используется отдельный путь: регистрация задания через register-reach-job.js → периодическое накопление CSV локально через download-reports.js.

Related MCP server: youtube-organic-mcp

Настройка

1. Google Cloud Console

  1. Создайте проект

  2. Включите следующие 3 API:

    • YouTube Analytics API

    • YouTube Reporting API

    • YouTube Data API v3

  3. Настройте экран согласия OAuth (тип пользователя = внешний, добавьте свой аккаунт Google в тестовые пользователи)

  4. Создайте Учётные данные > OAuth-клиент ID > Тип приложения = Desktop app и скачайте JSON

  5. Положите скачанный JSON в корень этого репозитория под именем client_secret.json

    Никогда не коммитьте client_secret.json и token.json, создаваемый после первой авторизации. Они уже в .gitignore, но будьте осторожны, чтобы случайно не сделать git add -f.

2. Node.js и зависимости

Нужен Node.js 18 или новее (если не установлен — поставьте LTS-версию с nodejs.org. В установщик входит и npm, так что отдельная настройка PATH, как для Python, в основном не нужна).

npm install

3. Регистрация задания для reach-отчёта (CTR) — выполнить в первую очередь

Reporting API начинает генерацию данных «с дня регистрации задания», и за прошлые периоды можно получить данные только за 30 дней до момента регистрации. Чем дольше откладывать регистрацию, тем больше исторических CTR-данных будет потеряно, поэтому выполните это раньше остальных задач.

npm run register-reach-job

При первом запуске откроется браузер и запросит авторизацию (далее — автоматическое обновление через token.json).

4. Запуск MCP-сервера

npm start

Для использования из Claude Desktop зарегистрируйте сервер в claude_desktop_config.json следующим образом.

{
  "mcpServers": {
    "youtube-analytics": {
      "command": "node",
      "args": ["/absolute/path/to/youtube-mcp/server.js"]
    }
  }
}

5. Скачивание reach-отчётов (через несколько часов — 2 дня после регистрации)

npm run download-reports

CSV накапливаются в data/reach/<report_type>/. Отчёты удаляются на стороне YouTube через 60 дней (для исторических данных — через 30 дней), поэтому запускайте скачивание регулярно (в идеале — раз в день). На Windows можно использовать Планировщик заданий, на Mac/Linux — cron. Инструмент get_reach читает эти локальные CSV.

Список публичных инструментов

Имя инструмента

Аргументы

Что возвращает

get_channel_summary

start_date, end_date

Просмотры, время просмотра, прирост подписчиков за весь период

list_top_videos

start_date, end_date, limit

Топ видео по просмотрам и их базовые показатели

get_video_stats

video_id, start_date, end_date

Детальные показатели указанного видео

get_retention_curve

video_id, start_date (необязательно), end_date (необязательно)

Кривая удержания зрителей (шаг 10%) + точка максимального ухода

get_traffic_sources

video_id или start_date+end_date

Разбивка источников трафика

get_reach

start_date, end_date

Показы миниатюр и CTR (агрегация из локальных CSV)

get_comments

video_id, limit

Список комментариев (по релевантности)

Вывод — не сырой JSON, а округлённые числа и текстовые таблицы (не более ~20 строк), чтобы экономить контекст на стороне Claude.

Известные ограничения

  • Данные Analytics API отстают от показателей YouTube Studio на срок до 2 дней. «Вчерашние цифры» могут быть недоступны.

  • get_reach видит только уже скачанные локально CSV. Данные за периоды, когда download-reports.js не запускался, не появятся.

  • Точная структура колонок channel_reach_basic_a1 / channel_reach_combined_a1 не подтверждена. get_reach читает их с фолбэком, угадывая имена колонок по ключевым словам, но стоит один раз проверить по заголовкам реально скачанных CSV.

  • Запись не поддерживается (только чтение). Пути для случайного изменения или удаления видео не существует.

Варианты развёртывания

Где использовать

Что нужно

Приложение Claude Desktop

Достаточно запустить npm start (stdio) локально

claude.ai (веб/мобильный)

Нужно опубликовать как удалённый MCP-сервер, доступный по HTTPS

Если нужно использовать и со смартфона, быстрее всего переключить StdioServerTransport на StreamableHTTPServerTransport (@modelcontextprotocol/sdk/server/streamableHttp.js) и разместить на существующем хостинге.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude to access and manage YouTube channel data through the YouTube Data API v3 and YouTube Analytics API. Provides tools for reading analytics, fetching video metadata, searching uploads, and updating video SEO directly from Claude.
    9 npm
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to access YouTube organic analytics, including channel stats, video performance, watch time, and audience engagement, via the YouTube Data API v3 and Analytics API v2.
    6
    8 npm
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables Claude to retrieve YouTube transcripts, search videos and channels, fetch metadata and playlists, analyze engagement, and access trending content via natural language.
    15
    16 npm
    -