mcpField
Y
yt-dlp-mcp

yt-dlp-mcp

ローカル
github.com/kevinwattメディア・デザイン298今日更新

yt-dlp-mcp について

yt-dlp-mcp は yt-dlp を基盤とする MCP サーバーで、AI アシスタントが自然言語で動画と音声の検索、情報取得、ダウンロードを行えるようにします。動画プラットフォームのメタデータ、文字起こし、メディアファイルが必要な利用者に向いています。

主な機能

  1. 01ページング対応の YouTube 検索
  2. 02コンテンツをダウンロードしないメタデータ取得
  3. 03VTT 字幕とプレーンテキストの文字起こし
  4. 04解像度とトリミングを指定した動画ダウンロード
  5. 05M4A または MP3 形式の音声のみのダウンロード
  6. 06フラットまたはスレッド表示のコメント取得

活用シーン

  1. 01AI アシスタントに動画のタイトル、チャンネル、公開日を要約させる
  2. 02指定言語の字幕を取得してプレーンテキストの文字起こしを作成する
  3. 03動画の一部区間または音声トラックをダウンロードする

MCP 対応

本プロジェクトは MCP サーバーであり、Claude Code、Claude Desktop、Cursor などの MCP クライアントに ytdlp_ プレフィックス付きのツールを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"yt-dlp": {
"command": "npx",
"args": [
"-y",
"@kevinwatt/yt-dlp-mcp"
]
}
}
}
起動コマンドnpx -y @kevinwatt/yt-dlp-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@kevinwatt/yt-dlp-mcp

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

🎬 yt-dlp-mcp

動画プラットフォームの機能を AI エージェントに提供する、強力な MCP サーバー

npm version License: MIT Node.js Version TypeScript

yt-dlp を Claude、Dive、その他の MCP 対応 AI システムと連携させます。自然言語を通じて、動画のダウンロード、メタデータの抽出、文字起こしの取得などを行えます。

機能 • インストール • ツール • 使用例 • ドキュメント


✨ 機能

🔍 検索と検出
  • ページネーション対応の YouTube 検索
  • JSON または Markdown の出力形式
  • 関連性や品質による絞り込み
📊 メタデータの抽出
  • 動画に関する詳細情報
  • チャンネルの詳細情報と統計
  • アップロード日、タグ、カテゴリー
  • コンテンツのダウンロードは不要
📝 文字起こしと字幕
  • VTT 形式で字幕をダウンロード
  • 読みやすいテキストの文字起こしを生成
  • 複数言語に対応
  • 自動生成された字幕
🎥 動画のダウンロード
  • 解像度を指定可能(480p~1080p)
  • 動画のトリミングに対応
  • プラットフォームを問わず利用可能(YouTube、Facebook など)
  • Downloads フォルダーに保存
🎵 音声の抽出
  • 最高品質の音声(M4A/MP3)
  • 音声のみを直接ダウンロード
  • ポッドキャストや音楽に最適
🛡️ プライバシーと安全性
  • トラッキングや分析なし
  • yt-dlp 経由で直接ダウンロード
  • Zod によるスキーマ検証
  • LLM の安全性を確保する文字数制限

🚀 インストール

前提条件

お使いのシステムに yt-dlp をインストールしてください。

プラットフォームコマンド
🪟 Windowswinget install yt-dlp
🍎 macOSbrew install yt-dlp
🐧 Linuxpip install yt-dlp
はじめに

MCP クライアントに次の設定を追加してください。

{
  "mcpServers": {
    "yt-dlp": {
      "command": "npx",
      "args": ["-y", "@kevinwatt/yt-dlp-mcp@latest"]
    }
  }
}
MCP クライアントの設定
Dive
  1. Dive Desktop を開きます
  2. **「+ Add MCP Server」**をクリックします
  3. 上記の設定を貼り付けます
  4. **「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 検索

  • パラメーター:query、maxResults、offset、response_format、uploadDateFilter
  • 日付フィルター:hour、today、week、month、year(任意)
  • 戻り値:タイトル、チャンネル、再生時間、URL を含む動画リスト
  • 対応形式:JSON と Markdown
