{"id":"8bf71f17-4871-4ee3-bd35-e2a2cc4a1b62","shortId":"sj47cV","kind":"skill","title":"google-ads-mcp","tagline":"MCP (Model Context Protocol) server configuration for live Google Ads API access. Activate when the user wants to connect Claude to their Google Ads account via MCP, set up the google-ads-mcp server, or configure credentials for live API queries. Provides setup instructions, serv","description":"# Google Ads MCP Server\n\nThis skill configures the [google-ads-mcp](https://github.com/itallstartedwithaidea/google-ads-mcp) server for live Google Ads API access through Claude Code, Claude Desktop, Cursor, or any MCP client.\n\n## Quick Setup\n\n### 1. Install\n\n```bash\npip install git+https://github.com/itallstartedwithaidea/google-ads-mcp.git\n```\n\n### 2. Configure Credentials\n\nCreate a `.env` file or set environment variables:\n\n```env\nGOOGLE_ADS_DEVELOPER_TOKEN=your-developer-token\nGOOGLE_ADS_CLIENT_ID=your-oauth-client-id\nGOOGLE_ADS_CLIENT_SECRET=your-oauth-client-secret\nGOOGLE_ADS_REFRESH_TOKEN=your-refresh-token\nGOOGLE_ADS_LOGIN_CUSTOMER_ID=123-456-7890\n```\n\nOr point to an existing `google-ads.yaml`:\n\n```env\nGOOGLE_ADS_CREDENTIALS=/path/to/google-ads.yaml\nGOOGLE_ADS_LOGIN_CUSTOMER_ID=123-456-7890\n```\n\n### 3. Run\n\n```bash\npython -m ads_mcp.server\n```\n\n## Claude Code Configuration\n\nPlace `.mcp.json` in your project root:\n\n```json\n{\n  \"mcpServers\": {\n    \"google-ads\": {\n      \"type\": \"stdio\",\n      \"command\": \"python\",\n      \"args\": [\"-m\", \"ads_mcp.server\"],\n      \"env\": {\n        \"GOOGLE_ADS_CREDENTIALS\": \"${GOOGLE_ADS_CREDENTIALS}\",\n        \"GOOGLE_ADS_LOGIN_CUSTOMER_ID\": \"${GOOGLE_ADS_LOGIN_CUSTOMER_ID}\"\n      }\n    }\n  }\n}\n```\n\nClaude Code auto-discovers `.mcp.json` and loads the server on startup.\n\n## Claude Desktop Configuration\n\nAdd to `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"google-ads\": {\n      \"command\": \"python\",\n      \"args\": [\"-m\", \"ads_mcp.server\"],\n      \"env\": {\n        \"GOOGLE_ADS_CREDENTIALS\": \"/path/to/google-ads.yaml\",\n        \"GOOGLE_ADS_LOGIN_CUSTOMER_ID\": \"123-456-7890\"\n      }\n    }\n  }\n}\n```\n\n## Available Tools (29)\n\n### Read Tools (9)\n\n| Tool | Description |\n|---|---|\n| `list_accessible_customers` | List all accessible customer accounts |\n| `list_accounts` | List accounts under an MCC with details |\n| `execute_gaql` | Run custom GAQL queries |\n| `get_campaign_performance` | Campaign metrics with date range |\n| `get_keyword_performance` | Keyword metrics and quality scores |\n| `get_search_terms` | Search term report with wasted spend |\n| `get_ad_performance` | Ad creative performance |\n| `get_account_budget_summary` | Budget utilization analysis |\n| `generate_keyword_ideas` | Keyword Planner search volume and CPC |\n\n### Audit Tools (7)\n\n| Tool | Description |\n|---|---|\n| `get_auction_insights` | Competitive auction data |\n| `get_change_history` | Recent account changes |\n| `get_device_performance` | Performance by device type |\n| `get_geo_performance` | Performance by location |\n| `get_recommendations` | Google's optimization suggestions |\n| `get_pmax_performance` | Performance Max campaign data |\n| `get_impression_share` | Impression share and lost opportunity |\n\n### Write Tools (11) — dry-run by default\n\n| Tool | Description |\n|---|---|\n| `update_campaign_budget` | Change daily budget |\n| `update_campaign_status` | Pause or enable a campaign |\n| `update_ad_group_status` | Pause or enable an ad group |\n| `update_keyword_bid` | Change keyword CPC bid |\n| `add_keywords` | Add keywords to an ad group |\n| `add_negative_keywords` | Add negative keywords |\n| `remove_negative_keyword` | Remove a negative keyword |\n| `create_campaign` | Create a new campaign (paused) |\n| `create_ad_group` | Create a new ad group |\n| `switch_bidding_strategy` | Change bidding strategy |\n| `generic_mutate` | Raw Google Ads API mutation |\n\nAll write tools use `confirm=False` by default (dry-run preview). Pass `confirm=True` only after reviewing the preview.\n\n### Doc Tools (2)\n\n| Tool | Description |\n|---|---|\n| `get_gaql_reference` | GAQL syntax and field reference |\n| `get_workflow_guide` | Step-by-step workflow instructions |\n\n## Credential Sources\n\n| Value | Where to Get It |\n|---|---|\n| Developer Token | ads.google.com → Tools & Settings → API Center |\n| Client ID | console.cloud.google.com → Credentials |\n| Client Secret | console.cloud.google.com → Credentials |\n| Refresh Token | OAuth Playground or `google-ads` Python auth helper |\n| Login Customer ID | Your MCC account ID (top of Google Ads UI) |\n\n## Troubleshooting\n\n| Problem | Fix |\n|---|---|\n| `UNAUTHENTICATED` | Refresh token expired — regenerate via OAuth Playground |\n| `PERMISSION_DENIED` | Account not accessible under your MCC |\n| `DEVELOPER_TOKEN_NOT_APPROVED` | Apply for Basic Access at ads.google.com → API Center |\n| Rate limit exceeded | Basic Access: 15K ops/day. Use LIMIT clauses and filters. |\n\n## Related\n\n- [google-ads-mcp repo](https://github.com/itallstartedwithaidea/google-ads-mcp) — Full source code\n- [google-ads-api-agent](https://github.com/itallstartedwithaidea/google-ads-api-agent) — Python agent with 28 tools\n- [googleadsagent.ai](https://googleadsagent.ai) — Production system (Buddy)","tags":["google","ads","mcp","skills","itallstartedwithaidea","advertising-automation","agent-skills","anthropic","claude","claude-code","google-ads","paid-search"],"capabilities":["skill","source-itallstartedwithaidea","skill-google-ads-mcp","topic-advertising-automation","topic-agent-skills","topic-anthropic","topic-claude","topic-claude-code","topic-google-ads","topic-mcp","topic-paid-search","topic-ppc","topic-python"],"categories":["google-ads-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/itallstartedwithaidea/google-ads-skills/google-ads-mcp","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add itallstartedwithaidea/google-ads-skills","source_repo":"https://github.com/itallstartedwithaidea/google-ads-skills","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 9 github stars · SKILL.md body (4,774 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:08:31.867Z","embedding":null,"createdAt":"2026-05-18T13:14:07.029Z","updatedAt":"2026-05-18T19:08:31.867Z","lastSeenAt":"2026-05-18T19:08:31.867Z","tsv":"'-456':146,165,250 '-7890':147,166,251 '/itallstartedwithaidea/google-ads-api-agent)':620 '/itallstartedwithaidea/google-ads-mcp)':65,609 '/itallstartedwithaidea/google-ads-mcp.git':93 '/path/to/google-ads.yaml':158,243 '1':85 '11':383 '123':145,164,249 '15k':594 '2':94,493 '28':624 '29':254 '3':167 '7':332 '9':257 'access':16,72,261,265,573,584,593 'account':29,267,269,271,315,345,551,571 'activ':17 'ad':3,14,28,37,52,61,70,107,115,124,133,141,156,160,186,196,199,202,207,233,241,245,309,311,406,413,428,451,456,468,542,556,604,615 'add':226,422,424,430,433 'ads.google.com':522,586 'ads_mcp.server':172,193,238 'agent':617,622 'analysi':320 'api':15,45,71,469,525,587,616 'appli':581 'approv':580 'arg':191,236 'auction':336,339 'audit':330 'auth':544 'auto':214 'auto-discov':213 'avail':252 'bash':87,169 'basic':583,592 'bid':417,421,459,462 'buddi':630 'budget':316,318,393,396 'campaign':284,286,371,392,398,404,444,448 'center':526,588 'chang':342,346,394,418,461 'claud':24,74,76,173,211,223 'claude_desktop_config.json':228 'claus':598 'client':82,116,121,125,130,527,531 'code':75,174,212,612 'command':189,234 'competit':338 'configur':10,41,57,95,175,225 'confirm':475,484 'connect':23 'console.cloud.google.com':529,533 'context':7 'cpc':329,420 'creat':97,443,445,450,453 'creativ':312 'credenti':42,96,157,197,200,242,513,530,534 'cursor':78 'custom':143,162,204,209,247,262,266,280,547 'daili':395 'data':340,372 'date':289 'default':388,478 'deni':570 'descript':259,334,390,495 'desktop':77,224 'detail':276 'develop':108,112,520,577 'devic':348,352 'discov':215 'doc':491 'dri':385,480 'dry-run':384,479 'enabl':402,411 'env':99,105,154,194,239 'environ':103 'exceed':591 'execut':277 'exist':152 'expir':564 'fals':476 'field':502 'file':100 'filter':600 'fix':560 'full':610 'gaql':278,281,497,499 'generat':321 'generic':464 'geo':355 'get':283,291,299,308,314,335,341,347,354,360,366,373,496,504,518 'git':90 'github.com':64,92,608,619 'github.com/itallstartedwithaidea/google-ads-api-agent)':618 'github.com/itallstartedwithaidea/google-ads-mcp)':63,607 'github.com/itallstartedwithaidea/google-ads-mcp.git':91 'googl':2,13,27,36,51,60,69,106,114,123,132,140,155,159,185,195,198,201,206,232,240,244,362,467,541,555,603,614 'google-ad':184,231,540 'google-ads-api-ag':613 'google-ads-mcp':1,35,59,602 'google-ads.yaml':153 'googleadsagent.ai':626,627 'group':407,414,429,452,457 'guid':506 'helper':545 'histori':343 'id':117,122,144,163,205,210,248,528,548,552 'idea':323 'impress':374,376 'insight':337 'instal':86,89 'instruct':49,512 'json':182,229 'keyword':292,294,322,324,416,419,423,425,432,435,438,442 'limit':590,597 'list':260,263,268,270 'live':12,44,68 'load':218 'locat':359 'login':142,161,203,208,246,546 'lost':379 'm':171,192,237 'max':370 'mcc':274,550,576 'mcp':4,5,31,38,53,62,81,605 'mcp.json':177,216 'mcpserver':183,230 'metric':287,295 'model':6 'mutat':465,470 'negat':431,434,437,441 'new':447,455 'oauth':120,129,537,567 'opportun':380 'ops/day':595 'optim':364 'pass':483 'paus':400,409,449 'perform':285,293,310,313,349,350,356,357,368,369 'permiss':569 'pip':88 'place':176 'planner':325 'playground':538,568 'pmax':367 'point':149 'preview':482,490 'problem':559 'product':628 'project':180 'protocol':8 'provid':47 'python':170,190,235,543,621 'qualiti':297 'queri':46,282 'quick':83 'rang':290 'rate':589 'raw':466 'read':255 'recent':344 'recommend':361 'refer':498,503 'refresh':134,138,535,562 'regener':565 'relat':601 'remov':436,439 'repo':606 'report':304 'review':488 'root':181 'run':168,279,386,481 'score':298 'search':300,302,326 'secret':126,131,532 'serv':50 'server':9,39,54,66,220 'set':32,102,524 'setup':48,84 'share':375,377 'skill':56 'skill-google-ads-mcp' 'sourc':514,611 'source-itallstartedwithaidea' 'spend':307 'startup':222 'status':399,408 'stdio':188 'step':508,510 'step-by-step':507 'strategi':460,463 'suggest':365 'summari':317 'switch':458 'syntax':500 'system':629 'term':301,303 'token':109,113,135,139,521,536,563,578 'tool':253,256,258,331,333,382,389,473,492,494,523,625 'top':553 'topic-advertising-automation' 'topic-agent-skills' 'topic-anthropic' 'topic-claude' 'topic-claude-code' 'topic-google-ads' 'topic-mcp' 'topic-paid-search' 'topic-ppc' 'topic-python' 'troubleshoot':558 'true':485 'type':187,353 'ui':557 'unauthent':561 'updat':391,397,405,415 'use':474,596 'user':20 'util':319 'valu':515 'variabl':104 'via':30,566 'volum':327 'want':21 'wast':306 'workflow':505,511 'write':381,472 'your-developer-token':110 'your-oauth-client-id':118 'your-oauth-client-secret':127 'your-refresh-token':136","prices":[{"id":"0c3a0a9f-e9d4-4578-a703-571f102ae4e0","listingId":"8bf71f17-4871-4ee3-bd35-e2a2cc4a1b62","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"itallstartedwithaidea","category":"google-ads-skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:14:07.029Z"}],"sources":[{"listingId":"8bf71f17-4871-4ee3-bd35-e2a2cc4a1b62","source":"github","sourceId":"itallstartedwithaidea/google-ads-skills/google-ads-mcp","sourceUrl":"https://github.com/itallstartedwithaidea/google-ads-skills/tree/main/skills/google-ads-mcp","isPrimary":false,"firstSeenAt":"2026-05-18T13:14:07.029Z","lastSeenAt":"2026-05-18T19:08:31.867Z"}],"details":{"listingId":"8bf71f17-4871-4ee3-bd35-e2a2cc4a1b62","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"itallstartedwithaidea","slug":"google-ads-mcp","github":{"repo":"itallstartedwithaidea/google-ads-skills","stars":9,"topics":["advertising-automation","agent-skills","anthropic","claude","claude-code","google-ads","mcp","paid-search","ppc","python"],"license":"apache-2.0","html_url":"https://github.com/itallstartedwithaidea/google-ads-skills","pushed_at":"2026-04-12T16:14:29Z","description":"Google Ads Agent Skills for Claude — campaign analysis, account auditing, safe write ops, PPC math, and MCP server integration","skill_md_sha":"9d0c527ab182a4a4ead51ef5fedf88f7606f9105","skill_md_path":"skills/google-ads-mcp/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/itallstartedwithaidea/google-ads-skills/tree/main/skills/google-ads-mcp"},"layout":"multi","source":"github","category":"google-ads-skills","frontmatter":{"name":"google-ads-mcp","description":"MCP (Model Context Protocol) server configuration for live Google Ads API access. Activate when the user wants to connect Claude to their Google Ads account via MCP, set up the google-ads-mcp server, or configure credentials for live API queries. Provides setup instructions, server configuration, and troubleshooting."},"skills_sh_url":"https://skills.sh/itallstartedwithaidea/google-ads-skills/google-ads-mcp"},"updatedAt":"2026-05-18T19:08:31.867Z"}}