Skip to main content
Glama
ambit1977

Google Tag Manager MCP Server

by ambit1977

Google Tag Manager MCP Server

Google Tag Managerを操作するためのMCP(Model Context Protocol)サーバーです。Macローカル環境で動作します。

機能

このMCPサーバーは以下のGoogle Tag Manager操作を提供します:

  • アカウント管理: アカウント一覧の取得

  • コンテナ管理: コンテナの一覧取得、詳細取得、作成

  • ワークスペース管理: ワークスペースの一覧取得、詳細取得

  • タグ管理: タグの一覧取得、作成、更新、削除

  • トリガー管理: トリガーの一覧取得、作成

  • 変数管理: 変数の一覧取得、作成

  • バージョン管理: バージョンの作成(公開準備)

セットアップ

1. 依存関係のインストール

npm install

2. Google Cloud OAuth2認証情報の設定

Google Tag Manager APIを使用するには、OAuth2認証情報が必要です。

  1. Google Cloud Consoleでプロジェクトを作成

  2. APIとサービス > 認証情報 に移動

  3. 認証情報を作成 > OAuth クライアント ID を選択

  4. アプリケーションの種類で デスクトップアプリ を選択

  5. 名前を入力して作成

  6. クライアントIDクライアントシークレット をコピー

  7. APIとサービス > ライブラリTag Manager API を有効化

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. 初回認証

MCPサーバーを起動後、以下の手順で認証を行います:

  1. get_auth_urlツールを使用して認証URLを取得

  2. ブラウザで認証URLにアクセス

  3. Googleアカウントでログインし、権限を承認

  4. リダイレクト先のURLから認証コードを取得(code=の後の値)

  5. authenticateツールに認証コードを渡して認証を完了

認証情報は ~/.gtm-mcp-token.json に保存され、次回以降は自動的に使用されます。

使用方法

MCPクライアントとして設定

CursorなどのMCPクライアントで、このサーバーを設定します。

設定例(~/.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サーバーを再起動する方法は以下の通りです:

  1. Cursorを再起動する(最も確実な方法)

    • Cursorを完全に終了(Cmd + Q)してから再起動

  2. MCP設定ファイルを編集して保存する

    • ~/.cursor/mcp.json を開き、コメントやスペースを追加・削除して保存

    • Cursorが設定変更を検知してMCPサーバーを再起動することがあります

  3. コマンドパレットから再起動する(Cursorのバージョンによる)

    • Cmd + Shift + P(Mac)または Ctrl + Shift + P(Windows/Linux)でコマンドパレットを開く

    • 「MCP」や「reload」などのキーワードで検索し、MCPサーバー再起動コマンドを実行

注意: 現在のCursorのバージョンでは、MCP設定ファイルの編集による再起動が最も簡単な方法です。

利用可能なツール

認証操作

  • get_auth_url: OAuth2認証URLを取得

  • authenticate: 認証コードを使用して認証を完了

  • check_auth_status: 現在の認証状態を確認

  • reset_auth: 保存された認証情報をリセット

アカウント操作

  • list_accounts: アカウント一覧を取得

コンテナ操作

  • list_containers: コンテナ一覧を取得

  • get_container: コンテナの詳細を取得

  • create_container: 新しいコンテナを作成

ワークスペース操作

  • list_workspaces: ワークスペース一覧を取得

  • get_workspace: ワークスペースの詳細を取得

タグ操作

  • list_tags: タグ一覧を取得

  • get_tag: タグの詳細を取得

  • create_tag: 新しいタグを作成

  • update_tag: 既存のタグを更新(すべてのパラメータを更新可能)

  • delete_tag: タグを削除

    • サポートする主要なタグタイプ:

      • googtag: GA4設定タグ

      • gaawe: GA4イベントタグ

      • awct: Google広告コンバージョントラッキング

      • 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: リンククリックトリガー(filterautoEventFilterwaitForTagsなどを使用)

      • click: クリックトリガー(filterを使用)

      • formSubmission: フォーム送信トリガー(formIdformClassesを使用)

      • scrollDepth: スクロール深度トリガー(verticalThresholdhorizontalThresholdを使用)

      • visible / elementVisibility: 要素の表示トリガー(selectorvisiblePercentageThresholdを使用)

      • youtubeVideo: YouTube動画トリガー(videoId、各種enableTriggerOnVideo*を使用)

      • timer: タイマートリガー(intervallimitstartTimerOnを使用)

変数操作

  • 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: ワークスペースの変更をバージョンとして作成

使用例

主要なタグタイプの作成

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"] }
Google広告コンバージョントラッキング
{ "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"] }

主要なトリガータイプの作成

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

既存のトリガーに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 }
elementVisibilityトリガーの作成
{ "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" } ] }
{ "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)経由で通信します

  • Google Tag Manager APIのレート制限に注意してください

  • OAuth2認証情報(クライアントID、クライアントシークレット)は安全に管理してください

  • 認証トークンは ~/.gtm-mcp-token.json に保存されます(.gitignoreに含まれています)

  • リフレッシュトークンは自動的に使用され、アクセストークンが期限切れになる前に更新されます

ライセンス

MIT

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ambit1977/GTM-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server