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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_accessible_accountsA | List all Google Ads accounts accessible via current credentials. Returns accounts accessible through the authenticated MCC or direct account. |
| get_account_infoA | Get details for a Google Ads account (name, currency, timezone, etc.). Args: customer_id: Google Ads customer ID (e.g., '123-456-7890' or '1234567890'). |
| get_account_hierarchyA | Get the MCC account hierarchy tree. Lists all child accounts under the given MCC account. Args: customer_id: MCC customer ID. Uses default if not provided. |
| list_ad_groupsA | List ad groups in a campaign. Args: customer_id: Google Ads customer ID. campaign_id: Campaign ID to list ad groups for. status_filter: Optional -- 'ENABLED', 'PAUSED', or 'REMOVED'. limit: Max ad groups to return (default 100). |
| get_ad_groupC | Get details for a single ad group. Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID. |
| create_ad_groupA | Create a new ad group in a campaign. Args: customer_id: Google Ads customer ID. campaign_id: Campaign ID to create the ad group in. name: Ad group name. cpc_bid: Max CPC bid in currency (e.g., 2.50 for $2.50). target_cpa: Target CPA in currency (overrides campaign-level if set). ad_group_type: Ad group type -- 'SEARCH_STANDARD', 'DISPLAY_STANDARD', 'VIDEO_TRUE_VIEW_IN_STREAM', 'VIDEO_BUMPER', etc. status: Initial status -- 'ENABLED' (default) or 'PAUSED'. |
| update_ad_groupA | Update an existing ad group. Only provided fields will be updated. Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID to update. name: New ad group name. cpc_bid: New max CPC bid in currency. target_cpa: New target CPA in currency. status: New status -- 'ENABLED', 'PAUSED', or 'REMOVED'. |
| set_ad_group_statusA | Set an ad group's status (enable, pause, or remove). Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID. status: New status -- 'ENABLED', 'PAUSED', or 'REMOVED'. |
| list_adsA | List ads in an ad group with approval status. Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID. status_filter: Optional -- 'ENABLED', 'PAUSED', or 'REMOVED'. limit: Max ads to return (default 50). |
| create_responsive_search_adA | Create a Responsive Search Ad (RSA) for Search campaigns. Google will automatically test combinations of headlines and descriptions. Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID (must be in a Search campaign). headlines: 3-15 headline strings (max 30 chars each). descriptions: 2-4 description strings (max 90 chars each). final_urls: List of landing page URLs (at least one required). path1: Optional display URL path 1 (max 15 chars). path2: Optional display URL path 2 (max 15 chars, requires path1). status: Ad status -- 'ENABLED' (default) or 'PAUSED'. |
| create_responsive_display_adA | Create a Responsive Display Ad for Display campaigns. Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID (must be in a Display campaign). headlines: 1-5 short headlines (max 30 chars each). long_headline: Long headline (max 90 chars). descriptions: 1-5 descriptions (max 90 chars each). marketing_images: List of landscape image asset resource names (1200x628). square_marketing_images: List of square image asset resource names (1200x1200). logo_images: List of logo asset resource names. business_name: Business name (max 25 chars). final_urls: Landing page URLs. call_to_action_text: Optional CTA text. status: Ad status -- 'ENABLED' (default) or 'PAUSED'. |
| create_video_adA | Create a Video ad for Video campaigns (YouTube). Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID (must be in a Video campaign). youtube_video_id: YouTube video ID (e.g., 'dQw4w9WgXcQ'). final_urls: Landing page URLs. headline: Optional headline for the ad. description: Optional description. call_to_action_text: CTA button text (e.g., 'Learn More', 'Shop Now'). ad_format: Video ad format -- 'IN_STREAM' (skippable), 'BUMPER' (6-sec non-skip), 'IN_FEED' (discovery/in-feed). companion_banner_asset: Optional companion banner image asset resource name. status: Ad status -- 'ENABLED' (default) or 'PAUSED'. |
| create_demand_gen_adA | Create a Demand Gen ad (serves on YouTube, Gmail, Discover). Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID (must be in a Demand Gen campaign). headlines: 1-5 headlines (max 40 chars each). descriptions: 1-5 descriptions (max 90 chars each). marketing_images: Landscape image asset resource names. logo_images: Logo asset resource names. final_urls: Landing page URLs. business_name: Business name. call_to_action_text: Optional CTA text. status: Ad status -- 'ENABLED' (default) or 'PAUSED'. |
| set_ad_statusA | Set an ad's status (enable, pause, or remove). Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID containing the ad. ad_id: Ad ID. status: New status -- 'ENABLED', 'PAUSED', or 'REMOVED'. |
| get_ad_detailsA | Get full details of an ad (headlines, descriptions, URLs, assets). Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID containing the ad. ad_id: Ad ID. |
| list_budgetsA | List campaign budgets in the account. Args: customer_id: Google Ads customer ID. limit: Max budgets to return (default 100). |
| create_budgetA | Create a new campaign budget. Args: customer_id: Google Ads customer ID. name: Budget name. amount: Daily budget amount in currency (e.g., 50.00 for $50/day). delivery_method: 'STANDARD' (spread evenly) or 'ACCELERATED'. explicitly_shared: If True, budget can be shared across multiple campaigns. |
| update_budgetA | Update an existing campaign budget. Args: customer_id: Google Ads customer ID. budget_id: Budget ID to update. amount: New daily budget amount in currency. name: New budget name. delivery_method: New delivery method -- 'STANDARD' or 'ACCELERATED'. |
| get_budget_utilizationA | Get budget vs actual spend for campaigns. Shows how much of each campaign's budget has been utilized. Args: customer_id: Google Ads customer ID. date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD'). campaign_id: Optional -- filter to a single campaign. |
| list_campaignsA | List campaigns in a Google Ads account. Args: customer_id: Google Ads customer ID. status_filter: Optional filter -- 'ENABLED', 'PAUSED', or 'REMOVED'. limit: Max campaigns to return (default 100). |
| get_campaignB | Get details for a single campaign. Args: customer_id: Google Ads customer ID. campaign_id: The campaign ID. |
| create_campaignA | Create a new campaign with a budget. Creates both the campaign budget and campaign in a single atomic operation. Campaign is created as PAUSED by default for safety. Args: customer_id: Google Ads customer ID. name: Campaign name. budget_amount: Daily budget in currency (e.g., 50.00 for $50/day). channel_type: Campaign type -- 'SEARCH', 'DISPLAY', 'VIDEO', 'DEMAND_GEN', 'SHOPPING'. bidding_strategy: Bidding strategy -- 'MAXIMIZE_CONVERSIONS', 'MAXIMIZE_CONVERSION_VALUE', 'MAXIMIZE_CLICKS', 'TARGET_SPEND', 'MANUAL_CPC', 'TARGET_CPA', 'TARGET_ROAS'. target_cpa: Target CPA in currency (required if bidding_strategy is TARGET_CPA). target_roas: Target ROAS as a decimal (e.g., 3.0 for 300% ROAS). network_settings: Optional dict with keys: target_google_search, target_search_network, target_content_network (all bool). start_date: Campaign start date (YYYY-MM-DD). Defaults to today. end_date: Optional campaign end date (YYYY-MM-DD). status: Initial status -- 'PAUSED' (default, recommended) or 'ENABLED'. |
| update_campaignA | Update an existing campaign's properties. Only provided fields will be updated. Args: customer_id: Google Ads customer ID. campaign_id: Campaign ID to update. name: New campaign name. status: New status -- 'ENABLED', 'PAUSED'. target_cpa: New target CPA (for maximize_conversions with target). target_roas: New target ROAS (for maximize_conversion_value with target). start_date: New start date (YYYY-MM-DD). end_date: New end date (YYYY-MM-DD). |
| set_campaign_statusA | Set a campaign's status (enable, pause, or remove). Args: customer_id: Google Ads customer ID. campaign_id: Campaign ID. status: New status -- 'ENABLED', 'PAUSED', or 'REMOVED'. |
| remove_campaignA | Soft-delete (remove) a campaign. This is a destructive operation. The campaign will be set to REMOVED status. Args: customer_id: Google Ads customer ID. campaign_id: Campaign ID to remove. confirm_removal: Must be True to proceed. Safety check for destructive operation. |
| list_keywordsA | List keywords in an ad group. Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID. status_filter: Optional -- 'ENABLED', 'PAUSED', or 'REMOVED'. limit: Max keywords to return (default 200). |
| add_keywordsA | Add keywords to an ad group (batch operation). Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID to add keywords to. keywords: List of keyword dicts, each with: - text (str): The keyword text. - match_type (str): 'EXACT', 'PHRASE', or 'BROAD'. - cpc_bid (float, optional): Max CPC bid in currency. Example: keywords=[ {"text": "buy shoes online", "match_type": "PHRASE", "cpc_bid": 1.50}, {"text": "running shoes", "match_type": "BROAD"}, {"text": "[red running shoes]", "match_type": "EXACT", "cpc_bid": 2.00}, ] |
| remove_keywordA | Remove a keyword from an ad group. Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID containing the keyword. criterion_id: Keyword criterion ID to remove. confirm_removal: Must be True to proceed. Safety check. |
| update_keyword_bidA | Update the CPC bid for a keyword. Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID containing the keyword. criterion_id: Keyword criterion ID to update. cpc_bid: New max CPC bid in currency (e.g., 2.50 for $2.50). |
| get_keyword_performanceB | Get keyword performance metrics for an ad group. Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID. date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD'). limit: Max rows (default 100). |
| create_performance_max_campaignA | Create a complete Performance Max campaign with budget, campaign, and asset group. Creates everything in a single atomic batch operation using temporary IDs. Campaign is created as PAUSED by default for safety. PMax minimum requirements:
Args: customer_id: Google Ads customer ID. campaign_name: Campaign name. budget_amount: Daily budget in currency. asset_group_name: Name for the asset group. final_urls: Landing page URLs. headlines: 3-15 headlines (max 30 chars each). long_headlines: 1-5 long headlines (max 90 chars each). descriptions: 2-5 descriptions (max 90 chars each). business_name: Business name for the asset group. marketing_image_assets: Landscape image asset resource names (1200x628). square_image_assets: Square image asset resource names (1200x1200). logo_assets: Logo image asset resource names. youtube_video_assets: YouTube video asset resource names. bidding_strategy: 'MAXIMIZE_CONVERSIONS' or 'MAXIMIZE_CONVERSION_VALUE'. target_cpa: Target CPA (for maximize_conversions with target). target_roas: Target ROAS (for maximize_conversion_value with target). status: Initial status -- 'PAUSED' (default) or 'ENABLED'. |
| list_asset_groupsA | List asset groups in a Performance Max campaign. Args: customer_id: Google Ads customer ID. campaign_id: PMax campaign ID. |
| get_asset_group_detailsA | Get full details of an asset group including linked assets and signals. Args: customer_id: Google Ads customer ID. asset_group_id: Asset group ID. |
| add_assets_to_groupA | Add assets to an existing asset group (batch link operation). Args: customer_id: Google Ads customer ID. asset_group_id: Asset group ID. assets: List of asset dicts, each with: - asset_resource_name (str): Full asset resource name. - field_type (str): Asset field type -- 'HEADLINE', 'LONG_HEADLINE', 'DESCRIPTION', 'BUSINESS_NAME', 'MARKETING_IMAGE', 'SQUARE_MARKETING_IMAGE', 'LOGO', 'YOUTUBE_VIDEO', 'CALL_TO_ACTION_SELECTION'. Example: assets=[ {"asset_resource_name": "customers/123/assets/456", "field_type": "HEADLINE"}, {"asset_resource_name": "customers/123/assets/789", "field_type": "MARKETING_IMAGE"}, ] |
| remove_asset_from_groupA | Remove an asset from an asset group. Args: customer_id: Google Ads customer ID. asset_group_id: Asset group ID. asset_resource_name: Full resource name of the asset to unlink. field_type: The field type of the asset link (e.g., 'HEADLINE', 'MARKETING_IMAGE'). confirm_removal: Must be True to proceed. |
| add_audience_signalA | Add audience or search theme signals to a PMax asset group. Audience signals help Google's AI find the right customers. They're suggestions, not hard targeting constraints. Args: customer_id: Google Ads customer ID. asset_group_id: Asset group ID. audience_resource_name: Audience resource name (from audience manager). search_themes: List of search theme strings (keywords that describe your ideal customer). |
| get_asset_performanceA | Get asset-level performance labels (BEST, GOOD, LOW, etc.) for PMax. Args: customer_id: Google Ads customer ID. campaign_id: Optional -- filter to a specific campaign. asset_group_id: Optional -- filter to a specific asset group. |
| get_pmax_placement_performanceA | Get PMax placement performance breakdown (Search, YouTube, Display, Discover, Gmail). Args: customer_id: Google Ads customer ID. campaign_id: PMax campaign ID. date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD'). |
| execute_gaqlA | Execute an arbitrary GAQL (Google Ads Query Language) query. This is the most flexible tool -- use it for any read query not covered by other tools. GAQL reference: https://developers.google.com/google-ads/api/docs/query/overview Args: customer_id: Google Ads customer ID. query: Full GAQL query string (SELECT ... FROM ... WHERE ...). |
| get_campaign_performanceA | Get campaign performance metrics over a date range. Args: customer_id: Google Ads customer ID. date_range: Date range -- use predefined (LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH, etc.) or custom 'YYYY-MM-DD,YYYY-MM-DD'. campaign_id: Optional -- filter to a single campaign. status_filter: Optional -- filter by status (ENABLED, PAUSED, REMOVED). limit: Max rows to return (default 50). |
| get_ad_group_performanceA | Get ad group performance metrics. Args: customer_id: Google Ads customer ID. campaign_id: Optional -- filter to ad groups in this campaign. date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD'). limit: Max rows (default 50). |
| get_search_terms_reportA | Get search terms that triggered your ads. Args: customer_id: Google Ads customer ID. campaign_id: Optional campaign filter. ad_group_id: Optional ad group filter. date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD'). limit: Max rows (default 100). |
| get_keyword_performance_reportA | Get keyword-level performance metrics. Args: customer_id: Google Ads customer ID. campaign_id: Optional campaign filter. ad_group_id: Optional ad group filter. date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD'). limit: Max rows (default 100). |
| get_account_performance_summaryA | Get account-level daily performance summary. Args: customer_id: Google Ads customer ID. date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD'). |
| list_gaql_resourcesA | List available GAQL FROM-clause resources for use with execute_gaql. Returns commonly used resource names that can be queried via GAQL. |
| get_field_metadataA | Get selectable, filterable, and sortable fields for a GAQL resource. Args: resource_type: Resource name (e.g., 'campaign', 'ad_group', 'ad_group_ad'). customer_id: Customer ID (uses default if not provided). |
| convert_microsA | Convert between micros and currency amounts. Google Ads uses micros for monetary values: $1.00 = 1,000,000 micros. Args: value: The value to convert. direction: 'to_micros' (currency to micros) or 'from_micros' (micros to currency). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |