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 |
Capabilities
Features and capabilities supported by this server
| 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
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