Skip to main content
Glama
MaxGhenis

Google Ads MCP Server

by MaxGhenis

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GOOGLE_ADS_CONFIG_PATHNoPath 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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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:

  • Campaigns: SELECT campaign.id, campaign.name FROM campaign

  • Ad groups: SELECT ad_group.id, ad_group.name FROM ad_group

  • Keywords: SELECT ad_group_criterion.keyword.text FROM ad_group_criterion

  • Metrics: SELECT campaign.name, metrics.clicks FROM campaign

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

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