jarrah
Google AdsOpen SourceFree

The Google Ads MCP Server
for AI Assistants

Stop copy-pasting from Google Ads into ChatGPT. Jarrah Google Ads MCP Server is a free, open-source tool that connects your Google Ads account directly to Claude, Cursor, or any MCP-compatible AI assistant.

Ask Claude to pull last week's campaign metrics, discover keywords via Keyword Planner, audit Quality Scores, or switch between client accounts — all in conversation. Read-only: your campaigns are never modified.

Capabilities

8 tools, one connection

Every tool call is read-only. Your account data flows directly from Google to your AI session — nothing is stored server-side.

Campaign Metrics

get_campaign_metrics

Pull spend, impressions, clicks, CTR, CPC, and impression share by date range, device, and channel type.

Keyword Quality Scores

get_quality_scores

Retrieve Quality Scores (1–10) for every keyword with component breakdowns: expected CTR, ad relevance, and landing page experience.

Keyword Planner — Ideas

generate_keyword_ideas

Generate keyword ideas from seed keywords or a landing page URL. Returns search volume, competition level, and bid estimates.

Keyword Historical Metrics

get_keyword_historical_metrics

Get monthly search volume trends and competition data for any list of keywords — without opening the Google Ads UI.

Ad Creative

get_ad_creative

Retrieve RSA headlines, descriptions, and final URLs for all active ads — ready for creative analysis or competitive review.

Conversion Tracking

get_conversion_actions

List all enabled conversion actions with 90-day volume. Spot missing or broken conversion tracking instantly.

Multi-Account Navigation

list_accounts / switch_account

List all accounts accessible under your MCC, then switch context between client accounts in a single session.

Custom GAQL Queries

run_gaql

Run any Google Ads Query Language query directly. Full access to the reporting API for custom metrics not covered by the named tools.

Use Cases

What PPC teams use it for

1

Agency reporting

Ask Claude to pull last week's campaign performance for every client account and summarise in a single message. No CSV exports, no dashboard logins.

2

Keyword research

Feed competitor URLs or seed terms to Keyword Planner and have Claude identify gaps, cluster by intent, and estimate monthly volume — all in conversation.

3

Account audits

Ask Claude to flag every keyword with a Quality Score under 5, list campaigns with no conversion actions, or identify ads missing RSA headline pinning.

4

Multi-account management

Switch between client accounts in a single Claude session. Pull data, compare performance across accounts, and draft client-ready summaries without touching the UI.

Setup

Connect in three steps

Works with Claude Desktop, Claude Code (CLI), and Cursor. Any client that supports remote Streamable HTTP MCP servers.

1

Authorise with Google

Visit the authorisation URL. You'll be redirected to Google's consent screen to grant read-only access to your Google Ads account.

jarrah-gads-mcp.fly.dev/authorize
2

Copy your MCP token

After authorising, you'll receive a bearer token. Copy it — you'll add it to your MCP client config in the next step. Tokens expire after 1 hour.

3

Add to your MCP client

Add the server URL and your token to your Claude Desktop, Claude Code, or Cursor config. See the config block below.

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "google-ads": {
      "url": "https://jarrah-gads-mcp.fly.dev/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Claude Code (CLI) — .claude/settings.json

{
  "mcpServers": {
    "google-ads": {
      "type": "http",
      "url": "https://jarrah-gads-mcp.fly.dev/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Privacy & Security

Read-only. Your data, your credentials.

The server holds the Google Ads read scope only — it cannot create, modify, or delete anything in your account. OAuth 2.0 means your Google password never touches our server.

  • Read-only access — No create, modify, or delete permissions. Ever.
  • Individual OAuth — Each user authenticates with their own Google account. Credentials are never shared.
  • No data retention — Campaign metrics, keyword lists, and ad creative are never stored server-side. They flow directly to your AI session.
  • Encrypted token storage — Only your OAuth refresh token is stored — encrypted at rest using Fernet symmetric encryption.
  • 1-hour token expiry — MCP bearer tokens expire after 60 minutes, limiting the blast radius of any credential exposure.

Technical stack

Language
Python 3.12
Framework
FastMCP + Uvicorn / Starlette
Deployment
Fly.io — Sydney region
Google Ads client
google-ads Python SDK
Auth
OAuth 2.0 Authorization Code Flow
Storage
SQLite on encrypted persistent volume (tokens only)
Licence
MIT — self-host from GitHub

FAQ

Common questions

Which AI assistants does this work with?
Any MCP-compatible client: Claude Desktop, Claude Code (CLI), Cursor, and any other tool that supports remote Streamable HTTP MCP servers. Configuration is a single JSON block.
Will this make any changes to my Google Ads account?
No. The server is strictly read-only. It only holds the Google Ads read scope (https://www.googleapis.com/auth/adwords) and has no ability to create, modify, or delete campaigns, keywords, bids, or any account data.
Who can see my Google Ads data?
Only you. Each user authenticates individually with their own Google account. Your credentials are never shared across users. Campaign and keyword data is never stored server-side — it flows directly from the Google Ads API to your AI session.
What data does the server store?
Only your encrypted Google OAuth refresh token, stored in an encrypted SQLite volume for session continuity. MCP access tokens expire after 1 hour. No campaign metrics, keyword lists, or ad creative are stored at any point.
Can I use this with an MCC (manager) account?
Yes. Use list_accounts to list all accounts under your MCC, then switch_account to move between client accounts within the same session.
Is this free to use?
Yes. The MCP server is free and open-source (MIT licence). The server is hosted by Jarrah at no cost for the foreseeable future. You can also self-host the Python package from GitHub.
Can I run custom queries beyond the named tools?
Yes. The run_gaql tool lets you execute any Google Ads Query Language (GAQL) query. This gives you access to any metric or dimension the Google Ads reporting API exposes, not just the named shortcuts.
Does this support Microsoft Ads (Bing Ads)?
Not yet. The current version connects to Google Ads only. Microsoft Ads support is planned for a future release.
Can ChatGPT access my Google Ads data?
Not natively — ChatGPT has no direct Google Ads integration. This MCP server is designed for MCP-compatible clients: Claude Desktop, Claude Code, and Cursor. It is the equivalent capability for the Claude ecosystem.
What is the Model Context Protocol (MCP)?
MCP is an open protocol by Anthropic that lets AI assistants connect to external data sources and tools. Instead of copy-pasting data into a chat window, an MCP server exposes live data as callable functions. The AI assistant decides when to call them based on your questions.

Work with Jarrah

Need a managed Google Ads program?

The MCP server is built from the work we do every day. If you need a full-service performance marketing program — strategy, creative, bidding, attribution — that's what we do.

See our paid media work →