youtube-mcp について
youtube-mcpは、YouTube検索、チャンネル管理、分析データの確認に使える、ローカル優先のTypeScript製MCPサーバーです。チャンネルやコンテンツの変更は、事前プレビューと明示的な承認を経て実行されます。
主な機能
- 01YouTube動画とチャンネルの検索
- 02チャンネルとクリエイター分析
- 03動画、再生リスト、字幕の管理
- 04コメント返信とモデレーション
- 05視聴履歴のローカル分析
- 06変更前のプレビューと承認
活用シーン
- 01日付、地域、チャンネルで動画を検索
- 02チャンネルの実績と視聴者維持率を確認
- 03承認後に動画をアップロード、再生リストを編集
- 04取り込んだYouTube視聴履歴を分析
MCP 対応
標準ではstdio経由でMCPクライアントに79個のツールを提供します。サーバーはローカルで動作し、OAuthトークンと作業データをディスクに保存します。書き込み操作には承認または明示的な確認が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
YouTube MCP
AI アシスタントが YouTube を検索し、チャンネルを管理してアナリティクスを確認できる、ローカルファーストの MCP サーバーです。チャンネルやコンテンツを変更する前には、ユーザーに承認を求めます。
YouTube MCP は、TypeScript で書かれた Model Context Protocol サーバーです。Claude Code、Claude Desktop、Cursor、Codex などの MCP クライアントに 79 個のツールを提供します。お使いのマシン上で stdio を介して動作し、OAuth トークンと作業データをディスクに保存します。また、明示的に指定されない限り、ネットワークリスナーを起動しません。
YouTube アカウントに変更を加える操作はすべて、事前確認、承認、実行のフローを経由します。アシスタントは、実行しようとしている内容をまず正確に提示し、プレビューされた変更そのものが承認されるまで何も実行しません。
クイックスタート
- キーを取得します。 初心者向けセットアップガイドに従ってください(公開情報の調査なら 5 分、自分のチャンネルを使う場合は約 15 分です)。
- エージェントにインストールします。 AI エージェントへのインストールから選択してください。
- 一度だけサインインします(自分のチャンネルを使う場合のみ)。アカウントとクリエイターツールにある
youtube-authコマンドを実行します。 - エージェントに依頼します。 「YouTube の認証状態を確認して」と伝え、続けて「MCP に関する講演を YouTube で検索して」と伝えてください。
できること
読み取り(アカウントは不要。API キーのみ)
- 動画を検索できます(並べ替え、日付、再生時間、チャンネル、地域、安全検索のフィルターに対応)。トレンドの確認、任意のチャンネルの最近のアップロード一覧の表示、動画やチャンネルの検索もできます。
- 動画の公開コメント一覧を表示できます。
- 公開されている文字起こしを取得できます(ベストエフォート。一部の動画にはありません)。
読み取り(OAuth を使った自分のアカウントとチャンネル)
- 自分のチャンネル、登録チャンネル、自分のチャンネルのコメントスレッドを確認できます。
- クリエイター向けアナリティクスを確認できます。期間を指定したチャンネルの概要、上位の動画、視聴者維持率に加え、柔軟なレポート(1 日ごとの視聴回数、トラフィックソース、デバイス、国、ユーザー属性など)を利用できます。
- 自分がアップロードした動画、再生リストと再生リストのアイテム、字幕トラック、コメントのモデレーションキューを確認できます。
書き込み(自分のアカウント。チャンネルとコンテンツの変更にはプレビューと承認が必要です。視聴者としての操作には confirm: true が必要です)
- アップロード:ステータス確認、再開、キャンセルが可能なレジューム対応の動画アップロード。明示的に公開を依頼しない限り、アップロードした動画は非公開になります。
- 動画:タイトルや説明などのメタデータを更新し、サムネイルを設定できます。
- 字幕:字幕トラックのアップロード、更新、ダウンロード、削除ができます。
- 再生リスト:作成、更新、削除のほか、アイテムの追加、削除、並べ替えができます。新しい再生リストはデフォルトで非公開です。
- コメントとモデレーション:コメントへの返信、モデレーションステータスの設定(投稿者のブロックを含む)、自分のチャンネルへのコメントの削除ができます。
- チャンネルのプロフィール:チャンネルの説明、キーワード、国、デフォルトの言語を編集できます。
- 登録チャンネルの整理:チャンネル登録者数と最終アップロード日を確認し、承認を 1 回行うだけで複数の登録をまとめて解除できます。
- アカウント操作:チャンネル登録、登録解除、動画の評価、トップレベルのコメントの投稿ができます(これらの操作には、文字どおり
confirm: trueが必要です)。
非公開の視聴分析(ローカルのみ)
- Google Takeout から YouTube の視聴履歴をインポートし、プロフィールと 2 つの期間の傾向比較を取得できます。データはローカルの SQLite ファイルに保存されます。
- ローカルの選別許可リストを保存し、有限の提案キューを生成できます。サーバーがキューをアカウントに適用することはありません。
安全モデル
書き込みツールは、AI クライアントが予期しない変更を加えられないように設計されています。
- 事前確認。
youtube_preflight_*ツールが YouTube から最新の状態を読み取り、リクエストを検証して、正確なプレビューを返します。 - 承認。
confirm: trueを指定した個別のyoutube_approve呼び出し(変更の種類ごとにツールは1つ)が、承認をプロファイル、チャンネル、対象、要求された変更、最新の状態に紐付けます。承認には有効期限があります。承認はローカルに保存されるため、承認済みの操作は、有効期限が切れるまでサーバーの再起動後も保持されます。 - 実行。 書き込みツールは、同じ承認済みの入力と
confirm: trueが指定された場合にのみ実行されます。
コードには、ほかにも次の安全策があります。
- 視聴者向け操作(
youtube_subscribe、youtube_unsubscribe、youtube_rate_video)、youtube_create_comment、およびローカルのキュレーションとリセットのツールは、事前確認なしで実行できる単一ステップの書き込み操作ですが、文字どおりのconfirm: trueが必要です。 - 変更が自動的に再試行されることはありません。結果が不明確な場合は、読み取りによって整合性を確認します。
- 公開範囲の変更、スケジュール設定、合成メディアの変更、作成者の禁止には、明示的な昇格フラグが必要です。
- コメントの削除には、そのコメントが選択したチャンネルのものであることが必要です。
- 字幕のダウンロードで既存のパスが上書きされたり、シンボリックリンクがたどられたりすることはありません。
- クリエイターツールは、サインイン中の Google アカウントが、設定したチャンネル ID と一致することを確認します。
- 自動テストで実際の変更が行われることはありません。
詳細については、docs/README.md をご覧ください。
要件
- Node.js 22.13 以降
- YouTube Data API v3(クリエイター向け分析ツールでは YouTube Analytics API も)を有効にした Google Cloud プロジェクト
- 公開データの読み取り用 YouTube Data API キー、およびアカウントとクリエイターツール用 OAuth デスクトップクライアント
AI エージェントにインストールする
npm への公開は不要です。以下の各方法では、独自のコピーを同梱する Claude Desktop バンドルを除き、GitHub リリースに添付されたビルド済み tarball から npx -y https://github.com/pratikgh0se/youtube-mcp/releases/download/v0.3.2/youtube-mcp-0.3.2.tgz --transport stdio を使ってサーバーを実行します。npx を使う方法では、PATH に Node.js 22.13+ が必要です。まず初心者向けセットアップガイドで Google の認証情報を作成してください(簡単に言うと、Google の認証情報が必要です)。少なくとも YouTube Data API キーが必要です。
| エージェント | 1 行でインストール |
|---|---|
| Claude Code | /plugin marketplace add pratikgh0se/youtube-mcp を実行し、続けて /plugin install youtube-mcp@youtube-mcp を実行します |
| Claude Desktop | Releases から .mcpb をダウンロードして、ダブルクリックします |
| Codex CLI | codex mcp add youtube-mcp -- npx -y https://github.com/pratikgh0se/youtube-mcp/releases/download/v0.3.2/youtube-mcp-0.3.2.tgz --transport stdio |
| Gemini CLI | gemini extensions install https://github.com/pratikgh0se/youtube-mcp |
| Antigravity CLI | ~/.gemini/config/mcp_config.json にサーバーを追加します |
| Cursor | インストールボタンを使うか、.cursor/mcp.json を使用します |
| VS Code / Copilot | インストールボタンを使うか、.vscode/mcp.json を使用します |
| Windsurf | mcp_config.json にサーバーを追加します |
| Cline | cline_mcp_settings.json にサーバーを追加するか、Cline に llms-install.md を指定します |
| Zed | context_servers エントリーを追加します |
| goose | goose configure を実行するか、config.yaml を使用します |
| その他のエージェント | AGENTS.md と configs/generic-stdio.json を参照してください |
各クライアント向けの設定済みファイルは configs/ にあります。プレースホルダーは記載どおりに使用し、コミットするファイルに実際のキーを貼り付けないでください。
初回起動時には、ビルド済みリリース tarball をダウンロードして依存関係をインストールします。通常の接続であれば数秒かかります。以降の起動では npm のキャッシュが使われます。ネットワークが遅いとクライアントの起動タイムアウトが発生する可能性があるため、念のため、最初にターミナルで一度キャッシュをウォームアップしてください。
npx -y https://github.com/pratikgh0se/youtube-mcp/releases/download/v0.3.2/youtube-mcp-0.3.2.tgz --version
Claude Code
claude plugin marketplace add pratikgh0se/youtube-mcp
claude plugin install youtube-mcp@youtube-mcp
または Claude Code 内で、/plugin marketplace add pratikgh0se/youtube-mcp を実行し、続けて /plugin install youtube-mcp@youtube-mcp を実行します。Claude Code では API キー(OS の認証情報ストアに保存)と、さらに 4 つの設定を求められます。OAuth クライアントファイル、プロファイル名、チャンネル ID は必須で、状態ディレクトリは任意です(空欄のままにすると ~/.youtube-mcp が使用されます)。プラグインが保持するのは設定だけです。サーバー自体は引き続き npx 経由で実行されます。
Claude Desktop
GitHub Releases から youtube-mcp-<version>.mcpb(macOS、Windows、Linux 向けの共通バンドル)をダウンロードして、ダブルクリックします。Claude Desktop にインストールダイアログが表示され、API キーを求められます。バンドルにサーバーが含まれているため、実行時に npx は不要です。
バンドルを使わない場合の代替方法:configs/claude-desktop.json を claude_desktop_config.json に追加して、再起動します。初回起動時にはパッケージをダウンロードするため、数秒かかる場合があります。
{
"mcpServers": {
"youtube-mcp": {
"command": "npx",
"args": ["-y", "https://github.com/pratikgh0se/youtube-mcp/releases/download/v0.3.2/youtube-mcp-0.3.2.tgz", "--transport", "stdio"],
"env": { "YOUTUBE_API_KEY": "<your-youtube-api-key>" }
}
}
}
Codex CLI
codex mcp add youtube-mcp --env YOUTUBE_API_KEY=<your-youtube-api-key> -- npx -y https://github.com/pratikgh0se/youtube-mcp/releases/download/v0.3.2/youtube-mcp-0.3.2.tgz --transport stdio
これにより、キーが ~/.codex/config.toml に保存されます。ファイルにキーを保存しないようにするには、代わりに configs/codex.toml を使用してください。env_vars でシェルから環境変数を引き継ぎます(Codex は ${VAR} を展開しません)。また、初回の npx 実行より短いデフォルトの 10 秒ではなく、startup_timeout_sec = 180 を設定します。
[mcp_servers.youtube-mcp]
command = "npx"
args = ["-y", "https://github.com/pratikgh0se/youtube-mcp/releases/download/v0.3.2/youtube-mcp-0.3.2.tgz", "--transport", "stdio"]
env_vars = ["YOUTUBE_API_KEY"]
startup_timeout_sec = 180
Gemini CLI
gemini extensions install https://github.com/pratikgh0se/youtube-mcp
Gemini は API キー(システムのキーチェーンに保存されます。必須)と、OAuth クライアントファイル、プロファイル名、チャンネル ID(チャンネルのツールで必要です。セットアップガイドを参照)を求めます。後から gemini extensions config youtube-mcp で変更できます。通常の settings.json の設定例は configs/gemini-settings.json にあります。
注:Google は 2026-06-18 に、AI Pro、Ultra、および無料の個人ユーザーへの Gemini CLI の提供を終了しました。有料の API キー利用者とエンタープライズユーザーは引き続き利用できます(出典)。それ以外の方は、以下の Antigravity CLI を使用してください。
Antigravity CLI
これを ~/.gemini/config/mcp_config.json(グローバル)または <workspace>/.agents/mcp_config.json に追加します。内容は configs/antigravity.json にもあります。
{
"mcpServers": {
"youtube-mcp": {
"command": "npx",
"args": ["-y", "https://github.com/pratikgh0se/youtube-mcp/releases/download/v0.3.2/youtube-mcp-0.3.2.tgz", "--transport", "stdio"],
"env": { "YOUTUBE_API_KEY": "<your-youtube-api-key>" }
}
}
}
Cursor
このボタンは、シェル環境から YOUTUBE_API_KEY を読み込みます。または、configs/cursor.json を .cursor/mcp.json(または ~/.cursor/mcp.json)に追加します。${env:YOUTUBE_API_KEY} を使用するため、ファイルにシークレットが書き込まれることはありません。
VS Code / Copilot
このボタンを使うと、キーなしでサーバーがインストールされます。後からサーバーの env を通じてキーを追加するか、キーの入力を求める以下のファイルを使用してください。ターミナルから実行します。
code --add-mcp '{"name":"youtube-mcp","type":"stdio","command":"npx","args":["-y","https://github.com/pratikgh0se/youtube-mcp/releases/download/v0.3.2/youtube-mcp-0.3.2.tgz","--transport","stdio"]}'
または、configs/vscode.json を .vscode/mcp.json として保存します。VS Code は初回起動時にキーを求め(password: true)、安全に保存します。
{
"inputs": [
{ "type": "promptString", "id": "youtube-api-key", "description": "YouTube Data API v3 key", "password": true }
],
"servers": {
"youtube-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "https://github.com/pratikgh0se/youtube-mcp/releases/download/v0.3.2/youtube-mcp-0.3.2.tgz", "--transport", "stdio"],
"env": { "YOUTUBE_API_KEY": "${input:youtube-api-key}" }
}
}
}
Windsurf
configs/windsurf.json を使用します(${env:YOUTUBE_API_KEY} を読み込みます)。現在の Devin のドキュメントでは、ファイルの保存先は ~/.config/devin/mcp_config.json(Windows:%APPDATA%\devin\mcp_config.json)です。以前のパス ~/.codeium/windsurf/mcp_config.json は、今も多くのガイドに記載されています。ベンダーのドキュメントで確認できるのは最初のパスのみです。読み込まれない場合は、もう一方を試してください。
Cline
MCP Servers パネルを開き、Configure、次に「Configure MCP Servers」を選択して、configs/cline.json を追加します。Cline CLI の場合、ファイルは ~/.cline/data/settings/cline_mcp_settings.json です。Cline は環境変数の展開を文書化していないため、キーはそのファイルにリテラル値として入力します。llms-install.md を使ってインストールするよう Cline に依頼することもできます。
Zed
configs/zed.json を Zed の設定に追加します(zed: open settings file アクションを実行します)。Zed ではこのマップを context_servers と呼びます。キーはリテラル値として入力します。
goose
goose configure を実行し、Add Extension、次に Command-Line Extension を選択します。キーを環境変数として設定し、npx -y https://github.com/pratikgh0se/youtube-mcp/releases/download/v0.3.2/youtube-mcp-0.3.2.tgz --transport stdio を入力します。または、configs/goose.yaml を ~/.config/goose/config.yaml に追加します。ディープリンク形式(ブラウザーまたは open に貼り付けます)ではコマンドのみが設定されるため、後からキーを追加してください。
goose://extension?cmd=npx&arg=-y&arg=https%3A%2F%2Fgithub.com%2Fpratikgh0se%2Fyoutube-mcp%2Freleases%2Fdownload%2Fv0.3.2%2Fyoutube-mcp-0.3.2.tgz&arg=--transport&arg=stdio&id=youtube-mcp&name=YouTube%20MCP&description=Search%20YouTube%20and%20manage%20your%20channel%20with%20approval%20for%20every%20change
その他のエージェント
stdio MCP サーバーを起動するクライアントであれば、configs/generic-stdio.json を使用できます。OpenCode、OpenClaw、Hermes 用のテンプレートも configs/ にあります。ユーザー向けにインストールするエージェントは、AGENTS.md を読む必要があります。
アカウントおよびクリエイターツール:一度だけ認証
公開ツールでは API キーだけが必要です。アカウントおよびクリエイターツールを使うには、ステップ 2 の OAuth クライアントファイル、プロファイル名、チャンネル ID をクライアント設定に追加し、同じ値を指定してターミナルから一度だけ Google にサインインします。
YOUTUBE_OAUTH_CLIENT_SECRET_FILE=/absolute/path/to/client_secret.json \
YOUTUBE_MCP_PROFILE_ID=creator-main \
npx -y https://github.com/pratikgh0se/youtube-mcp/releases/download/v0.3.2/youtube-mcp-0.3.2.tgz youtube-auth
ローカルの 127.0.0.1 コールバックを使ってブラウザーが開き、Google の同意画面が表示されます。また、youtube、youtube.force-ssl、yt-analytics.readonly スコープがリクエストされます。トークンはそのプロファイル用に ~/.youtube-mcp の下に保存され、以降の呼び出しでは自動的に更新されます。アクセス権を取り消した場合は、もう一度実行してください。
Google 認証情報
1. 認証情報を作成する
Google Cloud を初めて使う場合は、ステップごとの初心者向けセットアップガイドを参照してください。概要は次のとおりです。
- プロジェクトを作成するか選択し、YouTube Data API v3 と YouTube Analytics API を有効にします。
- API キーを作成します。公開ツールにはこれだけで十分です。
- アカウントおよびクリエイターツールを使うには、OAuth 同意画面を設定し(アプリがテスト中の間は、自分をテストユーザーとして追加します)、デスクトップアプリタイプの OAuth クライアント ID を作成して、その JSON ファイルをダウンロードします。
2. 環境変数を設定する
これらをクライアント設定に記述するか(AI エージェントにインストールするを参照)、チェックアウトから実行する場合は .env.example を .env にコピーします(.env は Git の対象外です)。実際の値は決してコミットしないでください。
| 変数 | 必要な用途 | 意味 |
|---|---|---|
YOUTUBE_API_KEY | 公開ツール | YouTube Data API キーです。 |
YOUTUBE_OAUTH_CLIENT_SECRET_FILE | アカウントおよびクリエイターツール | デスクトップ OAuth クライアント JSON の絶対パスです。 |
YOUTUBE_MCP_PROFILE_ID | クリエイターツール | creator-main など、任意に選んだ名前です。プロファイルごとにローカルの状態を分離します。 |
YOUTUBE_MCP_CHANNEL_ID | クリエイターツール | チャンネル ID(UC で始まります)。サインインしたアカウントがそのチャンネルを所有している必要があります。 |
YOUTUBE_MCP_STATE_DIR | 任意 | ローカルの状態を保存する場所です。デフォルトは ~/.youtube-mcp です。Claude Code プラグインと Gemini 拡張機能では入力を求められます(空欄の場合はデフォルトを使用します)。空の値は、どこでも未設定として扱われます。 |
ローカルのチェックアウトから実行する
開発時、または npx を使わずに実行する場合:
git clone https://github.com/pratikgh0se/youtube-mcp.git
cd youtube-mcp
npm ci
npm run build # npm ci already builds via the prepare script
npm run auth # one-time Google sign-in, same as the npx youtube-auth command
絶対パスを使って、クライアントがチェックアウトを参照するように設定します。
{
"mcpServers": {
"youtube-mcp": {
"command": "node",
"args": ["/absolute/path/to/youtube-mcp/bin/youtube-mcp.mjs", "--transport", "stdio"],
"env": {
"YOUTUBE_API_KEY": "your-api-key",
"YOUTUBE_OAUTH_CLIENT_SECRET_FILE": "/absolute/path/to/client_secret.json",
"YOUTUBE_MCP_PROFILE_ID": "creator-main",
"YOUTUBE_MCP_CHANNEL_ID": "UC..."
}
}
}
}
クライアントごとのテンプレートが configs/ にあります。これらは npx -y https://github.com/pratikgh0se/youtube-mcp/releases/download/v0.3.2/youtube-mcp-0.3.2.tgz --transport stdio でサーバーを起動します。代わりにチェックアウトを使うには、コマンドを上記のパスを指定した node に変更します。
任意:ローカル HTTP
PORT=3000 node bin/youtube-mcp.mjs --transport http
これは 127.0.0.1 のみで待ち受けます。インターネットに公開しないでください。
プロンプトの例
- 「YouTube で Model Context Protocol に関する最近の講演を検索して、上位 3 件を要約してください。」
- 「この動画の文字起こしを取得して、主なポイントを一覧にしてください。」
- 「過去 90 日間のチャンネルの上位 10 件の動画と、最新の動画で視聴者が離脱する箇所を表示してください。」
- 「
/Users/me/videos/demo.mp4の非公開アップロードをタイトル「Demo」でプレビューし、承認するまで待ってください。」 - 「「To review」という非公開プレイリストを作成し、この 5 本の動画を追加してください。まずプレビューを表示してください。」
- 「最新の動画にある未返信のコメントを一覧表示し、承認できるよう返信案を作成してください。」
- 「Takeout の視聴履歴をインポートし、1 月に見たものと 6 月に見たものを比較してください。」
ツール
79 個のツールが分野ごとに分類されています。「preflight and approve」と記されたツールには、上記の 3 ステップの手順が必要です。
| 領域 | ツール |
|---|---|
| 公開情報の読み取り(7) | youtube_search(フィルター:order、publishedAfter/publishedBefore、videoDuration、channelId、regionCode、relevanceLanguage、safeSearch、pageToken。クォータ消費量:100 単位)、youtube_trending(地域およびカテゴリ別の人気動画。1 単位)、youtube_list_channel_videos(任意のチャンネル ID または @handle の最近のアップロード動画と統計情報。1 ページあたり約 3 単位)、youtube_get_video、youtube_get_channel、youtube_get_comments、youtube_get_transcript |
| 自分のアカウント(9) | 読み取り:youtube_my_account、youtube_list_subscriptions(ページネーション対応。details: true を指定すると、subscriberCount、videoCount、lastUploadAt が追加されます。返されたチャンネルごとにクォータを約 1 単位追加で消費します)、youtube_list_channel_comment_threads。書き込み(confirm: true):youtube_subscribe、youtube_unsubscribe、youtube_rate_video、youtube_create_comment(自分のチャンネルが所有する動画のみ。他の動画では ownership_required で拒否されます)。一括登録解除(事前確認と承認が必要):youtube_preflight_unsubscribe_many、youtube_unsubscribe_many(最大 100 件の登録解除。1 件につき 50 クォータ単位を消費します。項目ごとの結果は removed、already_gone、failed、unknown のいずれかです。結果が不確かな場合は youtube_list_subscriptions で照合してください。クォータ不足になると早期に停止します) |
| クリエイター分析(4) | youtube_creator_overview、youtube_creator_top_videos、youtube_creator_retention、youtube_creator_report(許可リストに登録された YouTube Analytics レポート。指標、ディメンション、フィルター、並べ替えを選択できます。無効な組み合わせは事前に拒否されます) |
| チャンネルプロフィール(2) | youtube_preflight_update_channel、youtube_update_channel:チャンネルの説明、キーワード、国、デフォルト言語を編集します(事前確認と承認が必要です。他のブランディング設定は保持されます) |
| クリエイター向け読み取り(10) | youtube_list_owned_videos、youtube_get_owned_video、youtube_list_video_categories、youtube_list_playlists、youtube_get_playlist、youtube_list_playlist_items、youtube_list_caption_tracks、youtube_list_moderation_comments、youtube_get_moderation_comment、youtube_find_comment_reply |
| アップロード(7) | youtube_preflight_upload、youtube_upload_video、youtube_get_upload_status、youtube_preflight_resume_upload、youtube_resume_upload、youtube_preflight_cancel_upload、youtube_cancel_upload |
| 動画のメタデータ、アーカイブ、サムネイル(6) | youtube_preflight_update_metadata、youtube_update_metadata、youtube_preflight_archive_video、youtube_archive_video、youtube_preflight_set_thumbnail、youtube_set_thumbnail |
| 字幕(7) | youtube_preflight_caption_upload、youtube_upload_caption、youtube_preflight_caption_update、youtube_update_caption、youtube_download_caption(承認不要です。fileName で指定した名前の新しいファイルを <state dir>/downloads/ に書き込み、そのパスを返します)、youtube_preflight_caption_delete、youtube_delete_caption |
| 再生リスト(12) | youtube_preflight_create_playlist、youtube_create_playlist、youtube_preflight_update_playlist、youtube_update_playlist、youtube_preflight_delete_playlist、youtube_delete_playlist、youtube_preflight_add_playlist_item、youtube_add_playlist_item、youtube_preflight_remove_playlist_item、youtube_remove_playlist_item、youtube_preflight_reorder_playlist_item、youtube_reorder_playlist_item |
| コメントとモデレーション(6) | youtube_preflight_reply_to_comment、youtube_reply_to_comment、youtube_preflight_set_comment_moderation_status、youtube_set_comment_moderation_status、youtube_preflight_delete_comment、youtube_delete_comment |
| 承認(1) | youtube_approve:approvalId で指定した保留中のプレビューを承認し、その種類、対象、変更内容を正確に表示します |
| ローカル視聴分析(7) | youtube_import_takeout、youtube_consumption_profile、youtube_consumption_trends、youtube_save_curation_policy、youtube_save_curation_candidate、youtube_propose_consumption_queue、youtube_reset_consumption_data |
| ステータス(1) | youtube_auth_status |
プライバシーとセキュリティ
- OAuth リフレッシュトークンは、ユーザーのみがアクセスできる権限のファイルとして、マシン上の
~/.youtube-mcp(またはYOUTUBE_MCP_STATE_DIR)に保存されます。 - 操作の承認、アップロードの復旧状態、Takeout から作成された SQLite データベース(
consumption.sqlite)も同じディレクトリに保存されます。Takeout インポーターが YouTube にデータを送信することはありません。 - Google の認証情報は Google の API にのみ送信されます。公開字幕ツールは
youtube-transcriptパッケージを使って YouTube から字幕を取得します。 - デフォルトのトランスポートは stdio です。オプションの HTTP トランスポートは
127.0.0.1のみにバインドします。 .env、OAuth クライアント JSON、トークン状態、Takeout エクスポートは絶対にコミットしないでください。.gitignoreでは.envファイルがすでに除外されています。- このサーバーを実行すると、許可したスコープの範囲内で AI クライアントが YouTube アカウントにアクセスできるようになります。承認する前に各プレビューを確認してください。
- 脆弱性を報告するには、SECURITY.md の手順に従い、GitHub の非公開報告機能を使用してください。公開の issue は作成しないでください。
開発
npm ci
npm run lint # type check the source
npm run typecheck:tests # type check the tests
npm test # vitest, fully offline (214 tests)
npm run build # compile to dist/
npm run smoke:read-only # offline by default; set YOUTUBE_LIVE_SMOKE=1 with an API key for one live read
npm run dev:stdio # run from source over stdio
継続的インテグレーション(.github/workflows/verify.yml)では、Node 22 で同じチェックを実行します。変更内容については docs/CHANGELOG.md をご覧ください。
貢献
Issue やプルリクエストを歓迎します。プルリクエストを作成する前に npm run lint、npm run typecheck:tests、npm test を実行してください。また、動作を変更する場合はテストを追加し、書き込み操作は必ず事前確認と承認のフローを経由するようにしてください。Issue、テスト、フィクスチャには、実際の認証情報、トークン、個人データを絶対に含めないでください。
ライセンス
MIT(© 2026 Pratik Ghose)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。