google-ads-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_auction_insightsA | Return competitive auction insights — impression share, overlap rate, position above rate, and outranking share for competing domains. This is the primary competitive intelligence tool. Shows where your ads appear relative to competitors in the same auctions. |
| get_change_historyA | Return account change history — who changed what, when, and what it changed from/to. Invaluable for audits, debugging performance drops, and tracking unauthorized changes. |
| get_device_performanceA | Return campaign performance segmented by device — MOBILE, DESKTOP, TABLET. Use this to identify bid adjustment opportunities and diagnose mobile vs. desktop conversion rate gaps. |
| get_geo_performanceC | Return performance segmented by geographic location. |
| get_recommendationsB | Return Google's optimization recommendations for the account. |
| get_pmax_performanceA | Return Performance Max campaign and asset group performance. PMax requires separate queries for campaign-level and asset-group-level data since asset groups can't be joined to standard metrics in a single query. |
| get_impression_shareA | Return search impression share and lost IS reasons by campaign. Shows what % of eligible impressions you're winning and whether you're losing to budget constraints or ad rank. Critical for scaling decisions. |
| list_accessible_customersA | Return customer IDs directly accessible by the authenticated user. These IDs can be used as the Source: googleads/google-ads-mcp (tools/core.py) — uses CustomerService.list_accessible_customers() via the Python client library (cleaner than raw REST used in repo1/repo4). |
| list_accountsA | List all accessible Google Ads accounts including MCC sub-accounts. Returns a structured dict with account metadata (id, name, is_manager, level, parent_id). For manager (MCC) accounts, sub-accounts are fetched and included up to two levels deep. Source: gomarble-ai/google-ads-mcp-server (server.py) — MCC traversal logic; combined with repo2 CustomerService pattern for cleaner API calls. Recommended first step: run this to discover available customer IDs before calling any reporting tools. |
| execute_gaqlB | Execute any Google Ads Query Language (GAQL) query. |
| get_campaign_performanceB | Return campaign performance metrics for the last N days. |
| get_keyword_performanceC | Return keyword performance metrics. |
| get_search_termsA | Return search term performance — actual queries that triggered your ads. Essential for SQR (Search Query Reports), finding negative keyword opportunities, and identifying new keyword candidates. |
| get_ad_performanceA | Return ad-level performance including RSA headlines and descriptions. Useful for creative audits, A/B analysis, and identifying low-performing ad copy that should be refreshed. |
| get_account_budget_summaryA | Return campaign budgets and current spend for budget pacing analysis. Returns daily budget amounts alongside 30-day cost to help identify budget-constrained campaigns or overspending. |
| generate_keyword_ideasB | Generate keyword ideas using the Google Ads Keyword Planner. |
| get_gaql_referenceA | Return the GAQL (Google Ads Query Language) reference guide. Call this before writing complex queries to ensure correct field names, operators, and resource relationships. Avoids the most common GAQL errors (wrong keyword field names, unsupported CONTAINS operator, cost field paths). Source: google-marketing-solutions/google_ads_mcp (tools/docs.py) |
| get_workflow_guideA | Return the recommended workflow for using Google Ads MCP tools. Provides a step-by-step guide: account discovery → currency check → data retrieval → custom queries. Good first call when starting a new analysis session. |
| update_campaign_budgetA | Update a campaign's daily budget. Default is DRY RUN — shows preview. Pass confirm=True to execute. |
| update_campaign_statusA | Pause or enable a campaign. Default is DRY RUN — shows preview. Pass confirm=True to execute. |
| update_ad_group_statusA | Pause or enable an ad group. Default is DRY RUN — shows preview. Pass confirm=True to execute. |
| update_keyword_bidA | Update the CPC bid for a specific keyword. Default is DRY RUN — shows preview. Pass confirm=True to execute. |
| add_keywordsA | Add keywords to an ad group. Default is DRY RUN — shows preview. Pass confirm=True to execute. |
| add_negative_keywordsA | Add negative keywords to a campaign. Default is DRY RUN — shows preview. Pass confirm=True to execute. |
| remove_negative_keywordA | Remove a negative keyword by resource name. Get the resource_name from get_search_terms or execute_gaql on campaign_criterion. Default is DRY RUN — shows preview. Pass confirm=True to execute. |
| create_campaignA | Create a new campaign. Default is DRY RUN — shows preview. Pass confirm=True to execute. New campaigns are always created PAUSED unless you explicitly set status='ENABLED'. |
| create_ad_groupA | Create a new ad group within a campaign. Default is DRY RUN — shows preview. Pass confirm=True to execute. |
| switch_bidding_strategyA | Change a campaign's bidding strategy. Default is DRY RUN — shows preview. Pass confirm=True to execute. |
| generic_mutateA | Generic mutate operation for advanced use cases not covered by specific tools. Use this when you need to modify a resource type that doesn't have a dedicated write tool. Requires understanding the Google Ads API proto structure. Default is DRY RUN — shows preview. Pass confirm=True to execute. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| gaql_reference_resource | GAQL reference guide as an MCP resource. |
| workflow_guide_resource | Workflow guide as an MCP resource. |
TDQS
Scored across 29 tools
Most tools have clearly distinct targets (e.g., get_campaign_performance vs get_keyword_performance vs get_ad_performance). Two potential confusions exist: list_accessible_customers vs list_accounts (similar but descriptions distinguish them), and execute_gaql/generic_mutate overlap with all specific tools as catch-alls, but they are clearly labeled as advanced/fallback.
The naming pattern is predominantly verb_noun (list_, get_, update_, add_, create_). Minor inconsistencies: remove_negative_keyword is singular while add_negative_keywords is plural, and switch_bidding_strategy, generate_keyword_ideas, execute_gaql, generic_mutate don't follow the same verb family, but the overall style is readable and predictable.
29 tools is on the heavy side, but the Google Ads domain is broad, covering account discovery, performance reporting, insights, and mutations. Some tools are arguably redundant (get_gaql_reference, get_workflow_guide are documentation helpers, and generic_mutate covers many cases), making the set slightly bloated but not extreme.
The surface covers many important operations: listing accounts, retrieving performance across dimensions, search terms, auction insights, change history, recommendations, keyword planning, and several mutation tools (create campaign/ad group, update budgets/status/bids, add/remove keywords). However, notable gaps exist: no direct tools for listing/creating ads (e.g., responsive search ads), no ad group retrieval, and no comprehensive campaign list tool (only via GAQL or performance queries). The generic tools mitigate these gaps but imply workarounds.