Updated October 2026: ChatGPT, Claude and Meta AI now connect by signing in, agents can turn a draft into a campaign that publishes, import and pause campaigns, and publish within a daily limit you set once you confirm the budget.
Can Claude actually manage a Google Ads account?
Yes. With the VibeAds MCP server, Claude (or ChatGPT, Meta AI, Cursor, Cline, or any MCP-compatible agent) can read your campaign performance, find wasted spend, draft a campaign (keywords, ad copy, 3+ ad groups), bring in the campaigns you already run, apply the optimizer's recommendations, pause a campaign, and publish one. The one thing it can never do is spend your money without you: publishing waits for you to confirm the daily budget in the chat, within a limit you set, or to approve a link in your browser.
That last sentence is the whole design. Every "AI agent runs my ads" story ends one of two ways: the agent is read-only and useless, or it has full write access and one bad prompt burns a week of budget. The VibeAds MCP server takes a third path: agents draft and optimize freely, humans approve anything that moves money.
What is the VibeAds MCP server?
Model Context Protocol (MCP) is the open standard AI assistants use to call outside tools; Claude, ChatGPT and Meta AI all speak it. VibeAds runs an MCP server at https://getvibeads.com/api/mcp with 31 Google Ads tools, and the same tools come as a small open-source npm package (npx -y @vibeads/mcp) for clients that run tools on your computer. Both forward every call to VibeAds' cloud gateway, where plan checks, credits and every safety gate run.
Three things it deliberately does NOT do:
- It never touches Google credentials. You connect Google Ads to VibeAds once, through Google's own sign-in. Tokens stay server-side; the agent and your laptop never see them.
- It holds no database keys. An assistant holds a VibeAds sign-in you can disconnect, or a revocable
vba_mcp_API key, SHA-256 hashed at rest on our side. - It cannot approve spend by itself. An approval link only works in your own signed-in browser, and within your limit the publish waits for your OK in the chat. More on that below.
How do I set it up? (2 minutes)
Prerequisites: a VibeAds account (free to create, though drafting and publishing need Pro at $20/mo or Max) and, to publish, a connected Google Ads account. If it isn't connected yet, the assistant gives you a link when it needs one.
ChatGPT, Claude or Meta AI: sign in. Add https://getvibeads.com/api/mcp as a custom connector or app. The assistant opens VibeAds; sign in and press Allow access. Step-by-step instructions for each one are in Connect ChatGPT, Claude or Meta AI.
Claude Code, Cursor, Cline and other clients: an API key. Go to getvibeads.com/app/settings/mcp, click Generate key, and copy it (shown once, prefix vba_mcp_). Then, in Claude Desktop, Cursor, or Cline, add this to the mcpServers block of the client's config:
{
"mcpServers": {
"vibeads": {
"command": "npx",
"args": ["-y", "@vibeads/mcp"],
"env": { "VIBEADS_API_KEY": "vba_mcp_YOUR_KEY_HERE" }
}
}
}
Claude Code takes one terminal command:
claude mcp add vibeads -e VIBEADS_API_KEY=vba_mcp_YOUR_KEY_HERE -- npx -y @vibeads/mcp
Or point it at the hosted server, with the key in a header and nothing to install:
claude mcp add --transport http vibeads https://getvibeads.com/api/mcp --header "x-vibeads-api-key: vba_mcp_YOUR_KEY_HERE"
Then ask: "Show me my Google Ads campaigns in VibeAds." If you prefer guided npm setup, npx -y @vibeads/mcp --init prints ready-to-paste configs for every client.
What tools does the agent get?
Thirty-one tools. Reading Google Ads works on every plan; keyword research and the rest need Pro or Max.
| Tool | Plan | What it does |
|---|---|---|
list_campaigns | Any | Your campaigns in VibeAds, with status and daily budget |
get_campaign_details | Any | 7-day metrics, ad groups, landing pages, issues |
get_account_health_score | Any | 0–100 score, A–F grade, 6 dimensions |
get_search_term_analysis | Any | Wasted spend vs winning search terms |
get_diagnostics | Any | Active issues by severity with recommended fixes |
find_campaigns_to_import | Any | The campaigns in your Google Ads account, and which are already in VibeAds |
get_performance_report | Any | Any period up to 90 days, live from Google Ads, by day, device, hour, ad group, keyword or location |
audit_google_ads_account | Any | An audit of your whole Google Ads account, imported campaigns or not: a health score, the issues and what fixes each, and the search terms spending without conversions |
research_keywords | Pro, Max | Keyword ideas with Google's monthly searches, competition and top-of-page bids (2 credits) |
list_google_ads_accounts | Any | Every connected Google Ads account, and the manager account each client sits under |
list_google_recommendations | Any | Google's own recommendations for an account, and the tool that makes each change from the chat |
generate_strategy | Pro, Max | Drafts keywords, ad copy, 3+ ad groups (13 credits; publishes nothing) |
get_strategy_status | Pro, Max | Follows the draft until it is ready |
apply_strategy | Pro, Max | Turns the draft into a draft campaign |
list_recommendations | Pro, Max | The optimizer's pending recommendations, each with the tool that carries it out |
preview_ad_group | Pro, Max | Shows a new ad group before anything is added |
add_ad_group | Pro, Max | Adds the previewed ad group |
request_publish | Pro, Max | Publishes a draft, with your confirmation or an approval link |
check_approval | Pro, Max | Reports the publish and whether the campaign is live |
import_campaigns | Pro, Max | Brings up to 3 campaigns from Google Ads into VibeAds |
pause_campaign | Pro, Max | Pauses a live campaign |
resume_campaign | Pro, Max | Starts a paused campaign again, under the same rules as publishing |
list_keywords | Any | One campaign's ad groups, keywords and negative keywords, live from Google Ads |
add_negative_keywords | Pro, Max | Adds up to 20 negative keywords to a campaign or one ad group |
add_keywords | Pro, Max | Adds up to 20 keywords to one ad group |
set_keyword_status | Pro, Max | Pauses keywords, or turns paused ones back on |
set_max_cpc | Pro, Max | Sets a max CPC on a Manual CPC campaign; a big raise gets an approval link |
set_daily_budget | Pro, Max | Sets a daily budget; a raise over 20% gets an approval link |
dismiss_google_recommendation | Pro, Max | Removes one of Google's recommendations from its list |
How does publishing stay under your control?
This is the part worth copying if you're building agent tools of your own. There are two paths.
An assistant you signed in to, within your limit. You choose how much a day assistants may publish ($100 unless you change it, or off) in Settings, Connected apps.
- The agent calls
request_publishwith a campaign ID. If you have more than one Google Ads account, it first asks which one the campaign goes to. - VibeAds answers with the campaign's daily budget and publishes nothing.
- The agent tells you the daily budget. Only when you confirm it does the publish start, and VibeAds emails you when the campaign is live.
Everything else: an approval link. Every publish requested with an API key, a campaign over your limit, and a third assistant publish within 24 hours go this way:
- VibeAds freezes a summary: campaign name, daily budget in dollars, ad group list, target Google Ads account. It then mints a single-use approval link that expires in 24 hours.
- The agent shows you the link and waits.
- You open it, log in, see exactly what will go live and what it costs per day, and click Approve & publish (or Reject).
- The agent's
check_approvalreports the publish, and the campaign goes live in your own Google Ads account.
Why can't the agent just click the link? Because the link only identifies the pending action. Approving it requires the owning user's logged-in browser session on top of it, and VibeAds refuses an API key or a connected app's token at that endpoint. The agent that requested the publish can display the link, but it physically cannot approve it. Guardrails on everything else: calls are rate-limited to 60 an hour, every call is logged, and a recommendation carried out from the chat, with the edit tool for its kind of change, runs inside the same safety system as the VibeAds dashboard. That means blast-radius caps, per-campaign daily limits, and automatic rollback if results get worse.
What does a real session look like?
A condensed transcript from ChatGPT, signed in to VibeAds:
You: Draft a Google Ads campaign for my HVAC company in Dallas with a $1,500 monthly budget, then publish it.
ChatGPT: calls
generate_strategy, thenapply_strategy… Your draft "Dallas HVAC" has 3 ad groups and 48 keywords. Nothing is live yet. callsrequest_publish… It will spend up to $50 a day, billed to your own Google Ads account. Shall I publish it?You: Yes.
ChatGPT: Publishing. calls
check_approval… The campaign is live in Google Ads account 123-456-7890; you can pause it any time.
Total human effort: two sentences.
With an API key, the same request ends with an approval link instead: you click it, log in, tap Approve & publish, and the agent picks up from there.
How does this compare to other Google Ads MCP servers?
| VibeAds MCP | Google Ads official MCP | Generic analytics MCPs | |
|---|---|---|---|
| Reads performance | ✅ | ✅ (raw GAQL) | ✅ |
| Prebuilt diagnostics (35+ rules) | ✅ | ❌ write your own queries | ❌ |
| Drafts full campaigns (keywords + ad copy + ad groups) | ✅ | ❌ | ❌ |
| Executes optimizations with guardrails + auto-rollback | ✅ | ❌ read-only | ❌ |
| Publishes campaigns | ✅ with your confirmation | ❌ read-only | ❌ |
| Credentials on your machine | none (sign in) or 1 revocable API key | Google OAuth client or application default credentials | varies |
| Setup | 2 min, no Google Cloud project | Google Cloud project with Google Ads API access | varies |
The official server is a power tool for PPC engineers who write GAQL. The VibeAds server is for business owners and their agents: the safety logic, campaign knowledge (32 local-service categories), and approval flow are built in.
What does it cost?
The MCP server itself is free and open source. Read tools work on any VibeAds plan. Write tools require Pro ($20/mo) or Max ($149/mo); strategy generation costs the same 13 credits it costs in the dashboard. There's no separate API pricing. And the campaign itself publishes to your Google Ads account, so ad spend goes straight to Google, never through us.
FAQ
Is it safe to give an AI agent access? A signed-in assistant or an API key can read data, draft campaigns, and apply guardrailed optimizations. Neither can see Google credentials or exceed 60 calls an hour, and an API key can never publish or approve spend. Disconnect an assistant in Settings, Connected apps, or revoke a key in Settings, MCP Server Keys, and it stops within seconds.
Which models/clients work? Anything that speaks MCP. ChatGPT, Claude and Meta AI connect by signing in; Claude Code, Cursor, Cline, Windsurf, and more use an API key. The tools are model-agnostic.
Can I use it for multiple Google Ads accounts? Yes. One connection reaches every Google Ads account connected to your VibeAds account (Max supports up to 10), and the agent asks which one a new campaign goes to. With API keys, create one per client or machine so you can revoke selectively.
Does the agent need my Google login? Never. Google Ads connects to VibeAds once through Google's sign-in; the agent only holds a VibeAds sign-in or key.
Where do I start? Create a free VibeAds account, then connect ChatGPT, Claude or Meta AI, or generate a key at Settings, MCP Server Keys for other clients. Full reference: docs/integrations/mcp-server.