Skip to main content
Glama
adilsonicjunior

youtube-analytics-mcp

youtube-analytics-mcp

ローカルで動作する読み取り専用のMCPサーバーで、ClaudeにあなたのYouTubeチャンネルの非公開Analyticsデータ(再生回数、再生時間、維持率、登録者数、トラフィックソース、視聴者層、収益、サムネイル表示回数/CTR)へのアクセスを提供します。公開APIキーだけで見られるものではありません。

このサーバーは、チャンネル上の何かを編集・アップロード・公開・削除することは一切できません。完全なセキュリティレビューは SECURITY.md を参照してください。

必要条件

  • Node.js 22+

  • データを取得したいYouTubeチャンネルを所有(または管理)しているGoogleアカウント

  • macOS、Linux、またはWSL(npm run auth のブラウザフローは open コマンドを使用)

Related MCP server: youtube-mcp-server

セットアップ手順

以下の順序で実行してください。手順1〜4はGoogle Cloud Consoleで、手順5〜8はお使いのマシンで行います。

1. Google Cloudプロジェクトを作成する

console.cloud.google.com にアクセスし、新しいプロジェクトを作成します(または既存の使い慣れたプロジェクトを選択)。

2. 3つのAPIを有効にする

プロジェクトで、APIとサービス → ライブラリ に移動し、以下をそれぞれ有効にします:

  • YouTube Data API v3

  • YouTube Analytics API

  • YouTube Reporting API(サムネイルのインプレッション/CTRにのみ必要 — 下記 を参照)

3. OAuth同意画面を設定する

APIとサービス → OAuth同意画面 に移動します。

  • ユーザーの種類: 外部(Google Workspace アカウントをお持ちの場合は内部も可)

  • 必要なアプリ名・サポートメールアドレス欄を入力

  • 求められたらスコープを追加(アプリが直接要求するため、この画面は存在すれば十分です)

  • アプリを公開(本番)に設定する。 ここでつまずく人が多いステップです。テストモードのアプリは、明示的にテストユーザーとして追加したアカウントからのみサインインでき、さらにリフレッシュトークンは7日で失効するため、毎週ステップ6をやり直すことになります。本番公開(Googleの審査提出なし)は個人ツールには問題ありません — サインイン時に「未確認アプリ」の警告が表示されますが、詳細 → [アプリ名] に移動(安全ではない) をクリックして続行してください。これは自分のアプリでは想定どおりで安全です。

4. OAuth認証情報を作成する

APIとサービス → 認証情報 → 認証情報を作成 → OAuthクライアントID に移動します。

  • アプリケーションの種類: デスクトップアプリ

  • 任意の名前を付ける

  • クライアントIDクライアントシークレット をコピー — 手順5で必要になります

ここでリダイレクトURIを登録する必要はありません。このサーバーは認証時に一時的なローカルポートをバインドし、Googleはデスクトップ型クライアントに対して任意のloopbackアドレスを受け入れます。

5. インストールとビルド

git clone <this-repo-url>
cd youtube-analytics-mcp
npm install
npm run build

6. 認証情報の設定

cp .env.example .env

.env を編集し、手順4で取得したClient ID / Client Secretを貼り付けます:

GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your-client-secret

.env はgitignoreされているため、コミットされることはありません。オプション設定:

  • GOOGLE_API_KEY — 現在のツールでは不要です。サーバーを自分で拡張しない限り設定は不要です。

  • REVENUE_CURRENCY — デフォルトは USD。AdSenseの通貨(例:BRL)で表示したい場合は設定してください。Google側でサーバーサイド変換されます。

7. 認証

npm run auth

ブラウザが開いてGoogleアカウントでログインし、リフレッシュトークンが ~/.youtube-analytics-mcp/token.json に保存されます(アクセス権限はユーザーのみに制限され、リポジトリには保存されません)。この操作は一度だけでOKです。以降はサーバーが自動的にアクセストークンを更新します。

動作確認:

npm run auth:status

Authenticated とチャンネル名が表示されれば成功です。

8. Claude Codeに設定する

MCP設定ファイルに、このプロジェクトの dist/index.js への絶対パスを指定して追加します:

{
  "mcpServers": {
    "youtube-analytics-channel": {
      "command": "node",
      "args": ["/absolute/path/to/youtube-analytics-mcp/dist/index.js"]
    }
  }
}

