Google Ads MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_ADS_CONFIG_PATH | No | Path to the Google Ads configuration YAML file. Defaults to google-ads.yaml in the current directory. | google-ads.yaml |
Capabilities
Features and capabilities supported by this server
| 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_accountsA | List all Google Ads accounts accessible by this credential. Returns a list of accounts with their customer IDs that you can use for subsequent operations. Returns: List of account dictionaries with customer_id and resource_name |
| execute_queryA | Execute a Google Ads Query Language (GAQL) query. Use this for any read operation - campaigns, ad groups, keywords, ads, metrics, etc. Common queries:
Args: query: The GAQL query to execute customer_id: Target customer ID (optional if set in config). Use digits only, no dashes. Returns: List of result rows as dictionaries |
| create_campaignA | Create a new Google Ads campaign. Creates a new campaign with the specified settings. For safety, campaigns are created in PAUSED status by default - use enable_campaign to start them. Args: name: Campaign name customer_id: Target customer ID (optional if set in config) budget_amount_micros: Daily budget in micros (1,000,000 = $1.00). Default is $10/day. advertising_channel_type: Channel type - SEARCH, DISPLAY, SHOPPING, etc. dry_run: If True, validate but don't execute the operation Returns: Result with success status, resource_name, and campaign_id |
| pause_campaignA | Pause a campaign. Pausing stops ad serving but preserves all settings and history. Args: campaign_id: Campaign ID to pause customer_id: Target customer ID (optional if set in config) dry_run: If True, validate but don't execute Returns: Result with success status |
| enable_campaignA | Enable a campaign. Enabling starts ad serving. Make sure budget, targeting, and ads are properly configured before enabling. Args: campaign_id: Campaign ID to enable customer_id: Target customer ID (optional if set in config) dry_run: If True, validate but don't execute Returns: Result with success status |
| create_ad_groupA | Create an ad group in a campaign. Args: campaign_id: Campaign ID to add the ad group to name: Ad group name customer_id: Target customer ID (optional if set in config) cpc_bid_micros: Default CPC bid in micros (1,000,000 = $1.00). Default is $2.00. dry_run: If True, validate but don't execute Returns: Result with success status, resource_name, and ad_group_id |
| pause_ad_groupB | Pause an ad group. Args: ad_group_id: Ad group ID to pause customer_id: Target customer ID (optional if set in config) dry_run: If True, validate but don't execute Returns: Result with success status |
| enable_ad_groupB | Enable an ad group. Args: ad_group_id: Ad group ID to enable customer_id: Target customer ID (optional if set in config) dry_run: If True, validate but don't execute Returns: Result with success status |
| update_ad_group_bidA | Update the CPC bid for an ad group. Args: ad_group_id: Ad group ID to update cpc_bid_micros: New CPC bid in micros (1,000,000 = $1.00) customer_id: Target customer ID (optional if set in config) dry_run: If True, validate but don't execute Returns: Result with success status |
| add_keywordsA | Add keywords to an ad group. Args: ad_group_id: Ad group ID to add keywords to keywords: List of keyword texts to add customer_id: Target customer ID (optional if set in config) match_type: Keyword match type - BROAD, PHRASE, or EXACT. BROAD matches related searches, PHRASE matches the phrase with words before/after, EXACT matches the exact query only. dry_run: If True, validate but don't execute Returns: Result with success status and count of keywords added |
| add_negative_keywordsA | Add negative keywords to block irrelevant searches. Negative keywords prevent your ads from showing for certain searches. Add them at campaign level to affect all ad groups, or at ad group level for more targeted exclusions. Args: keywords: List of negative keyword texts customer_id: Target customer ID (optional if set in config) campaign_id: Campaign ID for campaign-level negatives ad_group_id: Ad group ID for ad group-level negatives match_type: Match type - BROAD, PHRASE, or EXACT dry_run: If True, validate but don't execute Note: Provide EITHER campaign_id OR ad_group_id, not both. Returns: Result with success status and count of negatives added |
| create_responsive_search_adA | Create a responsive search ad (RSA). RSAs dynamically combine headlines and descriptions to show the best performing combinations. Google recommends providing many variations for optimal performance. Args: ad_group_id: Ad group ID to add the ad to headlines: List of headline variations (3-15 required). Each headline max 30 characters. descriptions: List of description variations (2-4 required). Each description max 90 characters. final_url: Landing page URL where users go after clicking customer_id: Target customer ID (optional if set in config) path1: Display URL path 1 (max 15 chars, e.g., "products") path2: Display URL path 2 (max 15 chars, e.g., "shoes") dry_run: If True, validate but don't execute Returns: Result with success status, resource_name, and ad_id |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
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/MaxGhenis/google-ads-mcp-rw'
If you have feedback or need assistance with the MCP directory API, please join our Discord server