Skip to main content
Glama
Overcast-Solutions

ads-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ADS_MCP_AUDIT_LOGNoAppend-only JSONL audit path. Required when write mode is enabled.
ADS_MCP_READ_ONLYNoSet to false, 0, no, or off (case-insensitive) to register mutation tools; unknown or empty values keep read-only enabled.true
ADS_MCP_ROW_LIMITNoRow bound before pagination tokens.1000
ADS_MCP_MAX_FIRST_BIDNoAbsolute ceiling for setting a bid where none exists. Unset means refuse first bids.
GOOGLE_ADS_TOKEN_PATHYesPath to refresh-token JSON (generated by ads-mcp-generate-token).
GOOGLE_ADS_CUSTOMER_IDYesTarget Google Ads account ID, e.g. 123-456-7890 or bare.
ADS_MCP_REQUIRE_DRY_RUNNoIf true, apply requires a prior dry-run preview of the same plan.true
ADS_MCP_MAX_DAILY_BUDGETNoCap (in account currency) on any staged budget. Unset means refuse budget mutations.
ADS_MCP_PLAN_TTL_SECONDSNoStaged-plan expiry in seconds.900
ADS_MCP_RETRY_BASE_SECONDSNoTransport backoff base in seconds.1.0
GOOGLE_ADS_DEVELOPER_TOKENNoOptional legacy developer token. Ignored for API access and never transmitted.
GOOGLE_ADS_CREDENTIALS_PATHYesPath to OAuth Desktop-app client JSON.
ADS_MCP_MAX_BID_INCREASE_PCTNoMaximum percentage bid increase vs the account's own or inherited bid. Unset means refuse bid increases.
GOOGLE_ADS_LOGIN_CUSTOMER_IDNoMCC/manager login ID.

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
run_gaqlA

Execute a raw GAQL query and return rows in json, table, or csv format. The workhorse read: any resource, any field the API exposes, passed through faithfully.

health_checkA

Truthful liveness: performs a real authenticated Google Ads read and reports config, credentials, and guardrail state. OK means the API answered — never that config files merely exist.

get_account_infoC

Account identity: id, name, currency, time zone, auto-tagging, manager/test flags — from a live authenticated read.

get_campaign_performanceB

Campaign metrics for a date window (explicit range or last_n_days), with budget, bidding strategy incl. targets, and the serving/primary status trio. Money is decimal with currency. enabled_only=true filters server-side.

get_ad_performanceC

Ad-level metrics for a date window; bounded with pagination tokens.

get_keyword_performanceB

Keyword metrics (text, match type, bid, quality signals) for a date window; bounded with pagination tokens.

get_search_termsB

Search-term report for a date window; bounded with pagination tokens — no unbounded dumps.

get_geo_performanceB

Geographic performance for a date window; bounded with pagination tokens.

list_accountsC

Accessible accounts under the configured login customer.

get_conversion_actionsC

Conversion actions with category, type, status, counting type, and primary-for-goal flags.

get_negative_keywordsC

Campaign-level negative keywords.

list_extensionsC

Campaign-level extensions/assets (sitelinks, callouts, structured snippets) with status.

search_geo_targetsB

Search geo target constants by name (e.g. 'United States').

discover_keywordsA

Keyword ideas for seed terms and/or a page URL, with average monthly searches and competition. Computed by KeywordPlanIdeaService — nothing is created in the account. Bounded by the row limit with pagination tokens.

get_keyword_forecastsA

Forecast clicks, cost, and average CPC for supplied keywords. Impressions are unavailable from the v25 nonpersisting API and returned as null. Other absent estimates are null; explicit zero and fractional clicks are preserved. Uses a strict YYYY-MM-DD date range. Start must be in the future and end within one calendar year of today in the requested account's time zone (February 29 clamps to February 28). Defaults to the next 30 complete account-local days; missing or invalid account time zones are refused. Money is decimal with the account currency. Computed by KeywordPlanIdeaService — no KeywordPlan is ever created. keyword_texts is an alias for keywords; both must agree if supplied.

get_policy_issuesA

Policy issues across ads, PMax asset-group assets, and campaign-linked sitelink assets. mode=summary returns a bounded topic histogram + entity-status breakdown; mode=full paginates with filters (enabled_only, campaign_id, topic) — never an unbounded dump.

list_recommendationsA

Google's active recommendations with typed impact projections (base vs potential cost and conversions). Read-only; applying or dismissing routes through the guardrail plan flow.

get_change_historyA

Who changed what, when, with which client: change events with actor email, client type, and old/new values per changed field. Strict YYYY-MM-DD dates, inclusive from 29 days before today through today in the verified account time zone. Includes the complete end date, including fractional seconds, up to but excluding the next calendar day's midnight. This local 30-calendar-date policy is distinct from provider sub-day retention. LIMIT 1000; a full result signals possibly_truncated on every local page with narrowing guidance. Local tokens cannot recover beyond that cap. More than 1000 events at one timestamp may need a different run_gaql query; upstream maximum LIMIT 10000.

get_shopping_performanceC

Product-level shopping metrics for a campaign and date window.

get_listing_groupsB

Listing-group trees per PMax asset group and standard Shopping ad group for the requested campaign, preserving parent links, dimensions, and exclusions. Empty trees are valid results.

get_product_statusA

Merchant Center feed health as visible from the Ads API: linked merchant id, product counts by eligibility status scoped to the requested campaign and linked merchant. A campaign without a feed link returns NOT_FEED_LINKED, not an error.

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 21 tools

Disambiguation4/5

The specialized getters map cleanly to distinct resources, and run_gaql is explicitly framed as a raw GAQL escape hatch rather than a parallel typed reader. A couple of boundaries require care—run_gaql can technically produce any read result, and list_accounts vs get_account_info both concern account context—but descriptions keep the ambiguity minor.

Naming Consistency4/5

The set overwhelmingly follows snake_case verb_noun naming, with get_* dominating and list_* used for a few collection reads. Minor deviations like run_gaql, health_check, search_geo_targets, and discover_keywords are readable but break the otherwise regular get_/list_ pattern.

Tool Count3/5

At 21 tools, the surface is on the heavy side, and many get_*_performance helpers are structurally similar and could feel redundant next to run_gaql. The breadth is defensible for Google Ads reporting, but the set sits in the 16–25 range that feels borderline rather than tight.

Completeness4/5

For what appears to be a read-only/reporting server, coverage is broad: accounts, campaigns, ads, keywords, search terms, geo, conversion actions, policies, recommendations, change history, shopping, and product status are all represented. Minor gaps such as a dedicated ad-group performance or audience report exist, but run_gaql is a genuine escape hatch for arbitrary reads.

Maintenance

ActivityMaintained
ResponsivenessNo issues