MCP YouTube Transcript
An MCP server retrieving transcripts of YouTube videos
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Google Ads MCP with MCC support: 35 tools for campaigns, keywords, reporting, GAQL.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม 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": "ใส่ค่าของคุณ",
"GOOGLE_ADS_CLIENT_SECRET": "ใส่ค่าของคุณ",
"GOOGLE_ADS_REFRESH_TOKEN": "ใส่ค่าของคุณ",
"GOOGLE_ADS_DEVELOPER_TOKEN": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add google-ads --env GOOGLE_ADS_CLIENT_ID='ใส่ค่าของคุณ' --env GOOGLE_ADS_CLIENT_SECRET='ใส่ค่าของคุณ' --env GOOGLE_ADS_REFRESH_TOKEN='ใส่ค่าของคุณ' --env GOOGLE_ADS_DEVELOPER_TOKEN='ใส่ค่าของคุณ' -- 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": "ใส่ค่าของคุณ",
"GOOGLE_ADS_CLIENT_SECRET": "ใส่ค่าของคุณ",
"GOOGLE_ADS_REFRESH_TOKEN": "ใส่ค่าของคุณ",
"GOOGLE_ADS_DEVELOPER_TOKEN": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"google-ads": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-google-ads"
],
"env": {
"GOOGLE_ADS_CLIENT_ID": "ใส่ค่าของคุณ",
"GOOGLE_ADS_CLIENT_SECRET": "ใส่ค่าของคุณ",
"GOOGLE_ADS_REFRESH_TOKEN": "ใส่ค่าของคุณ",
"GOOGLE_ADS_DEVELOPER_TOKEN": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub mharnett ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: GOOGLE_ADS_CLIENT_ID, GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_REFRESH_TOKEN, GOOGLE_ADS_DEVELOPER_TOKEN
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.0.1) เข้า registry 7 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
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.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ 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
ตัดมาแค่ช่วงต้น อ่านต่อใน repo