Skip to main content
Glama
FlatbuzhZubumafu

Google Ads MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GOOGLE_ADS_MCP_BASE_URLNoThe public base URL of the deployed remote server (e.g. the Cloud Run service URL).
GOOGLE_ADS_MCP_READ_ONLYNoSet to `true` to hide all write tools entirely (monitoring-only deployments).
GOOGLE_ADS_MCP_TRANSPORTNoSet to `http` to run locally over HTTP without OAuth (trusted networks only).
GOOGLE_ADS_REFRESH_TOKENNoOAuth refresh token, used together with the OAuth client ID and secret for local (stdio) mode.
GOOGLE_ADS_DEVELOPER_TOKENYesYour Google Ads developer token from the manager (MCC) account's API Center. Required.
GOOGLE_ADS_OAUTH_CLIENT_IDNoGoogle Cloud OAuth client ID, used together with the refresh token for local (stdio) mode.
GOOGLE_ADS_LOGIN_CUSTOMER_IDNoThe manager (MCC) account ID to run this server against. Set this if you use a manager account.
GOOGLE_ADS_MCP_OAUTH_CLIENT_IDNoOAuth 2.0 client ID for the remote (claude.ai / Cloud Run) server deployment.
GOOGLE_ADS_OAUTH_CLIENT_SECRETNoGoogle Cloud OAuth client secret, used together with the refresh token for local (stdio) mode.
GOOGLE_ADS_MCP_OAUTH_CLIENT_SECRETNoOAuth 2.0 client secret for the remote (claude.ai / Cloud Run) server deployment.

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": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_accessible_customersA

Returns the ids of Google Ads accounts directly accessible by the authenticated user.

Use this tool first to discover available customer IDs if the user hasn't provided one. Most other tools require a valid customer ID.

Returns: List[str]: A list of customer IDs (10-digit strings, no dashes).

get_account_hierarchyA

Lists all client accounts under a (manager) account, including the account itself.

Useful when the authenticated user works through an MCC/manager account: run this against the manager's customer ID to find the child account IDs to use with reporting and management tools.

list_conversion_actionsA

Lists the account's conversion actions with category, type, status, and whether each is primary for optimization (primary_for_goal).

Use this to check what Smart Bidding is actually optimizing toward — e.g. whether phone calls are primary and page-view style actions are secondary.

list_campaign_criteriaA

Lists a campaign's targeting criteria: locations, proximity radii, ad schedules, devices, and negative criteria.

suggest_geo_targetsA

Resolves human-readable location names (e.g. 'Phoenix, Arizona', 'Gilbert, Arizona') to Google Ads geo target constant IDs, for use with add_location_targeting.

get_resource_metadataA

Retrieves the selectable, filterable, and sortable fields for a specific Google Ads resource, including compatible metrics and segments.

Use this tool to find out which fields you can select, filter by, or sort by when querying a specific resource (e.g., 'campaign', 'ad_group') with the search tool. Metric and segment field names start with 'metrics.' and 'segments.' respectively.

Do not guess fields — use this tool to discover them before constructing a query. Responses can be cached; they rarely change.

get_campaign_performanceA

Campaign-level performance report: impressions, clicks, CTR, cost, conversions, conversion value, plus campaign status, bidding strategy and daily budget. Ordered by cost, highest first.

Cost and budget fields are in micros: divide by 1,000,000 for the account currency amount.

get_ad_group_performanceB

Ad-group-level performance report with the core metrics (impressions, clicks, CTR, cost, conversions). Ordered by cost.

get_keyword_performanceA

Keyword-level performance report: keyword text, match type, status, quality score, and the core metrics. Ordered by cost, highest first.

get_search_terms_reportA

Search terms report: the actual user queries that triggered ads, with the core metrics. The main input for finding negative keyword candidates and new keyword opportunities. Ordered by cost.

get_change_historyA

Recent changes made to the account (by users, tools, or this server): what changed, when, and by whom. Useful for a weekly review of account activity.

searchC

Fetches data from the Google Ads API using the search method.

create_ad_groupB

Creates a standard search ad group (ENABLED) in a campaign.

update_ad_groupC

Updates an ad group's status and/or default max CPC bid.

