Google Ads MCP
Enables reading and modifying Google Ads accounts, including campaign management, ad status changes, budget updates, and more.
README
Google Ads MCP — with write operations
An MCP server that lets Claude (or any MCP client) read and change a Google Ads account.
This is a rebuilt fork of cohnen/mcp-google-ads. The original is query-only — it exposes 12 read tools and cannot modify anything. Google's own googleads/google-ads-mcp is read-only too: it wraps GAQL search and resource metadata, with no mutate operations at all.
So if you want an agent that actually manages campaigns — pauses ads, updates budgets, pushes negative keywords — neither of those will do it. This fork adds that layer.
What's different from upstream:
- 16 write tools built on a shared
_mutate()helper (upstream had none) - Google Ads API v19 → v24 (v19 and v20 are deprecated)
- Credentials are read from
.enveverywhere — no hardcoded secrets, and.gitignoreactually covers them (upstream's last entry was glued together by a missing newline, so it matched nothing) - Helper scripts: OAuth re-authorization, a standalone GAQL runner for debugging
Tools
Read — run_gaql, execute_gaql_query (arbitrary GAQL), get_campaign_performance,
get_ad_performance, get_ad_creatives, get_image_assets, download_image_asset, get_asset_usage,
analyze_image_assets, get_account_currency, list_accounts, list_resources
Write — create_campaign, create_ad_group, create_rsa_ad, add_keywords, update_keyword_status,
add_negative_keywords, remove_negative_keywords, create_shared_negative_set, add_to_shared_negative_set,
attach_shared_set_to_campaign, update_campaign_status, update_ad_status, update_campaign_budget,
update_campaign_geo_targeting, add_sitelink_extensions, add_callout_extensions
Not covered — keyword/ad-group level bids, bidding strategies, Performance Max assets, audiences,
ad scheduling. Do those in the UI, or extend _mutate().
What you need
- Google Ads developer token — MCC account → Tools → API Center. A fresh token starts at Test level, which only sees test accounts; request Basic access to work against live accounts.
- OAuth client ID + secret — Google Cloud Console → create a project → enable the Google Ads API → APIs & Services → Credentials → Create OAuth client ID → type Desktop app.
- Refresh token — you don't get this by hand;
reauth.pygenerates it (step 3 below).
Setup
python3 -m venv .venv && ./.venv/bin/pip install -r requirements.txt
cp .env.example .env # fill in the developer token and OAuth pair from above
./.venv/bin/python reauth.py # opens a browser for consent, writes client_secret.json
Then point your MCP client at it:
{
"mcpServers": {
"google-ads": {
"type": "stdio",
"command": "/absolute/path/to/.venv/bin/python",
"args": ["/absolute/path/to/google_ads_server.py"],
"env": { "GOOGLE_ADS_AUTH_TYPE": "oauth" }
}
}
}
Everything else is picked up from .env — the server loads it via python-dotenv.
Helper scripts
| File | Purpose |
|---|---|
reauth.py |
get or refresh the OAuth refresh token when it expires |
gaql_rest.py |
run a GAQL query straight over REST, bypassing MCP — handy for debugging |
pause_ads.py |
example: bulk-pause ads by ID |
gaql-google-ads-query-language.mdc |
GAQL syntax cheatsheet |
Secrets
They live in .env and client_secret.json only. Both are gitignored — don't commit them.
If you add your own scripts, pull values with os.getenv(); never inline them.
License
MIT, inherited from cohnen/mcp-google-ads (Copyright © 2025 Ernesto Cohnen — ixigo). See LICENSE. Modifications © 2026 Vlad Petruk.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
E2B
Using MCP to run code via e2b.