使用说明
谷歌标签管理器MCP服务器
用于操作谷歌Tag Manager的MCP(Model Context Protocol)服务器。在Mac本地环境中运行。
机能
此MCP服务器提供以下谷歌Tag Manager操作:
- 帐户管理:获取、高级和更新帐户列表
- 用户权限管理:用户权限的一览取得、详细取得、制作、更新、删除(tagmanager.manage.users范围需要、需要再认证)
- 容器管理:获取、获取、创建、更新和删除容器列表
- 工作区管理:汇总、创建、更新、删除、同步和快速预览工作区
- 标签管理:检索、高级检索、创建、更新和删除标记
- 触发器管理:列出、高级、创建、更新和删除触发器
- 変数管理:列出、高级、创建、更新和删除变量
- 版本控制:获取版本列表、获取详细信息、创建(准备发布)、发布
安装,安装
1.安装相关性
npm install
2.Google Cloud OAuth2认证信息的设置
要使用谷歌Tag Manager API,需要OAuth2认证信息。
- 谷歌云控制台在中创建项目
- API和服务>凭据 移到
- 创建凭据>审计客户机标识 列表框中,此格式对应于条目“无”
- 应用程序类型 桌面应用程序 列表框中,此格式对应于条目“无”
- 通过输入名称创建
- 客户端标识 和 客户端密码 复制
- API和服务>库 的 标签管理器API 启用
注意:帐户管理功能(update_account),则必须在“OAuth2”凭据设置中添加以下范围:
https://www.googleapis.com/auth/tagmanager.manage.accounts
此作用域已包含在MCP服务器的实施中,但在谷歌云控制台中创建OAuth2凭据时,请确保这些作用域已启用。
3.设置环境变量
.env创建文件并设置OAuth2凭据:
GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your-client-secret
GOOGLE_REDIRECT_URI=http://localhost:3000/oauth2callback
注意: GOOGLE_REDIRECT_URI必须在Google Cloud Console的OAuth2认证信息设置中添加到“已批准的重定向URI”中。
4.初回认证・再认证
推荐(不费事):在项目的路线上执行以下操作,只需在打开的浏览器中登录谷歌并批准权限。用于回调的临时服务器将接收code,并自动保存令牌。
node auth.js
# または
npm run auth
认证信息是 ~/.gtm-mcp-token.json 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
使用用户权限管理时:创建和更新用户权限 tagmanager.manage.users 我需要一个作用域。如果不包含在现有令牌中 node auth.js(或 npm run auth)重新认证后,即可获得带有新作用域的标记。事先 reset_auth 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
手动进行时:MCP的 get_auth_url 获取URL-在浏览器中验证-重定向到 code= 复制值- authenticate 交付,或 node test-auth.js "認証コード" 执行。
使用方法
设置为MCP客户端
在MCP客户端(如Cursor)上设置此服务器。
设定例(~/.cursor/mcp.json 或适当的配置文件):
{
"mcpServers": {
"gtm": {
"command": "node",
"args": ["/Users/01035280/Documents/タグマネTテスト/GTM_MCP/src/index.js"],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GOOGLE_CLIENT_SECRET": "your-client-secret",
"GOOGLE_REDIRECT_URI": "http://localhost:3000/oauth2callback"
}
}
}
}
单击功能区上.env使用文件时,可以省略环境变量的设置。
重新启动MCP服务器
如何重启MCP服务器:
-
重新启动Cursor(最可靠的方法)
- 完全退出Cursor(
Cmd + Q),然后重新启动
- 完全退出Cursor(
-
编辑并保存MCP设置文件
~/.cursor/mcp.json,添加、删除并保存注释和空间- Cursor可能检测到设置更改并重新启动MCP服务器
-
从命令选项板重新启动(根据Cursor版本)
Cmd + Shift + P(Mac)或Ctrl + Shift + P(Windows/Linux)打开命令调色板- 通过“MCP”或“reload”等关键字进行检索,执行MCP服务器重启命令
注意:在当前Cursor版本中,通过编辑MCP配置文件重新启动是最简单的方法。
可用工具
认证操作
get_auth_url:获取OAuth2认证URLauthenticate:使用验证代码完成验证check_auth_status:确认当前认证状态reset_auth:重置保存的凭据
帐户操作
list_accounts:获取帐户列表get_account:获取帐户详细信息update_account:更新帐户信息(例如,名称)
用户权限操作(帐户管理)
list_user_permissions:获取帐户用户权限列表get_user_permission:获取指定用户权限详细信息create_user_permission:创建对帐户容器的用户访问(邮件、帐户权限:noAccess/user/admin、容器权限:noAccess/read/edit/approve/publish)update_user_permission:更新用户权限delete_user_permission:删除用户权限(取消访问)
※用户权限的制作、更新 tagmanager.manage.users 我需要一个作用域。请重新验证现有令牌。
容器操作
list_containers:获取容器列表get_container:获取容器详细信息create_container:创建新容器update_container:更新容器信息delete_container:删除容器
工作区操作
list_workspaces:获取工作区列表get_workspace:获取工作区详细信息get_workspace_status:获取工作区状态(从基本版本更改合并冲突)。用于批准审核前的确认get_workspace_review_info:汇总并获取用于审批审核的更改摘要和参考信息(要更改的合并冲突/审核备注)create_workspace:创建新工作区update_workspace:更新工作区信息delete_workspace:删除工作区sync_workspace:同步工作区quick_preview:获取工作区快速预览
标记操作
list_tags:获取标记列表get_tag:获取标记详细信息create_tag:创建新标记update_tag:更新现有标记(可更新所有参数)delete_tag:删除标记- 支持的主要标记类型:
googtag:GA4设置标签gaawe:GA4事件标签awct:谷歌广告转换跟踪html:自定义HTML标记img:自定义图像标记(像素跟踪)fbq:Facebook像素ua: Universal Analytics(旧GA)
tagFiringOption(标记的调用选项):unlimited/oncePerEvent/oncePerLoad。create_tag中未指定的情况下,相当于UI默认oncePerEvent自动设置(省略为API上的空白,在运行时相当于unlimited)
- 支持的主要标记类型:
触发操作
list_triggers:获取触发器列表get_trigger:获取触发器详细信息create_trigger:创建新触发器update_trigger:更新现有触发器(可更新所有设置,如filter、autoEventFilter和waitForTags)delete_trigger:删除触发器- 支持的触发器类型:
pageview:页面视图触发器customEvent:自定义事件触发器(customEventFilter),模板名称将采用不同的格式linkClick:链接单击触发器(filter、autoEventFilter、waitForTags等)click:单击触发器(filter),模板名称将采用不同的格式formSubmission:表单提交触发器(formId、formClasses),模板名称将采用不同的格式scrollDepth:滚动深度触发器(verticalThreshold、horizontalThreshold),模板名称将采用不同的格式visible/elementVisibility:显示元素触发器(selector、visiblePercentageThreshold),模板名称将采用不同的格式youtubeVideo:YouTube视频触发(videoId、各种enableTriggerOnVideo*),模板名称将采用不同的格式timer:计时器触发器(interval、limit、startTimerOn),模板名称将采用不同的格式
- 支持的触发器类型:
変数操作
list_variables:获取变量列表get_variable:获取变量详细信息create_variable:创建新变量update_variable:更新现有变量delete_variable:删除变量- 支持的变量类型:
c: 定数変数v:数据层变量j: JavaScript変数d: DOM要素変数k: 1st Party Cookie変数u: URL変数ae:自动事件变量b:内置变量
- 支持的变量类型:
版本操作
create_version:将工作区更改创建为版本(准备发布)list_versions:获取容器版本列表get_version:获取版本详细信息publish_version:发布版本
获取批准审核的信息(工作区更改)
接受批准请求时,批准者可以获取信息以确定“当前工作区更新是否有问题”。GTM API没有专用的API来获取批准队列,但您可以使用以下工具来获取审核所需的参考信息。
get_workspace_status:GTM API的workspaces.getStatus从基本版本调用更改实体列表(workspaceChange)和合并冲突(mergeConflict),模板名称将采用不同的格式。get_workspace_review_info:除上述内容外,还包括工作空间名称、说明、变更对象的集计(标记/触发器/变量/文件夹等的件数)、冲突的有无、审核备注(reviewNotes),模板名称将采用不同的格式。作为批准判断的概要直接使用变得容易。
使用示例(批准审核前的确认):
list_workspaces获取目标容器的工作区列表- 指定批准请求的目标工作区标识
get_workspace_review_info执行 - 已归还
changeSummary和reviewNotes中所述修改相应参数的值get_workspace_status查看原始更改列表 - 如果存在合并冲突,则必须在发布前解决
reviewNotes包含
使用例
创建主要标记类型
GA4设置标签
{
"name": "GA4設定",
"type": "googtag",
"parameter": [
{
"type": "template",
"key": "tagId",
"value": "G-XXXXXXXXXX"
}
],
"firingTriggerId": ["2147479573"]
}
GA4事件标签
{
"name": "GA4 イベント",
"type": "gaawe",
"parameter": [
{
"type": "template",
"key": "eventName",
"value": "custom_event"
},
{
"type": "boolean",
"key": "sendEcommerceData",
"value": "false"
},
{
"type": "template",
"key": "measurementIdOverride",
"value": "G-XXXXXXXXXX"
}
],
"firingTriggerId": ["トリガーID"]
}
谷歌广告转换跟踪
{
"name": "Google広告コンバージョン",
"type": "awct",
"parameter": [
{
"type": "template",
"key": "conversionId",
"value": "1006772047"
},
{
"type": "template",
"key": "conversionLabel",
"value": "0L_dCLyI84sBEM--iOAD"
},
{
"type": "boolean",
"key": "enableConversionLinker",
"value": "true"
}
],
"firingTriggerId": ["トリガーID"]
}
创建主要触发器类型
创建linkClick触发器
{
"name": "リンククリック - test_click9",
"type": "linkClick",
"filter": [
{
"type": "contains",
"parameter": [
{
"type": "template",
"key": "arg0",
"value": "{{Click URL}}"
},
{
"type": "template",
"key": "arg1",
"value": "test_click9"
}
]
}
],
"autoEventFilter": [
{
"type": "contains",
"parameter": [
{
"type": "template",
"key": "arg0",
"value": "{{Page URL}}"
},
{
"type": "template",
"key": "arg1",
"value": "20251202cvtest/test1.html"
}
]
}
],
"waitForTags": true,
"checkValidation": false,
"waitForTagsTimeout": 2000
}
更新linkClick触发器(配置filter和autoEventFilter)
向现有触发器添加和更新filter和autoEventFilter的示例:
{
"triggerId": "27",
"filter": [
{
"type": "contains",
"parameter": [
{
"type": "template",
"key": "arg0",
"value": "{{Click URL}}"
},
{
"type": "template",
"key": "arg1",
"value": "test_click9"
}
]
}
],
"autoEventFilter": [
{
"type": "contains",
"parameter": [
{
"type": "template",
"key": "arg0",
"value": "{{Page URL}}"
},
{
"type": "template",
"key": "arg1",
"value": "20251202cvtest/test1.html"
}
]
}
],
"waitForTags": true,
"waitForTagsTimeout": 2000
}
创建formSubmission触发器
{
"name": "フォーム送信",
"type": "formSubmission",
"formId": "contact-form",
"formClasses": "form-class"
}
创建scrollDepth触发器
{
"name": "スクロール深度 50%",
"type": "scrollDepth",
"verticalThreshold": 50,
"horizontalThreshold": 75
}
创建elementVisity触发器
{
"name": "要素の表示",
"type": "visible",
"selector": "#important-element",
"visiblePercentageThreshold": 50,
"continuousTimeMinMilliseconds": 1000
}
创建youtubeVideo触发器
{
"name": "YouTube動画",
"type": "youtubeVideo",
"videoId": "dQw4w9WgXcQ",
"enableTriggerOnVideoStart": true,
"enableTriggerOnVideoComplete": true
}
创建主要变量类型
数据层变量
{
"name": "データレイヤー変数",
"type": "v",
"parameter": [
{
"type": "template",
"key": "dataLayerVersion",
"value": "2"
},
{
"type": "template",
"key": "dataLayerVariable",
"value": "event"
}
]
}
JavaScript変数
{
"name": "JavaScript変数",
"type": "j",
"parameter": [
{
"type": "template",
"key": "javascript",
"value": "function() {\n return document.title;\n}"
}
]
}
DOM要素変数
{
"name": "DOM要素変数",
"type": "d",
"parameter": [
{
"type": "template",
"key": "selector",
"value": "#element-id"
},
{
"type": "template",
"key": "attributeName",
"value": "data-value"
}
]
}
Cookie変数
{
"name": "Cookie変数",
"type": "k",
"parameter": [
{
"type": "template",
"key": "cookieName",
"value": "session_id"
}
]
}
开発
以开发模式运行
npm run dev
以正常模式运行
npm start
运行测试
运行所有测试(更新测试):
npm test
运行单个测试:
npm run test:auth # 認証テスト
npm run test:accounts # アカウント一覧取得テスト
npm run test:gtm # 基本GTMテスト
npm run test:details # 詳細情報取得テスト
npm run test:trigger # linkClickトリガー作成テスト
npm run test:filter # filter/autoEventFilterテスト
npm run test:detailed-filters # 詳細フィルタ設定テスト
也可以直接运行测试文件:
node run-all-tests.js # すべてのテストを実行
node test-auth.js # 認証テスト
node test-accounts.js # アカウント一覧取得テスト
# ... など
容器确认实用程序
公开ID(GTM-XXXXXX)中查找帐户ID、容器ID的CLI。在授权或MCP操作之前,可以在确定对象容器时使用。
node check-container.js GTM-M6KP89G
# または
npm run check-container -- GTM-M6KP89G
输出内容:帐户信息、容器概览详细信息、工作区列表、起始工作区审核信息(get_workspace_review_info 相当)。
注意事项
- 此服务器通过标准输入/输出(stdio)进行通信
- 请注意谷歌Tag Manager API的汇率限制
- 请安全管理OAuth2凭据(客户端ID、客户端密码)
- 认证令牌
~/.gtm-mcp-token.json将条目添加到文档注册表.gitignore),模板名称将采用不同的格式 - 自动使用刷新标记,并在访问标记过期之前更新
许可证
麻省理工学院