create_responsive_search_adA

Creates a responsive search ad in PAUSED state (enable it with set_ad_status after review).

set_ad_statusB

Pauses, enables, or removes an ad.

create_call_assetA

Creates a call asset (clickable phone number shown with ads). Returns its resource name; attach it to a campaign with link_asset_to_campaign.

link_asset_to_campaignB

Links an asset (e.g. a call asset) to a campaign so it serves with that campaign's ads.

create_campaign_budgetA

Creates a daily campaign budget. Returns its resource name, which is required when creating a campaign.

update_campaign_budgetA

Changes the daily amount of an existing campaign budget.

Find the budget id via the search tool (campaign_budget.id) or from a campaign's campaign.campaign_budget resource name.

create_campaignA

Creates a new campaign in PAUSED state (so it never spends money before a human reviews and enables it). Create a budget first with create_campaign_budget.

set_campaign_target_cpaA

Sets (or updates) the target CPA on a campaign that uses the Maximize Conversions bidding strategy.

Only do this once the campaign has ~30+ conversions of history; setting a tCPA too early or too low throttles delivery.

set_campaign_statusB

Pauses, enables, or removes a campaign.

set_conversion_action_primaryA

Marks a conversion action as primary (optimized toward by Smart Bidding) or secondary (observed/reported only).

This is the main lever for making campaigns optimize toward real outcomes (e.g. phone calls) instead of soft actions (page views, direction clicks). Find ids with list_conversion_actions.

Note: some system-generated conversion actions cannot be edited via the API; the error will say so if this one can't.

set_campaign_conversion_goalsA

Overrides, per campaign, which conversion goals Smart Bidding optimizes toward — regardless of the account-level primary/secondary settings.

Use this when account-level conversion actions can't be edited (e.g. system-generated "Local actions") but a campaign must optimize only to real outcomes such as phone calls. This switches the campaign to campaign-level goal configuration and sets each listed goal's biddable flag; include every category/origin combination that exists in the account, marking the ones to optimize toward biddable=true and the rest biddable=false.

add_keywordsC

Adds keywords to an ad group (ENABLED).

set_keyword_statusA

Pauses, enables, or removes a keyword.

Find criterion ids with get_keyword_performance (ad_group_criterion.criterion_id).

add_negative_keywordsA

Adds campaign-level negative keywords, preventing ads from showing on those queries. The usual follow-up to reviewing get_search_terms_report.

add_location_targetingA

Adds location targeting criteria to a campaign.

Resolve human-readable places to ids first with suggest_geo_targets.

remove_campaign_criterionA

Removes a single targeting criterion (e.g. a wrong location or an obsolete ad schedule) from a campaign.

Find criterion ids with list_campaign_criteria. Removing a criterion only changes targeting; it does not touch ads, keywords, or budgets.

set_ad_scheduleA

Adds ad schedule criteria to a campaign (which days/hours ads run).

A campaign with no ad schedule runs 24/7. Once any schedule entries exist, ads run ONLY during the scheduled windows — so include every window you want covered. Hours are in the account's time zone.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.2/5.0

Scored across 31 tools

Disambiguation4/5

Most tools target a distinct resource and action, and the performance reports are clearly differentiated by level. However, the generic `search` tool overlaps conceptually with the prebuilt `get_*_performance` tools, and `list_accessible_customers` vs `get_account_hierarchy` could be confused for account discovery.

Naming Consistency4/5

Nearly all tools follow a snake_case verb_noun pattern (e.g., create_campaign, set_ad_status, add_keywords). Minor deviations include the single-word `search` and mixed use of `list` vs `get` for retrieval operations.

Tool Count2/5

At 31 tools, the set is well above the typical well-scoped range of 3–15. Several tools could be consolidated, such as the separate status setters (`set_ad_status`, `set_campaign_status`, `set_keyword_status`) and the budget create/update pair.

Completeness3/5

Core workflows for creating and pausing campaigns, ad groups, ads, and keywords are covered, along with reporting and conversion goal management. However, important update operations are missing, including changing campaign or ad group names, updating keyword bids, and editing ad copy beyond creation.

Maintenance

ActivityMaintained
ResponsivenessNo issues