Back to Case Studies
AI / Developer Tools
integration

Natural-language access to Google Ads via the Model Context Protocol

A local packaging and setup layer that lets Claude Desktop query live Google Ads data through the official Google Ads MCP server — read-only, credentials local, repeatable to install.

Situation

Google Ads data lives behind a complex API. Developers and operators who need campaign counts, performance or account diagnostics usually face one of three paths: build custom scripts against the Google Ads API (GAQL, OAuth, developer tokens, MCC login customer IDs), click through the Ads UI for one-off answers, or hand incomplete exports to an LLM and hope the numbers are current.

For agencies and product teams that already use AI assistants day to day, that gap is costly: every 'how many active campaigns?' or 'why did leads drop this week?' becomes either manual work or a new one-off integration.

The goal was to give an AI assistant live, read-only access to Google Ads accounts through natural language — without writing a bespoke Ads client for each question — while keeping credentials local and the surface area tightly controlled.

What Changed

I built a local packaging and setup layer around Google's official Google Ads MCP server, wired for Claude Desktop on macOS. The deliverable is not a rewrite of Google's server — it is an operable, repeatable install: credentials, auth, Claude config merge and clear runbooks so a developer can go from Cloud project to a working assistant in a predictable sequence.

Capabilities exposed to the assistant

  • list_accessible_customers — discover which Ads customer IDs the signed-in user can access
  • search (GAQL) — query campaigns, metrics, segments, change history and related resources
  • get_resource_metadata — inspect field shapes before querying to reduce guesswork and failed GAQL
  • API resources for discovery, metrics, segments and release notes so the model understands what the Ads API can report

Access is read-only (readOnlyHint on tools). The assistant can inspect and diagnose; it does not mutate bids, budgets or creatives through this path.

Operational packaging

  • Credential template for project ID, developer token, optional manager account customer ID and credentials path — secrets stay out of version control
  • Authentication script for Application Default Credentials login with the required Ads scopes (adwords + cloud-platform), using a Desktop OAuth client
  • Configuration script that merges the Google Ads MCP server into Claude Desktop's configuration, including optional manager account ID normalisation
  • Local install of the official server via pipx from a vendored copy of the upstream repository
  • Sample prompts so non-specialists know what to ask once the server is live, plus optional integration of Google's account-performance-diagnostics agent skill

Architecture

Claude Desktop connects over MCP (stdio) to a local google-ads-mcp process, which calls the Google Ads API using user Application Default Credentials plus a developer token. Environment variables inject project ID, credentials path and optional manager customer ID, matching how Google documents Ads API calls for MCC hierarchies.

Results

A developer-ready bridge from Claude Desktop to live Google Ads data: official MCP server, local credentials, automated Claude wiring and a clear path from 'set up once' to 'ask in natural language.' For agencies and product teams, it turns Ads API access into an assistant capability instead of a recurring engineering chore.

Why this matters

  • Faster answers without a custom dashboard — engineers and account managers can ask in plain language: accessible customers, active campaign counts, weekly performance for a given customer ID
  • API-grade correctness with assistant-grade UX — queries go through the real Google Ads API and GAQL, not scraped UI or stale CSVs
  • Safe by default — read-only tools limit blast radius while still enabling serious diagnostics
  • Portable pattern — the same MCP block works across Claude Desktop, Cursor, VS Code and other MCP clients; Cloud Run + OAuth proxy remains a documented scale-out path
  • Repeatable onboarding — prerequisites are checklisted and scripts remove the fragile 'copy this JSON by hand' step for Claude config

Example questions the setup unlocks

  • What customers do I have access to?
  • How many active campaigns for customer ID …?
  • Campaign performance this week for customer ID …?
  • Why might lead flow have dropped over the last few days? (with the diagnostics skill guiding GAQL)

Ready for similar results?

Let's discuss how we can help your platform perform.

Request a callback