youtube-mcp
youtube-mcp
チャンネル所有者向けのOAuth認証済みYouTube MCP — 動画メタデータの編集、コメントへの返信とモデレーション、プレイリストの管理、チャンネル分析のクエリ、そしてComfyUIブリッジを介したAIサムネイルの生成と設定が可能です。この分野で主流の読み取り専用Data API v3ラッパーを超えた機能を提供します。
MCP Server Seriesの一部です。
概要
既存のYouTube MCPの多くはData API v3に対してAPIキーを使用しており、動画検索や公開メタデータの取得といった読み取り専用の機能に限定されています。本ツールは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がバイトデータを取得 → 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同意画面 — 「外部」を選択し、アプリ名とサポートメールアドレスを設定します。スコープに以下を追加してください:
youtube.uploadyoutube.force-sslyt-analytics.readonly
テスト モードのままにします。自分自身を テストユーザー として追加してください(必須)。プロジェクト所有者であれば、リフレッシュトークンは期限切れになりません。
OAuthクライアントIDの作成: アプリケーションの種類 = デスクトップアプリ。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フラグ | 環境変数 | デフォルト | 備考 |
|
| — | Google OAuth JSONへのパス |
|
| — | シークレットファイルの代わり |
|
| — | シークレットファイルの代わり |
|
|
| リフレッシュトークンの保存先 |
|
|
| バインドホスト |
|
|
| バインドポート |
|
| (未設定 — ブリッジ無効) | ブリッジツール用ComfyUI HTTP URL |
— |
|
| ブリッジツールのデフォルトチェックポイント |
ツール
動画
list_my_videos— 認証済みチャンネルのアップロード動画をページネーション付きでリスト表示get_video— 特定の動画の詳細情報を取得update_video_metadata— タイトル / 説明 / タグ / カテゴリ / 公開設定の更新delete_video— 動画を完全に削除。誤削除を防ぐため、現在のタイトルと一致するconfirm_video_titleが必要です。
字幕
list_captions— 動画の字幕トラックをリスト表示(言語、名前、ステータス、ドラフトフラグ)upload_caption— SRTまたはWebVTT字幕トラックを動画にアップロードdelete_caption— 字幕トラックを削除
ショート動画
list_my_shorts— 最近のアップロードからショート動画を検索(60秒以下の長さをフィルタリング)get_shorts_analytics— ショート動画に限定した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 testNode 20以上が必要です。
ロードマップ
[x] 動画リスト / 取得 / メタデータ更新
[x] プレイリスト作成 + 追加
[x] コメントリスト / 返信 / モデレーション
[x] チャンネル分析クエリ
[x] ComfyUIサムネイルブリッジ (
generate_and_set_thumbnail)[x] 字幕アップロード + リスト + 削除 (
upload_caption,list_captions,delete_caption)[x] タイトル一致確認ガード付きの動画削除
[x] ショート動画の利便性向上:
list_my_shorts(長さフィルタ) +get_shorts_analytics(creatorContentType==SHORTS)[ ] 動画アップロード (
video_upload) — 再開可能なアップロードのサポート[ ] 大規模な履歴データエクスポート用のレポート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