Google Ads MCP
Provides tools for reading and writing to Google Ads accounts, including campaign management, ad group creation, keyword management, and performance analysis.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Ads MCPPause all ads in the 'Summer Sale' campaign"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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().
Related MCP server: Google Ads MCP Server
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.jsonThen 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 |
| get or refresh the OAuth refresh token when it expires |
| run a GAQL query straight over REST, bypassing MCP — handy for debugging |
| example: bulk-pause ads by ID |
| 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.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/v-p3truk/mcp-google-ads'
If you have feedback or need assistance with the MCP directory API, please join our Discord server