Google ads mcp
Skill itallstartedwithaidea/google-ads-skills/skills/google-ads-mcp
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.From its SKILL.md
npx -y skills add itallstartedwithaidea/google-ads-skills --skill google-ads-mcpAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- reads credentialsReads from 7 credential sources: `.env` and 6 more.
- runs commandsInstructs the agent to run 2 commands, including `pip install git+https://github.com/itallstartedwithaidea/google-ads-mcp.git` and 1 more.
SKILL.md
5.0 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
Google Ads MCP Server
This skill configures the google-ads-mcp server for live Google Ads API access through Claude Code, Claude Desktop, Cursor, or any MCP client.
Quick Setup
1. Install
pip install git+https://github.com/itallstartedwithaidea/google-ads-mcp.git
2. Configure Credentials
Create a .env file or set environment variables:
GOOGLE_ADS_DEVELOPER_TOKEN=your-developer-token
GOOGLE_ADS_CLIENT_ID=your-oauth-client-id
GOOGLE_ADS_CLIENT_SECRET=your-oauth-client-secret
GOOGLE_ADS_REFRESH_TOKEN=your-refresh-token
GOOGLE_ADS_LOGIN_CUSTOMER_ID=123-456-7890
Or point to an existing google-ads.yaml:
GOOGLE_ADS_CREDENTIALS=/path/to/google-ads.yaml
GOOGLE_ADS_LOGIN_CUSTOMER_ID=123-456-7890
3. Run
python -m ads_mcp.server
Claude Code Configuration
Place .mcp.json in your project root:
{
"mcpServers": {
"google-ads": {
"type": "stdio",
"command": "python",
"args": ["-m", "ads_mcp.server"],
"env": {
"GOOGLE_ADS_CREDENTIALS": "${GOOGLE_ADS_CREDENTIALS}",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": "${GOOGLE_ADS_LOGIN_CUSTOMER_ID}"
}
}
}
}
Claude Code auto-discovers .mcp.json and loads the server on startup.
Claude Desktop Configuration
Add to claude_desktop_config.json:
{
"mcpServers": {
"google-ads": {
"command": "python",
"args": ["-m", "ads_mcp.server"],
"env": {
"GOOGLE_ADS_CREDENTIALS": "/path/to/google-ads.yaml",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": "123-456-7890"
}
}
}
}
Available Tools (29)
Read Tools (9)
| Tool | Description |
|---|---|
list_accessible_customers | List all accessible customer accounts |
list_accounts | List accounts under an MCC with details |
execute_gaql | Run custom GAQL queries |
get_campaign_performance | Campaign metrics with date range |
get_keyword_performance | Keyword metrics and quality scores |
get_search_terms | Search term report with wasted spend |
get_ad_performance | Ad creative performance |
get_account_budget_summary | Budget utilization analysis |
generate_keyword_ideas | Keyword Planner search volume and CPC |
Audit Tools (7)
| Tool | Description |
|---|---|
get_auction_insights | Competitive auction data |
get_change_history | Recent account changes |
get_device_performance | Performance by device type |
get_geo_performance | Performance by location |
get_recommendations | Google's optimization suggestions |
get_pmax_performance | Performance Max campaign data |
get_impression_share | Impression share and lost opportunity |
Write Tools (11) — dry-run by default
| Tool | Description |
|---|---|
update_campaign_budget | Change daily budget |
update_campaign_status | Pause or enable a campaign |
update_ad_group_status | Pause or enable an ad group |
update_keyword_bid | Change keyword CPC bid |
add_keywords | Add keywords to an ad group |
add_negative_keywords | Add negative keywords |
remove_negative_keyword | Remove a negative keyword |
create_campaign | Create a new campaign (paused) |
create_ad_group | Create a new ad group |
switch_bidding_strategy | Change bidding strategy |
generic_mutate | Raw Google Ads API mutation |
All write tools use confirm=False by default (dry-run preview). Pass confirm=True only after reviewing the preview.
Doc Tools (2)
| Tool | Description |
|---|---|
get_gaql_reference | GAQL syntax and field reference |
get_workflow_guide | Step-by-step workflow instructions |
Credential Sources
| Value | Where to Get It |
|---|---|
| Developer Token | ads.google.com → Tools & Settings → API Center |
| Client ID | console.cloud.google.com → Credentials |
| Client Secret | console.cloud.google.com → Credentials |
| Refresh Token | OAuth Playground or google-ads Python auth helper |
| Login Customer ID | Your MCC account ID (top of Google Ads UI) |
Troubleshooting
| Problem | Fix |
|---|---|
UNAUTHENTICATED | Refresh token expired — regenerate via OAuth Playground |
PERMISSION_DENIED | Account not accessible under your MCC |
DEVELOPER_TOKEN_NOT_APPROVED | Apply for Basic Access at ads.google.com → API Center |
| Rate limit exceeded | Basic Access: 15K ops/day. Use LIMIT clauses and filters. |
Related
- google-ads-mcp repo — Full source code
- google-ads-api-agent — Python agent with 28 tools
- googleadsagent.ai — Production system (Buddy)
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most project setup skills give in ~1.2k tokens
Counted across 1,553 of the 3,091 authors here whose files we hold, read 2026-09-06
- Write the configuration filein 36 of 1553
- Create the directory structurein 35 of 1553, across 33 files
- Verify the setupin 31 of 1553, across 28 files
- Run the setup scriptin 30 of 1553, across 29 files
- Pre-determine the required sample sizein 29 of 1553, across 12 files
- Check if the configuration already existsin 29 of 1553
- Document every testin 26 of 1553, across 10 files
- Start with a hypothesisin 26 of 1553, across 11 files
- Ask one question at a timein 22 of 1553
- Test a single variable per testin 21 of 1553, across 9 files
- Read product marketing context before asking questionsin 19 of 1553, across 8 files
- Do not peek and stop earlyin 18 of 1553, across 7 files
Said here and by no other author read
- Configure Claude Desktop
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.