Mmcp.market

Ainative Gtm MCP server

by AINative-Studio·io.github.AINative-Studio/ainative-gtm-mcp·v0.4.2

Full Google Ads, Analytics & Tag Manager lifecycle MCP for AI agents — 57 tools.

B80/100grade B
What users say
No reviews yet
Be the first
Safety scan
B80/100

full report

Adoption
New

0 stars42 downloads/wk

Reviews

Write one

Nobody has reviewed Ainative Gtm yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Ainative Gtm tools (57, 26 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • gads_add_audience_to_ad_group

    Attach an audience segment (user_list resource) to an ad group. mode=OBSERVATION measures the audience without restricting reach; mode=TARGETING restricts serving to it. Refs #5764.

  • gads_add_call_extensionwrite action

    Create a call asset (phone number) and attach it to a campaign so ads can show a call button. Refs #5764.

  • gads_add_calloutwrite action

    Create a callout asset (short promotional phrase, e.g. "Free 7-Day Trial") and attach it to a campaign. Refs #5764.

  • gads_add_geo_target

    Add a geographic target (or exclusion) to a campaign, using PRESENCE-only targeting by

  • gads_add_language_target

    Add a language target to a campaign so ads serve to users with that language setting. Common language constant ids: 1000=English, 1003=Spanish, 1001=German, 1002=French. Refs #5764.

  • gads_add_negative_keyword

    Add a negative keyword at the CAMPAIGN level (blocks the term across the campaign). Refs #5743.

  • gads_add_negative_placement

    Add a negative PLACEMENT (website URL or mobile app) exclusion to a campaign so ads never serve there.

  • gads_add_sitelinkwrite action

    Create a sitelink asset (link text + final URL, optional 2 description lines) and attach it to a campaign. Refs #5764.

  • gads_add_structured_snippetwrite action

    Create a structured snippet asset (a header like "Services" or "Types" + up to 10 values) and attach it to a campaign. Refs #5764.

  • gads_audit_conversion_goals

    Audit all Google Ads conversion goals — find misconfigured counting types, inactive conversions, and conversions with no recent activity. Returns a prioritized fix list.

  • gads_create_ad_groupwrite action

    Create an ad group inside a campaign. Refs #5740.

  • gads_create_campaignwrite action

    Create a NEW Google Ads campaign with its own dedicated budget. Handles the full

  • gads_create_conversion_actionwrite action

    Create an offline conversion action (type UPLOAD_CLICKS) for importing real outcomes — e.g.

  • gads_create_html5_adwrite action

    Create an HTML5 display upload ad (DisplayUploadAd, HTML5_UPLOAD_AD) in a DISPLAY ad group

  • gads_create_keywordwrite action

    Add a keyword to an ad group. Use this to move high-performing keywords between campaigns.

  • gads_create_pmax_campaignwrite action

    ONE-CALL Performance Max "campaign builder": creates a PERFORMANCE_MAX campaign + dedicated

  • gads_create_responsive_display_adwrite action

    Create a Responsive Display Ad in a DISPLAY ad group from uploaded image assets + text.

  • gads_create_responsive_search_adwrite action

    Create a Responsive Search Ad in an ad group. 3–15 headlines (≤30 chars), 2–4 descriptions

  • gads_get_account_performance

    Get top-level Google Ads account performance — impressions, clicks, cost, conversions for a date range. Quick health check for ad spend efficiency.

  • gads_list_conversion_actions

    List all Google Ads conversion actions for the account — name, ID, counting type, status, and category. Use this to audit which conversions are set up and how they are counted.

  • gads_list_recommendation_subscriptions

    List Google Ads auto-apply recommendation subscriptions (type + status). ENABLED means that recommendation

  • gads_pause_campaign

    Pause a Google Ads campaign. Stops all ad serving immediately.

  • gads_remove_campaign_criterionwrite action

    Remove a campaign-level criterion (targeted location/geo, placement, or keyword) by its criterion ID.

  • gads_remove_keywordwrite action

    Remove (pause) a keyword from an ad group.

  • gads_request_ad_review

    Request re-review (appeal) of a disapproved or approved-limited ad via the API. Uses the

  • gads_searchwrite action

    Run a read-only GAQL query and return rows — for looking up campaign/budget/ad_group/criterion

  • gads_set_ad_group_bid

    Set the default max CPC bid (USD) on an existing ad group. Use to raise/lower delivery on a specific ad group under Manual CPC / Maximize Clicks. Refs #5764.

  • gads_set_ad_status

    Set an individual ad's status to ENABLED, PAUSED, or REMOVED (ad_group_ad). Use to pause a throttled/underperforming ad or remove a rejected one without touching the ad group. Refs #5764.

  • gads_set_bidding_strategy

    Change an existing campaign's bidding strategy (MAXIMIZE_CLICKS, MAXIMIZE_CONVERSIONS,

  • gads_set_campaign_status

    Set a Google Ads campaign status to ENABLED or PAUSED. Use ENABLED to (re)enable a paused

  • gads_set_conversion_goal_inclusion

    Control whether a conversion action counts toward the primary "Conversions" metric (and thus Smart Bidding).

  • gads_set_keyword_bid

    Set the max CPC bid (USD) on a specific keyword (ad group criterion). Refs #5764.

  • gads_set_presence_only

    Set a campaign to PRESENCE-only geo targeting (target users physically IN the targeted

  • gads_set_recommendation_subscription

    Turn Google Ads auto-apply recommendations ON or OFF. Set enabled=false to PAUSE (stop auto-applying —

  • gads_update_campaign_budgetwrite action

    Update the daily budget of a Google Ads campaign. Provide the campaign budget ID (from the campaign) and the new daily amount in dollars. Use to scale spend up or down.

  • gads_update_conversion_countingwrite action

    Update the counting type of a Google Ads conversion action. Common fix: change counting_type from MANY_PER_CLICK to ONE_PER_CLICK for purchase conversions to avoid inflated counts.

  • gads_upload_click_conversionwrite action

    Upload an OFFLINE click conversion keyed by gclid — the attribution backbone that ties a real

  • gads_upload_image_assetwrite action

    Upload an image file from local disk as a Google Ads image Asset (for Display banners /

  • gads_upload_media_bundlewrite action

    Upload an HTML5 ad ZIP file from disk as a Google Ads MEDIA_BUNDLE asset (for HTML5 display

  • gtm_audit_container

    Comprehensive container audit — finds broken tags, duplicate tags, misfiring conversion tags, tags missing triggers, and tags firing too broadly. Returns a health score 0–100.

  • gtm_create_triggerwrite action

    Create a new trigger in a GTM workspace

  • gtm_create_versionwrite action

    Create a container version from current workspace changes

  • gtm_delete_tagwrite action

    Delete a GTM tag from a workspace

  • gtm_find_misfiring_conversion_tags

    Find conversion/purchase tags that are firing too broadly (e.g. on All Pages instead of a specific event). This is the most common GTM billing/analytics issue.

  • gtm_fix_conversion_tag_trigger

    Fix a misfiring conversion tag by replacing its broad trigger (e.g. All Pages) with a specific Custom Event trigger. Creates the new trigger if needed.

  • gtm_get_container

    Get details of a specific GTM container

  • gtm_get_tag

    Get full configuration of a specific GTM tag

  • gtm_get_trigger

    Get full configuration of a specific GTM trigger

  • gtm_get_workspace_status

    Get pending (unsaved) changes in a workspace before publishing

  • gtm_list_accounts

    List all GTM accounts accessible to the service account

  • gtm_list_containers

    List all containers in a GTM account

  • gtm_list_tags

    List all tags in a GTM workspace

  • gtm_list_triggers

    List all triggers in a GTM workspace

  • gtm_list_workspaces

    List workspaces in a GTM container

  • gtm_publishwrite action

    Publish the current workspace — makes all changes live immediately

  • gtm_update_tagwrite action

    Update an existing GTM tag (e.g. fix its trigger, rename it, update parameters)

  • gtm_update_triggerwrite action

    Update an existing GTM trigger

Public scan report

scanner v0.1.9 · 2026-09-24 · same rubric, same numbers if you re-run it

no findings
  • Code scan23 source files scanned25/25
  • Live reliabilityno gateway calls yet and no remote to proben/a
  • Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitystatic API keys via environment variables6/15
  • Maintenancelast push 54 days ago12/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year9/10
Overall 80/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

What the publisher says

From the Ainative Gtm repository's README, as published. We do not edit it. Read it on GitHub

@ainative/gtm-mcp

Google Tag Manager and Google Ads MCP server — audit, fix, and manage GTM containers and Google Ads campaigns, budgets, conversions, placements, geo targeting, and auto-apply recommendations from AI agents (Claude, Cursor, and any MCP client).

Part of the AINative open-source tools.

57 tools across 7 categories: accounts, tags, triggers, audit, versions/publishing, and a complete Google Ads lifecycle (39 tools) — build, publish, track, and adjust campaigns end-to-end: create campaigns/ad groups/RSAs/RDAs/HTML5 ads, Performance Max, bidding strategy & bid control, ad extensions (sitelinks/callouts/snippets/call), audiences, offline gclid conversion import, geo/language targeting, budgets, placements, and auto-apply recommendations — fully programmatic, no UI required.

Keywords: google tag manager mcp, google ads mcp, gtm mcp server, google ads api mcp, conversion tracking mcp, campaign budget management, negative placement / click-fraud exclusion, geo targeting, auto-apply recommendations, recommendation subscriptions, conversion goals, Smart Bidding, PPC automation, ad spend control, Claude MCP, model context protocol, AI agent advertising tools.

Quick Start

1. Install

# Claude Code (recommended)
claude mcp add ainative-gtm-mcp npx -- -y @ainative/gtm-mcp \
  -e GTM_SERVICE_ACCOUNT_KEY_PATH=/path/to/service-account.json

# Or run directly
npx @ainative/gtm-mcp

2. Set up Google Cloud authentication

The server authenticates via a Google Cloud service account with Tag Manager API access. There is no browser OAuth flow — it's designed for headless/agent use.

Step 1 — Enable the Tag Manager API

  1. Go to Google Cloud Console
  2. Select or create a project
  3. Navigate to APIs & Services → Library
  4. Search for Tag Manager API (tagmanager.googleapis.com) and click Enable

Step 2 — Create a service account

  1. Go to IAM & Admin → Service Accounts
  2. Click Create Service Account
  3. Give it a name (e.g. gtm-mcp-agent)
  4. Skip role assignment at GCP level — GTM has its own permission system
  5. Click Done, then open the service account
  6. Go to Keys → Add Key → Create new key → JSON
  7. Download the JSON key file — keep it safe

Step 3 — Grant the service account access in GTM

This is the step most people miss. The GCP service account needs to be added as a user inside Google Tag Manager separately:

  1. Go to tagmanager.google.com
  2. Click Admin (top nav)
  3. Under Account, click User Management
  4. Click + → Add users
  5. Enter the service account email (e.g. gtm-mcp-agent@your-project.iam.gserviceaccount.com)
  6. Set permission to Publish (required for tag editing and publishing)
  7. Save

Note: If you only need read access (auditing), Read permission is sufficient.

Step 4 — Configure the env var

export GTM_SERVICE_ACCOUNT_KEY_PATH="/path/to/service-account.json"

# Or use inline JSON (useful for CI/CD)
export GTM_SERVICE_ACCOUNT_KEY_JSON='{"type":"service_account","project_id":"...","private_key":"..."}'

# Or use Application Default Credentials
gcloud auth application-default login

3. Connect to Claude Code

claude mcp add ainative-gtm-mcp npx -- -y @ainative/gtm-mcp \
  -e GTM_SERVICE_ACCOUNT_KEY_PATH=/path/to/service-account.json

Or add a .mcp.json to your project root:

{
  "mcpServers": {
    "ainative-gtm-mcp": {
      "command": "npx",
      "args": ["-y", "@ainative/gtm-mcp"],
      "env": {
        "GTM_SERVICE_ACCOUNT_KEY_PATH": "/path/to/service-account.json"
      }
    }
  }
}

Security: Add .mcp.json to .gitignore if it contains key paths. Use .mcp.example.json as a template for teammates.

4. Verify it works

Ask Claude:

List my GTM accounts

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Install directly

Runs npx -y @ainative/gtm-mcp on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add ainative-gtm-mcp -- npx -y @ainative/gtm-mcp
Add to Cursor

Ainative Gtm: common questions

Is Ainative Gtm MCP server safe?
Mostly: it is graded B (80/100). Read the Ainative Gtm safety report
How do I install Ainative Gtm?
It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
Does Ainative Gtm need an API key?
Yes. The registry entry asks for GOOGLE_ADS_DEVELOPER_TOKEN, GTM_SERVICE_ACCOUNT_KEY_PATH.
Is Ainative Gtm maintained?
The last commit was 55 days ago (2026-08-01). The latest release is v0.4.2.

More from AINative-Studio