Hosted Google Ads + Search Console MCP server: build Search, Performance Max, Display and YouTube campaigns,…
Camberstack: a Google Ads MCP server
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
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.**
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
| 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 |
| 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 |
| 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 |
| 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 |
| billing | no | plan, Google Ads accounts in use (last 30 days) vs. the plan's limit, and a personal upgrade or manage-billing link |