Skip to content
plugmcp
DirectorySkillsCategoriesBlog
EN/中文
Sign inSign up
Home/Servers/Camberstack: Google Ads

Camberstack: Google Ads

by io.camberstack

Hosted Google Ads MCP: build Search, PMax, Display and YouTube campaigns, approve each change, undo.

Power your agent

Add this server

The publisher's own URL. Not a PlugMCP endpoint.

Server URL
https://camberstack.io/mcp
Provider
Add in Claude

Claude opens with the name and URL filled in. You still confirm it there.

Claude Code
claude mcp add --transport http io.camberstack-google-ads https://camberstack.io/mcp

Run in a terminal.

Claude Desktop
{
  "mcpServers": {
    "io.camberstack-google-ads": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://camberstack.io/mcp"
      ]
    }
  }
}

claude_desktop_config.json

Step-by-step: add this in Claude

Remote URL or a command on your machine? How the two installs differ

Run on PlugMCP

Host a copy with our keys and logs.

A new server you create. It is not this listing's official endpoint. Use the publisher install when you want their URL and their credentials.

Launch

Related MCP

View more
  • Firecrawl🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
  • N
    NotionToken-auth Notion MCP: pages, databases, blocks, comments, files. Runs headless in CI and agents.
  • Context7Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors

Related skills

View all
  • reaReverse engineer anything with agents, from app behavior down to native binaries.
  • rea-changelog-updatePrepare or rewrite REA release changelogs and GitHub release notes from pinned Git history, with verified contributor thanks and Release Please synchronization.
  • rea-tool-designDesign or change REA investigation tools, CLI/MCP contracts, provider capabilities, and Evidence semantics.

Questions

How do I install Camberstack: Google Ads?
Copy the http config for Cursor, Claude Desktop, Claude Code, or VS Code on this page. It uses the publisher's install, not a PlugMCP proxy.
Does Camberstack: Google Ads need an API key?
No required environment variable is listed on this record.
What transport does Camberstack: Google Ads use?
Camberstack: Google Ads is reached over HTTP.
When was Camberstack: Google Ads last checked?
Last checked 2026-10-16. Hosted Google Ads MCP: build Search, PMax, Display and YouTube campaigns, approve each change, undo.

Hosted Google Ads MCP: build Search, PMax, Display and YouTube campaigns, approve each change, undo.

Camberstack: a Google Ads MCP server

Connect Google Ads (and, optionally, Search Console) to Claude, ChatGPT, Cursor or any MCP client. Your AI reads the account with read-only tools and can propose changes, from negative keywords to whole Search, Performance Max, Display and YouTube campaigns. Nothing changes in the account until you approve a specific proposal, and every applied change can be undone in one call, on every plan. Risky changes (turning a campaign on, more than doubling a budget or bid, switching bid strategy) are flagged in the proposal before you approve. A demo account lets anyone try every tool first.

Hosted: https://camberstack.io/mcp (Free: 1 Google Ads account at a time with one switch a month, every tool, unlimited changes; Pro $15/mo: up to 10 accounts).

Setup guides, with screenshots and troubleshooting: Connect Google Ads to Claude · Connect Google Ads to ChatGPT · every tool · Cursor, VS Code and others

Tools

