YouTube MCP Server
YouTube MCP サーバー
Claude、Cursor、Windsurf、その他のMCPクライアントに4つの読み取り専用YouTubeツールを提供する、ホスト型Model Context Protocol(MCP)サーバーです。YouTubeの検索、動画・チャンネルデータの読み取り、文字起こし(トランスクリプト)の取得が可能で、Google CloudプロジェクトもYouTube Data APIキーも不要です。
https://mcp.hasdata.com/api/mcp?apis=youtube
目次
Related MCP server: YouTube MCP Server
必要なもの
カスタムヘッダーでストリーミングHTTPに対応したMCPクライアントと、ダッシュボードから無料で作成できるHasData APIキーが必要です。それ以外は何もいりません。これはリモートサーバーです。インストールするパッケージも、実行するコンテナも、フローの中にGoogleアカウントも一切ありません。
クイックスタート
サーバーURLはすべてのクライアントで共通です。以下の設定はClaude Code、Claude Desktop、Cursor、Windsurf、Clineでテスト済みです。
フィールド | 値 |
URL |
|
トランスポート | HTTP、ストリーミング対応 |
認証ヘッダー |
|
OAuth対応のクライアントでは、同じURLをコネクタとして追加し、設定ファイルにキーを入れずにサインインできます。
claude mcp add --transport http youtube "https://mcp.hasdata.com/api/mcp?apis=youtube" \
--header "x-api-key: your_key_here"設定 → コネクタ → カスタムコネクタの追加 の順に進み、https://mcp.hasdata.com/api/mcp?apis=youtube を貼り付けてサインインします。
設定ファイルを使う場合は、claude_desktop_config.json に以下を追加します:
{
"mcpServers": {
"youtube": {
"type": "http",
"url": "https://mcp.hasdata.com/api/mcp?apis=youtube",
"headers": { "x-api-key": "your_key_here" }
}
}
}全プロジェクトで使う場合は ~/.cursor/mcp.json、単一プロジェクトの場合は .cursor/mcp.json:
{
"mcpServers": {
"youtube": {
"url": "https://mcp.hasdata.com/api/mcp?apis=youtube",
"headers": { "x-api-key": "your_key_here" }
}
}
}~/.codeium/windsurf/mcp_config.json。Windsurfではフィールド名が url ではなく serverUrl になります:
{
"mcpServers": {
"youtube": {
"serverUrl": "https://mcp.hasdata.com/api/mcp?apis=youtube",
"headers": { "x-api-key": "your_key_here" }
}
}
}{
"mcpServers": {
"youtube": {
"url": "https://mcp.hasdata.com/api/mcp?apis=youtube",
"type": "streamableHttp",
"headers": { "x-api-key": "your_key_here" },
"disabled": false
}
}
}ワークスペース内の .vscode/mcp.json:
{
"servers": {
"youtube": {
"type": "http",
"url": "https://mcp.hasdata.com/api/mcp?apis=youtube",
"headers": { "x-api-key": "your_key_here" }
}
}
}~/.codex/config.toml:
[mcp_servers.youtube]
url = "https://mcp.hasdata.com/api/mcp?apis=youtube"
[mcp_servers.youtube.headers]
"x-api-key" = "your_key_here"~/.gemini/settings.json:
{
"mcpServers": {
"youtube": {
"httpUrl": "https://mcp.hasdata.com/api/mcp?apis=youtube",
"headers": { "x-api-key": "your_key_here" }
}
}
}プロンプト例
コードではなくプロンプトです。貼り付けるだけでエージェントがツールを自動選択します。各プロンプトには必要な呼び出し回数が注記されています。MCPではモデルが呼び出し回数を決定し、呼び出しが成功するたびに10クレジット消費されるためです。
先月公開されたModel Context Protocolに関する最も視聴された動画を10本見つけて、そのうちトップの動画の文字起こしを取得し、ツール呼び出しについて述べている主張を3つ挙げてください。
呼び出し2回、20クレジット。
@GoogleDevelopers チャンネルを調べてください。公開しているタブを一覧し、直近の5本のアップロードを要約して、繰り返し登場するトピックを教えてください。
呼び出し2回、20クレジット。未確認のタブを読むには追加の呼び出しが必要です。タブの一覧は最初のレスポンス内に含まれるためです。
この動画ID、dQw4w9WgXcQ を調べてください。統計情報を取得し、関連動画のうち同じチャンネルからのものを確認してください。
呼び出し1回、10クレジット。関連動画は同じレスポンスに含まれます。
YouTubeで「web scraping tutorial」をアップロード日順で検索し、4分未満の動画のみに絞り込んで、チャプターがある結果にはそのタイトルを教えてください。
呼び出し1回、10クレジット。
この動画のドイツ語の文字起こしが存在すれば取得し、利用可能な言語を教えてください。
呼び出し1回、10クレジット。
検索はYouTube独自のフィルタートークンを受け付け、エージェントは後処理なしで動画の長さ、アップロード日、コンテンツタイプで絞り込みます。文字起こしには利用可能な言語トラックの一覧が付属するため、エージェントは推測せずに言語を選択できます。
ページングは呼び出しごとにクレジットを消費します。検索して2回ページングし、3本の文字起こしを取得する調査プロンプトは、呼び出し6回・60クレジットになります。無料トライアルは、広範なクロールよりも絞り込んだ質問でより長く使えます。
ツール
4つのツール、すべて読み取り専用です。以下のサンプルは実際の呼び出しから抜粋したもので、数値はYouTubeの更新に応じて変わります。形として読んでください。各ツール名はエンドポイントのリファレンスにリンクしており、完全なフィールド一覧が記載されています。
サンプルはペイロードであり、レスポンス全体ではありません。tools/call の結果には1つのテキストブロックが含まれ、そのテキスト自体が url、status、text、json を保持するJSONで、スクレイピングされたデータは json の下にあります。生のJSON-RPCレスポンスからは、パスは result.content[0].text をパースし、その中の .json です。チャットクライアントはこれを自動的に展開しますが、エンドポイントに直接接続するコードでは手動で行う必要があります。
YouTube検索結果の取得
hasdata_youtube_search_getYoutubeSearchResults
YouTubeを検索し、結果タイプごとに分割された結果ページ全体を返します。
パラメータ | 型 | 必須 | 備考 |
| string | はい | ユーザーが入力するのとまったく同じ自由形式のクエリ |
| string | デフォルトは | |
| string | 現在からのアップロード期間 | |
| string | 動画の長さの区分。例: | |
| string | 1つのコンテンツタイプに制限 | |
| array | 機能フラグ。組み合わせ可能 | |
| string | 検索URLからコピーした生のYouTube | |
| string | 前回のレスポンスの | |
| string | 2文字の国コードと言語コード、およびデバイス |
結果ページは videoResults、shortsResults、inlineShortsResults、playlistResults、channelResults、shelves に分割され、有料掲載は adsResults と sponsoredResults に含まれます。どのブロックが現れるかはクエリに依存し、報告するものがないブロックは空ではなく存在しません。反復処理の前にキーの存在をテストしてください。searchInformation には合計数が含まれ、pagination.nextPageToken を paginationToken としてフィードバックします。広告がオーガニック配列に混ざることはありませんが、スキップすべき広告ブロックが2つあります。
{
"positionOnPage": 1,
"videoId": "GuTcle5edjk",
"title": "you need to learn MCP RIGHT NOW!! (Model Context Protocol)",
"viewsOriginal": "1.6M views",
"views": 1653824,
"length": "38:40",
"publishedDate": "11 months ago",
"extensions": ["4K"],
"chapters": [
{ "title": "Intro", "time": "0:00" },
{ "title": "Problem: LLMs Suck at Accessing Code", "time": "0:40" }
],
"channel": { "name": "NetworkChuck", "verified": true }
}ここで2点注目すべき点があります。views は 1.6M views という表示文字列の隣にあるパース済みの整数で、サフィックスパーサーは不要です。また chapters は動画自体だけでなく検索結果にも含まれますが、一部の動画にしかありません。
検索エンドポイントのリファレンスには、エンドポイントが受け付けるすべての sp トークンと filters__ トークンが記載されています。
YouTube動画データの取得
hasdata_youtube_video_getYoutubeVideo
IDによる単一動画の取得。
パラメータ | 型 | 必須 | 備考 |
| string | はい |
|
| string | 2文字の国コードと言語コード、およびデバイス |
title、thumbnail、channel、publishedDate、lengthSeconds、category、isFamilySafe、isUnlisted に加え、relatedVideos、endScreenVideos、keywords、captions、music、socialLinks の各配列を返します。description はオブジェクトで、全文を content に保持し、すべてのリンクとハッシュタグが startIndex、length、text、url を持つ links 配列を含みます。text フィールドには作者が書いたとおりのリンクが保持され、url にはYouTubeのリダイレクトラッパーが保持されます。これは説明文からスポンサーやアフィリエイトの宛先を抽出する場合に重要です。
以下のサンプルをコピーする前に、ツールごとにパース済みフィールドの名前を確認してください。検索とチャンネルの結果では、パース済みの数値が
viewsに、表示文字列がviewsOriginalに入ります。このレスポンスでは逆で、文字列がviewsに、数値がextractedViewsに入り、likesとsubscribersでも同じ逆転が起こります。これを間違えると、ここではitem.views > 100000が文字列を比較することになり、例外を投げずに誤動作します。
{
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"views": "1,806,075,152 views",
"extractedViews": 1806075152,
"likes": "19M",
"extractedLikes": 19344370,
"publishedDate": "Oct 24, 2009",
"lengthSeconds": 214,
"category": "Music",
"channel": { "name": "Rick Astley", "subscribers": "4.53M subscribers", "extractedSubscribers": 4530000 }
}YouTubeチャンネルデータの取得
hasdata_youtube_channel_getYoutubeChannel
IDまたはハンドルによるチャンネルの取得。一度に1つのタブを取得します。
パラメータ | 型 | 必須 | メモ |
| string | はい | 正規の |
| string | デフォルトは | |
| string | 前回のレスポンスのトークン | |
| string | 2文字の国コードと言語コード、およびデバイス |
デフォルトのタブでは、channelInfo、featuredVideo、sectionsが返ります。他のタブでは、それぞれに応じた形で返ります。channelInfoには、ハンドル、アバター、バナー、説明文、チャンネルキーワード、チャンネルのrssUrlが含まれるため、ポーリングしなくてもチャンネルを視聳し続けることができます。
下のサンプルの
availableTabs配列には表示ラベルが入っており、これらはtabが受け付ける値ではありません。Home、Live、Courses、Searchはどのパラメータ値にも対応しておらず、残りは小文字にする必要があります。このリストを読んで各エントリを処理するエージェントは、最初のエントリで失敗します。
{
"channelInfo": {
"channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
"name": "Google for Developers",
"handle": "@GoogleDevelopers",
"rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UC_x5XG1OV2P6uZZ5FSM9Ttw",
"isFamilySafe": true,
"availableTabs": ["Home", "Videos", "Shorts", "Live", "Courses", "Playlists", "Posts", "Search"]
}
}YouTube動画の文字起こしを取得
hasdata_youtube_transcript_getYoutubeTranscript
動画の時間指定された文字起こし。
パラメータ | 型 | 必須 | メモ |
| string | はい | 11文字の動画ID |
| string | 必要なトラックのBCP-47コード | |
| string | 自動生成トラックの場合は |
言語を信頼する前に、レスポンスの
selectedを確認してください。動画にないlanguageCodeを要求しても、失敗も空の返却もされず、静かにデフォルトのトラックにフォールバックします。リスト内のすべてのエントリにはlanguageNameとlanguageCodeが含まれており、同じ言語が2回(人間が作成したものと、typeがasrに設定されたもの)出現することがあります。
{
"transcript": [
{ "startMs": 320, "endMs": 18800, "snippet": "[Music]", "startTimeText": "0:00" },
{ "startMs": 18800, "endMs": 21800, "snippet": "We're no strangers to", "startTimeText": "0:18" }
],
"availableTranscripts": [
{ "languageName": "English", "languageCode": "en" },
{ "languageName": "English", "languageCode": "en", "type": "asr", "selected": true },
{ "languageName": "German (Germany)", "languageCode": "de-DE" },
{ "languageName": "Japanese", "languageCode": "ja" }
]
}エラーと失敗パス
お使いのクライアントがツール呼び出しでHTTPエラーコードを目にすることはほぼありません。MCPレイヤーは200で応答し、失敗は結果内にisErrorがtrueに設定され、理由がテキストとして含まれます。エージェントは、ステータス行を期待するようなメッセージを読み取ります。
間違ったキーは、接続エラーではなくツール出力として表面化します。 tools/listは空でないキーを受け入れ、4つすべてのツールを返すため、クライアントはハンドシェイクを完了して緑色を表示します。その後、最初のツール呼び出しがisError: trueとテキストHasData API error: 401 Unauthorizedを返します。フローのそれより前では問題が報告されないため、この文字列に注意してください。
キーの欠落は、唯一の実際のHTTPエラーです。 認証はすべてのツールの前に実行され、接続自体が401で失敗します。CORSヘッダーは存在するため、ブラウザクライアントは不透明なネットワークエラーではなくステータスを読み取ります。
ツールのスキーマを壊す引数は、スクレイピングになる前に拒否されます。 サーバーはisError: trueとテキストMCP error -32602: Input validation errorで応答し、問題のあるフィールドを指定します。何もフェッチされず、課金もされません。メッセージはフィールドを指定しますが、受け入れ可能な値は指定しないため、上記のパラメータテーブルが参考になります。
成功して何も見つからない呼び出しは、人々を悩ませるケースです。 これは通常の結果として届き、requestMetadata.statusはokに設定され、データキーが単に欠落しています。結果が空だったことを本文に示すものはありません。エラーではなく、必要なフィールドをテストしてください。
プラットフォームが拒否する識別子は400を返し、requestMetadata.statusはerrorに設定されます。存在しないチャンネルハンドルは、これを見る一般的な方法です。
データを運ぶ結果には、サポートで引用する価値のあるrequestMetadata.idも含まれます。
料金、無料枠、制限
すべてのYouTubeツールは、呼び出しが成功するたびに10クレジットかかります。レスポンスサイズによって価格が変わることはありません。検索結果の完全な1ページは、動画が1つのページと同じコストです。
無料トライアルはカード不要で30日間1,000クレジットで、YouTube呼び出し100回分です。その後、アクティブなアカウントは、残高が100を下回るたびに毎日100クレジットがチャージされ続けるため、低ボリュームのエージェントは無料枠で無期限に実行できます。
有料プランは月額49ドルからで、200,000クレジット(20,000回の呼び出し)です。単価は量に応じて下がり、エントリープランでは1,000回の呼び出しあたり2.45ドル、Businessでは0.99ドル、Growthでは0.83ドル、最大の高ボリュームプランでは0.75ドルです。
プランは同時実行数も決定します。無料トライアルでは一度に1リクエスト、Startupは15、Businessは30、Growthは50、高ボリュームプランは200から1,500です。エージェントがファンアウトすると、あなたが思うより早く上限に達するため、無人で実行するものには防御的にオーバーフローケースを処理してください。
200以外で返されたリクエストは課金されません。成功して何も見つからない呼び出しも、呼び出しには変わりありません。
ツールの選択
apisクエリパラメータによって、エージェントが参照できるツールが決まります。ツールが少ないほど、ツール定義に費やすコンテキストが減り、モデルが間違ったツールに手を伸ばす可能性も低くなります。
?apis=youtube the four tools in this repo
?apis=youtube,google_serp add Google search
?apis=youtube,tiktok,instagram a social research bundleこのパラメータは、youtubeのようなプロバイダー名と、google_maps_searchのような個々のAPI名を受け取ります。スペルミスのある名前は無視されます。すべての名前が間違っている場合、リクエストは400で失敗し、本文には認識できなかったものと有効な値のすべてがリストされます。パラメータを省略すると、同じエンドポイントが57すべてのHasDataツールを公開します。
比較
公式のYouTube Data API v3と比較します。
YouTube Data API v3 | このサーバー | |
セットアップ | Google CloudプロジェクトとAPIキー | 1つのキーと1つのURL |
検索割り当て | Googleのスタートガイドによると、1日あたり「デフォルトのクォータ割り当ては | プランのクレジット、1回の呼び出しにつき10 |
所有していない動画の文字起こし | Googleのリファレンスによると、 | 可能。言語リスト付き |
検索結果のチャプター | いいえ | はい |
検索結果の再生回数といいね | なし。2回目の | 同じレスポンスで表示文字列と整数の両方 |
コスト | 日次クォータ内では無料 | トライアル終了後は有料、1回の呼び出しにつき10クレジット |
書き込みとプライベートデータ | OAuthを介したアップロード、プレイリスト、コメント、独自の分析 | 読み取り専用、公開データのみ |
最後の2行が重要です。日次クォータがボリュームをカバーし、クエリするチャンネルを所有している場合は、公式APIの方が安価な選択肢であるため、それを利用する必要があります。
他のほとんどのYouTube MCPサーバーは文字起こしのみを処理します。これは、検索、エンゲージメント番号を含む動画の読み取り、チャンネルタブのウォークスルーも行うため、エージェントは2番目のサーバーなしで調査パス全体を実行できます。
このサーバーが行わないこと。 コメント、チャンネル管理、アップロード、分析、プライベートデータはありません。サインアウトした訪問者に表示されるものを読み取ります。
よくある質問
公式のYouTube MCPサーバーはありますか?
Googleは公開していません。YouTubeにはファーストパーティのMCPサーバーはありません。すべてのオプションは、YouTube Data API v3または公開ページの周りに他の誰かが構築したものです。これはHasDataによって維持されており、公開ページを読み取るため、Googleの資格情報は不要です。
YouTube MCPサーバーとは何ですか?
YouTubeデータをAIクライアントが呼び出せるツールとして公開するサーバーです。クライアントはModel Context Protocolを介してツール呼び出しを送信し、サーバーはデータをフェッチして構造化JSONを返し、モデルは結果を処理してHTMLページを見ることはありません。これは4つのツールを公開し、リモートで実行されます。クライアントはURLに接続し、ローカルプロセスを開始しません。
YouTube APIキーやGoogle Cloudプロジェクトは必要ですか?
いいえ。唯一の資格情報はHasDataキーです。作成するGoogle Cloudプロジェクトも、記入するクォータフォームも、OAuth同意画面もありません。ツールはYouTubeの公開ページを読み取り、YouTube Data APIを読み取るわけではないからです。
何かをホストまたは実行する必要がありますか?
いいえ。これはストリーミング可能なHTTP上のリモートMCPサーバーです。インストールするもの、起動しておくコンテナ、再起動するプロセスはありません。
データはライブですか、それともキャッシュされていますか?
ライブです。各呼び出しはリクエスト時にページをフェッチし、独自のrequestMetadata.idを持ちます。2つの同一の呼び出しは2つの別々のフェッチであり、保存されたコピーの再生ではありません。再生回数やいいねなどのカウンターはページを追跡するため、ページが動くにつれて動きます。
YouTubeがレイアウトを変更したらどうなりますか?
お客様側では何もありません。変更を追跡し、レスポンススキーマを安定させているため、フィールド名と型は変わりません。値のないフィールドは、存在してnullになるのではなく、アイテムに存在しません。オプションのフィールドはデフォルトで読み取ってください。
他のHasData APIと一緒に使用できますか?
はい。apisパラメータはリストを受け取り、?apis=youtube,google_serpはエージェントに4つのYouTubeツールとGoogle検索を提供します。パラメータを削除すると、すべてを取得できます。
すべての動画の文字起こしを取得できますか?
動画に文字起こしがある場合に限り、availableTranscriptsはリクエストする前の存在を通知します。
キーを貼り付ける代わりにOAuthでサインインできますか?
はい、サポートしているクライアントであれば可能です。Claude DesktopとCursorは、エンドポイントをコネクタとして追加してサインインできます。無人エージェントとスクリプトはx-api-keyヘッダーを使用します。
コンプライアンスと個人データ
HasData は公開されているデータのみにアクセスします。プラットフォフォームの利用規約が自動アクセスを制限する場合があり、お客様自身のコンプライアンスはお客様の責任です。収集するデータに個人情報が含まれる場合は、GDPR、CCPA、またはお住まいの地域の同等の規則に基づく正当な根拠があることを確認してください。
HasData リンク
製品ページとリクエストビルダー | |
サーバードキュメント | |
1つのサーバーにある全57ツール | |
クライアントのチュートリアル | |
その他すべてのスクレイピング | |
プランとクレジット料金 | |
キーと使用状況 |
開発
このリポジトリは、リモートサーバーの設定とドキュメントです。ビルド手順はなく、コンテナ化するものもありません。
test/ 内のテストは、ツールのコントラクトを検証します。これは、ここにコミットなしで壊れる可能性のある部分です。?apis=youtube が正確に4つのツールを返すこと、各ツールが必須パラメータを宣言していること、名前が変更されていないこと、使用中のキーが実際に受け入れられることを確認します。最後のチェックは実際にツールを呼び出し、10クレジットかかります。これは、正しい理由で失敗するカナリアの価格です。
# macOS and Linux
HASDATA_API_KEY=your_key_here npm test
# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test同じスイートは、プッシュのたびにCIで実行され、毎週1回スケジュールされます。これは、上流のツールリストが誰もこのリポジトリに触れずに変更される可能性があるためです。失敗は、ツールリストが移動したか、キーが機能しなくなったか、エンドポイントに到達できなかったことを意味します。アサーションメッセージは、どれかを示します。
貢献
ツールテーブルとレスポンスサンプルの修正が最も役立ちます。これは、ドリフトする部分です。呼び出しと呼び出し結果を含めてください。フォークからのプルリクエストは、キーなしでスイートを実行し、ライブチェックは赤にならずにスキップします。
ライセンス
MIT。 LICENSE を参照してください。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that enables searching YouTube videos, retrieving and storing transcripts, and performing semantic search over video content without using the official YouTube API.29MIT
- AlicenseBqualityBmaintenanceA server that enables interaction with YouTube data through the Model Context Protocol, allowing users to search videos, retrieve detailed information about videos/channels, and fetch comments.1210815MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI assistants to access YouTube data in real-time, with capabilities for searching videos, analyzing channels, retrieving video details, and extracting transcripts.12MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server providing comprehensive read-only access to YouTube data, including video search, transcripts, and channel forensics. It features 16 specialized tools designed for content analysis and metadata retrieval in LLM applications.2
Related MCP Connectors
💯 The fastest YouTube transcript + YouTube search MCP for AI agents. Try for free.
Hosted MCP with 91 agent tools: X, domains, SEO, Maps, Trends, Search, YouTube, TikTok, and more.
Provide token-optimized, structured YouTube data to enhance your LLM applications. Access efficien…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/HasData/youtube-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server