Google Ads MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_ADS_CLIENT_ID | No | OAuth client ID, required for OAuth authentication | |
| GOOGLE_ADS_CLIENT_SECRET | No | OAuth client secret, required for OAuth authentication | |
| GOOGLE_ADS_REFRESH_TOKEN | No | OAuth refresh token, required for OAuth authentication | |
| GOOGLE_ADS_DEVELOPER_TOKEN | No | Developer token from Google Ads, always required | |
| GOOGLE_ADS_LOGIN_CUSTOMER_ID | No | Manager account ID for managing multiple client accounts (optional) | |
| GOOGLE_ADS_SERVICE_ACCOUNT_KEY | No | Inline service account key JSON (for Service Account authentication) | |
| GOOGLE_ADS_SERVICE_ACCOUNT_KEY_PATH | No | Path to service account key file (for Service Account authentication) |
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 | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_accountsA | List all accessible Google Ads accounts |
| get_campaignsB | Get campaigns for a customer |
| get_campaign_performanceC | Get campaign performance metrics |
| get_ad_groupsA | Get ad groups for a customer or campaign |
| get_adsC | Get ads for a customer or ad group |
| get_keywordsC | Get keywords for a customer or ad group |
| execute_gaql_queryB | Execute a custom GAQL (Google Ads Query Language) query |
| get_image_assetsC | Get image assets for a customer |
| create_campaignB | Create a new campaign (in PAUSED state) |
| update_campaign_statusA | Update campaign status (ENABLED, PAUSED, REMOVED) |
| create_ad_groupA | Create a new ad group (in PAUSED state) |
| create_responsive_search_adA | Create a responsive search ad (in PAUSED state) |
| add_keywordsB | Add keywords to an ad group |
| add_negative_keywordsA | Add negative keywords to an ad group |
| get_conversionsC | Get conversion actions and their performance metrics |
| create_conversion_actionC | Create a new conversion action for tracking |
| update_conversion_actionB | Update an existing conversion action |
| get_conversion_attributionC | Get conversion attribution analysis |
| get_conversion_path_dataC | Get customer journey conversion path data |
| import_offline_conversionsC | Upload offline conversion data |
| get_audiencesB | List all available audiences and user lists |
| create_custom_audienceC | Create a custom audience list |
| add_audience_to_campaignC | Apply audience targeting to a campaign |
| remove_audience_from_campaignB | Remove audience targeting from a campaign |
| get_audience_insightsC | Get audience performance insights |
| create_customer_match_listB | Create a customer match audience list |
| upload_customer_match_dataB | Upload customer data to customer match list |
| create_lookalike_audienceC | Create a lookalike/similar audience |
| get_search_term_reportC | Get search query performance report |
| get_demographic_reportC | Get age and gender performance report |
| get_geographic_reportC | Get location performance report |
| get_auction_insightsB | Get competitive analysis and auction insights |
| get_change_historyC | Get account change history log |
| generate_forecast_metricsC | Generate traffic and conversion forecasts |
| get_click_view_reportC | Get detailed click-level data |
| get_video_reportC | Get video campaign performance metrics |
| get_shared_budgetsB | List shared campaign budgets |
| create_shared_budgetB | Create a shared budget for multiple campaigns |
| get_bidding_strategiesB | List automated bidding strategies |
| create_bidding_strategyC | Create an automated bidding strategy |
| get_bid_simulationsC | Get bid simulation forecasts |
| update_bid_adjustmentsC | Update device/location bid adjustments |
| get_budget_recommendationsC | Get Google budget optimization recommendations |
| upload_image_assetC | Upload image asset for ads |
| get_video_assetsB | List video assets |
| create_asset_groupB | Create asset group for Performance Max |
| get_asset_performanceC | Get asset performance metrics |
| create_sitelink_assetsC | Create sitelink extensions |
| create_callout_assetsC | Create callout extensions |
| create_structured_snippet_assetsD | Create structured snippet extensions |
| create_performance_max_campaignC | Create a Performance Max campaign |
| create_demand_gen_campaignB | Create a Demand Gen campaign |
| create_app_campaignC | Create an App promotion campaign |
| create_smart_campaignD | Create a Smart campaign |
| get_campaign_experimentsB | List campaign experiments |
| create_campaign_experimentB | Create a campaign A/B test experiment |
| get_geographic_performanceC | Get performance breakdown by location |
| add_location_targetsB | Add geographic targeting to campaigns |
| add_demographic_targetsC | Add age/gender targeting |
| get_location_insightsC | Get location targeting insights |
| set_location_bid_adjustmentsC | Adjust bids by location |
| manage_language_targetsC | Manage language targeting |
| create_sitelink_extensionsC | Create sitelink ad extensions |
| create_call_extensionsD | Create call extensions |
| create_callout_extensionsC | Create callout extensions |
| get_extension_performanceC | Get extension performance metrics |
| get_recommendationsC | Get Google optimization recommendations |
| apply_recommendationC | Apply a Google recommendation |
| dismiss_recommendationA | Dismiss a Google recommendation |
| get_keyword_ideasC | Get keyword suggestions and ideas |
| create_labelsC | Create organizational labels |
| apply_labelsC | Apply labels to campaigns/ads |
| get_labeled_resourcesC | Find resources by label |
| bulk_edit_operationsD | Perform bulk edit operations |
| get_account_hierarchyC | Get account structure and hierarchy |
| manage_link_invitationsD | Manage account linking invitations |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| analyze_campaign | Analyze campaign performance and provide recommendations |
| gaql_help | Get help with writing GAQL queries |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| GAQL Reference | Google Ads Query Language reference and examples |
TDQS
Scored across 76 tools
Several tools overlap in purpose, such as create_sitelink_assets vs create_sitelink_extensions, create_callout_assets vs create_callout_extensions, and get_geographic_report vs get_geographic_performance, which could confuse an agent. However, most tools have distinct resource-action targets and descriptions likely help.
All tools consistently follow a verb_noun snake_case pattern (e.g., list_accounts, get_campaigns, create_campaign, update_campaign_status). No mixed conventions or inconsistent verb styles.
With 76 tools, the server far exceeds the reasonable range for a typical MCP server. Many tools are highly granular or redundant (e.g., duplicate extension creation methods), resulting in an overwhelming surface area.
The server covers a broad range of Google Ads features but lacks fundamental lifecycle operations such as deleting campaigns/ad groups/ads, updating ad groups, removing keywords, or retrieving single entities. Several resource types have create-only methods without corresponding read/update/delete tools.