toolwrites?what it does
list_accountsnoevery account the login reaches, including client accounts under a manager (MCC)
account_overviewnospend, conversions, cost per conversion per campaign
keyword_ideasnoKeyword Planner ideas from seed keywords and/or a URL: monthly searches, competition, top-of-page bid range; marks ideas the account already targets or blocks
keyword_metricsnoKeyword Planner numbers for an exact list, with the last 12 months of searches
run_gaqlnoany read-only GAQL SELECT
search_console_sitesnothe websites (Search Console properties) the login can read
search_console_summarynosite-wide clicks, impressions, CTR and position for a window vs. the window before it
search_console_performancenoorganic clicks, impressions, CTR and position by query, page, country, device or date; text or RE2 regex filters
search_console_trendnoa window vs. the one before it, per query and per page: rising, falling, new, lost, and rising searches losing position
search_console_opportunitiesnoqueries on positions 4-20 with projected click gain, top-5 queries with weak CTR, question-shaped queries
search_console_inspect_urlsnoURL Inspection for up to 20 pages: indexed or why not, last crawl, canonical chosen vs declared, structured-data errors
search_console_sitemapsnosubmitted sitemaps: last downloaded, URL count, errors and warnings
paid_organic_overlapnojoins an Ads account's search terms with a site's organic queries: searches paid for that already rank near the top, and page-2+ searches with no ad
analytics_propertiesnothe Google Analytics 4 properties the login can read; if Analytics isn't granted yet, a personal link that adds it
analytics_setupnoa property's web streams (measurement IDs), key events and Google Ads links
propose_analytics_changesnolike propose_changes, for GA4 setup: create_ga4_property (with a web stream; the applied result gives the tag), mark_key_event/unmark_key_event, link_google_ads/unlink_google_ads. Applied and undone with apply_changes/undo_changes
analytics_landing_pagesnosessions, users, engagement rate, key events and key event rate per landing page, optionally for one channel (e.g. Paid Search)
analytics_reportnoany GA4 Data API report by dimension and metric names, with a contains filter
propose_changesnoresolves changes against the live account, dry-runs them with Google (validateOnly), stores a proposal with a plain-English summary
apply_changesyesapplies a stored proposal (the user's own, un-applied, still matching the account; if the account moved, returns an updated proposal to approve instead); records each change's inverse
undo_changesnobuilds the reversing proposal for an applied one
switch_accountplan onlyspends the plan's one account switch per 30 days on an account, after the user agrees; changes nothing in Google Ads
billingnoplan, Google Ads accounts in use (last 30 days) vs. the plan's limit, and a personal upgrade or manage-billing link
discard_proposalnomarks an open proposal discarded so it can't be applied
change_historynoevery proposal, with what was applied, what failed and what was undone
disconnectnorevokes Camberstack's Google access and deletes the stored credentials (the user confirms)

The Search Console tools take either days or exact start_date/end_date, and fresh: true to include the last 2-3 days Google is still filling in. Requesting indexing and submitting sitemaps aren't available: Camberstack only holds the read-only scope.

The Google Analytics tools need analytics.readonly and analytics.edit (Google-verified sensitive scopes). Sign-in asks for them alongside Ads and Search Console; a connection made before they were added gets a personal /connect/analytics link on its first Analytics call, which adds both to the same Google account. The Cloud project needs the Google Analytics Data API and Admin API enabled.

What a proposal can do:

  • Control: add negative keywords; pause or enable a campaign, ad group, keyword or ad; set a campaign's daily budget (never a shared budget) or its end date.

  • Build, always created paused (building and spending are two separate approvals):

    • a Search campaign: ad groups, keywords, responsive search ads, targeting, negatives, sitelinks;
    • a Performance Max campaign: asset groups of text, images and YouTube videos, with the business name and logo on the campaign as Google's brand guidelines require (no shopping feed);
    • a Display campaign: responsive display ads;
    • a Demand Gen campaign with YouTube video ads, the API's only way onto YouTube (it refuses to create Video campaigns: MUTATE_NOT_ALLOWED, v23).

    Images are existing image assets or https URLs, which are downloaded SSRF-safe (src/fetch-safe.ts) and uploaded. A proposal can also add an ad group, keywords, an ad or sitelinks to an existing campaign.

  • Tune: keyword and ad group bids, bid strategy, location and language targeting, presence-only location mode, final URL suffix.

  • Measure: create a conversion action, set its counting, import a GA4 key event, scope a campaign to one conversion goal.

Risky changes carry a ⚠ line in the proposal summary: enabling a campaign, more than doubling a budget or a bid, switching bid strategy, removing the last location, a new primary conversion action. Undo removes only what Camberstack itself created; nothing the user built is ever deleted. (Undoing a GA4 import removes the action, since Google can't hide it again; importing again restores it.) Search Console is read-only.

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, plus webmasters.readonly (Search Console). Either is enough to connect ("à la carte"): a tool that needs a missing one, or Google Analytics, returns a personal /connect/<google-ads|search-console|analytics> link that adds just that service to the same Google account. 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.

Two MCP SDKs, on purpose: /mcp is served by SDK v2 (@modelcontextprotocol/server + /node), which answers both 2026-07-28 clients (server/discover) and 2025-era ones (initialize, kept on a JSON-response transport). The authorization server (mcpAuthRouter, requireBearerAuth) stays on @modelcontextprotocol/sdk 1.x, because v2 ships only the resource-server half. Don't drop 1.x until v2 (or a companion package) has /authorize, /token and /register.

Run it

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_KEY32 bytes, hex or base64. Losing it only forces users to reconnect; leaking it exposes stored Google tokens
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRETOAuth 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_TOKENsent when set
BASE_URLpublic origin, the OAuth issuer (default https://camberstack.io)
DATA_DIRSQLite location (default ./data)
FREE_ACCOUNTS / PRO_ACCOUNTS / PRO_EMAILSGoogle Ads accounts each plan covers at a time, counted as distinct accounts used in the last 30 days plus one switch per 30 days, manager and demo accounts excluded (defaults 1 / 10) / emails treated as Pro
STRIPE_SECRET_KEY / STRIPE_PRO_PRICE_IDPro subscription via Stripe Checkout; unset = no upgrade links

The hosted HTTP server is npm run start:http (the Docker image runs node dist/server.js). npm start is a stdio mode that needs no env, database or Google login: it lists every tool for directory inspectors (Glama runs mcp-proxy -- pnpm run start), and any tool call answers with the hosted URL to connect to. pnpm-workspace.yaml turns off native builds for pnpm installs, so stdio mode installs anywhere; production installs with npm.

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

How do I install Camberstack: Google Ads?
Copy the http config for Cursor, Claude Desktop, Claude Code, or VS Code on this page. It uses the publisher's install, not a PlugMCP proxy.
Does Camberstack: Google Ads need an API key?
No required environment variable is listed on this record.
What transport does Camberstack: Google Ads use?
Camberstack: Google Ads is reached over HTTP.
When was Camberstack: Google Ads last checked?
Last checked 2026-10-16. Hosted Google Ads MCP: build Search, PMax, Display and YouTube campaigns, approve each change, undo.

No tool list yet. Remote servers get one after the first health check.

plugmcp

Plug any tool into any agent. MCP servers for people who do not write servers. Gateway for volume, n8n for apps.

  • github.com/TODO
  • x.com/TODO
  • linkedin.com/company/TODO

PlugMCP, 2026

Product
  • Browse
  • Install
  • Host your own
  • Pricing
  • Voice mode
  • Browser
Directory
  • All MCP servers
  • MCP Apps
  • Tools
  • Agent skills
  • Categories
  • New
  • Voice
  • Submit a server
Developers
  • Docs
  • Blog
  • Club
  • Work with us
  • What is MCP
  • What is WebMCP
  • Status
Company
  • About
  • Contact
  • Terms
  • Privacy
  • DPA