MCP Google Ads

io.github.Ayo-FamPublished by GitHub account Ayo-Famv0.1.0Updated Oct 24, 2026

Multi-account Google Ads MCP: campaigns, keywords, search terms, and ad performance.

VerifiedSTDIODesktop onlyData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

Local MCP server that lets an assistant query multiple Google Ads accounts for campaigns, keywords, search terms and ad performance.

What you can do
  • List and route accounts: list accounts, set a default account, discover accessible customers
  • Report spend: account summaries and period-over-period comparisons
  • Analyze campaigns: list campaigns and get range-based campaign performance
  • Inspect query-level detail: keyword performance, search-term reports and ad performance
  • All queries run as GAQL calls against the Google Ads API with retries and normalized rows
When to use it
Useful when you manage several client or in-house Google Ads accounts and want one assistant session to switch between them without restarting the server, for reporting and performance analysis rather than editing campaigns.
Requirements
Runs locally as a Python package (mcp-google-ads-multi) installed via pip or run with uvx. Needs a Google Ads API developer token in GOOGLE_ADS_DEVELOPER_TOKEN and an accounts.json file, pointed to by GOOGLE_ADS_ACCOUNTS_CONFIG, holding OAuth or service-account credentials per account. Network access to the Google Ads API.
Before you install
The accounts config file holds OAuth or service-account credentials for every account, so protect it as a secret. The developer token is passed by environment variable. The server is a beta release (0.1.0) and its tools are read-oriented reporting queries, but account data is sent to the Google Ads API.

Installation

In SourceWeft

  1. Open MCP Google Ads in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

mcp-google-ads

Multi-account Google Ads MCP server for operators who need one MCP surface across multiple client or in-house ad accounts without restarting the server.

Release posture: beta package, version 0.1.0 from pyproject.toml.

Choose your path

You are...Start hereThen
Connecting the server to your MCP clientdocs/start-here.mdQuick start below
Auditing account switching and retriesdocs/architecture.mdgads/server.py
Reviewing packaging metadatapyproject.tomlaccounts.example.json

Architecture

mermaid
flowchart TD  U[AI operator] --> C[MCP client]  C --> S[FastMCP server]  S --> M[Account manager]  M --> F[Accounts config]  S --> Q[GAQL query helpers]  Q --> R[Retry wrapper]  R --> A[Google Ads API]  A --> R --> S

Request flow

mermaid
flowchart TD  P[Operator asks for account or campaign data] --> T[Selected MCP tool]  T --> A[Resolve named or default account]  A --> B[Build Google Ads client]  B --> C[Run GAQL query]  C --> D{API call succeeds?}  D -- yes --> E[Normalize rows and return]  D -- retryable --> F[Backoff and retry]  F --> D  D -- no --> G[Return error payload]

Quick start

  1. Install the package.
bash
python -m pip install mcp-google-ads-multi
  1. Copy the accounts config template and add your accounts.
bash
mkdir -p ~/.config/mcp-google-adscp accounts.example.json ~/.config/mcp-google-ads/accounts.json
  1. Register it in your MCP client.
json
{  "mcpServers": {    "google-ads": {      "command": "uvx",      "args": ["mcp-google-ads-multi"],      "env": {        "GOOGLE_ADS_DEVELOPER_TOKEN": "your-developer-token",        "GOOGLE_ADS_ACCOUNTS_CONFIG": "/Users/you/.config/mcp-google-ads/accounts.json"      }    }  }}

Available tools

Tool groupToolsPurpose
Account selectionlist_accounts, set_default_account, list_customersManage account routing and discover accessible customers
Spend summaryget_account_summary, compare_periodsPeriod-over-period account reporting
Campaign analysislist_campaigns, get_campaign_performanceCampaign inventory and range-based metrics
Query-level detailget_keyword_performance, search_terms_report, get_ad_performanceKeyword, search-term, and ad reporting

Runtime proof

ClaimProof
Package entry point is stablemcp-google-ads-multi = "gads.server:main" in pyproject.toml
Multi-account routing is first-classAccountManager() and set_default_account() in gads/server.py
Queries go through reusable helpersgads/query.py and gads/retry.py
Config is file-drivenaccounts.example.json documents the accounts shape

Repo map

PathPurpose
gads/server.pyFastMCP tool surface
gads/accounts.pyAccount config, OAuth/service-account loading
gads/query.pyGAQL execution helpers
gads/retry.pyRetry behavior for API calls
docs/start-here.mdSetup, validation, common failures
docs/architecture.mdComponent map and request lifecycle

Validation

CheckCommand
Import compilespython -m compileall gads
Package buildspython -m build
README/docs links are localrg '\\]\\(([^)]+\\.md)\\)' README.md docs/

License

MIT

Project context for new tasks

Use INDEX.md to find task-specific contracts; consult prompt.md when product direction is relevant. Historical examples do not select the current task.

Source: README.md at commit 93fe255

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts