Ainative Gtm Mcp

io.github.AINative-Studio由 GitHub 帳號 AINative-Studio 發布v0.4.2更新於 Oct 24, 2026

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

已驗證STDIO僅桌面資料與分析商業與電商

概覽

AI 產生的概覽

一個本機 MCP 伺服器,讓助理稽核與編輯 Google Tag Manager 容器,並管理 Google Ads 的廣告活動、預算、轉換與指定目標。

可以做什麼
列出 GTM 帳戶、容器、代碼與觸發條件並讀取設定;更新或刪除代碼,建立或更新觸發條件;稽核容器並給出健康分數與問題清單,找出誤觸發的轉換代碼並重新接上觸發條件;檢視工作區待發布變更、建立版本並發布上線;建立與調整 Google Ads 廣告活動、廣告群組、廣告、素材、出價、預算、關鍵字、目標對象、額外資訊、地理與語言指定、排除刊登位置及自動套用建議;建立並上傳以 gclid 為主的離線轉換,稽核轉換目標與帳戶成效。
適用情境
適合讓助理不開網頁介面直接操作線上的 Google Tag Manager 容器或 Google Ads 帳戶,例如稽核在每個頁面都觸發的轉換代碼、發布代碼修正,或以程式方式建立與調整廣告活動和預算。
執行需求
透過 npx 在本機執行(需要 Node.js)。需要已啟用 Tag Manager API 的 Google Cloud 服務帳戶 JSON 金鑰,由 GTM_SERVICE_ACCOUNT_KEY_PATH 指定,並在 GTM 中將該服務帳戶加入為使用者,授予讀取或發布權限。Google Ads 工具需要 OAuth 憑證、GOOGLE_ADS_DEVELOPER_TOKEN 與 GOOGLE_ADS_CUSTOMER_ID。
安裝前請注意
服務帳戶金鑰檔案是敏感憑證,請勿提交到版本控制。工具會變更線上行銷設定:編輯與刪除代碼和觸發條件、發布工作區、建立與調整廣告活動和預算、暫停或移除廣告、上傳轉換。發布與預算變更會影響真實廣告花費,自動套用建議若持續開啟可能推高花費。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Ainative Gtm Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

@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

bash
# 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 directlynpx @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. [email protected])
  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
bash
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 Credentialsgcloud auth application-default login

3. Connect to Claude Code

bash
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:

