谷歌标签管理器MCP服务器
用于操作谷歌Tag Manager的MCP(Model Context Protocol)服务器。在Mac本地环境中运行。
机能
此MCP服务器提供以下谷歌Tag Manager操作:
- 帐户管理:获取、高级和更新帐户列表
- 用户权限管理:用户权限的一览取得、详细取得、制作、更新、删除(tagmanager.manage.users范围需要、需要再认证)
- 容器管理:获取、获取、创建、更新和删除容器列表
- 工作区管理:工作区列表检索、高级检索、创建、更新、删除、同步和快速预览
- 标签管理:检索、高级检索、创建、更新和删除标记
- 触发器管理:列出、高级、创建、更新和删除触发器
- 変数管理:变数の一覧取得、详细取得、作成、更新、削除
- 版本控制:获取版本列表、获取详细信息、创建(准备发布)、发布
安装,安装
1.安装相关性
npm install2. 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),然后重新启动
- 编辑并保存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:获取工作区详细信息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)
触发操作
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:发布版本
使用例
创建主要标记类型
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 # アカウント一覧取得テスト
# ... など注意事项
- 此服务器通过标准输入/输出(stdio)进行通信
- 请注意谷歌Tag Manager API的汇率限制
- 请安全管理OAuth2凭据(客户端ID、客户端密码)
- 认证令牌
~/.gtm-mcp-token.json将条目添加到文档注册表.gitignore),模板名称将采用不同的格式 - 自动使用刷新标记,并在访问标记过期之前更新
许可证
麻省理工学院
