Google Ads — Claude Code MCP server for campaign reads and edits
Hooks a Google Ads account into your AI client: 35 read tools plus 13 write tools that stay off until you turn them on.
claude mcp add --env GOOGLE_ADS_DEVELOPER_TOKEN=<GOOGLE_ADS_DEVELOPER_TOKEN> --env GOOGLE_ADS_CLIENT_ID=<GOOGLE_ADS_CLIENT_ID> --env GOOGLE_ADS_CLIENT_SECRET=<GOOGLE_ADS_CLIENT_SECRET> --env GOOGLE_ADS_REFRESH_TOKEN=<GOOGLE_ADS_REFRESH_TOKEN> --env GOOGLE_ADS_LOGIN_CUSTOMER_ID=<GOOGLE_ADS_LOGIN_CUSTOMER_ID> --transport stdio google-ads -- npx -y @getmcpads/google-ads-mcp-serverWhat Google Ads does
The server exposes Google Ads API calls as tools the assistant can call: campaign and ad group stats, keyword research, raw GAQL. Reads come to 35. The 13 write tools are disabled unless GOOGLE_ADS_ENABLE_WRITES is set, and every change returns a preview that needs confirm: true before anything happens.
It runs locally on Node.js — ^22.23.4 || ^24.22.1 || >=26.12.1. Start it on an older release and it warns on stderr. Four credentials are non-negotiable: developer token, client ID, client secret, refresh token. Pass them as environment variables when you register the server with your client. The optional GOOGLE_ADS_ACCOUNT_IDS allowlist is checked before each request and keeps every tool inside the listed customers.
Calls go straight to Google Ads API v26, no middleman. A revoked refresh token triggers a single re-authorization message instead of a loop of token requests. Licensed Apache-2.0. Useful when ad data has to land inside a conversation rather than a CSV export.
What it helps with
- check campaign spend and conversions without exporting a report
- research keywords and pull a forecast for them
- write a GAQL query and run it against the account
- preview a rename of an ad group before it goes through
- keep the assistant inside one ad account out of several
Example prompts for the agent
- Show spend and conversions per campaign for the past week
- Run a keyword forecast for these terms in Germany
- Rename the
Brand DEad group, show me the preview first
How to install Google Ads
Platform CLI
claude mcp add --env GOOGLE_ADS_DEVELOPER_TOKEN=<GOOGLE_ADS_DEVELOPER_TOKEN> --env GOOGLE_ADS_CLIENT_ID=<GOOGLE_ADS_CLIENT_ID> --env GOOGLE_ADS_CLIENT_SECRET=<GOOGLE_ADS_CLIENT_SECRET> --env GOOGLE_ADS_REFRESH_TOKEN=<GOOGLE_ADS_REFRESH_TOKEN> --env GOOGLE_ADS_LOGIN_CUSTOMER_ID=<GOOGLE_ADS_LOGIN_CUSTOMER_ID> --transport stdio google-ads -- npx -y @getmcpads/google-ads-mcp-serverReplace <…> with your own values. 2 more environment variables are in the server README
Platform CLI
codex mcp add google-ads --env GOOGLE_ADS_DEVELOPER_TOKEN=<GOOGLE_ADS_DEVELOPER_TOKEN> --env GOOGLE_ADS_CLIENT_ID=<GOOGLE_ADS_CLIENT_ID> --env GOOGLE_ADS_CLIENT_SECRET=<GOOGLE_ADS_CLIENT_SECRET> --env GOOGLE_ADS_REFRESH_TOKEN=<GOOGLE_ADS_REFRESH_TOKEN> --env GOOGLE_ADS_LOGIN_CUSTOMER_ID=<GOOGLE_ADS_LOGIN_CUSTOMER_ID> -- npx -y @getmcpads/google-ads-mcp-serverReplace <…> with your own values. 2 more environment variables are in the server README
Config file
{
"mcpServers": {
"google-ads": {
"command": "npx",
"args": [
"-y",
"@getmcpads/google-ads-mcp-server"
],
"env": {
"GOOGLE_ADS_DEVELOPER_TOKEN": "<GOOGLE_ADS_DEVELOPER_TOKEN>",
"GOOGLE_ADS_CLIENT_ID": "<GOOGLE_ADS_CLIENT_ID>",
"GOOGLE_ADS_CLIENT_SECRET": "<GOOGLE_ADS_CLIENT_SECRET>",
"GOOGLE_ADS_REFRESH_TOKEN": "<GOOGLE_ADS_REFRESH_TOKEN>",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": "<GOOGLE_ADS_LOGIN_CUSTOMER_ID>"
}
}
}
}Replace <…> with your own values. 2 more environment variables are in the server README
Config file
{
"servers": {
"google-ads": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@getmcpads/google-ads-mcp-server"
],
"env": {
"GOOGLE_ADS_DEVELOPER_TOKEN": "<GOOGLE_ADS_DEVELOPER_TOKEN>",
"GOOGLE_ADS_CLIENT_ID": "<GOOGLE_ADS_CLIENT_ID>",
"GOOGLE_ADS_CLIENT_SECRET": "<GOOGLE_ADS_CLIENT_SECRET>",
"GOOGLE_ADS_REFRESH_TOKEN": "<GOOGLE_ADS_REFRESH_TOKEN>",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": "<GOOGLE_ADS_LOGIN_CUSTOMER_ID>"
}
}
}
}Replace <…> with your own values. 2 more environment variables are in the server README
Platform CLI
gemini mcp add -e GOOGLE_ADS_DEVELOPER_TOKEN=<GOOGLE_ADS_DEVELOPER_TOKEN> -e GOOGLE_ADS_CLIENT_ID=<GOOGLE_ADS_CLIENT_ID> -e GOOGLE_ADS_CLIENT_SECRET=<GOOGLE_ADS_CLIENT_SECRET> -e GOOGLE_ADS_REFRESH_TOKEN=<GOOGLE_ADS_REFRESH_TOKEN> -e GOOGLE_ADS_LOGIN_CUSTOMER_ID=<GOOGLE_ADS_LOGIN_CUSTOMER_ID> google-ads npx -y @getmcpads/google-ads-mcp-serverReplace <…> with your own values. 2 more environment variables are in the server README
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about Google Ads
How do I install Google Ads MCP in Claude Code?
Run `claude mcp add google-ads -e GOOGLE_ADS_DEVELOPER_TOKEN=<GOOGLE_ADS_DEVELOPER_TOKEN> -e GOOGLE_ADS_CLIENT_ID=<GOOGLE_ADS_CLIENT_ID> -e GOOGLE_ADS_CLIENT_SECRET=<GOOGLE_ADS_CLIENT_SECRET> -e GOOGLE_ADS_REFRESH_TOKEN=<GOOGLE_ADS_REFRESH_TOKEN> -- npx -y @getmcpads/google-ads-mcp-server` with your own credentials in place of the placeholders.
What does the Google Ads MCP server do?
It gives the assistant Google Ads API tooling: reading stats, keyword research, raw GAQL queries, and campaign edits that preview before applying.
Why are my edits not applied?
Write tools are off by default. Set GOOGLE_ADS_ENABLE_WRITES=true to enable them; each edit still returns a preview and waits for confirmation.