json
{  "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

Expected: your GTM account name and ID. If you get an empty array [], the service account hasn't been added to GTM yet (Step 3 above).


Important: GTM vs Google Ads conversions

This MCP server manages Google Tag Manager containers — tags, triggers, variables, and publishing.

If you see events like ads_conversion_PURCHASE_1 in GA4, those may be coming from Google Ads auto-imported conversions (via GA4 ↔ Google Ads account linking), not GTM tags. In that case:

  • If the event fires via a GTM tag → use gtm_find_misfiring_conversion_tags to fix it
  • If the event is a GA4-imported Google Ads conversion → fix it in Google Ads → Tools → Conversions, not in GTM

To tell the difference: if your GTM container has no tags (gtm_list_tags returns []), the conversion event is coming from outside GTM.


Example: Fix a misfiring conversion tag

The most common GTM billing issue — a Google Ads conversion tag fires on every page view instead of only on purchase confirmation.

1. List your accounts:   "List my GTM accounts"   → accountId: 123456789
2. List containers:   "List containers for account 123456789"   → containerId: 987654321, publicId: GTM-XXXXXXX
3. Audit the container:   "Audit container 987654321 in account 123456789"   → health score, list of issues including misfiring tags
4. Find misfiring conversion tags:   "Find misfiring conversion tags in container 987654321"   → shows which tags fire on All Pages instead of specific events
5. Fix the tag:   "Fix tag 42 to only fire on the purchase_confirmed event"   → gtm_fix_conversion_tag_trigger creates a scoped Custom Event trigger     and rewires the tag automatically
6. Review and publish:   "Show pending workspace changes, then publish"   → gtm_get_workspace_status + gtm_publish

Tool Reference

Account & Container (3 tools)

ToolDescription
gtm_list_accountsList all accessible GTM accounts
gtm_list_containersList containers in an account
gtm_get_containerGet container details

Tags (4 tools)

ToolDescription
gtm_list_tagsList all tags in a workspace
gtm_get_tagGet full tag configuration
gtm_update_tagUpdate a tag (trigger, params, name)
gtm_delete_tagDelete a tag

Triggers (4 tools)

ToolDescription
gtm_list_triggersList all triggers
gtm_get_triggerGet trigger configuration
gtm_create_triggerCreate a new trigger
gtm_update_triggerUpdate an existing trigger

Audit & Fix (3 tools)

ToolDescription
gtm_audit_containerFull container audit — health score 0–100, issues list
gtm_find_misfiring_conversion_tagsFind conversion tags firing on All Pages instead of specific events
gtm_fix_conversion_tag_triggerFix a misfiring tag — creates scoped Custom Event trigger, rewires tag

Versions & Publishing (4 tools)

ToolDescription
gtm_list_workspacesList workspaces
gtm_get_workspace_statusView pending changes before publishing
gtm_create_versionCreate a named version from workspace changes
gtm_publishPublish workspace to live

Google Ads (39 tools)

Full programmatic campaign lifecycle — an agent can build, launch, measure, and optimize a campaign end-to-end with no UI.

Build (campaigns, ad groups, ads, assets)

ToolDescription
gads_create_campaignCreate a Search/Display campaign with a dedicated budget + correct network settings
gads_create_pmax_campaignOne-call Performance Max builder — campaign + budget + asset group (headlines, descriptions, images, logo) in a single call; Google's AI optimizes across Search/Display/YouTube/Gmail
gads_create_ad_groupCreate an ad group inside a campaign
gads_create_responsive_search_adCreate an RSA (3–15 headlines, 2–4 descriptions, length-validated)
gads_create_responsive_display_adCreate a responsive display ad
gads_create_html5_adCreate an HTML5 upload (animated) display ad from a media bundle
gads_upload_image_assetUpload an image asset by URL
gads_upload_media_bundleUpload an HTML5 media-bundle (zip) asset

Bidding & bids

ToolDescription
gads_set_bidding_strategySwap bidding strategy (Maximize Clicks / Maximize Conversions / Target CPA / Target ROAS / Manual CPC) — reads back the change to confirm it landed (empty-payload swaps silently no-op)
gads_set_ad_group_bidSet an ad group's default max CPC bid
gads_set_keyword_bidSet a specific keyword's max CPC bid

Ad control

ToolDescription
gads_set_ad_statusPause / enable / remove an individual ad
gads_request_ad_reviewRequest re-review (appeal) of a disapproved/limited ad where API-appealable; honest result for UI-only policy topics

Ad extensions (assets)

ToolDescription
gads_add_sitelinkCreate + attach a sitelink
gads_add_calloutCreate + attach a callout (e.g. "7-Day Free Trial")
gads_add_structured_snippetCreate + attach a structured snippet
gads_add_call_extensionCreate + attach a call (phone) extension

Audiences & conversions (attribution)

ToolDescription
gads_add_audience_to_ad_groupAttach a user-list audience (observation or targeting)
gads_create_conversion_actionCreate an offline (UPLOAD_CLICKS) conversion action for gclid import
gads_upload_click_conversionUpload an offline conversion keyed by gclid — ties a real signup back to the ad click that drove it

Conversions & reporting

ToolDescription
gads_list_conversion_actionsList all conversion actions — name, ID, counting type, status, category
gads_update_conversion_countingFix counting type (ONE_PER_CLICK vs MANY_PER_CLICK) for a conversion action
gads_audit_conversion_goalsAudit all conversion goals — find misconfigured counting, inactive conversions
gads_set_conversion_goal_inclusionInclude/exclude a conversion action from the primary Conversions metric & Smart Bidding (e.g. stop a PAGE_VIEW action inflating conversions)
gads_get_account_performanceAccount-level performance — impressions, clicks, cost, conversions by date range

Campaigns & budgets

ToolDescription
gads_update_campaign_budgetSet a campaign's daily budget (scale spend up or down)
gads_pause_campaignPause a campaign — stop ad serving immediately
gads_create_keywordAdd a keyword to an ad group
gads_remove_keywordRemove (pause) a keyword from an ad group

Targeting & fraud protection

ToolDescription
gads_remove_campaign_criterionRemove a campaign criterion (targeted geo/placement/keyword) by ID — e.g. stop targeting a country sending invalid traffic
gads_add_negative_placementExclude a website/app placement (block click-fraud sites like quiz farms and junk apps)
gads_add_geo_targetAdd a geo target (presence-only by default — the India-fraud-safe setting)
gads_set_presence_onlyForce presence-only geo targeting on a campaign
gads_add_negative_keywordAdd a campaign-level negative keyword
gads_add_language_targetAdd a language target to a campaign

Auto-apply recommendations

ToolDescription
gads_list_recommendation_subscriptionsList auto-apply recommendation subscriptions and their status (audit what auto-applies)
gads_set_recommendation_subscriptionTurn auto-apply recommendations ON/OFF (pause budget/bid recommendations that can silently raise spend)
Google Ads Authentication

The Google Ads tools use OAuth2 credentials. Provide them via environment variables or your ADC file:

bash
# Option A: Explicit env varsexport GADS_CLIENT_ID="your-client-id"export GADS_CLIENT_SECRET="your-client-secret"export GADS_REFRESH_TOKEN="your-refresh-token"export GOOGLE_ADS_DEVELOPER_TOKEN="your-developer-token"export GOOGLE_ADS_CUSTOMER_ID="1234567890"
# Option B: Use Application Default Credentials (gcloud OAuth)# Run: gcloud auth application-default login# The server reads ~/.config/gcloud/application_default_credentials.json automaticallyexport GOOGLE_ADS_DEVELOPER_TOKEN="your-developer-token"export GOOGLE_ADS_CUSTOMER_ID="1234567890"

Developer token: Get yours at Google Ads API Center. A test token works for sandbox accounts; a standard token is required for production.

Note on GA4-imported conversions: If you see events like ads_conversion_PURCHASE_1 in GA4 but gads_list_conversion_actions returns an empty list, those conversions are GA4-imported into Google Ads (configured under Google Ads → Tools → Conversions). They are not standalone conversion actions and must be managed through the Google Ads UI.


Troubleshooting

SymptomCauseFix
gtm_list_accounts returns []Service account not added to GTMAdd service account email in GTM → Admin → User Management
Tag Manager API has not been used errorAPI not enabledEnable at console.cloud.google.com → APIs & Services → Tag Manager API
Permission denied on tag updateService account has Read-onlyUpgrade to Publish permission in GTM User Management
gtm_list_tags returns []Workspace is empty (no tags published)Check a different workspaceId, or confirm tags exist in GTM dashboard
Conversion event in GA4 but no matching GTM tagEvent comes from Google Ads auto-importFix in Google Ads → Tools → Conversions, not in GTM

Development

bash
git clone https://github.com/AINative-Studio/corecd packages/mcp-servers/ainative-gtm-mcpnpm installnpm run buildnpm run dev

License

MIT — AINative Studio

來源:README.md,提交 b858f34

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.4.2最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分