📝 字幕とトランスクリプト
ツール説明
ytdlp_list_subtitle_languages

動画で利用可能なすべての字幕言語を一覧表示します

  • パラメーター:url
  • 戻り値:利用可能な言語、形式、自動生成かどうか
ytdlp_download_video_subtitles

タイムスタンプ付きの VTT 形式で字幕をダウンロードします

  • パラメーター:url、language(任意)
  • 戻り値:VTT 字幕の生データ
ytdlp_download_transcript

整形済みのプレーンテキストのトランスクリプトを生成します

  • パラメーター:url、language(任意)
  • 戻り値:タイムスタンプや書式を除去したテキスト
🎥 動画と音声のダウンロード
ツール説明
ytdlp_download_video

動画を Downloads フォルダーにダウンロードします

  • パラメーター:url、resolution、startTime、endTime
  • 解像度:480p、720p、1080p、best
  • 対応機能:動画のトリミング
ytdlp_download_audio

音声のみを抽出してダウンロードします

  • パラメーター:url
  • 形式:最高品質の M4A/MP3
### 📊 メタデータ
ツール説明
ytdlp_get_video_metadata

動画の包括的なメタデータを JSON 形式で抽出します

  • パラメーター: url、fields(任意の配列)
  • 戻り値: 完全なメタデータ、または指定したフィールド
  • 含まれる情報: 視聴回数、高評価数、アップロード日、タグ、フォーマットなど
ytdlp_get_video_metadata_summary

人が読みやすい形式でメタデータの概要を取得します

  • パラメーター: url
  • 戻り値: 主な情報をまとめたフォーマット済みテキスト
💬 コメント
ツール説明
ytdlp_get_video_comments

コメントをフラットな JSON、スレッド形式の JSON、または AI が扱いやすい Markdown として抽出します

  • パラメーター: url、maxComments、sortOrder、view、responseFormat、maxParents、maxReplies、maxRepliesPerThread、maxDepth
  • 表示形式: flat(デフォルト)または threaded
  • フォーマット: json(デフォルト)または markdown_tree(markdown_tree には threaded 表示が必要です)
  • 戻り値: depth、reply_count、root_threads、reply_comments、orphan_comments を含むコメントオブジェクト
  • 段階的な機能縮退: 親コメントのメタデータがないプラットフォームでは、スレッド形式モードはルートコメントのみを表示する形式に切り替わります
ytdlp_get_video_comments_summary

コメントの概要を人が読みやすい形式で取得します

  • パラメーター: url、maxComments、view
  • 表示形式: flat(直線的な概要)または threaded(返信ツリーごとにグループ化)
  • 戻り値: 投稿者バッジ、時刻、高評価数、グループ化された返信を含む、読みやすいコメントの要約

💡 使用例

動画を検索
"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"

📖 ドキュメント


🔧 設定

環境変数
# 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=1yt-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 の形式を厳密にチェックします
  • 文字数制限:コンテキストのオーバーフロー攻撃を防止します
  • デフォルトで読み取り専用:ほとんどのツールはシステムの状態を変更しません

🤝 コントリビューション

コントリビューションを歓迎します!コントリビューションガイドをご確認ください。

  1. リポジトリをフォークします
  2. フィーチャーブランチを作成します(git checkout -b feature/amazing-feature)
  3. 変更をコミットします(git commit -m 'Add amazing feature')
  4. ブランチにプッシュします(git push origin feature/amazing-feature)
  5. プルリクエストを作成します

📝 ライセンス

このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については、LICENSEファイルをご覧ください。


🙏 謝辞

  • yt-dlp - 優れた動画抽出ツール
  • Anthropic - Model Context Protocol の提供
  • Dive - MCP 対応 AI プラットフォーム

📚 関連プロジェクト

  • MCP Servers - 公式 MCP サーバーの実装
  • yt-dlp - コマンドライン動画ダウンローダー
  • Dive Desktop - AI エージェントプラットフォーム

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。