Skip to content

Repository files navigation

Google Ads MCP

An MCP (Model Context Protocol) server that gives Claude (or any MCP-compatible client) direct access to the Google Ads API — read campaign performance, adjust bids and budgets, manage keywords and negatives, and more, all from a chat interface.

Includes a standalone daily digest script for cron-based reporting.

Features

Campaigns & reporting

  • List campaigns, get campaign metrics (overall and by device)
  • Get keyword-level and ad-group-level metrics
  • Search terms report, conversion actions list

Budgets, bids & status

  • Update campaign budgets and keyword/ad-group bids
  • Set campaign bidding strategy
  • Enable/pause campaigns, ad groups, and ads (status is intentionally restricted to ENABLED/PAUSED — removal is not exposed, since it's irreversible via the API)
  • Update ad copy

Keywords & ad groups

  • Create keywords and ad groups
  • Set keyword status
  • List/add/remove campaign- and ad-group-level negative keywords
  • Add a negative keyword directly from a search term

Bid adjustments

  • Geo (location) targeting: list/add/remove campaign locations, list/set geo bid adjustments, search geo targets
  • Device bid adjustments
  • Ad schedule bid adjustments
  • Audience (user list) bid adjustments

Multi-account convenience

  • set_default_customer / get_default_customer — set a default Google Ads customer ID so you don't have to pass it on every call

Daily digest

  • daily_digest.py is a standalone cron script that pulls campaign metrics daily and writes a formatted report to logs/

See CLAUDE.md for architecture details and full setup/commands reference.

Setup

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
cp google-ads.yaml.example google-ads.yaml  # fill in your credentials

google-ads.yaml requires:

  • developer_token — Google Ads API Center (Manager Account → Tools → API Center)
  • client_id / client_secret — Google Cloud Console → OAuth 2.0 credentials
  • refresh_token — generated via a one-time OAuth flow (see the Google Ads Python client quickstart)
  • login_customer_id — your Manager account ID, digits only

This file is gitignored — never commit real credentials.

Register with Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "google-ads": {
      "command": "/ABSOLUTE/PATH/TO/.venv/bin/python",
      "args": ["-m", "google_ads_mcp.server"]
    }
  }
}

Use absolute paths, then restart Claude Desktop.

Testing

pytest tests/ -v

License

MIT

About

MCP server for Google Ads API

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages