MCP YouTube Transcript
An MCP server retrieving transcripts of YouTube videos
作者による説明(英語の原文)
Google Ads MCP with MCC support: 35 tools for campaigns, keywords, reporting, GAQL.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
GOOGLE_ADS_CLIENT_ID, GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_REFRESH_TOKEN, GOOGLE_ADS_DEVELOPER_TOKEN「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"google-ads": {
"command": "npx",
"args": [
"-y",
"mcp-google-ads"
],
"env": {
"GOOGLE_ADS_CLIENT_ID": "your-value",
"GOOGLE_ADS_CLIENT_SECRET": "your-value",
"GOOGLE_ADS_REFRESH_TOKEN": "your-value",
"GOOGLE_ADS_DEVELOPER_TOKEN": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add google-ads --env GOOGLE_ADS_CLIENT_ID=your-value --env GOOGLE_ADS_CLIENT_SECRET=your-value --env GOOGLE_ADS_REFRESH_TOKEN=your-value --env GOOGLE_ADS_DEVELOPER_TOKEN=your-value -- npx -y mcp-google-ads動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"google-ads": {
"command": "npx",
"args": [
"-y",
"mcp-google-ads"
],
"env": {
"GOOGLE_ADS_CLIENT_ID": "your-value",
"GOOGLE_ADS_CLIENT_SECRET": "your-value",
"GOOGLE_ADS_REFRESH_TOKEN": "your-value",
"GOOGLE_ADS_DEVELOPER_TOKEN": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"google-ads": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-google-ads"
],
"env": {
"GOOGLE_ADS_CLIENT_ID": "your-value",
"GOOGLE_ADS_CLIENT_SECRET": "your-value",
"GOOGLE_ADS_REFRESH_TOKEN": "your-value",
"GOOGLE_ADS_DEVELOPER_TOKEN": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント mharnett で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:GOOGLE_ADS_CLIENT_ID, GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_REFRESH_TOKEN, GOOGLE_ADS_DEVELOPER_TOKEN
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(1.0.1)がレジストリに届いたのは7 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
An MCP server retrieving transcripts of YouTube videos
GA4 MCP server for AI agents: schema discovery, server-side aggregation, analysis-ready defaults.
AI video summarizer: summarize and transcribe YouTube, Bilibili, TikTok and podcast videos.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
An MCP (Model Context Protocol) server for the Google Ads API with built-in safeguards for review before changes go live. Production-proven with MCC (Manager Account) support, 36 tools for campaign management, reporting, and optimization. v1.2.0 adds Demand Gen campaign creation end-to-end.
You need:
Bring your own OAuth client (the client_id / client_secret from the step above) and run the bundled helper. It runs Google's installed-app loopback flow with PKCE (S256) and prints your refresh token. It reads nothing from your home directory and needs no shared OAuth keyfile.
export GOOGLE_ADS_CLIENT_ID="YOUR_CLIENT_ID.apps.googleusercontent.com"
export GOOGLE_ADS_CLIENT_SECRET="YOUR_CLIENT_SECRET" node get-refresh-token.cjs
Your browser opens for Google sign-in; approve as the Google account that owns the Ads data. On success the helper prints one line to stdout:
GOOGLE_ADS_REFRESH_TOKEN=1//0a...
Set that value in your environment (or config.json, below). The OAuth scope requested is read from config.json (oauth.scope), falling back to config.example.json, so the helper and the running server always request the same scope. This MCP requests only the minimum scope it needs: https://www.googleapis.com/auth/adwords.
Do not run this with stdout redirected to a shared log file — the refresh
token is printed to stdout by design.
Note: GOOGLE_ADS_DEVELOPER_TOKEN is a separate Google Ads API credential, not an OAuth scope — set it independently (see Environment Variables below).
npm install mcp-google-ads
Or clone and build from source:
git clone https://github.com/mharnett/mcp-google-ads.git
cd mcp-google-ads npm install npm run build
Security: Never share your .mcp.json file or commit it to git -- it may contain API credentials. Add .mcp.json to your .gitignore.
cp config.example.json config.json
Edit config.json with your credentials:
{
"oauth": { "scope": "https://www.googleapis.com/auth/adwords" }, "google_ads": { "developer_token": "YOUR_DEVELOPER_TOKEN", "client_id": "YOUR_CLIENT_ID.apps.googleusercontent.com", "client_secret": "YOUR_CLIENT_SECRET", "refresh_token": "YOUR_REFRESH_TOKEN", "mcc_customer_id": "123-456-7890" }, "clients": { "my-client": { "customer_id": "111-222-3333", "name": "My Client", "folder": "/path/to/client/workspace" }, "another-client": { "customer_id": "444-555-6666", "name": "Another Client", "folder": "/path/to/another/workspace" } }, "defaults": { "create_paused": true, "label_prefix": "claude-", "require_approval_for_enable": true } }
Alternatively, set credentials via environment variables (these override config.json):
| Variable | Required | Description |
|---|---|---|
GOOGLE_ADS_DEVELOPER_TOKEN | Yes | Google Ads API developer token |
GOOGLE_ADS_CLIENT_ID | Yes | OAuth 2.0 client ID |
GOOGLE_ADS_CLIENT_SECRET | Yes | OAuth 2.0 client secret |
GOOGLE_ADS_REFRESH_TOKEN | Yes | OAuth 2.0 refresh token |
GOOGLE_ADS_MCP_WRITE | No | Set to true to expose mutating tools (create/update/pause/enable/remove/apply). Default: read-only. |
GOOGLE_ADS_MCP_OVERRIDE_LOG | No | JSONL file that records every confirm_large_change override (timestamp, tool, entity, old -> new, reason). Default: overrides.jsonl in the per-user config directory. |
GOOGLE_ADS_MCP_OVERRIDE_WEBHOOK_URL | No | Slack-compatible incoming webhook; each override also posts one line here. A missing or failing webhook never fails the write. |
GOOGLE_ADS_MCP_OVERRIDE_SLACK_TOKEN / GOOGLE_ADS_MCP_OVERRIDE_SLACK_CHANNEL | No | Slack bot token + channel id; when both are set each override posts via chat.postMessage and the webhook is skipped. run-mcp.sh sets these to the drak bot and #drak-ops. |
GOOGLE_ADS_MCP_ALWAYS_LOAD | No | Comma-separated tool names to mark as always-loaded, e.g. google_ads_get_client_context,google_ads_gaql_query. Default: unset (no tool is marked). |
Clients that defer tool schemas behind a tool-search step only load a tool once it is searched for. Naming tools in GOOGLE_ADS_MCP_ALWAYS_LOAD stamps them with _meta: {"anthropic/alwaysLoad": true} in tools/list, so those tools are offered directly. Names that match no tool are ignored, and the marker never exposes a tool that read-only mode hides.
The server ships read-only. Mutating tools (anything that creates, updates, pauses, enables, removes, links, or applies) are hidden from the tool list until you set GOOGLE_ADS_MCP_WRITE=true in the MCP server environment. If a write tool is somehow invoked without that flag, the server returns a clear error pointing at the env var.
This is deliberate: a casual chat message like "activate the Fundraising campaign" should not move live ad spend without an explicit opt-in.
Add to your Claude Code MCP settings (~/.claude/settings.json or project settings):
{
"mcpServers": { "google-ads": { "command": "node", "args": ["node_modules/mcp-google-ads/dist/index.js"] } } }
Or if installed from source:
{
"mcpServers": { "google-ads": { "command": "node", "args": ["/path/to/mcp-google-ads/dist/index.js"] } } }
Restart Claude Code.
Claude Desktop: Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows).
1. cd into client folder → auto-detects account context
| Tool | Description |
|---|---|
google_ads_get_client_context | Detect which account from working directory |
google_ads_list_campaigns | List all campaigns with status and metrics |
google_ads_list_ad_groups | List ad groups in a campaign |
google_ads_list_pending_changes | Show paused items with claude- label |
google_ads_list_conversion_actions | List conversion actions |
| Tool | Description |
|---|---|
google_ads_create_campaign | Create campaign (PAUSED). Supports SEARCH + DEMAND_GEN channels, richer bidding (MANUAL_CPC / MAXIMIZE_CLICKS / MAXIMIZE_CONVERSIONS / TARGET_CPA), geo + language targeting, start/end dates |
google_ads_create_ad_group | Create ad group (PAUSED). type accepts SEARCH_STANDARD (default) or DEMAND_GEN_MULTI_ASSET_AD_GROUP |
google_ads_create_responsive_search_ad | Create RSA with validation (PAUSED) |
google_ads_create_image_asset | Upload PNG/JPG/GIF image asset (validates ≤5MB, ≥600×314) for use in Demand Gen ads |
google_ads_create_demand_gen_multi_asset_ad | Create a Demand Gen multi-asset ad (PAUSED) — validates char/count caps before API call, fails fast if ad_group isn't DG |
google_ads_create_keywords | Create keywords (PAUSED) |
google_ads_validate_ad | Validate RSA without creating |
google_ads_enable_items | Enable items (make LIVE) — requires approval |
google_ads_pause_items | Pause active items |
google_ads_pause_keywords | Pause specific keywords |
google_ads_update_campaign_budget | Update campaign daily budget |
| Tool | Description |
|---|---|
google_ads_get_campaign_tracking | Get tracking templates and URL parameters |
google_ads_update_campaign_tracking | Update tracking templates |
| Tool | Description |
|---|---|
google_ads_create_shared_set | Create shared negative keyword list |
google_ads_link_shared_set | Link shared set to campaign |
google_ads_unlink_shared_set | Unlink shared set from campaign |
google_ads_add_shared_negatives | Add keywords to shared negative list |
google_ads_remove_shared_negatives | Remove keywords from shared list |
google_ads_add_campaign_negatives | Add campaign-level negatives |
google_ads_remove_campaign_negatives | Remove campaign-level negatives |
google_ads_remove_adgroup_negatives | Remove ad group-level negatives |
| Tool | Description |
|---|---|
google_ads_keyword_performance | Keyword metrics with quality score |
google_ads_keyword_performance_by_conversion | Keyword metrics by conversion action |
google_ads_ad_performance | Ad-level performance metrics |
google_ads_ad_performance_by_conversion | Ad metrics by conversion action |
google_ads_search_term_report | Search term query report |
google_ads_search_term_report_by_conversion | Search terms by conversion action |
google_ads_search_term_insights | Search term category insights |
google_ads_search_term_insight_terms | Terms within insight categories |
google_ads_keyword_volume | Keyword planner volume estimates |
| Tool | Description |
|---|---|
google_ads_gaql_query | Run raw GAQL queries |
# Check which account you're working with
"What Google Ads account am I connected to?"
"Show me all campaigns in this account"
"Create a Search campaign for brand terms with $50/day budget"
"What changes are pending my review?"
"Enable the approved ads in the Brand campaign"
"Show me keyword performance for the last 30 days, sorted by cost"
"Run a GAQL query to get all ad groups with CTR below 2%"
# 1. Campaign: $75/day, DEMAND_GEN channel, MAXIMIZE_CONVERSIONS default,
google_ads_create_campaign({ name: "DG - Spring Promo", daily_budget: 75, channel_type: "DEMAND_GEN", geo_target_ids: ["21134", "21141"], start_date: "2026-05-01", end_date: "2026-06-30" })
google_ads_create_ad_group({ campaign_id: "555123", name: "DG AG 1", type: "DEMAND_GEN_MULTI_ASSET_AD_GROUP" })
google_ads_create_image_asset({ name: "hero-landscape", file_path: "/abs/path/hero.png" })
google_ads_create_image_asset({ name: "hero-square", file_path: "/abs/path/sq
冒頭だけを表示しています。続きはリポジトリで読めます