Skip to main content
Glama
monsieurgoodmood

google-ads-mcp-plus

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GOOGLE_ADS_DEVELOPER_TOKENYesYour Google Ads developer token.

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

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

Tools

Functions exposed to the LLM to take actions

NameDescription
server_statusA

Report this server's mode, allowlisted accounts, and safety limits.

Call this first if you are unsure what the server is permitted to do.

list_accountsA

List Google Ads accounts these credentials can reach.

Returns every accessible customer ID, marking which are allowlisted for this server.

run_auditA

Audit an account and report what is costing money or hiding data.

Runs 12 read-only checks: conversion tracking, campaigns spending with no conversions, budget- and rank-lost impression share, wasteful search terms, low Quality Score keywords, weak RSAs, disapproved ads, missing negatives and sitelinks. Never modifies anything.

Args: customer_id: Account to audit (digits, dashes are stripped). days: Lookback window; the window ends yesterday. Default 30. min_spend: Ignore entities below this spend, in account currency.

gaql_queryA

Run a read-only GAQL query against an account.

Use this for anything the packaged tools do not cover. Only SELECT queries are accepted — this cannot modify data.

Args: customer_id: Account to query. query: A GAQL SELECT statement. limit: Maximum rows to return (default 100, hard cap 1000).

list_campaignsA

List campaigns with their budget, status, spend and conversions.

Args: customer_id: Account to inspect. days: Metrics lookback window, ending yesterday. status: ENABLED, PAUSED, REMOVED, or ALL.

update_campaign_budgetA

Change a campaign's daily budget. Two-phase: preview, then confirm.

Call without confirm_token to see the current value, the proposed value, and the percentage change. If it is within limits you receive a token; call again with that token to apply it.

Args: customer_id: Account holding the campaign. campaign_id: Campaign whose budget changes. new_daily_budget: New daily amount in account currency. confirm_token: Token from the preview call. Omit for a preview.

set_campaign_statusA

Pause or enable a campaign. Two-phase: preview, then confirm.

Args: customer_id: Account holding the campaign. campaign_id: Campaign to change. status: PAUSED or ENABLED. confirm_token: Token from the preview call. Omit for a preview.

add_negative_keywordsA

Add campaign-level negative keywords. Two-phase: preview, then confirm.

This is the safest write operation: negatives only ever reduce spend.

Args: customer_id: Account holding the campaign. campaign_id: Campaign to add negatives to. keywords: Terms to exclude. match_type: EXACT, PHRASE, or BROAD. Default EXACT. confirm_token: Token from the preview call. Omit for a preview.

create_performance_max_campaignA

Create a Performance Max campaign, PAUSED. Two-phase: preview, confirm.

Without a token, this validates the whole request against the API (validate_only) and returns a preview plus a confirmation token — nothing is created. Call again with the token to create it for real.

Everything goes in one atomic mutate: budget, campaign, geo/language criteria, negatives, asset group, text assets, and reused image and extension assets. If anything fails, nothing is created.

Image and extension assets are REUSED by ID — this tool never uploads images. Find existing asset IDs with gaql_query on the asset resource.

Args: customer_id: Account to create in. Must be allowlisted. campaign_name: Name of the new campaign. daily_budget: Daily budget in account currency. final_url: Landing page for the asset group. business_name: Advertiser name, max 25 characters. headlines: At least 3, each max 30 characters. long_headlines: At least 1, each max 90 characters. descriptions: At least 2, each max 90 characters. geo_target_ids: Geo target constant IDs. language_ids: Language constant IDs (1002 = French, 1000 = English). negative_keywords: Phrase-match exclusions, e.g. brand terms. marketing_image_asset_ids: Existing 1.91:1 image asset IDs. square_marketing_image_asset_ids: Existing 1:1 image asset IDs. logo_asset_ids: Existing logo asset IDs. sitelink_asset_ids: Existing sitelink asset IDs to link. callout_asset_ids: Existing callout asset IDs (max 20). bidding: maximize_conversions or maximize_conversion_value. target_cpa: Optional target CPA, account currency. target_roas: Optional target ROAS, e.g. 3.5. confirm_token: Token from the preview call. Omit for a preview.

validate_pmax_assetsA

Check Performance Max TEXT assets against Google's limits — offline.

No account, no credentials needed. Use this while drafting copy, before creating anything: at least 3 headlines (30 chars), 1 long headline (90 chars), 2 descriptions (90 chars), and a business name (25 chars).

This checks text only. Creating a campaign additionally requires at least one marketing image (1.91:1), one square marketing image (1:1), and one logo — those are validated by create_performance_max_campaign, not here.

create_shopping_campaignA

Create a Standard Shopping campaign, PAUSED. Two-phase.

Builds budget, campaign, ad group, an empty product ad, and an exhaustive listing group tree: one biddable node per included value, plus a mandatory excluded catch-all for everything else.

Without a token you get a preview validated by the API; call again with the token to create it.

Args: customer_id: Account to create in. Must be allowlisted. campaign_name: Name of the new campaign. daily_budget: Daily budget in account currency. merchant_id: Merchant Center account holding the product feed. feed_label: Feed label, exactly as it appears in Merchant Center. This replaced sales_country. include_values: Values to bid on, e.g. the exact product_type strings from Merchant Center. Everything else is excluded. dimension: product_type_level1/2/3, brand, condition, or item_id. ad_group_name: Defaults to the campaign name. campaign_priority: 0 low, 1 medium, 2 high. Decides which campaign bids when several cover the same product. geo_target_ids: Geo target constant IDs. language_ids: Language constant IDs (1002 French, 1000 English). confirm_token: Token from the preview call. Omit for a preview.

apply_negative_keyword_listA

Create or extend a SHARED negative keyword list. Two-phase.

Prefer this over add_negative_keywords whenever the same exclusions apply to several campaigns: one shared list means one edit updates them all, instead of duplicating negatives campaign by campaign.

Idempotent — an existing list of the same name is reused, and only missing keywords and links are added. Running it twice does nothing.

Args: customer_id: Account holding the campaigns. list_name: Name of the shared list, e.g. "Brand exclusions". keywords: Terms to exclude. campaign_ids: Campaigns the list applies to. match_type: EXACT, PHRASE, or BROAD. PHRASE is the usual choice. confirm_token: Token from the preview call. Omit for a preview.

validate_ad_copyA

Check ad copy against Google's character limits — offline, no account.

Use this while drafting, before creating anything. Headlines must be <=30 characters, descriptions <=90, paths <=15. Counts CJK and full-width characters as two, matching the Google UI.

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/monsieurgoodmood/google-ads-mcp-plus'

If you have feedback or need assistance with the MCP directory API, please join our Discord server