yt-dlp-mcp について
yt-dlp-mcp は yt-dlp を基盤とする MCP サーバーで、AI アシスタントが自然言語で動画と音声の検索、情報取得、ダウンロードを行えるようにします。動画プラットフォームのメタデータ、文字起こし、メディアファイルが必要な利用者に向いています。
主な機能
- 01ページング対応の YouTube 検索
- 02コンテンツをダウンロードしないメタデータ取得
- 03VTT 字幕とプレーンテキストの文字起こし
- 04解像度とトリミングを指定した動画ダウンロード
- 05M4A または MP3 形式の音声のみのダウンロード
- 06フラットまたはスレッド表示のコメント取得
活用シーン
- 01AI アシスタントに動画のタイトル、チャンネル、公開日を要約させる
- 02指定言語の字幕を取得してプレーンテキストの文字起こしを作成する
- 03動画の一部区間または音声トラックをダウンロードする
MCP 対応
本プロジェクトは MCP サーバーであり、Claude Code、Claude Desktop、Cursor などの MCP クライアントに ytdlp_ プレフィックス付きのツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🎬 yt-dlp-mcp
動画プラットフォームの機能を AI エージェントに提供する、強力な MCP サーバー
yt-dlp を Claude、Dive、その他の MCP 対応 AI システムと連携させます。自然言語を通じて、動画のダウンロード、メタデータの抽出、文字起こしの取得などを行えます。
✨ 機能
🔍 検索と検出
📊 メタデータの抽出
📝 文字起こしと字幕
|
🎥 動画のダウンロード
🎵 音声の抽出
🛡️ プライバシーと安全性
|
🚀 インストール
前提条件
お使いのシステムに yt-dlp をインストールしてください。
| プラットフォーム | コマンド |
|---|---|
| 🪟 Windows | winget install yt-dlp |
| 🍎 macOS | brew install yt-dlp |
| 🐧 Linux | pip install yt-dlp |
はじめに
MCP クライアントに次の設定を追加してください。
{
"mcpServers": {
"yt-dlp": {
"command": "npx",
"args": ["-y", "@kevinwatt/yt-dlp-mcp@latest"]
}
}
}
MCP クライアントの設定
Dive
- Dive Desktop を開きます
- **「+ Add MCP Server」**をクリックします
- 上記の設定を貼り付けます
- **「Save」**をクリックすれば完了です!
Claude Code
Claude Code CLI を使用して yt-dlp MCP サーバーを追加します(ガイド):
claude mcp add yt-dlp npx @kevinwatt/yt-dlp-mcp@latest
Claude Desktop
claude_desktop_config.json に追加します:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"yt-dlp": {
"command": "npx",
"args": ["-y", "@kevinwatt/yt-dlp-mcp@latest"]
}
}
}
Cursor
Cursor Settings -> MCP -> New MCP Server に移動します。上記の設定を使用します。
VS Code / Copilot
VS Code CLI からインストールします:
code --add-mcp '{"name":"yt-dlp","command":"npx","args":["-y","@kevinwatt/yt-dlp-mcp@latest"]}'
または、上記の標準設定を使用して、MCP のインストールガイドに従ってください。
Windsurf
上記の標準設定を使用して、MCP の設定ガイドに従ってください。
Cline
Cline の MCP 設定ガイドに従い、上記の設定を使用してください。
Warp
Settings | AI | Manage MCP Servers -> + Add に移動して、MCP サーバーを追加します。上記の設定を使用してください。
JetBrains AI Assistant
Settings | Tools | AI Assistant | Model Context Protocol (MCP) -> Add に移動します。上記の設定を使用してください。
手動インストール
npm install -g @kevinwatt/yt-dlp-mcp
🛠️ 利用可能なツール
他の MCP サーバーとの名前の競合を避けるため、すべてのツールには ytdlp_ が接頭辞として付いています。
🔍 検索と検出
| ツール | 説明 |
|---|---|
ytdlp_search_videos |
ページネーションと日付フィルターに対応した YouTube 検索
|
📝 字幕とトランスクリプト
| ツール | 説明 |
|---|---|
ytdlp_list_subtitle_languages |
動画で利用可能なすべての字幕言語を一覧表示します
|
ytdlp_download_video_subtitles |
タイムスタンプ付きの VTT 形式で字幕をダウンロードします
|
ytdlp_download_transcript |
整形済みのプレーンテキストのトランスクリプトを生成します
|
🎥 動画と音声のダウンロード
| ツール | 説明 |
|---|---|
ytdlp_download_video |
動画を Downloads フォルダーにダウンロードします
|
ytdlp_download_audio |
音声のみを抽出してダウンロードします
|
| ツール | 説明 |
|---|---|
ytdlp_get_video_metadata |
動画の包括的なメタデータを JSON 形式で抽出します
|
ytdlp_get_video_metadata_summary |
人が読みやすい形式でメタデータの概要を取得します
|
💬 コメント
| ツール | 説明 |
|---|---|
ytdlp_get_video_comments |
コメントをフラットな JSON、スレッド形式の JSON、または AI が扱いやすい Markdown として抽出します
|
ytdlp_get_video_comments_summary |
コメントの概要を人が読みやすい形式で取得します
|
💡 使用例
動画を検索
"Search for Python programming tutorials"
"Find the top 20 machine learning videos"
"Search for 'react hooks tutorial' and show results 10-20"
"Search for JavaScript courses in JSON format"
メタデータを取得
"Get metadata for https://youtube.com/watch?v=..."
"Show me the title, channel, and view count for this video"
"Extract just the duration and upload date"
"Give me a quick summary of this video's info"
コメントを取得
"Get the top 20 comments for https://youtube.com/watch?v=..."
"Get comments as threaded JSON for this video"
"Extract comments as markdown_tree so the reply branches stay intact"
"Get newest comments with maxDepth 1 and maxRepliesPerThread 0"
"Summarize comments in threaded view"
字幕と文字起こしをダウンロード
"List available subtitles for https://youtube.com/watch?v=..."
"Download English subtitles from this video"
"Get a clean transcript of this video in Spanish"
"Download Chinese (zh-Hant) transcript"
コンテンツをダウンロード
"Download this video in 1080p: https://youtube.com/watch?v=..."
"Download audio from this YouTube video"
"Download this video from 1:30 to 2:45"
"Save this Facebook video to my Downloads"
📖 ドキュメント
- API リファレンス - ツールの詳細なドキュメント
- 設定 - 環境変数と設定項目
- Cookie の設定 - 認証と非公開動画へのアクセス
- エラー処理 - よくあるエラーと解決策
- コントリビューション - コントリビューションの方法
🔧 設定
環境変数
# Downloads directory (default: ~/Downloads)
YTDLP_DOWNLOADS_DIR=/path/to/downloads
# Default resolution (default: 720p)
YTDLP_DEFAULT_RESOLUTION=1080p
# Default subtitle language (default: en)
YTDLP_DEFAULT_SUBTITLE_LANG=en
一覧については、設定ガイドをご覧ください。
Proxy and yt-dlp Config File
すべてのツールは yt-dlp の設定ファイル(~/.config/yt-dlp/config)を読み込むため、そこに設定した --proxy、--cookies などのオプションは自動的に適用されます。これは、サーバープロセスに環境変数を渡せない MCP クライアントが利用できる唯一の方法です。
これらは代替の設定です。必要なものだけを設定してください。
| 設定 | 効果 |
|---|---|
YTDLP_PROXY=socks5://127.0.0.1:1080 | すべてのリクエストをこのプロキシ経由で送信します |
YTDLP_PROXY=(空) | yt-dlp の設定ファイルにあるプロキシ設定を上書きし、直接接続を強制します |
YTDLP_IGNORE_CONFIG=1 | yt-dlp の設定ファイルをすべて無視します |
対応するプロキシ方式:http、https、socks4、socks5、socks5h。
YTDLP_IGNORE_CONFIG=1は、0.9.x の状態にそのまま戻す設定ではありません。検索、メタデータ、コメントのツールは常に設定ファイルを読み込むため、この設定を使うと、それらのツールも設定ファイルを読み込まなくなります。
プロキシを使う場合の MCP 設定:
{
"mcpServers": {
"yt-dlp": {
"command": "npx",
"args": ["-y", "@kevinwatt/yt-dlp-mcp@latest"],
"env": {
"YTDLP_PROXY": "socks5://127.0.0.1:1080"
}
}
}
}
MCP クライアントからサーバーに環境変数を渡せない場合は、代わりにオプションを ~/.config/yt-dlp/config に記述してください。すべてのツールがこのファイルを読み込みます。
--proxy socks5://127.0.0.1:1080
--cookies /path/to/cookies.txt
注:設定ファイルの内容はダウンロードにも適用されます。出力形式を変更するオプション(
-x、--remux-video、--recode-video)を設定すると、ダウンロードツールが生成するファイルも変わります。ツールは yt-dlp が実際に書き込んだファイルを報告するため、報告される名前は正しいままです。出力先を指定するオプション(-o、-P)は効果がありません。ツールは常にコマンドラインで絶対パスの--outputを渡し、こちらが優先されるためです。注:yt-dlp の設定ファイルには、コマンドを実行するオプション(
--exec、--postprocessor-args、--ffmpeg-location)を含めることができます。これらは AI アシスタントによって呼び出されたものも含め、ツールの呼び出し時にも実行されます。サーバーに設定ファイルを一切読み込ませたくない場合は、YTDLP_IGNORE_CONFIG=1を設定してください。
Cookie の設定
非公開動画や年齢制限のあるコンテンツへのアクセス、またはレート制限の回避には、Cookie を設定してください。
⚠️ 重要:Cookie 認証には JavaScript ランタイム(deno)のインストールが必要です。Cookie を使用すると、YouTube は JavaScript によるチャレンジの解決が必要な、認証済み API エンドポイントを使用します。deno がないと、ダウンロードは「n challenge solving failed」エラーで失敗します。
deno のインストール:https://docs.deno.com/runtime/getting_started/installation/
# Extract cookies from browser (recommended)
YTDLP_COOKIES_FROM_BROWSER=chrome
# Or use a cookie file
YTDLP_COOKIES_FILE=/path/to/cookies.txt
Cookie を使う場合の MCP 設定:
{
"mcpServers": {
"yt-dlp": {
"command": "npx",
"args": ["-y", "@kevinwatt/yt-dlp-mcp@latest"],
"env": {
"YTDLP_COOKIES_FROM_BROWSER": "chrome"
}
}
}
}
対応ブラウザー:brave、chrome、chromium、edge、firefox、opera、safari、vivaldi、whale
詳しい設定手順については、Cookie の設定ガイドを参照してください。
🏗️ アーキテクチャ
使用技術
- yt-dlp - 動画抽出エンジン
- MCP SDK - Model Context Protocol
- Zod - TypeScript を優先したスキーマ検証
- TypeScript - 型安全性と開発者エクスペリエンス
主な機能
- ✅ 型安全:strict モードの TypeScript を全面的に使用
- ✅ 入力検証:実行時検証に Zod スキーマを使用
- ✅ 文字数制限:コンテキストのオーバーフローを防ぐため、自動的に切り詰めます
- ✅ ツールアノテーション:readOnly、destructive、idempotent のヒント
- ✅ エラーガイダンス:LLM 向けの実行可能なエラーメッセージ
- ✅ モジュール設計:関心事を明確に分離
📊 レスポンス形式
JSON 形式
プログラムによる処理に最適です。
{
"total": 50,
"count": 10,
"offset": 0,
"videos": [...],
"has_more": true,
"next_offset": 10
}
Markdown 形式
人間が読みやすい表示です。
Found 50 videos (showing 10):
1. **Video Title**
📺 Channel: Creator Name
⏱️ Duration: 10:30
🔗 URL: https://...
コメントの Markdown ツリー
返信の文脈が重要な場合の LLM による分析に便利です。
# AI-Ready Comment Threads
source_title: "Sample Video"
comments_detected: 20
root_threads: 6
reply_comments: 14
## Threads
### Thread 1
- comment_id: "abc123"
parent_id: "root"
depth: 0
reply_count: 2
text:
| Root comment text
- comment_id: "reply456"
parent_id: "abc123"
depth: 1
reply_count: 0
text:
| Reply text
コメントの制限
YouTube のコメント抽出では、抽出器のタプル全体をサポートしています。
youtube:comment_sort=<sort>;max_comments=<total>,<parents>,<replies>,<repliesPerThread>,<depth>
例:
- デフォルトの動作:
maxComments=20の場合、max_comments=20,20,20,20,2になります - ルートコメントのみ:
maxDepth=1、maxRepliesPerThread=0 - 返信数を制限:
maxReplies=40、maxRepliesPerThread=5、maxDepth=2
🔒 プライバシーとセキュリティ
- トラッキングなし:直接ダウンロードを使用し、分析データを収集しません
- 入力の検証:Zod スキーマによってインジェクションを防止します
- URL の検証:URL の形式を厳密にチェックします
- 文字数制限:コンテキストのオーバーフロー攻撃を防止します
- デフォルトで読み取り専用:ほとんどのツールはシステムの状態を変更しません
🤝 コントリビューション
コントリビューションを歓迎します!コントリビューションガイドをご確認ください。
- リポジトリをフォークします
- フィーチャーブランチを作成します(
git checkout -b feature/amazing-feature) - 変更をコミットします(
git commit -m 'Add amazing feature') - ブランチにプッシュします(
git push origin feature/amazing-feature) - プルリクエストを作成します
📝 ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については、LICENSEファイルをご覧ください。
🙏 謝辞
📚 関連プロジェクト
- MCP Servers - 公式 MCP サーバーの実装
- yt-dlp - コマンドライン動画ダウンローダー
- Dive Desktop - AI エージェントプラットフォーム
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。