Camberstack: Google Ads
Overview
Description from the maker (original English)
Hosted MCP for Google Ads, Search Console, GA4 and Merchant Center: ask, build, approve changes.
PopNx MCP’s three pillars
These three are never merged into one score: opinions, measurements and popularity are different things.
- User voiceiNo reviews yetReviews open together with accounts in a later step
- Our basic checksi3 of 3 passedChecked from public information; code not scanned yet
- UsageiEarly★ –
What you can do with it
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
- Connection: Runs in the cloud
- Transport: Streamable HTTP
- Category: Marketing & social media
Install
Pick the AI app you use, then copy the settings.
Before you install
- Basic checks: 3 of 3 passed
- Runs on the maker’s server: what you ask it goes through their server.
- The registry lists no key to fill in.
You need
- Runs in the cloudNothing to install; it connects over the internet
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
- Open Settings → Connectors
- Press Add custom connector
- Paste the address below and press Add
- If it asks you to sign in, sign in with the maker
https://camberstack.io/mcpRun this in your terminal
claude mcp add --transport http google-ads https://camberstack.io/mcpOr copy the settings yourself
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"google-ads": {
"url": "https://camberstack.io/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Or copy the settings yourself
Paste into .vscode/mcp.json in your project
{
"servers": {
"google-ads": {
"type": "http",
"url": "https://camberstack.io/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
- Open ChatGPT on the web → Settings → Connectors (Apps)
- Press Create or Add (some plans need Developer mode under Advanced first)
- Paste the address below, give it a name and save
- If it asks you to sign in, sign in with the maker
https://camberstack.io/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
What it can do
The server asks you to sign in before it lists its tools.
Basic checksi
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026
- ✓ Pass
Maker matches the repo
The registry name was verified against the domain camberstack.io (the registry checks domain ownership)
- … Not checked yet
Still maintained
We have not read this repo from GitHub yet
- … Not checked yet
Has a licence
We have not read this repo from GitHub yet
- ✓ Pass
Endpoint responds
Responded in 445 ms (HTTP 401)
- ✓ Pass
Sign-in with OAuth
Declares OAuth sign-in, so your AI app can take you to log in
- … Not checked yet
No hidden instructions in tool descriptions
Not checked yet; we read the tool list when we check the endpoint
Compared with others in Marketing & social mediai
- More stars than 0% of the other 3601 servers in this category
- Published to the registry more recently than 100% of the other 3601 servers in this category
- Basic checks equal to or better than 100% of the other 3601 servers in this category
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
Common questions
Is Camberstack: Google Ads safe?
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
What keys or codes does it need?
The registry does not list a required key, though some servers ask you to sign in on first use.
Does it run on my computer or in the cloud?
It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.
Is it still maintained?
The GitHub repo last changed –, and the latest version (0.29.2) reached the registry today.
Which apps can use it?
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
What can I use instead?
In the same category: MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer
Alternatives
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Google Analytics MCP
GA4 MCP server for AI agents: schema discovery, server-side aggregation, analysis-ready defaults.
BibiGPT YouTube Video Summarizer
AI video summarizer: summarize and transcribe YouTube, Bilibili, TikTok and podcast videos.
README from the maker
Open the README
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Camberstack: a Google Ads MCP server
Connect Google Ads, Search Console, Google Analytics 4 and Merchant Center to Claude, ChatGPT, Cursor or any MCP client with one Google sign-in, and use them together: the searches you pay for that already rank, whether ad clicks convert on the landing page, which disapproved products were earning in Shopping. Your AI reads with read-only tools and can propose changes, from negative keywords to whole Search, Performance Max, Display and YouTube campaigns, GA4 key events and Merchant Center product fixes. Nothing changes until you approve a specific proposal; risky changes and deletions Google can't reverse are flagged first, and the rest can be undone. A demo account lets anyone try every tool first.
Hosted: https://camberstack.io/mcp. Free: every tool and unlimited changes on 1 account, with one switch a month; from November 15, one Google service at a time. Plus $7/mo: all four services on 1 account. Pro $15/mo: up to 5 accounts. Agency $49/mo: up to 25.
Setup guides, with screenshots and troubleshooting: Connect Google Ads to Claude · Connect Google Ads to ChatGPT · every tool · Cursor, VS Code and others
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, plus attention when something needs a look: ads with policy problems and why, Google's open recommendations, primary conversions quiet for 30 days |
keyword_ideas | no | Keyword 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_metrics | no | Keyword Planner numbers for an exact list, with the last 12 months of searches |
run_gaql | no | any read-only GAQL SELECT |
search_console_sites | no | the websites (Search Console properties) the login can read |
search_console_summary | no | site-wide clicks, impressions, CTR and position for a window vs. the window before it |
search_console_performance | no | organic clicks, impressions, CTR and position by query, page, country, device or date; text or RE2 regex filters |
search_console_trend | no | a window vs. the one before it, per query and per page: rising, falling, new, lost, and rising searches losing position |
search_console_opportunities | no | queries on positions 4-20 with projected click gain, top-5 queries with weak CTR, question-shaped queries |
search_console_inspect_urls | no | URL Inspection for up to 20 pages: indexed or why not, last crawl, canonical chosen vs declared, structured-data errors |
search_console_sitemaps | no | submitted sitemaps: last downloaded, URL count, errors and warnings |
send_feedback | no | sends the user's approved message to the maintainer; no account data or conversation |
propose_search_console_changes | no | checks sitemap and property changes against the live property and stores a proposal |
paid_organic_overlap | no | joins 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_properties | no | the Google Analytics 4 properties the login can read; if Analytics isn't granted yet, a personal link that adds it |
analytics_setup | no | a property's web streams (measurement IDs), key events and Google Ads links |
propose_analytics_changes | no | like 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_pages | no | sessions, users, engagement rate, key events and key event rate per landing page, optionally for one channel (e.g. Paid Search) |
analytics_report | no | any GA4 Data API report by dimension and metric names, with a contains filter |
landing_page_speed | no | PageSpeed Insights for up to 5 pages: Core Web Vitals from real Chrome visitors (28 days), a Lighthouse score, and the fixes worth most. Any public URL, no Google service needed |
merchant_accounts | no | the Merchant Center accounts the login can read (sub-accounts included); if Merchant Center isn't granted yet, a personal link that adds it |
merchant_product_issues | no | account issues, product status counts, and each product issue with how many products it hits and examples; or one product's issues in full |
merchant_report | no | any read-only Merchant Center Query Language (MCQL) query, e.g. Shopping clicks per product from product_performance_view |
merchant_ad_spend | no | Merchant Center problems (disapproved, limited, pending) joined with what each product earned in Shopping and Performance Max ads, most value first, and whether it stopped spending in the last 7 days |
propose_merchant_changes | no | like propose_changes, for Merchant Center products: set_product_attributes (price, GTIN, title, …), exclude_products/include_products, clear_product_overrides, and add_product/update_product/delete_product for products in Camberstack's own "Camberstack products" source. Applied and undone with apply_changes/undo_changes |
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, still matching the account; if the account moved, returns an updated proposal to approve instead); records each change's inverse |
undo_changes | no | builds the reversing proposal for an applied one |
switch_account | plan only | spends the plan's one account switch per 30 days on an account, after the user agrees; changes nothing in Google Ads |
billing | no | plan, Google Ads accounts in use (last 30 days) vs. the plan's limit, and a personal upgrade or manage-billing link |
discard_proposal | no | marks an open proposal discarded so it can't be applied |
change_history | no | every proposal, with what was applied, what failed and what was undone |
disconnect | no | revokes 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. Sitemaps and properties change through propose_search_console_changes (submit or delete a sitemap, add or remove a property). Requesting indexing has no API, and verifying a property is done in Search Console.
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.
Merchant Center accounts are their own plan allowance, the same size as Google Ads' (Free 1, Plus 1, Pro 5, Agency 25), counted as mc: in tool_calls with their own switch (switch_account takes mc: ).
The Merchant Center tools need content, which isn't part of connecting: the first call without it returns a personal /connect/merchant-center link that adds it. Before any call works, the Cloud project needs the Merchant API enabled and registered once with a production Merchant Center account the operator administers (POST https://merchantapi.googleapis.com/accounts/v1/accounts/{ID}/developerRegistration:registerGcp); merchants don't register. Unregistered, calls answer 401 "not registered", which the tools report as Camberstack's to fix. Reports work on standalone accounts and sub-accounts, not on an advanced account itself. Account 000000001 is the demo (sample data: two best sellers disapproved for a price mismatch 9 days ago; overrides there fix the issue).
Products Camberstack creates live in its own primary API source ("Camberstack products"); only those can be updated in place or deleted (undo re-creates them from Camberstack's copy). Adding an offer_id another feed already has is refused, since Google would move that product into our source ("offer stealing").
Merchant Center changes never edit the merchant's feed. Each is an override in Camberstack's own supplemental data source ("Camberstack overrides"), created on the first write. Google applies a supplemental source only once it's in a primary source's rules, so the first override on a feed's products also patches that feed's defaultRule to put ours first (every source already there is kept): the summary shows it as a ⚠ line. Feeds made in the Merchant Center UI or by autofeed can't be patched, and the proposal says so. Google can't read overrides back, so merchant_overrides keeps Camberstack's copy per product; undo restores exactly that (removing the input when there was none). The Merchant API has no dry run: re-resolving at apply is the check, as with GA4.
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, and a campaign's EU political advertising declaration (Google refuses every change to an account while any campaign lacks one).
- Delete: keywords, ads, ad groups, campaigns, a campaign's negatives and sitelinks (
delete_*). - Edit and organize: edit a responsive search ad in place (it keeps its id and stats), ad group negatives, shared negative lists, ad schedules, device bids, callouts, snippets, business name, logos and images, AI Max and Google-written text, conversion value, window and attribution, remarketing lists, applying or dismissing recommendations, and review requests for exemptible refusals.
- Measure: create or remove a conversion action, set its counting, import a GA4 key event, scope a campaign to one conversion goal.
- Connect: link or unlink a Merchant Center account (
productLinks:create/:remove; neither dry-runs: create has none and remove's always answers 500, so propose checks the account is reachable and not a test account, which Google won't link).
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, removing a conversi
Only the beginning is shown; read the rest in the repo