# Google Ads

Hooks a Google Ads account into your AI client: 35 read tools plus 13 write tools that stay off until you turn them on.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI
- Author: get-mcp-ads
- License: Apache-2.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/get-mcp-ads/google-ads-mcp-server
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/mcp/google-ads

## What it 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.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `GOOGLE_ADS_DEVELOPER_TOKEN`, `GOOGLE_ADS_CLIENT_ID`, `GOOGLE_ADS_CLIENT_SECRET`, `GOOGLE_ADS_REFRESH_TOKEN`, `GOOGLE_ADS_LOGIN_CUSTOMER_ID`, `GOOGLE_ADS_ACCOUNT_IDS`, `GOOGLE_ADS_ENABLE_WRITES` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
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-server
```
Replace <…> with your own values. 2 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
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-server
```
Replace <…> with your own values. 2 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "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

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "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

### Gemini CLI

**Platform CLI**
```bash
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-server
```
Replace <…> with your own values. 2 more environment variables are in the server README

## When to use it
- 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
- Show spend and conversions per campaign for the past week
- Run a keyword forecast for these terms in Germany
- Rename the `Brand DE` ad group, show me the preview first

## Similar
- [ads-google](https://affpapa.org/en/nevibecode/skills/ads-google.md) — skill · 4400 installs
- [google-ads-report](https://affpapa.org/en/nevibecode/skills/google-ads-report.md) — skill · 476 installs
- [google-ads-manager](https://affpapa.org/en/nevibecode/skills/google-ads-manager.md) — skill · 6300 installs
- [google-ads](https://affpapa.org/en/nevibecode/skills/arnabbagxd-google-ads.md) — skill · 1600 installs
- [google-ads-assets](https://affpapa.org/en/nevibecode/skills/google-ads-assets.md) — skill · ★ 4064
- [Ads Manager by AdKit: Google Ads, Meta Ads, TikTok Ads, LinkedIn Ads](https://affpapa.org/en/nevibecode/mcp/ads-manager-by-adkit-google-ads-meta-ads-tiktok-ads-linkedin-ads.md) — MCP server · ★ 18

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
