Google Ads Intent Mcp

io.github.davidmosiahPublished by GitHub account davidmosiahv0.1.1Updated Oct 24, 2026

Dry-run-first Google Ads search-term intent analyzer and negative-keyword MCP for agents.

VerifiedSTDIODesktop onlyData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

A local MCP server that classifies Google Ads search terms from CSV exports and drafts dry-run negative-keyword plans, protecting buyer-intent queries.

What you can do
Classify a single search term or a batch of exported search terms into waste, buyer, research or competitor intent, with an optional LLM refinement path that is off by default and falls back to the heuristic classifier when no backend is configured. Analyze exported search-term CSVs locally, accepting common column names for search term, cost, clicks, conversions and impressions. Draft negative-keyword plans without applying them, keeping buyer and conversion terms protected from exclusion. Report install and runtime guidance, CSV/API readiness without credentials, and the dry-run, account and export boundaries before any action tools are used.
When to use it
Use it when an assistant needs to review Google Ads search-term exports for wasted spend and propose negative keywords, while avoiding accidental exclusion of converting queries. It suits a dry-run-first cleanup workflow where no live account changes are wanted.
Requirements
A local Python runtime; install the PyPI package google-ads-intent-mcp, with the mcp extra for MCP support. CSV analysis needs no credentials. Live Google Ads access is optional and uses GOOGLE_ADS_CLIENT_ID, GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_DEVELOPER_TOKEN, GOOGLE_ADS_REFRESH_TOKEN and GOOGLE_ADS_CUSTOMER_ID. The optional LLM refinement needs OPENAI_API_KEY and the openai package.
Before you install
Live Google Ads access requires OAuth and developer credentials (GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_DEVELOPER_TOKEN, GOOGLE_ADS_REFRESH_TOKEN) plus an account identifier; keep them in local environment or config files. The optional LLM path sends search terms to an external provider when OPENAI_API_KEY is set. Negative plans are dry-run only in this version, so applying them is a separate manual step. CSV exports contain account performance data and are analyzed locally.

Installation

In SourceWeft

  1. Open Google Ads Intent Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Google Ads Intent MCP

Dry-run-first Google Ads search-term intent analyzer + negative-keyword MCP for agents.
Look at search terms safely before spending budget.

[npm version] [npm downloads] [License MIT] [Built for MCP]

[GitHub stars] [CI status] [Part of the Delx agent stack] [Category]

mcp-name: io.github.davidmosiah/google-ads-intent-mcp

⭐ If this agent-first tool helps your workflow, please star the repo. Stars make this tooling easier for other builders to discover and help Delx keep shipping open infrastructure.
🧱 Part of the Delx agent stack — 15 open-source MCP servers across body, reach and coordination.


Dry-run-first Google Ads search-term intent analyzer for agents. It helps Codex, Claude, Cursor, Hermes, OpenClaw and other MCP clients classify search terms, protect buyer intent and draft negative-keyword plans from CSV exports before any live account change.

Use it when an agent needs to reduce wasted spend without accidentally excluding buyer-intent queries.

HTTP (v2 stateless)

Not shipped. Optional FastMCP extra is stdio-only (same skip as delx-agent-utilities: no /health without extra Starlette routes). Dry-run analysis stays request-stateless over stdio.

Why It Exists

Google Ads cleanup is risky when agents act directly on accounts. This package makes the safe path the default:

  • analyze exported search-term CSVs locally
  • classify waste, buyer, research and competitor intent
  • draft negative-keyword plans without applying them
  • expose manifest, connection_status and privacy_audit before action tools
  • keep live mutation out of v0.1

Install

bash
pipx install google-ads-intent-mcp

With MCP support:

bash
pipx install "google-ads-intent-mcp[mcp]"

Published on PyPI: google-ads-intent-mcp. Release automation uses PyPI Trusted Publishing, so GitHub Actions can publish future versions without long-lived PyPI tokens. See docs/pypi-publishing.md.

CLI

bash
google-ads-intent manifest --client codexgoogle-ads-intent doctorgoogle-ads-intent privacy-auditgoogle-ads-intent classify "free robux generator no verification"google-ads-intent analyze-csv --csv examples/search_terms.csvgoogle-ads-intent plan-negatives --csv examples/search_terms.csv

Intent classification

The classifier is a deterministic, dependency-free heuristic with broad, cross-vertical signal coverage (ecommerce, B2B/SaaS, local services, health, finance, education and more) — not just gaming traffic. It sorts each search term into waste, buyer, research or competitor intent and protects converting queries from being flagged as negatives.

An optional LLM/embeddings-backed refinement path is available and is off by default. It requires no extra dependencies or API keys for normal use, and always falls back to the heuristic when no backend is configured:

bash
# Opt in via flag (falls back to the heuristic if nothing is configured)google-ads-intent --llm classify "crm software pricing"
# Or via environment variableGOOGLE_ADS_INTENT_LLM=1 google-ads-intent analyze-csv --csv export.csv

To actually call a backend, set OPENAI_API_KEY (and optionally GOOGLE_ADS_INTENT_LLM_MODEL, default gpt-4o-mini) and install the openai package. Without those, --llm is a no-op that keeps the heuristic result. Each classification reports which path produced it via a source (heuristic or llm) field.

MCP

bash
google-ads-intent-mcp

Hermes-style config:

yaml
mcp_servers:  google_ads_intent:    command: google-ads-intent-mcp    args: []    sampling:      enabled: false

Recommended first calls:

  1. google_ads_connection_status
  2. google_ads_privacy_audit
  3. google_ads_analyze_search_terms
  4. google_ads_build_negative_plan

Agent Surfaces

ToolPurpose
google_ads_agent_manifestInstall/runtime guidance for agent clients
google_ads_connection_statusCSV/API readiness without credentials
google_ads_privacy_auditDry-run, account and export boundaries
google_ads_classify_search_termSingle-query intent classification
google_ads_analyze_search_termsBatch CSV-style analysis
google_ads_build_negative_planDry-run negative keyword plan

Copy-Paste Agent Prompt

text
Use google-ads-intent-mcp. First call google_ads_connection_status and google_ads_privacy_audit.Analyze the search terms, protect buyer/conversion queries, and return a dry-run negative plan only.

CSV Format

The parser accepts common exported columns such as:

  • search_term, Search term, Query
  • cost, Cost, cost_micros
  • clicks, Clicks
  • conversions, Conversions, Conv.
  • impressions, Impr., Impressions

Safety Model

  • CSV analysis is local.
  • Negative plans are dry-run only.
  • Buyer/conversion terms are protected from automatic exclusion.
  • OAuth tokens, developer tokens and account identifiers should stay in local environment/config files.

Development

bash
python3 -m venv .venv. .venv/bin/activatepip install -e ".[dev]"pytestpython -m compileall -q src

📧 Contact & Support

Source: README.md at commit 30098d3

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts