# Google Ads MCP

Read-only MCP server connecting Google Ads API to your assistant for GAQL reporting, keyword research, and change tracking.

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

## What it does

This server connects your development environment to the Google Ads API strictly in read-only mode. It enforces non-destructive operation through safeguards including an SDK method allowlist and an explicit check requiring GAQL statements to begin with SELECT. Through a manager account (MCC), your assistant can inspect linked client accounts and query resource schemas.

Beyond reporting, it exposes tools to generate keyword ideas, inspect search volumes, view CPC estimates, and retrieve optimization recommendations. It also provides audit trails to see who modified account resources.

Running this integration requires an approved Google Ads developer token, a desktop OAuth client in Google Cloud, a long-lived refresh token, and the manager account customer ID.

## Requirements
- Needs: Python and uv (commands run via uvx)
- 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_API_VERSION`, `GOOGLE_ADS_LOG_LEVEL`, `GOOGLE_ADS_USE_PROTO_PLUS` — 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 google-ads-mcp -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> -- uvx scalably-google-ads-mcp
```
Replace <…> with your own values. 3 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from scalably-google-ads-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add google-ads-mcp --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> -- uvx scalably-google-ads-mcp
```
Replace <…> with your own values. 3 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from scalably-google-ads-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "google-ads-mcp": {
            "command": "uvx",
            "args": [
                "scalably-google-ads-mcp"
            ],
            "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. 3 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from scalably-google-ads-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "google-ads-mcp": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "scalably-google-ads-mcp"
            ],
            "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. 3 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from scalably-google-ads-mcp <command>

### 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-mcp uvx scalably-google-ads-mcp
```
Replace <…> with your own values. 3 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from scalably-google-ads-mcp <command>

## When to use it
- execute GAQL reporting queries across accounts under an MCC
- discover keyword ideas alongside CPC and competition metrics
- audit account modifications from change history logs
- retrieve optimization recommendations directly from Google

## Example prompts
- List all client accounts linked under our manager account
- Run a GAQL query for campaign performance metrics across active ad groups
- Suggest keyword ideas for our campaign and show estimated search volume

## Similar
- [Google Ads MCP by Markifact](https://affpapa.org/en/nevibecode/mcp/google-ads-mcp-by-markifact.md) — MCP server · ★ 1
- [google-ads](https://affpapa.org/en/nevibecode/skills/google-ads.md) — skill · 1600 installs
- [Google Ads](https://affpapa.org/en/nevibecode/mcp/google-ads.md) — MCP server
- [google-ads-monitor](https://affpapa.org/en/nevibecode/skills/google-ads-monitor.md) — skill · ★ 111
- [ads-google](https://affpapa.org/en/nevibecode/skills/ads-google.md) — skill · 4400 installs
- [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
