Skip to main content
ClaudeWave

Google Ads MCP server that acts: your AI finds wasted spend, applies only changes you approve, and can undo them.

MCP ServersOfficial Registry0 stars0 forks● TypeScriptMITUpdated today
ClaudeWave Trust Score
95/100
✓ Verified
Passed
  • ✓Open-source license (MIT)
  • ✓Actively maintained (<30d)
  • ✓Clear description
  • ✓Topics declared
  • ✓Documented (README)
Last scanned: 10/2/2026
Install in Claude Code / Claude Desktop
Method: Manual
Claude Code CLI
git clone https://github.com/awilliams-2020/camberstack-mcp
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "camberstack-mcp": {
      "command": "node",
      "args": ["/path/to/camberstack-mcp/dist/index.js"],
      "env": {
        "BASE_URL": "<base_url>"
      }
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Clone https://github.com/awilliams-2020/camberstack-mcp and follow its README for install instructions.
Detected environment variables
BASE_URL
Use cases

MCP Servers overview

# Camberstack: a Google Ads MCP server that acts

Connect Google Ads to Claude, ChatGPT, Cursor or any MCP client. Your AI checks conversion
tracking, finds where the budget goes with nothing to show for it, and proposes fixes. **Nothing
changes in the account until you approve a specific proposal, and every applied change can be
undone.**

Hosted: **https://camberstack.io/mcp** (free plan: unlimited diagnosis + 3 applied changes; Pro $49/mo unlimited). Setup: https://camberstack.io/#setup

## Tools

| tool | writes? | what it does |
|---|---|---|
| `list_accounts` | no | every account the login reaches, including client accounts under a manager (MCC) |
| `account_overview` | no | spend, conversions, cost per conversion per campaign |
| `find_wasted_spend` | no | tracking check → campaigns with no conversions → search terms over their campaign's cost per conversion → low-intent patterns (free, jobs, how-to, login) that never converted in that campaign → keywords to review. Returns ready-to-propose negatives |
| `run_gaql` | no | any read-only GAQL `SELECT` |
| `propose_changes` | no | resolves changes against the live account, dry-runs them with Google (`validateOnly`), stores a proposal with a plain-English summary |
| `apply_changes` | **yes** | applies a stored proposal (the user's own, un-applied, under 24h old); records each change's inverse |
| `undo_changes` | no | builds the reversing proposal for an applied one |
| `billing` | no | plan, free applies left, and a personal upgrade or manage-billing link |
| `discard_proposal`, `change_history`, `disconnect` | | |

Writes are limited to: add negative keywords, pause/enable a campaign, ad group or keyword, set a
campaign's daily budget (never a shared budget). Enabling a campaign and more-than-doubling a budget
carry a ⚠ line in the proposal summary. No campaign creation, bid strategy changes or deletions of
anything the user built.

## How auth works

Camberstack is an OAuth 2.1 authorization server for MCP clients (dynamic client registration,
PKCE). Its `/authorize` sends the user to Google for `adwords` + `openid email`. The Google refresh
token is stored AES-256-GCM encrypted and never leaves the server. The MCP client gets
Camberstack's own tokens, which are stored only as SHA-256 hashes.

## Run it

```bash
npm ci && npm test
ENCRYPTION_KEY=$(openssl rand -hex 32) \
GOOGLE_CLIENT_ID=… GOOGLE_CLIENT_SECRET=… GOOGLE_ADS_DEVELOPER_TOKEN=… \
BASE_URL=https://your.host npm run dev
```

| env | |
|---|---|
| `ENCRYPTION_KEY` | 32 bytes, hex or base64. **Losing it only forces users to reconnect**; leaking it exposes stored Google tokens |
| `GOOGLE_CLIENT_ID` / `GOOGLE_CLIENT_SECRET` | OAuth client from a **dedicated** Google Cloud project with Google Ads API access. Redirect URI: `<BASE_URL>/oauth/google/callback`. Unset = pages only, sign-in reports "not open yet" |
| `GOOGLE_ADS_DEVELOPER_TOKEN` | sent when set |
| `BASE_URL` | public origin, the OAuth issuer (default `https://camberstack.io`) |
| `DATA_DIR` | SQLite location (default `./data`) |
| `FREE_APPLIES` / `PRO_EMAILS` | applied proposals on the free plan (default 3; undo never counts) / emails treated as Pro |
| `STRIPE_SECRET_KEY` / `STRIPE_PRO_PRICE_ID` | Pro subscription via Stripe Checkout; unset = no upgrade links |

`scripts/try-account.ts` runs the read tools against a real account from an existing refresh
token, skipping OAuth. Use it for dogfooding.

## License

MIT
chatgptclaudegoogle-adsgoogle-ads-apimcpmcp-servermodel-context-protocolnegative-keywordsppc

What people ask about camberstack-mcp

What is awilliams-2020/camberstack-mcp?

+

awilliams-2020/camberstack-mcp is mcp servers for the Claude AI ecosystem. Google Ads MCP server that acts: your AI finds wasted spend, applies only changes you approve, and can undo them. It has 0 GitHub stars and its last recorded update is dated 2026-10-02.

How do I install camberstack-mcp?

+

You can install camberstack-mcp by cloning the repository (https://github.com/awilliams-2020/camberstack-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is awilliams-2020/camberstack-mcp safe to use?

+

Our security agent has analyzed awilliams-2020/camberstack-mcp and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.

Who maintains awilliams-2020/camberstack-mcp?

+

awilliams-2020/camberstack-mcp is maintained by awilliams-2020. The last recorded GitHub activity is dated 2026-10-02, with 0 open issues.

Are there alternatives to camberstack-mcp?

+

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

Deploy camberstack-mcp to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: awilliams-2020/camberstack-mcp
[![Featured on ClaudeWave](https://claudewave.com/api/badge/awilliams-2020-camberstack-mcp)](https://claudewave.com/repo/awilliams-2020-camberstack-mcp)
<a href="https://claudewave.com/repo/awilliams-2020-camberstack-mcp"><img src="https://claudewave.com/api/badge/awilliams-2020-camberstack-mcp" alt="Featured on ClaudeWave: awilliams-2020/camberstack-mcp" width="320" height="64" /></a>

More MCP Servers

camberstack-mcp alternatives