Skip to main content
Glama
BismaNwaz

youtube-mcp-server

by BismaNwaz

youtube-mcp-server

リモート MCP サーバーで、YouTube Data API v3 をツールとして公開し、Streamable HTTP 経由で claude.ai にカスタムコネクタとして追加できるようにします。

依存関係なし。ビルド手順なし。node src/server.js だけで全部です。

ツール

ツール

説明

クォータ消費量

youtube_trending

ある国の最も人気のある動画。オプションで1つのカテゴリに絞り込み可能

1ユニット

youtube_search

動画、チャンネル、またはプレイリストのキーワード検索。統計情報付き

検索1回 + 1ユニット

youtube_channel_videos

チャンネルの最近のアップロード動画と、登録者数・視聴回数の合計

3ユニット

youtube_video_details

1回の呼び出しで最大50本の動画の完全な統計情報

1ユニット

youtube_video_comments

高評価数と返信数を含むトップレベルコメント

1ユニット

トランスクリプトは意図的に含めていません。captions.download には OAuth および 動画の編集権限が必要なため、API キーで取得できる字幕は自分が所有する動画のものだけです。非公式のスクレイピングライブラリはクラウドIPレンジからブロックされると広く報告されており、このサーバーが動作するのはまさにその環境です。

Related MCP server: mcp-server-youtube

クォータ

プロジェクトには一般バケットで1日あたり10,000ユニットが与えられ、search.list は別のバケットにあり、1日100回の上限があります。このことがツール設計を形作っています。youtube_channel_videossearch.list?channelId= を使わず、channels.listplaylistItems.listvideos.list の順に呼び出します。そのため、チャンネルの閲覧には、1日100回しかない検索の1回ではなく、一般ユニットを3つ消費します。

ローカルで実行

cp .env.example .env        # add your YOUTUBE_API_KEY
export $(grep -v '^#' .env | xargs)
npm start
curl localhost:3000/health

curl -s localhost:3000/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | head -c 400

テスト

npm test

スタブ化した YouTube API に対して、MCP ハンドシェイク全体、両方のトランスポートモード、5つのツールすべて、およびエラーパスを実行します。API キーもネットワークも不要です。

Railway へデプロイ

  1. このリポジトリを GitHub にプッシュします。

  2. Railway → 新規プロジェクト → GitHub リポジトリからデプロイ → 選択します。

  3. 変数 → YOUTUBE_API_KEY を追加します。

  4. 設定 → ネットワーク → ドメインを生成します。

  5. https://<your-domain>/health"apiKeyConfigured": true を返すことを確認します。

Railway が PORT を自身で設定します。サーバーは 0.0.0.0 にバインドし、その値を読み取ります。

claude.ai に追加

カスタマイズ → コネクタ → カスタムコネクタを追加 → https://<your-domain>/mcp

OAuth フィールドは不要です — サーバーはデフォルトでは認証なしです。ロックダウンするには、MCP_AUTH_TOKEN を設定し、コネクタのリクエストヘッダーの authorizationBearer <token> を指定します。

環境変数

変数

必須

デフォルト

備考

YOUTUBE_API_KEY

はい

Google Cloud Console で YouTube Data API v3 を有効にしたもの

PORT

いいえ

3000

Railway が設定します

MCP_PATH

いいえ

/mcp

MCP エンドポイントが待ち受けるパス

MCP_AUTH_TOKEN

いいえ

設定すると、すべてのリクエストに Authorization: Bearer <value> が必要

YOUTUBE_API_BASE

いいえ

Google のデフォルト

テストスイートをスタブに向けるためだけに使用

設計メモ

ステートレスです。各 POST は自己完結しています — Mcp-Session-Id もセッションマップもありません — そのため、再起動や2番目のレプリカでも「No valid session ID provided」は発生しません。

コンテンツネゴシエーションはリファレンス SDK に従います。クライアントが Accept: text/event-stream を送信した場合は SSE フレーム、それ以外の場合はプレーンな JSON ボディを返します。

/mcp への GETDELETE は 405 を返します。これは、サーバー発信のストリームも閉じるセッションもないサーバーに対して Streamable HTTP 仕様が期待する動作です。

Origin ヘッダーの検証も DNS リバインディング対策も行いません。これらの防御は localhost にバインドされた MCP サーバー向けのものです。公開デプロイで有効のままにすると Anthropic 自身のリクエストを拒否するため、initialize タイムアウトの一般的な原因になります。

ツールの失敗は JSON-RPC エラーではなく isError: true のコンテンツとして返されます。そのため Claude は何が問題だったかを読み取って調整でき、呼び出しがトランスポート層で途絶えることはありません。

結果は 120k 文字に切り詰められます。claude.ai のツール結果上限 ~150k を下回ります。

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/BismaNwaz/-youtube-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server