npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@unboundai/tb-gads-mcp

v0.1.3

Published

Google Ads MCP server — exposes Google Ads API as Model Context Protocol tools for Claude and other MCP clients

Readme

tb-gads-mcp

Google Ads MCP server — exposes Google Ads API capabilities as Model Context Protocol tools for Claude, Gemini CLI, and other MCP-compatible AI clients.

Combines the rich feature set of google-marketing-solutions/google_ads_mcp with the official structure of googleads/google-ads-mcp, rebuilt as a TypeScript npm package.

Tools

| Tool | Description | |------|-------------| | list_accessible_customers | Lists Google Ads customer IDs accessible by the authenticated user | | execute_gaql | Executes a raw GAQL query and returns results | | search | Structured search — builds GAQL from fields, resource, conditions, orderings, limit; includes full field reference in tool description | | get_gaql_doc | Returns the GAQL language reference guide (Markdown) | | get_reporting_view_doc | Returns field listing for a specific resource, or overview of all resources | | get_reporting_fields_doc | Returns selectable/filterable/sortable metadata for specific fields |

Resources (MCP)

| URI | Description | |-----|-------------| | gaql://guide | GAQL language reference (Markdown) | | gaql://views | Overview of all Google Ads API reporting resources |

Setup

1. Get a developer token

Get your Google Ads API developer token from Google Ads Manager Accounts.

2. Configure authentication

Two auth methods are supported (pick one):

Option A — Service account / Application Default Credentials (recommended)

This matches the auth approach of the official googleads/google-ads-mcp.

  1. Create a service account in Google Cloud Console
  2. Grant it access to your Google Ads account(s) as a user with the required role
  3. Download the JSON key file
  4. Set GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json

Or use gcloud auth application-default login for local dev without a key file.

Option B — OAuth2 user credentials

  1. Create an OAuth2 client in Google Cloud Console with scope https://www.googleapis.com/auth/adwords
  2. Exchange for a refresh token via Google's OAuth2 Playground
  3. Set GOOGLE_ADS_CLIENT_ID, GOOGLE_ADS_CLIENT_SECRET, and GOOGLE_ADS_REFRESH_TOKEN

3. Configure environment

Copy .env.example to .env:

# Service account (Option A)
GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account-key.json
GOOGLE_ADS_DEVELOPER_TOKEN=your_developer_token

# Or OAuth2 (Option B)
# GOOGLE_ADS_CLIENT_ID=your_client_id
# GOOGLE_ADS_CLIENT_SECRET=your_client_secret
# GOOGLE_ADS_REFRESH_TOKEN=your_refresh_token
# GOOGLE_ADS_DEVELOPER_TOKEN=your_developer_token

# Optional
# GOOGLE_ADS_LOGIN_CUSTOMER_ID=1234567890

Usage

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "google-ads": {
      "command": "npx",
      "args": ["-y", "@unboundai/[email protected]"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account-key.json",
        "GOOGLE_ADS_DEVELOPER_TOKEN": "your_developer_token",
        "GOOGLE_ADS_LOGIN_CUSTOMER_ID": "optional_mcc_id"
      }
    }
  }
}

OAuth2 alternative:

{
  "mcpServers": {
    "google-ads": {
      "command": "npx",
      "args": ["-y", "@unboundai/[email protected]"],
      "env": {
        "GOOGLE_ADS_CLIENT_ID": "your_client_id",
        "GOOGLE_ADS_CLIENT_SECRET": "your_client_secret",
        "GOOGLE_ADS_REFRESH_TOKEN": "your_refresh_token",
        "GOOGLE_ADS_DEVELOPER_TOKEN": "your_developer_token"
      }
    }
  }
}

Gemini CLI

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "google-ads": {
      "command": "npx",
      "args": ["-y", "@unboundai/[email protected]"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account-key.json",
        "GOOGLE_ADS_DEVELOPER_TOKEN": "your_developer_token"
      }
    }
  }
}

Direct run

# Install globally
npm install -g @unboundai/tb-gads-mcp
tb-gads-mcp

# Or run without installing
npx @unboundai/[email protected]

Development

# Install dependencies
npm install

# Run in development (ts-node)
npm run dev

# Build
npm run build

# Type-check only
npm run typecheck

Environment Variables

| Variable | Required | Description | |----------|----------|-------------| | GOOGLE_ADS_DEVELOPER_TOKEN | Yes | Google Ads API developer token | | GOOGLE_APPLICATION_CREDENTIALS | One of A or B | Path to service account JSON key file | | GOOGLE_ADS_CLIENT_ID | One of A or B | OAuth2 client ID | | GOOGLE_ADS_CLIENT_SECRET | One of A or B | OAuth2 client secret | | GOOGLE_ADS_REFRESH_TOKEN | One of A or B | OAuth2 refresh token (adwords scope) | | GOOGLE_ADS_LOGIN_CUSTOMER_ID | No | Default MCC manager account ID | | GOOGLE_ADS_API_VERSION | No | API version (default: v23) |

Example queries

Once connected to Claude or another MCP client, you can ask natural language questions:

  • "List all my accessible Google Ads accounts"
  • "Show campaign performance for account 1234567890 over the last 30 days"
  • "What search terms drove the most conversions last month?"
  • "Get the Quality Score for all active keywords in my campaigns"
  • "Show me the GAQL reference for how to filter by date"

License

Apache-2.0