Claudeを再起動(またはMCPサーバーをリロード)すると、以下のツールが使えるようになります。

利用可能なツール

ツール

説明

health_check

サーバーが起動しているか確認します。

get_channel_overview

指定期間(last_7_days / last_28_days / last_90_days / last_365_days)またはカスタム期間での視聴回数、再生時間、保持率、登録者数、収益を取得します。

list_videos

アップロード済み動画の一覧。公開日範囲と縦型/ショート動画でフィルタリング可能。

get_video_analytics

1本の動画の詳細な分析データ。

get_top_videos

任意の指標(視聴回数、再生時間、保持率、登録者数、収益、インプレッション、CTR)で動画をランキング。

get_daily_performance

日別のパフォーマンスデータ。

get_traffic_sources

トラフィックソース(検索、Shortsフィード、外部サイトなど)別の視聴回数・再生時間。チャンネル全体または動画単位で取得可能。

get_audience_breakdown

国、年齢層、性別ごとの視聴者構成。

get_revenue_analytics

収益の合計または動画・日別の内訳。収益データにアクセスできない場合は、値を捏造せず available: false を返します。

compare_periods

2つの期間を比較し、絶対値と変化率で表示します。

get_impressions_and_ctr

サムネイルインプレッション数とクリック率。非同期 — 下記参照。

run_custom_report

アドホックなクエリ用の逃げ口。許可されたディメンションと指標の組み合わせに制限されます。

インプレッションとCTRに関する注意

サムネイルのインプレッション数とCTR(クリック率)は、インタラクティブAPI(reports.query)ではどのディメンション/フィルターの組み合わせでも公開されていません。これはドキュメントからの推測ではなく、実際に検証済みです。このデータはYouTubeのバルク「リーチレポート」という別の非同期ジョブAPIでのみ取得できます:

  1. get_impressions_and_ctr を初回呼び出しすると、Googleにリーチレポートのジョブが登録されます。

  2. Googleが最初のレポートを生成するまでに24〜48時間かかり、その後はほぼ毎日新しいレポートが生成されます。

  3. 以降、get_impressions_and_ctr(またはインプレッション/CTRでの並び替えを含む get_top_videos)を呼び出すたびに、新しいレポートをローカルキャッシュ(~/.youtube-analytics-mcp/reach-cache.json)に同期してから、そのキャッシュから回答します。

最初のレポートが生成されるまでは、impressions: 0impressionsCtr: null、およびその理由を説明する note が返されます。これは想定どおりの動作であり、バグではありません。

トラブルシューティング

  • npm run auth で「アクセスがブロックされました」: OAuth同意画面がまだ「テスト」モードです。手順3に戻り、アカウントをテストユーザーに追加するか、本番環境に公開してください。

  • NotAuthenticatedError が発生: npm run auth を実行してください。

  • 収益が常に 0: チャンネルが収益化されていないか、その期間の数値が本当にゼロの可能性があります。このツールは収益を捏造しません — 実際の権限/アクセスエラーかどうかは get_revenue_analyticsavailable フィールドで確認してください。

  • get_impressions_and_ctr / インプレッション/CTRでソートした get_top_videos が何も返さない: レスポンスの dataCoverage を確認してください。earliestDatenull の場合、レポートジョブがまだ最初のレポートを生成していません(初回呼び出しから最大24〜48時間かかります)。

テスト

npm test

セキュリティ

SECURITY.md に完全なセキュリティレビュー(OWASP Top 10含む)があります。要約:すべてのシークレットはあなたのマシン上、リポジトリ外にのみ保存され、Google APIへのリクエストはすべて検証済みです。

ライセンス

MIT

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    This read-only MCP Server allows you to connect to YouTube Analytics data from Claude Desktop through CData JDBC Drivers. Free (beta) read/write servers available at https://www.cdata.com/solutions/mcp
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A local stdio MCP server that gives Claude (or any MCP client) full programmatic control over a single YouTube channel, including video upload, channel management, comments, analytics, and more.
    46
    33
    MIT

View all related MCP servers

Related MCP Connectors

  • Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.

  • MCP server giving Claude AI access to 22+ NYC public-record databases for real estate due diligence

  • MCP server for Google Veo AI video generation

View all MCP Connectors

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/adilsonicjunior/youtube-analytics-mcp'

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