🚀 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