Skip to main content
Glama
Bmiller4evr

google-marketing-mcp

by Bmiller4evr

google-marketing-mcp

A read-only MCP server that exposes the Google Ads API to LLM clients: campaigns, metrics, search terms, budgets, and change history.

Point Claude (or any MCP client) at your Ads account and ask questions like "which search terms spent over $50 with no conversions last month?" without handing it write access.

Read-only by construction

There is no write or mutation code path in this server. It isn't a permission flag that can be toggled or a prompt instruction that can be talked around: the mutate endpoints simply aren't implemented. Even if the underlying service account has write scope, a client connected here cannot change anything in your account.

Related MCP server: google-ads-mcp

Tools

Tool

What it does

list_accounts

Advertiser accounts under your manager (MCC) account. Start here to find customer ids.

get_campaigns

Campaigns: status, channel, bidding strategy, budget.

get_budgets

Campaign budgets (amount, status, delivery).

get_metrics

Cost, impressions, clicks, CTR, avg CPC, conversions by account / campaign / ad group / keyword / ad.

get_search_terms

Actual user queries with cost and conversions — negative-keyword candidates.

get_change_history

Native Ads change log (last 30 days).

Money fields are converted from micros to dollars, and nested rows are dot-flattened (campaign.name, metrics.cost), so results drop straight into a table without post-processing.

Requirements

  • Node 20+

  • A Google Ads developer token (apply here)

  • A service account with access to your Ads account, as base64-encoded JSON

Setup

npm install && npm run build

Configuration

All configuration is via environment variables. Nothing is hardcoded — the server fails with a named error if a required variable is missing.

Variable

Required

Purpose

GOOGLE_ADS_DEVELOPER_TOKEN

yes

Google Ads API developer token

GOOGLE_SERVICE_ACCOUNT_KEY

yes

Service-account JSON, base64-encoded

GOOGLE_ADS_LOGIN_CUSTOMER_ID

yes

Your manager (MCC) account id

GOOGLE_ADS_CUSTOMER_ID

no

Default advertiser account; otherwise pass customer_id per call

GOOGLE_ADS_ENV_FILE

no

Path to a dotenv file to read the above from

Ids may be dashed or bare (123-456-7890 and 1234567890 are equivalent).

Resolution order is process environment first, then GOOGLE_ADS_ENV_FILE if set.

Add to Claude Code

claude mcp add google-marketing -- node /absolute/path/to/google-marketing-mcp/dist/index.js

Verify

npm test                    # unit tests, no network or credentials needed
npm run smoke               # end-to-end against the real API; needs credentials

License

MIT — see LICENSE.

Available Tools

1 tool
get_metricsGet metricsC

Performance (cost, impressions, clicks, CTR, avg CPC, conversions, conv value) by level over a date range. Costs are in dollars.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoAggregation level.campaign
limitNoMax rows (default 100).
sinceYesStart date, YYYY-MM-DD.
untilYesEnd date, YYYY-MM-DD.
customer_idNoAds customer id (digits or dashed). Defaults to GOOGLE_ADS_CUSTOMER_ID.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavior. It lists the metrics returned and mentions cost currency, but does not describe pagination, response format, error scenarios, authentication needs, or any side effects. Important behavioral traits are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads the key metric names, and adds the currency note. Every word is functional; no redundancy or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 5 parameters and no output schema. The description does not explain the return structure, pagination, or what happens with missing data or errors. For a data retrieval tool, this leaves significant gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters have descriptions in the schema (100% coverage), so baseline is 3. The description adds a high-level summary ('by level over a date range') but does not elaborate on parameter usage, defaults, or constraints beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves performance metrics (cost, impressions, clicks, etc.) with aggregation by level over a date range, and specifies cost currency. The verb 'get' and resource 'metrics' are direct, though 'Get metrics' is generic; the description adds specificity. No sibling tools exist, so differentiation is not needed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool vs alternatives. There are no sibling tools listed, but the description lacks any explicit usage context, prerequisites, or exclusions. The agent receives no help in deciding if this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3/5.0
Disambiguation5/5

Only one tool exists, so there is no possibility of ambiguity or confusion between tools.

Naming Consistency5/5

The single tool name follows a clear verb_noun pattern (get_metrics), consistent with best practices.

Tool Count2/5

A single tool for a marketing MCP is far too few. Marketing typically requires multiple tools covering campaigns, ad groups, keywords, etc., making the count inappropriate.

Completeness1/5

The server only exposes a metrics retrieval tool, missing essential operations like listing campaigns, managing ads, or modifying settings. The surface is severely incomplete for the marketing domain.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    A read-write MCP server for managing Google Ads campaigns, ad groups, keywords, and ads via natural language.
    12
    2
    The Unlicense
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server that provides tools and resources for interacting with Google Ads API, enabling search, metadata retrieval, and account management through natural language.
    907
    Apache 2.0
  • A
    license
    B
    quality
    C
    maintenance
    Read-only MCP server for Google Ads, enabling querying campaigns, ad groups, ads, insights, and keywords without create/update/delete operations.
    9
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides read-only access to Google Ads account data including campaigns, ad groups, keywords, and performance reports. Enables querying via GAQL through an MCP interface.
    MIT

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/Bmiller4evr/google-marketing-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server