Connect Google Ads to Claude Code with one command
Claude Code lives in your terminal, so there is no connector settings screen to click through. One line — claude mcp add --transport http opus-growth https://mcp.opus-growth.com — registers Opus Growth as a remote MCP server, a single OAuth approval links your Google Ads account, and the agent that already reads your codebase gains 69 Google Ads tools, with Microsoft Advertising, TikTok and LinkedIn on the same connection.
What you need before you start: Claude Code installed and signed in on a plan that includes it (Claude Pro, Max, Team or Enterprise) or Anthropic API billing, a reasonably current version — remote HTTP MCP servers are a newer capability — and a Google account that already has access to the ad account you want to manage. That is the whole list. No Google Ads developer token to apply for, no API key to paste, nothing to self-host, and the 7-day trial starts the moment you authorize, without a card.
https://mcp.opus-growth.comWhat you can do
One command instead of a settings screen
The entire install is one line in your terminal: claude mcp add --transport http opus-growth https://mcp.opus-growth.com. The default scope keeps the server in the project you are standing in; adding -s user makes it available in every project on your machine; -s project writes a shared .mcp.json file your teammates pick up with a git pull. Nothing to self-host, no package to install, no local proxy process to babysit.
Your ad account and your repository in the same context
This is the thing only a coding agent can do. Claude Code can read the conversion events your analytics module actually fires and compare them with the conversion actions configured in Google Ads, check the final URLs on live ads against the routes that exist in the app, or reconcile campaign tracking templates with the UTM conventions in your source. A browser assistant cannot see the repo; a reporting connector cannot see the code.
Recurring account work becomes a cron line
Headless mode — claude -p — turns weekly ad ops into a scheduled job: dump last week's spend into a dated markdown file, diff it against the previous run, drop the summary into a pull request. One detail worth knowing before you write that cron entry: Claude Code does not auto-approve MCP tools in headless mode. You pass the --allowedTools flag and name the Opus Growth tools, or their shared prefix, that the run may call. Allowlist the reporting tools and the job runs unattended; leave the write tools off the list and no scheduled run can touch spend.
Manager-account sweeps, on the Agency plan
Manager (MCC) hierarchies are handled natively through login-customer-id, so on the Agency plan a single request can sweep every client account and come back with one ranked answer: missing conversion tracking, budgets pacing over, campaigns with no active ads. In a terminal that output is a file, a diff or a table you can commit, not a screenshot. Free and Pro are deliberately locked to one ad account, so cross-account sweeps are an Agency capability; single-account audits work on every plan.
No advertising credentials anywhere near your repo
The connector is hosted and each developer authorizes their own Google account through OAuth, so the only thing that ever lands in .mcp.json is a public URL. There is no Google Ads developer token to apply for, no client secret, and no service-account JSON file to gitignore and hope nobody commits by accident.
Guardrails sized for an agent that already has shell access
Claude Code can edit files and run commands, which makes unguarded spend authority a genuinely bad idea. So every write tool answers first with a dry run and nothing else: which account, which entity, the current value, the proposed value — then it stops. The change reaches the ad platform only on a second, confirmed call. A single change can never raise a budget by more than 50 percent, and every applied action is written to an audit log you can read back later. That gate lives in the connector rather than the client, so it holds identically in a terminal, a browser or an editor.
Set it up in 60 seconds
- 1
Add the server with one command
In your terminal, run: claude mcp add --transport http opus-growth https://mcp.opus-growth.com — the default scope registers it for the current project. Add -s user to make it available across every project on your machine, or -s project to create a .mcp.json file your team can commit to the repository.
- 2
Authenticate from inside the session
Start Claude Code, type /mcp, select opus-growth and choose Authenticate. Claude Code opens your browser once for the hosted OAuth flow: sign in with Google, approve access, and choose which ad accounts the connector may work with. Working over SSH on a machine with no browser? Copy the printed authorization URL into a browser on your laptop — the callback completes exactly the same way.
- 3
Verify before you trust it
Run claude mcp list and confirm that opus-growth reports as connected. Then, in the session, ask it to list your ad accounts. If the account names come back, the 69 Google Ads tools are live for this session, along with Microsoft Advertising, TikTok Ads and LinkedIn Ads on the same authorization.
- 4
Run a real job and save the output
Start with something you would otherwise do by hand: audit the last 30 days and write the findings to a file in the repo. Reads execute immediately. The moment the agent proposes a change — a budget cut, a negative keyword list, a paused ad group — it prints the dry run and waits for your confirmation in the terminal.
Ask in plain English
›List my Google Ads accounts, then write a 30-day campaign performance table to reports/google-ads.md with spend, conversions and CPA.
›Compare the conversion actions configured in my Google Ads account with the conversion events this repo actually fires, and tell me which ones never trigger.
›Check the final URLs on every enabled search ad against the routes in this app and flag any that would 404 or redirect.
›Pull the last 14 days of search terms, draft a phrase-match negative keyword list, and show me the dry run before applying anything.
›Sweep the client accounts under my manager account for missing conversion tracking and campaigns with no active ads, and write the results to a CSV file.
›Our UTM conventions are defined in src/lib/analytics.ts — audit the tracking templates on my live campaigns against them and list every mismatch.
›Write a cron entry that runs claude -p every Monday, allowlisting only the Opus Growth reporting tools, to dump last week's Google and Microsoft Ads spend into a dated markdown file.
How they compare
| Opus Growth | claude.ai (browser) | |
|---|---|---|
| Where it runs | Your terminal, inside the project you are already working in. No browser tab, no separate app, no context switch away from the code. | A browser tab or Claude Desktop. Ideal for planning, exploration and sharing a conversation with a colleague. |
| How the connector is added | One CLI command: claude mcp add --transport http opus-growth https://mcp.opus-growth.com | Settings, then Connectors, then Add custom connector, and paste the same URL. Custom connectors are available on Pro, Max, Team and Enterprise. |
| Authentication | Type /mcp in the session, choose Authenticate, approve once in a browser. On a headless or SSH machine, open the printed URL on your laptop instead. | Handled in the browser you are already signed in to: a single approval screen, then pick your ad accounts. |
| Sharing with a team | The -s project flag writes a .mcp.json file you can commit; everyone who clones the repo gets the server, and each person authorizes their own Google account. | Each person adds the connector in their own settings. Nothing to commit, but nothing shared either. |
| Automation | claude -p makes reporting scriptable once you allowlist the read tools with --allowedTools: a weekly audit into a dated file, a spend diff inside a pull request. | Interactive by nature. You are present for every step, which is fine for analysis and tedious for repetition. |
| What it can see besides the ad account | Your repository, shell, tests and logs, so it can cross-check tracking code, routes and UTM conventions against the live campaign setup. | Only what you type, paste or upload into the conversation. |
| Write safety | Dry run, explicit confirmation, audit log — the same gate described above, enforced by the connector. | Identical, because the same hosted server enforces it. |
| Best fit | Developers and technical PPC teams who want repeatable, scriptable account work next to the code that generates the conversions. | Marketers doing exploratory analysis, weekly reviews, or working from a phone. |
Frequently asked questions
Two steps. First, in your terminal run: claude mcp add --transport http opus-growth https://mcp.opus-growth.com. Second, start Claude Code, type /mcp, select opus-growth and choose Authenticate — a browser window opens for the hosted OAuth flow where you sign in with Google and pick the ad accounts you want available. From then on the session has 69 Google Ads tools, with no API key, no developer token and no server of your own to run.
The authorization URL is printed, so you open it wherever you do have a browser — usually your laptop. Sign in with Google there, approve access, and the hosted callback completes the exchange; the terminal session picks up the connected state without a browser ever running on the remote box. This is the normal path for anyone using Claude Code over SSH or inside a dev container, and it is exactly where a hosted remote MCP server beats a self-hosted stdio one that expects local credential files.
Local scope, the default, keeps the server in the project you are currently in. User scope, with -s user, registers it once for every project on your machine; that is the usual choice for a freelancer or a solo in-house marketer. Project scope, with -s project, writes a .mcp.json file you commit, so anyone who clones the repo gets the server definition automatically. That file contains nothing but a public URL: each teammate still authenticates with their own Google account and sees only the ad accounts they were granted, so committing it leaks nothing.
You run the add command and the one-time Authenticate step on each machine or container image, because Claude Code keeps the connector's session token in its own credential store on that machine — never in your project files. What lands in the repository is a URL and nothing else. Your Google credentials are in neither place: Google's tokens stay encrypted on our servers, so a lost laptop exposes no ad account, and revoking access from your Google account page cuts every client at once. The Opus Growth account, plan and connected ad accounts follow you to the new machine untouched.
For reporting, yes — with one flag. Headless runs started with claude -p do not auto-approve MCP tools, so you use --allowedTools to name the Opus Growth tools that run may call. Allowlist the read tools (performance reports, search terms, account audits) and a weekly report becomes a cron job that writes a file and exits. Be deliberate about the write tools: the dry-run preview is enforced by a confirmation parameter on the call, so an agent you have explicitly allowlisted for write tools can also send the confirmed call. Keep scheduled jobs read-only and let a human approve changes in an interactive session.
On the Agency plan, yes: manager (MCC) hierarchies work through login-customer-id, so one request can walk every client account you authorized and return a single ranked list. On Free and Pro the connector is locked to one ad account — the first one you use — so a sweep on those plans covers that account only, and multi-account work is what the Agency plan is for. The terminal advantage is unchanged either way: the result arrives as a file or a CSV you can diff and commit, not a dashboard you screenshot.
Actions are metered per tool call, weighted by cost. Building a search campaign is 8, adding keywords is 5, an account audit or a keyword planner run is 3, a performance or search-terms report is 2, listing accounts is 1, and connecting an account or checking your balance is 0. So 50 actions is roughly six full campaign builds, or about sixteen audits, or twenty-five reports — enough to prove the workflow on a real account during the 7-day trial, not a month of production ad ops. After that, Pro is $49.99/month and Agency is $99.99/month, billed in USD, cancel anytime; reading reports in the customer panel stays free.
Yes. Opus Growth is one hosted remote MCP server, so the authorization you complete in Claude Code is the same account and the same connected ad accounts you see in claude.ai, Cursor, VS Code, Windsurf, Codex or Gemini CLI — only the way you add the connector differs. That one authorization covers Google Ads (69 tools), Microsoft Advertising (30), TikTok Ads (25) and LinkedIn Ads (18), plus Google Tag Manager, GA4, Search Console and YouTube for measurement context, out of a 221-tool catalog. Meta Ads and Google Business Profile are built but still switched off, waiting on platform review and Google quota approval respectively.
No. Google Ad Manager is the publisher-side ad server, with orders, line items and ad units for selling inventory on your own site, and we do not support it. Opus Growth connects Google Ads, the advertiser-side platform where you buy Search, Performance Max, Demand Gen and App campaigns, including manager (MCC) accounts. If you searched for Ad Manager but meant the account where you spend on keywords, you are in the right place.
Explore more
One command, one sign-in, and the agent that ships your code can audit the account spending money on it. Run claude mcp add --transport http opus-growth https://mcp.opus-growth.com and start the 7-day free trial: 50 actions, full write access, no card.