# io.github.pijusz/mcp-gads (npm · mcp-gads)

Google Ads MCP server — query campaigns, keywords, assets & more via natural language

- Trust score: 60/100 (medium)
- Change this week: +18
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `mcp-gads`: 60/100 (this document), [markdown](https://verifymcp.io/servers/pijusz-mcp-gads/mcp-gads.md), [page](https://verifymcp.io/servers/pijusz-mcp-gads/mcp-gads)

## Channel facts

- Registry: `npm`
- Package: `mcp-gads`
- Version: `0.5.4`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 83/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known medium-severity CVE affects @hono/node-server 1.19.17, reached via @modelcontextprotocol/sdk > @hono/node-server. A fixed version is available.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (117 of 121), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 2 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 71/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 1258 tokens (~54/item across 23 items; 23 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 67/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add pijusz-mcp-gads -- npx -y mcp-gads
```

### Codex

```bash
codex mcp add pijusz-mcp-gads -- npx -y mcp-gads
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "pijusz-mcp-gads": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "mcp-gads"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add pijusz-mcp-gads --command npx --arg -y --arg mcp-gads
```

### Hermes

```yaml
mcp_servers:
  pijusz-mcp-gads:
    command: "npx"
    args: ["-y", "mcp-gads"]
```

### Other

```json
{
  "mcpServers": {
    "pijusz-mcp-gads": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-gads"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 60, +42)

- [security regression] GHSA-frvp-7c67-39w9 affects this package: medium
- [security regression] Known CVEs: unverified → fail
- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional] Licence: MIT

### 2026-08-01 (score 18, −5)

- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Capabilities: pass → unverified

### 2026-07-31 (score 23, −1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 24, −18)

- [security regression] Malware scan: pass → unverified

### 2026-07-27 (score 42)

First indexed and scored.

## MCP tools (23)

### `list_accounts` (~23 tokens)

Lists all accessible Google Ads accounts. Run this first to discover account IDs.

### `get_account_currency` (~34 tokens)

Get the currency code for a Google Ads account. Run this before analyzing cost data.

Input parameters:

- `customer_id` (string)

### `get_account_hierarchy` (~32 tokens)

Get the MCC account tree showing manager-client relationships via customer_client resource.

Input parameters:

- `customer_id` (string)

### `execute_gaql_query` (~51 tokens)

Execute a custom GAQL query and return results as a table. Use this for any ad-hoc Google Ads Query Language query.

Input parameters:

- `customer_id` (string)
- `query` (string, required)

### `run_gaql` (~175 tokens)

Execute any GAQL query with output format options (table, json, csv). The most powerful tool for custom Google Ads data queries.

EXAMPLE QUERIES:
  Campaign metrics:  SELECT campaign.name, metrics.clicks, metrics.impressions, metrics.cost_micros FROM campaign WHERE segments.date DURING LAST_7_DAYS
  Ad group perf:     SELECT ad_group.name, metrics.conversions, metrics.cost_micros, campaign.name FROM ad_group WHERE metrics.clicks > 100
  Keyword analysis:  SELECT keyword.text, metrics.ctr FROM keyword_view ORDER BY metrics.impressions DESC

Note: Cost values are in micros (1,000,000 = 1 unit of currency).

Input parameters:

- `customer_id` (string)
- `format` (string)
- `query` (string, required)

### `get_gaql_help` (~44 tokens)

Get a GAQL (Google Ads Query Language) reference guide with syntax, common resources, date filters, and example queries. Call this before writing custom GAQL queries.

### `list_resources` (~32 tokens)

List valid Google Ads API resources that can be used in GAQL FROM clauses.

Input parameters:

- `customer_id` (string)

### `get_campaign_performance` (~101 tokens)

Get campaign performance metrics for the specified time period.

RECOMMENDED WORKFLOW:
1\. First run list_accounts() to get available account IDs
2\. Then run get_account_currency() to see what currency the account uses
3\. Finally run this command to get campaign performance

Note: Cost values are in micros (1,000,000 = 1 unit of currency).

Input parameters:

- `customer_id` (string)
- `days` (number)

### `get_budget_utilization` (~45 tokens)

Get campaign budget amounts vs actual spend to see budget utilization. Shows whether campaigns are limited by budget.

Input parameters:

- `customer_id` (string)
- `days` (number)

### `get_ad_performance` (~102 tokens)

Get ad-level performance metrics for the specified time period.

RECOMMENDED WORKFLOW:
1\. First run list_accounts() to get available account IDs
2\. Then run get_account_currency() to see what currency the account uses
3\. Finally run this command to get ad performance

Note: Cost values are in micros (1,000,000 = 1 unit of currency).

Input parameters:

- `customer_id` (string)
- `days` (number)

### `get_ad_creatives` (~37 tokens)

Get ad creative details including RSA headlines, descriptions, and final URLs. Great for creative audits.

Input parameters:

- `customer_id` (string)

### `get_image_assets` (~43 tokens)

Retrieve all image assets in the account including their full-size URLs, dimensions, and file sizes.

Input parameters:

- `customer_id` (string)
- `limit` (number)

### `download_image_asset` (~45 tokens)

Download a specific image asset by ID to a local directory.

Input parameters:

- `asset_id` (string, required)
- `customer_id` (string)
- `output_dir` (string)

### `get_asset_usage` (~46 tokens)

Find where specific assets are being used in campaigns and ad groups.

Input parameters:

- `asset_id` (string)
- `asset_type` (string)
- `customer_id` (string)

### `analyze_image_assets` (~42 tokens)

Analyze image asset performance with metrics like impressions, clicks, conversions, and CTR across campaigns.

Input parameters:

- `customer_id` (string)
- `days` (number)

### `generate_keyword_ideas` (~70 tokens)

Generate keyword ideas using Google Ads Keyword Planner. Returns search volume estimates and keyword suggestions based on seed keywords.

Input parameters:

- `country_id` (string, required)
- `customer_id` (string)
- `keywords` (string, required)
- `language_id` (string)
- `page_size` (number)

### `get_keyword_volumes` (~66 tokens)

Get historical search volume metrics for specific keywords. Returns exact volume data (unlike generate_keyword_ideas which suggests related keywords).

Input parameters:

- `country_id` (string, required)
- `customer_id` (string)
- `keywords` (string, required)
- `language_id` (string)

### `get_quality_scores` (~43 tokens)

Get keyword quality scores with component breakdown (expected CTR, ad relevance, landing page experience).

Input parameters:

- `campaign_id` (string)
- `customer_id` (string)

### `get_search_terms` (~53 tokens)

Get actual search queries that triggered your ads (search term report). Shows what users are really searching for.

Input parameters:

- `campaign_id` (string)
- `customer_id` (string)
- `days` (number)

### `get_geographic_performance` (~49 tokens)

Get campaign performance broken down by geographic location (country, region, city).

Input parameters:

- `campaign_id` (string)
- `customer_id` (string)
- `days` (number)

### `get_device_performance` (~40 tokens)

Get campaign performance broken down by device type (desktop, mobile, tablet).

Input parameters:

- `customer_id` (string)
- `days` (number)

### `get_recommendations` (~39 tokens)

Get Google's AI-powered optimization recommendations for the account (bid adjustments, keyword suggestions, budget changes, etc.).

Input parameters:

- `customer_id` (string)

### `get_change_history` (~46 tokens)

Get recent account changes (campaign updates, bid changes, ad modifications, etc.) from the change_event resource.

Input parameters:

- `customer_id` (string)
- `days` (number)

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/pijusz-mcp-gads/mcp-gads#diagnostics

## Score history

- 2026-08-03: 60
- 2026-08-02: 60
- 2026-08-01: 18
- 2026-07-31: 23
- 2026-07-30: 24
- 2026-07-28: 42
- 2026-07-27: 42

## Links

- npm package: https://www.npmjs.com/package/mcp-gads
- Socket report: https://socket.dev/npm/package/mcp-gads
- Repository: https://github.com/pijusz/mcp-gads
- Changelog RSS feed: https://verifymcp.io/servers/pijusz-mcp-gads/mcp-gads/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/pijusz-mcp-gads/mcp-gads/changelog.json
- HTML version of this page: https://verifymcp.io/servers/pijusz-mcp-gads/mcp-gads
