🚀 GTM MCP Server
讓AI管理你的Google Tag Manager容器。通過與Claude、ChatGPT或Gemini進行自然對話,即可創建標籤、審核配置、生成跟蹤計劃併發布更改。
URL:https://mcp.gtmeditor.com
🚀 快速開始
Claude(網頁版和桌面版)
Claude.ai:
- 前往設置 → 連接器 → 添加自定義連接器。
- 輸入:
https://mcp.gtmeditor.com。
- 點擊添加,並使用Google賬號登錄。
Claude Code(命令行界面):
claude mcp add -t http gtm https://mcp.gtmeditor.com
ChatGPT
- 訪問 OpenAI應用平臺。
- 添加一個MCP集成,URL為:
https://mcp.gtmeditor.com。
- 使用你的Google賬號授權。
Gemini CLI
gemini mcp add --transport http --url https://mcp.gtmeditor.com gtm
✨ 主要特性
標籤管理
創建和修改任何GTM標籤類型:
- GA4配置與事件 — 使用正確的測量ID設置Google Analytics 4。
- 電子商務跟蹤 — 購買、添加到購物車、查看商品事件。
- 自定義HTML — 注入腳本、像素和自定義代碼。
- 自定義圖像 — 帶有緩存清除功能的跟蹤像素。
觸發器管理
為任何場景構建觸發器:
- 頁面視圖(所有頁面或特定URL)
- 自定義dataLayer事件
- 點擊跟蹤
- 表單提交
- 基於計時器的觸發器
- 用於複雜條件的觸發器組
容器操作
- 瀏覽賬戶、容器和工作區
- 從工作區更改創建版本
- 發佈版本以生效
- 使用文件夾進行組織
- 啟用/禁用內置變量
服務器端容器
全面支持服務器端GTM容器:
- 客戶端 — 創建、更新和刪除服務器端客戶端(例如GA4客戶端)。
- 轉換 — 使用允許、排除和增強規則控制事件參數。
社區模板庫
從Google的社區模板庫導入模板:
- “導入iubenda cookie同意模板”
- “將Cookiebot添加到我的容器中”
- “使用庫模板設置Facebook Pixel”
AI將搜索模板,找到GitHub存儲庫並自動導入。
人工智能驅動的工作流程
容器審核
“審核我的容器是否存在問題” — 分析你的工作區,查找以下問題:
- 命名不一致
- 重複標籤
- 孤立觸發器
- 安全問題
- 違反最佳實踐
跟蹤計劃生成
“生成跟蹤計劃” — 創建以下內容的Markdown文檔:
- 所有事件及其觸發器
- 數據層要求
- 變量定義
- 實施說明
GA4設置建議
“幫助我為電子商務設置GA4” — 提供以下建議:
- 要創建的標籤
- 觸發器配置
- 所需變量
- 數據層實施代碼
💻 使用示例
你可以向AI助手提出以下請求:
- “列出我所有的GTM容器”
- “為表單提交創建一個GA4事件標籤”
- “審核此容器是否存在問題和重複項”
- “為營銷團隊生成一份跟蹤計劃文檔”
- “設置電子商務購買跟蹤”
- “發佈我們剛剛所做的更改”
無需再在GTM界面中點擊操作,也無需複製粘貼配置,只需描述你需要的內容即可。
📚 詳細文檔
使用案例
構建完整的跟蹤設置
要求AI從頭開始創建完整的GA4電子商務實施:
- “為我的商店設置GA4電子商務跟蹤”
- 創建12個以上的標籤(配置 + 所有電子商務事件)
- 為每個dataLayer事件創建匹配的觸發器
- 創建用於商品、貨幣、價值、交易ID的數據層變量
- 遵循Google推薦的事件命名和參數
實施同意管理
將OneTrust等隱私工具與你的跟蹤集成:
- “僅在獲得分析同意時觸發GA4”
- 創建同意檢查變量
- 設置條件觸發器
- 更新現有標籤以尊重用戶選擇
批量操作和重命名
大規模管理容器:
- “為所有電子商務觸發器添加‘ecom -’前綴”
- “更新所有標籤以使用測量ID變量”
- 通過對話重命名、更新或組織數十個項目
自定義變量和邏輯
創建複雜的跟蹤邏輯:
- “創建一個返回本地時間戳的變量”
- “向購買標籤添加自定義參數”
- 自定義JavaScript變量、數據層映射等
適用於代理機構
- 管理多個客戶容器(演示中顯示7個以上賬戶)
- 跨客戶標準化實施
- 為新項目快速設置
- 安全地進行版本控制和發佈更改
工作原理
GTM MCP服務器使用模型上下文協議將AI助手連接到Google Tag Manager API。當你要求Claude或ChatGPT管理你的GTM時,它會:
- 使用你的Google賬戶進行身份驗證(OAuth 2.1)。
- 讀取你的容器配置。
- 執行你請求的更改。
- 在進行破壞性操作之前進行確認。
你的憑據不會被存儲 — 服務器使用基於令牌的身份驗證,你可以隨時從Google賬戶中撤銷。
安全功能
- 刪除和發佈操作需要確認。
- 僅在工作區進行更改 — 在你發佈之前,任何更改都不會生效。
- 版本控制 — 所有更改首先會創建一個版本。
- 審核日誌 — 跟蹤所做的更改。
自託管
如果你想運行自己的實例,可以按照以下步驟操作:
Docker設置
git clone https://github.com/paolobietolini/gtm-mcp-server.git
cd gtm-mcp-server
cat > .env << 'EOF'
GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your-client-secret
JWT_SECRET=$(openssl rand -base64 32)
BASE_URL=http://localhost:8080
EOF
docker compose up -d
claude mcp add -t http gtm http://localhost:8080
Docker到Docker
如果另一個容器需要通過內部Docker網絡別名訪問MCP服務器,請在你的.env文件中添加ALLOWED_HOSTS:
ALLOWED_HOSTS=gtm-mcp:8080
這允許對受信任的內部主機名進行動態URL解析,同時確保服務器免受主機頭注入攻擊。
Google Cloud設置
- 訪問 Google Cloud控制檯。
- 啟用Tag Manager API。
- 創建OAuth 2.0憑據(Web應用程序)。
- 添加重定向URI:
https://claude.ai/api/mcp/auth_callback
https://claude.com/api/mcp/auth_callback
https://chatgpt.com/connector_platform_oauth_redirect
https://your-domain.com/oauth/callback
可用工具
讀取操作
| 工具 |
描述 |
list_accounts |
列出所有GTM賬戶 |
list_containers |
列出賬戶中的容器 |
list_workspaces |
列出容器中的工作區 |
list_tags |
列出工作區中的所有標籤 |
get_tag |
按ID獲取標籤詳細信息 |
list_triggers |
列出所有觸發器 |
get_trigger |
按ID獲取觸發器詳細信息 |
list_variables |
列出所有變量 |
get_variable |
按ID獲取變量詳細信息 |
list_folders |
列出工作區中的文件夾 |
get_folder_entities |
獲取文件夾中的標籤/觸發器/變量 |
list_built_in_variables |
列出工作區中啟用的內置變量 |
實用工具
| 工具 |
描述 |
ping |
測試服務器連接性 |
auth_status |
檢查身份驗證狀態 |
寫入操作
| 工具 |
描述 |
create_container |
在賬戶中創建新容器 |
delete_container |
刪除容器(需要確認) |
create_workspace |
在容器中創建新工作區 |
create_tag |
創建新標籤 |
update_tag |
修改現有標籤 |
delete_tag |
刪除標籤(需要確認) |
create_trigger |
創建新觸發器 |
update_trigger |
修改現有觸發器 |
delete_trigger |
刪除觸發器(需要確認) |
create_variable |
創建新變量 |
update_variable |
修改現有變量 |
delete_variable |
刪除變量(需要確認) |
enable_built_in_variables |
在工作區中啟用內置變量類型 |
disable_built_in_variables |
禁用內置變量類型(需要確認) |
服務器端容器工具
| 工具 |
描述 |
list_clients |
列出工作區中的所有客戶端 |
get_client |
按ID獲取客戶端詳細信息 |
create_client |
創建新客戶端 |
update_client |
修改現有客戶端 |
delete_client |
刪除客戶端(需要確認) |
list_transformations |
列出工作區中的所有轉換 |
get_transformation |
按ID獲取轉換詳細信息 |
create_transformation |
創建新轉換 |
update_transformation |
修改現有轉換 |
delete_transformation |
刪除轉換(需要確認) |
發佈
| 工具 |
描述 |
get_workspace_status |
在版本控制之前檢查待處理的更改和合並衝突 |
list_versions |
列出所有容器版本及其標籤/觸發器/變量數量 |
create_version |
從工作區更改創建版本 |
publish_version |
發佈版本(需要確認) |
模板
| 工具 |
描述 |
get_tag_templates |
獲取GA4/HTML標籤參數示例 |
get_trigger_templates |
獲取觸發器配置示例 |
list_templates |
列出工作區中的自定義模板 |
get_template |
獲取模板詳細信息,包括模板代碼 |
create_template |
根據.tpl代碼創建自定義模板 |
update_template |
修改現有模板 |
delete_template |
刪除模板(需要確認) |
import_gallery_template |
從社區模板庫導入模板 |
資源和提示
資源(基於URI的訪問)
通過結構化URI訪問GTM數據:
gtm://accounts
gtm://accounts/{id}/containers
gtm://accounts/{id}/containers/{id}/workspaces
gtm://accounts/.../workspaces/{id}/tags
gtm://accounts/.../workspaces/{id}/triggers
gtm://accounts/.../workspaces/{id}/variables
提示(工作流模板)
| 提示 |
描述 |
audit_container |
全面的容器分析 |
generate_tracking_plan |
Markdown文檔生成器 |
suggest_ga4_setup |
GA4實施建議 |
find_gallery_template |
查找和導入社區模板庫模板的指南 |
更好的AI上下文
為了獲得最佳效果,請安裝GTM API技能,以便你的AI助手瞭解GTM的API結構、參數格式和驗證規則。
Claude Code
curl -sL https://github.com/paolobietolini/gtm-api-for-llms/archive/main.tar.gz | tar xz && \
mkdir -p ~/.claude/skills && \
cp -r gtm-api-for-llms-main/skills/gtm-api ~/.claude/skills/ && \
rm -rf gtm-api-for-llms-main
或者克隆並複製:
git clone https://github.com/paolobietolini/gtm-api-for-llms.git
cp -r gtm-api-for-llms/skills/gtm-api ~/.claude/skills/
OpenAI Codex
curl -sL https://github.com/paolobietolini/gtm-api-for-llms/archive/main.tar.gz | tar xz && \
mkdir -p ~/.codex/skills && \
cp -r gtm-api-for-llms-main/skills/gtm-api ~/.codex/skills/ && \
rm -rf gtm-api-for-llms-main
該技能包含哪些內容?
GTM API for LLMs 存儲庫提供了針對大語言模型優化的文檔:請求模板、驗證規則、工作流算法以及所有GTM實體類型(包括服務器端容器)的完整架構。
架構
- 協議:基於HTTP的模型上下文協議(MCP)
- 身份驗證:帶有PKCE的OAuth 2.1
- 標準:RFC 8414、RFC 7591、RFC 9728
已知問題
🐛 Google Tag Manager API 會靜默丟棄 autoEventFilter
通過API創建或更新linkClick、click或formSubmission觸發器時,autoEventFilter字段(用於“部分鏈接點擊”/“部分表單提交”條件)會被Google Tag Manager API靜默丟棄。API返回200 OK和新的指紋,但不會保留autoEventFilter。
通過HTTP級調試已確認:請求正文中發送了正確的JSON,但Google的響應中省略了該字段。filter和customEventFilter字段正常工作。
解決方法:通過 GTM網頁界面 手動配置autoEventFilter條件。MCP服務器可以讀取通過UI設置了autoEventFilter的觸發器。
狀態:#33
鏈接
作者
Paolo Bietolini
mcp@paolobietolini.com
📄 許可證
BSD-3-Clause