youtube-mcp について
youtube-mcpは、YouTubeチャンネル所有者向けのOAuth認証対応MCPサーバーです。チャンネル管理、コメントのモデレーション、分析に加え、ComfyUI連携でサムネイルの生成と設定を一度に行えます。
主な機能
- 01動画メタデータと字幕の編集
- 02コメントへの返信とモデレーション
- 03プレイリスト管理
- 04チャンネルとShortsの分析データ照会
- 05ComfyUIによるサムネイル生成・設定
活用シーン
- 01タイトル、説明、タグの更新
- 02字幕トラックのアップロードや削除
- 03動画コメントの確認と返信
- 04動画サムネイルの生成と公開
MCP 対応
OAuth 2.0を使用して、YouTubeチャンネルの管理と分析機能をMCPクライアントに提供します。ComfyUIを設定すると、動画のサムネイルを生成して設定するツールも利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @miller-joe/youtube-mcpYOUTUBE_CLIENT_IDGoogle OAuth 2.0 Client ID (from Google Cloud Console, Desktop app type). See README for setup.YOUTUBE_CLIENT_SECRETシークレットGoogle OAuth 2.0 Client Secret. Pair with YOUTUBE_CLIENT_ID.YOUTUBE_CLIENT_SECRET_FILEシークレットAlternative to CLIENT_ID/CLIENT_SECRET: path to the JSON credentials file downloaded from Google Cloud.YOUTUBE_TOKEN_FILEシークレットRefresh token storage path. Default: ~/.config/youtube-mcp/token.jsonCOMFYUI_URLComfyUI HTTP URL for the generate_and_set_thumbnail bridge tool. When unset, that tool is disabled.COMFYUI_DEFAULT_CKPTDefault ComfyUI checkpoint filename for bridge tool (default: sd_xl_base_1.0.safetensors)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
youtube-mcp
チャンネル所有者向けの、OAuth 認証を使用する YouTube MCP です。動画のメタデータを編集し、コメントへの返信やモデレーションを行い、再生リストを管理し、チャンネルのアナリティクスを照会できます。また、ComfyUI ブリッジ経由で AI サムネイルを生成または設定できます。この分野で主流の読み取り専用 Data API v3 ラッパーを超える機能を備えています。
特徴
既存の YouTube MCP の多くは、Data API v3 に対して API キーを使用し、動画の検索や公開メタデータの取得など、読み取り専用の操作を行います。この MCP は OAuth 2.0(Authorization Code + PKCE)を使用するため、チャンネルに実際に書き込むことができます。動画のタイトル、説明、タグの更新、コメントへの返信、スパムのモデレーション、再生リストの管理が可能です。また、別個の YouTube Analytics API を使用してチャンネルの統計情報を取得し、ComfyUI でサムネイルを生成して、1 回の MCP 呼び出しで YouTube にアップロードできます。
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 がバイト列を取得して、thumbnails.set に POST します。これで完了です。
インストール
# 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 を選択し、アプリ名とサポート用メールアドレスを設定します。Scopes に以下を追加します:
youtube.uploadyoutube.force-sslyt-analytics.readonly
-
Testing モードのままにします。自分をテストユーザーとして追加します(必須)。プロジェクトの所有者であれば、更新トークンは期限切れになりません。
-
OAuth クライアント ID を作成します: アプリケーションの種類を Desktop app に設定します。JSON をダウンロードします。
-
対話型の認証フローを実行します:
npx @miller-joe/youtube-mcp --auth --client-secret-file ./client_secret.jsonブラウザーが開くので、YouTube チャンネルに紐付けられた Google アカウントにログインし、要求されたスコープを許可します。成功すると、更新トークンが
~/.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 フラグ | 環境変数 | デフォルト | 備考 |
|---|---|---|---|
--client-secret-file | YOUTUBE_CLIENT_SECRET_FILE | (none) | Google OAuth JSON のパス |
--client-id | YOUTUBE_CLIENT_ID | (none) | シークレットファイルの代替 |
--client-secret | YOUTUBE_CLIENT_SECRET | (none) | シークレットファイルの代替 |
--token-file | YOUTUBE_TOKEN_FILE | ~/.config/youtube-mcp/token.json | 更新トークンの保存先 |
--host | MCP_HOST | 0.0.0.0 | バインドするホスト(HTTP モードのみ) |
--port | MCP_PORT | 9120 | バインドするポート(HTTP モードのみ) |
--stdio | MCP_TRANSPORT=stdio | (unset) | HTTP ではなく stdio 経由で MCP を通信します。stdio を優先する MCP クライアント(Claude Desktop、mcp-inspector)からサブプロセスとして起動する場合に使用します。 |
--comfyui-url | COMFYUI_URL | (unset, bridge disabled) | ブリッジツール用の ComfyUI HTTP URL |
| (no flag) | COMFYUI_DEFAULT_CKPT | sd_xl_base_1.0.safetensors | ブリッジツールのデフォルトチェックポイント |
トランスポート
サーバーはデフォルトでストリーム可能な HTTP を使用します(Claude Code、MetaMCP、または生の fetch に最適です)。--stdio を渡すか(または MCP_TRANSPORT=stdio を設定すると)、stdio モードに切り替わります。Claude Desktop や MCP Inspector など、stdio を優先するクライアントがこのモードを想定しています。
// claude_desktop_config.json
{
"mcpServers": {
"youtube": {
"command": "npx",
"args": ["-y", "@miller-joe/youtube-mcp", "--stdio"],
"env": {
"YOUTUBE_CLIENT_SECRET_FILE": "/path/to/client_secret.json",
"YOUTUBE_TOKEN_FILE": "/path/to/token.json"
}
}
}
}
stdio モードでは OAuth トークンの事前チェックが省略されます。保存済みのトークンがなくてもサーバーは起動し、ツール呼び出し時に認証エラーが表示されます。Claude Desktop で使用する前に、HTTP モードで youtube-mcp --auth --client-secret-file <path> を一度実行し、リフレッシュトークンを保存してください。
ツール
動画
list_my_videos:認証済みチャンネルのアップロード動画をページ分割して一覧表示します。get_video:1 本の動画の詳細をすべて取得します。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:Shorts のみを対象とした YouTube Analytics クエリ(creatorContentType==SHORTS)を実行します。
再生リスト
create_playlist:再生リストを作成します(デフォルトは非公開です)。add_to_playlist:既存の再生リストに動画を追加します。
コメント
list_comments:動画のトップレベルのコメントスレッドを一覧表示します。reply_to_comment:トップレベルのコメントに返信します。moderate_comment:コメントを保留、承認、または却下します。
アナリティクス
query_channel_analytics:日付範囲を指定して、任意のディメンションやフィルターを使い、指標を取得します。
ブリッジ(COMFYUI_URL が設定されている場合)
generate_and_set_thumbnail:ComfyUI 経由でサムネイルを生成し、1 回の呼び出しで動画に設定します。
クォータに関する注意事項
YouTube Data API の無料枠は 1 日あたり 10,000 ユニットです。主な操作のコスト:
videos.list、commentThreads.list:各 1 ユニット。videos.update、comments.insert、thumbnails.set:各 50 ユニット。videos.insert(アップロード):1,600 ユニットのため、無料枠では 1 日あたり約 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 以降が必要です。
ロードマップ
リリース済み:
- 動画:一覧表示、取得、メタデータ更新、タイトル一致の確認ガード付き削除。
- 字幕:アップロード、一覧表示、削除。
- Shorts:
list_my_shorts(再生時間フィルター)とget_shorts_analytics(creatorContentType==SHORTS)。 - 再生リスト:作成、追加。
- コメント:一覧表示、返信、モデレーション。
- アナリティクス:チャンネルのアナリティクスクエリ。
- ComfyUI サムネイルブリッジ:
generate_and_set_thumbnail。
予定:
- 再開可能なアップロードに対応した動画のアップロード(
video_upload)。 - 過去のデータを一括エクスポートする Reporting API。
ライセンス
MIT © Joe Miller
サポート
このツールで時間を節約できた場合は、開発への支援をご検討ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。