google-ads-manager-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_ADS_CLIENT_ID | Yes | OAuth client ID from Google Cloud Console. | |
| GOOGLE_ADS_CUSTOMER_ID | Yes | The Google Ads account ID to manage (10 digits, dashes optional). | |
| GOOGLE_ADS_CLIENT_SECRET | Yes | OAuth client secret from Google Cloud Console. | |
| GOOGLE_ADS_REFRESH_TOKEN | Yes | Refresh token obtained via `npm run auth`. | |
| GOOGLE_ADS_DEVELOPER_TOKEN | Yes | Google Ads developer token from API Center. | |
| GOOGLE_ADS_LOGIN_CUSTOMER_ID | No | The manager (MCC) account ID, required if the account is a client under a manager. |
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": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_accessible_customersA | List the Google Ads customer account resource names reachable with the configured refresh token. |
| search_gaqlA | Run a raw Google Ads Query Language (GAQL) SELECT query against the configured customer account. Read-only. Use this for custom reports beyond what get_campaigns covers. |
| get_campaignsA | List campaigns on the configured customer account with status, budget, and core performance metrics. |
| get_ad_groupsA | List ad groups, optionally filtered to one campaign, with status and core performance metrics. |
| get_keywordsA | List keyword criteria, optionally filtered to one ad group or campaign, with match type, status, and performance metrics. |
| get_search_termsA | List the actual search terms that triggered your ads, with performance metrics. Useful for finding negative keyword candidates. |
| create_campaignA | Draft a new campaign with its own daily budget. Creates it PAUSED by default so it never spends until you explicitly enable it. Returns a draftId — call confirm_write to actually create it. |
| update_campaign_statusA | Draft enabling, pausing, or removing an existing campaign. Returns a draftId — call confirm_write to actually apply it. |
| add_keywordsA | Draft adding one or more keyword criteria to an existing ad group. Returns a draftId — call confirm_write to actually apply it. |
| create_ad_groupA | Draft a new ad group inside an existing campaign. Returns a draftId — call confirm_write to actually create it. |
| update_ad_group_statusA | Draft enabling, pausing, or removing an existing ad group. Returns a draftId — call confirm_write to actually apply it. |
| update_keyword_statusA | Draft pausing, enabling, or removing a keyword criterion in an ad group. Returns a draftId — call confirm_write to actually apply it. |
| add_negative_keywordsA | Draft adding one or more negative keyword criteria to an ad group, to stop ads showing for those terms. Returns a draftId — call confirm_write to actually apply it. |
| update_campaign_budgetA | Draft changing the daily budget amount for an existing campaign. Returns a draftId — call confirm_write to actually apply it. |
| create_responsive_search_adA | Draft a new responsive search ad in an ad group, created PAUSED by default. Returns a draftId — call confirm_write to actually create it. |
| confirm_writeA | Execute a previously drafted write (from create_campaign, update_campaign_status, or add_keywords) for real. This is the only tool that actually changes the Google Ads account. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 16 tools
Each tool targets a distinct resource and action: reads (list_accessible_customers, search_gaql, get_campaigns, get_ad_groups, get_keywords, get_search_terms) vs writes (create_campaign, create_ad_group, etc.), with status updates and budget updates cleanly separated. The only potential overlap is search_gaql vs get_* tools, but search_gaql is explicitly for raw GAQL queries beyond the standard retrievers, so ambiguity is minimal.
All tools follow a consistent verb_noun pattern in snake_case (e.g., list_accessible_customers, update_campaign_status, create_responsive_search_ad). Even the special confirm_write uses the same verb-first convention. No mixed styles or unpredictable variations.
16 tools is slightly above the typical 3-15 range but appropriate for a Google Ads manager covering campaigns, ad groups, keywords, ads, search terms, and budgets. The count reflects the breadth of the domain without feeling bloated or redundant.
The surface covers the core lifecycle: listing customers, querying reports, reading and writing campaigns, ad groups, keywords, negative keywords, and responsive search ads, plus status/budget updates and a confirmation mechanism. Minor gaps exist (e.g., editing or removing ads, more ad types), but GAQL search and the existing create/update/remove operations cover most workflows.