google-ads-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| 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. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/itallstartedwithaidea/google-ads-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server