Google Ads MCP server that acts: your AI finds wasted spend, applies only changes you approve, and can undo them.
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
git clone https://github.com/awilliams-2020/camberstack-mcp{
"mcpServers": {
"camberstack-mcp": {
"command": "node",
"args": ["/path/to/camberstack-mcp/dist/index.js"],
"env": {
"BASE_URL": "<base_url>"
}
}
}
}BASE_URLMCP 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
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.
[](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
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
The fastest path to AI-powered full stack observability, even for lean teams.