Model Context Protocol · Google Ads API v24+
An MCP server that connects Claude to your Google Ads accounts — reads, reporting, keyword research and Search-campaign creation, with an embedded OAuth login. Status: LIVE.
B2Tech AdConnect is a Model Context Protocol server that gives Claude real access to your accounts — not a chatbot that guesses, but typed calls against the Google Ads REST API (v24+).
List campaigns, pull spend and conversion reports, research keywords and build Search campaigns — all by chatting with Claude. The Google login is OAuth2, embedded in the flow.
Domain, application and infrastructure kept apart; a pure async httpx client, no gRPC. A single multi-tenant core on Vercel, with MCP as a thin presentation layer.
Multi-tenant deploy at gamcp.b2tech.io — tokens in Supabase, cache in Upstash, and we are the OAuth Authorization Server. You just OAuth-log in; nothing to install.
37 tools grouped by function — from auth to GAQL reporting, from keyword research to the Search funnel that's born paused. Everything below is already implemented and live.
confirm).confirm).confirm).confirm).confirm).There's also an MCP prompt analyze_account_performance for guided reporting.
Writing to Google Ads touches real money. So every write goes through explicit guardrails — you're always in control of what becomes spend.
Creations born PAUSED
Nothing spends until you explicitly activate it. Every campaign, ad group and ad is created paused.
Status needs confirm=true
Changing status is destructive. Without confirm, the tool returns a preview and makes no HTTP call.
preview=true = dry-run
Runs a server-side validateOnly: validates the operation without persisting anything. Check before running for real.
No auto-rollback
The funnel is non-atomic: on a mid-way failure it returns the resources already created (PAUSED) and where it stopped — it deletes nothing.
Money in units
Budgets are given in currency units (20.0 = $20/day) and converted to micros in the use case. No cents confusion.
Scope whitelist
The credential only accesses what you authorized in the OAuth consent — and google_token_status shows exactly which scopes are active.
Hosted, multi-tenant, zero setup: add the connector, log in with your Google account and Claude is operating your campaigns. Then just ask.
Add the MCP server as a connector in Claude and log in. Nothing to install; we handle the developer token and the OAuth tokens.
https://gamcp.b2tech.io/api/mcp. In Claude Code, use the command below.# Claude Code claude mcp add --transport http \ google-ads https://gamcp.b2tech.io/api/mcp
google_login tool — it opens browser consent and stores your refresh token securely.google_token_status to validate the credential and list_accessible_customers to see your accounts. Ready to operate.Real requests the server handles end to end — writes are always born PAUSED, activation is yours.
# you, in the chat: "Create a Search campaign for my clinic with a $50/day budget" # → born PAUSED; you activate when ready
"Generate keyword ideas for 'dental
implant' and add the 20 best ones"
# → generate_keyword_ideas + add_keywords"How did my campaigns do in the last
30 days? Where am I burning budget?"
# → get_insights + get_search_termsStill have a question? Write to bruno@b2tech.io.
confirm=true; without confirm, the tool returns a preview and makes no HTTP call.gamcp.b2tech.io) already has the platform token configured — you just OAuth-log in your account and start operating.list_accessible_customers lists them all, and the manager/login-customer is auto-resolved per credential at google_login.validateOnly): it validates the operation without persisting anything. Handy to check a write before running it for real.gamcp.b2tech.io) and the source code is private — there is no version to run on your own machine. You just add the connector in Claude and log in with your Google account; we handle the rest.Reads, reporting, keyword research and Search campaigns — with embedded OAuth and writes that are born paused. Student-exclusive and live.
37 tools · embedded OAuth2 · multi-tenant on Vercel