Google Ads Manager Mcp

io.github.AleemHaiderPublished by GitHub account AleemHaiderv1.0.0Updated Oct 24, 2026

Unofficial MCP server for Google Ads: reporting plus safe draft/confirm campaign management.

VerifiedSTDIODesktop onlyData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

A local MCP server that lets an assistant run Google Ads reports and draft, then confirm, campaign and keyword changes.

What you can do
It connects an assistant to a single Google Ads account for both reading and writing. Read tools list accessible customers, run raw GAQL SELECT queries, and fetch campaigns, ad groups, keywords, and search terms with metrics. Write tools create campaigns, budgets, ad groups, keywords, negative keywords, and responsive search ads, or change their status. Every write is validated first and returns a draftId with a preview; nothing changes until confirm_write is called, and drafts expire after 10 minutes.
When to use it
Use it when you want an assistant to inspect Google Ads performance and also make controlled changes such as pausing campaigns, adjusting budgets, or adding keywords. It suits a single account, or one instance per account under a manager account. It is not needed if you only want read-only reporting, since Google's official server covers that.
Requirements
Runs locally as an npm package over stdio, so Node.js is required. Needs a Google Ads developer token, a Google Cloud OAuth desktop-app client ID and secret, a refresh token generated by the project's auth script, and the target customer ID; a manager account ID is needed when the target sits under an MCC. Credentials are supplied through environment variables such as GOOGLE_ADS_CLIENT_ID, GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_DEVELOPER_TOKEN, GOOGLE_ADS_REFRESH_TOKEN, and…
Before you install
The server holds OAuth credentials and a developer token that grant access to a live advertising account, so treat GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_DEVELOPER_TOKEN, and GOOGLE_ADS_REFRESH_TOKEN as secrets. Write tools can change or remove campaigns, ad groups, keywords, and budgets, and confirmed changes affect real spending; new campaigns and ads default to paused. Drafts expire after 10 minutes, so confirm promptly. It is an unofficial community project, not affiliated with Google.

Installation

In SourceWeft

  1. Open Google Ads Manager Mcp 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

Google Ads Manager MCP

Unofficial, community-maintained project. Not affiliated with, endorsed by, or sponsored by Google. "Google Ads" is a trademark of Google LLC.

A local MCP (Model Context Protocol) server that lets an AI assistant read and manage a Google Ads account: run GAQL reports, create campaigns, pause/enable campaigns, and add keywords.

Google also publishes an official Google Ads MCP server, which is read-only (reporting/diagnostics only). This project covers the same reporting ground and adds write support — creating and editing campaigns, budgets, ad groups, keywords, and ads — gated behind a draft/confirm safety layer so nothing changes in your account by accident.

Every write goes through a draft → confirm safety flow: the tool that "creates" or "updates" something only validates the change against Google's API (validate_only) and hands back a draftId with a preview. Nothing changes in your Ads account until you call confirm_write with that draftId. Drafts expire after 10 minutes.

Tools

Read-only:

  • list_accessible_customers — which accounts this refresh token can reach
  • search_gaql — run any raw GAQL SELECT query
  • get_campaigns — campaigns with status, budget, and core metrics
  • get_ad_groups — ad groups (optionally filtered to a campaign) with metrics
  • get_keywords — keyword criteria with match type, status, and metrics
  • get_search_terms — actual search terms that triggered your ads, for finding negative keyword candidates

Write (draft → confirm):

  • create_campaign — new campaign + budget, created PAUSED unless you say otherwise
  • update_campaign_status — enable / pause / remove a campaign
  • update_campaign_budget — change an existing campaign's daily budget
  • add_keywords — add keyword criteria to an ad group
  • create_ad_group — new ad group inside an existing campaign
  • update_ad_group_status — enable / pause / remove an ad group
  • update_keyword_status — enable / pause / remove a keyword criterion
  • add_negative_keywords — add negative keyword criteria to an ad group
  • create_responsive_search_ad — new responsive search ad, created PAUSED unless you say otherwise
  • confirm_write — execute a previously returned draftId for real

Setup

1. Google Ads developer token

Google Ads → Tools & Settings → API Center. Test-account tokens are issued instantly; a production-level token requires Google's manual review (roughly 1-2 weeks), so apply for that early if you'll use this beyond a test account.

2. OAuth client

Google Cloud Console → APIs & Services → Credentials → Create credentials → OAuth client ID. Choose application type Desktop app. Copy the client ID and client secret.

3. Configure environment

bash
cp .env.example .env

Fill in GOOGLE_ADS_CLIENT_ID, GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_DEVELOPER_TOKEN, and GOOGLE_ADS_CUSTOMER_ID (the account this server should manage — 10 digits, dashes optional). If that account is a client under a manager (MCC) account, also set GOOGLE_ADS_LOGIN_CUSTOMER_ID to the manager account's ID.

4. Get a refresh token

bash
npm installnpm run auth

This opens an authorization URL — open it, sign in with the Google account that has access to your Ads account, approve the adwords scope. The script prints a GOOGLE_ADS_REFRESH_TOKEN; add it to .env.

5. Build

bash
npm run build

6. Point your MCP client at it

For Claude Desktop / Claude Code, add to your MCP config:

json
{  "mcpServers": {    "google-ads-manager": {      "command": "node",      "args": ["/absolute/path/to/google ads manger mcp/build/index.js"],      "env": {        "GOOGLE_ADS_CLIENT_ID": "...",        "GOOGLE_ADS_CLIENT_SECRET": "...",        "GOOGLE_ADS_DEVELOPER_TOKEN": "...",        "GOOGLE_ADS_REFRESH_TOKEN": "...",        "GOOGLE_ADS_CUSTOMER_ID": "..."      }    }  }}

(Or skip the env block and just make sure .env is populated — the server loads it via dotenv when run directly, e.g. npm run dev during local iteration.)

Notes

  • This is scoped to a single Google Ads account (GOOGLE_ADS_CUSTOMER_ID). To manage several client accounts under one manager account, either run one instance per customer ID, or extend googleAdsClient.ts to accept a customerId argument per tool call.
  • New campaigns default to PAUSED (startEnabled: false) so nothing spends until you explicitly enable it.

Contributing

Issues and PRs welcome — new report types, negative-keyword-at-campaign-level support, and multi-account (MCC) handling are the most useful next additions.

License

MIT

Source: README.md at commit d2646b7

Tools

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

Version history

1
  1. v1.0.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