Google Ads MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_ADS_AUDIT_LOG | No | Audit log path | audit-log.jsonl |
| GOOGLE_ADS_CLIENT_ID | Yes | OAuth 2.0 Desktop App client ID | |
| GOOGLE_ADS_MAX_RETRIES | No | Quota retry attempts | 3 |
| GOOGLE_ADS_CLIENT_SECRET | Yes | OAuth 2.0 Desktop App client secret | |
| GOOGLE_ADS_REFRESH_TOKEN | Yes | Long-lived OAuth refresh token | |
| GOOGLE_ADS_DEVELOPER_TOKEN | Yes | Your Google Ads developer token | |
| GOOGLE_ADS_MUTATE_ALLOWLIST | No | Comma-separated customer IDs that may receive writes | |
| GOOGLE_ADS_LOGIN_CUSTOMER_ID | Yes | MCC account ID (digits only, no hyphens) | |
| GOOGLE_ADS_MAX_BID_CHANGE_PCT | No | Max bid change fraction | 0.25 |
| GOOGLE_ADS_MAX_BUDGET_CHANGE_PCT | No | Max budget change fraction | 0.20 |
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
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_accessible_customersA | List the Google Ads customer accounts the credentials can access. Returns digit-only customer ids to use as |
| get_ad_groupsB | Get ad groups for a customer, with optional filtering by campaign and status. |
| get_campaignsB | Get campaigns for a customer, optionally filtered by status. |
| get_campaign_performanceA | Get campaign performance metrics for a date range, ordered by cost descending. |
| get_change_eventsA | Retrieve change events for a customer account within a date range. The change_event resource requires a date filter, an ORDER BY clause, and a LIMIT (hard-capped at 10,000 rows by the API). The Google Ads API typically supports a ~30-day lookback window for change events; queries beyond that range may return empty results. |
| create_campaignA | Create a new campaign (paused by default). |
| create_ad_groupA | Create a new ad group (paused by default). |
| create_keywordC | Create a new keyword (enabled by default). |
| create_adA | Create a new responsive search ad (paused by default). |
| get_keywordsC | Retrieve keywords from an ad group, optionally filtered by match type. |
| get_search_termsA | Retrieve search terms that matched keywords, filtered by date and optional criteria. Search terms are ordered by clicks (descending) to prioritize high-engagement terms. |
| get_segments_metadataA | List all available GAQL segments with metadata. Returns a list of segment field objects with name, category, data_type, selectable, filterable, and sortable attributes. |
| get_metrics_metadataA | List all available GAQL metrics with metadata. Returns a list of metric field objects with name, category, data_type, selectable, filterable, and sortable attributes. |
| get_resource_metadataA | Get all available fields for a specific resource. |
| get_recommendationsA | Fetch active recommendations for an account or campaign. |
| apply_recommendationA | Apply a recommendation (e.g. add a keyword, raise a bid). |
| generate_keyword_ideasB | Generate keyword ideas using Google's Keyword Planner. |
| get_forecast_metricsC | Fetch forecast metrics and bid simulations for a campaign. |
| dismiss_recommendationA | Dismiss a recommendation (mark as not applicable). Note: The Google Ads API does not support validate_only for dismiss, so preview returns the intent without calling the API. |
| run_gaql_queryA | Run a read-only GAQL query against a customer account. This is the explicit raw-query escape hatch: the |
| pause_campaignA | Pause a campaign. Previews unless confirm=true; customer must be allowlisted. |
| enable_campaignA | Enable (resume) a campaign. Previews unless confirm=true. |
| pause_ad_groupC | Pause an ad group. Previews unless confirm=true. |
| enable_ad_groupC | Enable an ad group. Previews unless confirm=true. |
| pause_keywordB | Pause a keyword (ad group criterion). Previews unless confirm=true. |
| enable_keywordA | Enable a keyword (ad group criterion). Previews unless confirm=true. |
| pause_adA | Pause an ad (ad group ad). Previews unless confirm=true. |
| enable_adB | Enable an ad (ad group ad). Previews unless confirm=true. |
| update_keyword_bidA | Set a keyword's max CPC bid (micros). Previews unless confirm=true; change is capped. |
| update_ad_group_bidA | Set an ad group's default max CPC bid (micros). Previews unless confirm=true; capped. |
| update_campaign_budgetA | Set a campaign's daily budget (micros). Previews unless confirm=true; change is capped. Resolves the campaign's shared budget resource first, then mutates it. |
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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/LucasSantana-Dev/google-ads-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server