Skip to main content
Glama
ambit1977

Google Tag Manager MCP Server

by ambit1977

get_auth_url

Obtain the OAuth2 authentication URL to authorize access for managing Google Tag Manager accounts, containers, tags, and configurations.

Instructions

OAuth2認証URLを取得します。このURLにアクセスして認証を完了してください。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • MCP server tool handler for 'get_auth_url'. Retrieves OAuth2Auth instance from GTMClient and calls getAuthUrl() to generate and return the authorization URL with instructions.
    case 'get_auth_url': {
      const oauth2Auth = this.gtmClient.getOAuth2Auth();
      const authUrl = oauth2Auth.getAuthUrl();
      return {
        content: [
          {
            type: 'text',
            text: JSON.stringify({
              authUrl: authUrl,
              instructions: 'このURLにアクセスして認証を完了してください。認証後、リダイレクト先のURLから「code=」の後の認証コードをコピーし、authenticateツールで使用してください。'
            }, null, 2),
          },
        ],
      };
    }
  • Tool schema definition for 'get_auth_url' including name, description, and empty input schema (no parameters required).
      name: 'get_auth_url',
      description: 'OAuth2認証URLを取得します。このURLにアクセスして認証を完了してください。',
      inputSchema: {
        type: 'object',
        properties: {},
      },
    },
  • Core OAuth2Auth class method that generates the Google OAuth2 authorization URL using googleapis library.
    getAuthUrl() {
      return this.oAuth2Client.generateAuthUrl({
        access_type: 'offline',
        scope: this.scopes,
        prompt: 'consent' // リフレッシュトークンを確実に取得するため
      });
    }
  • GTMClient method that provides access to the OAuth2Auth instance used by the tool handler.
    getOAuth2Auth() {
      return this.oauth2Auth;
    }
  • src/index.js:34-858 (registration)
    Registration of all tools list including 'get_auth_url' schema in the MCP ListToolsRequestSchema handler.
    this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
      tools: [
        {
          name: 'get_auth_url',
          description: 'OAuth2認証URLを取得します。このURLにアクセスして認証を完了してください。',
          inputSchema: {
            type: 'object',
            properties: {},
          },
        },
        {
          name: 'authenticate',
          description: '認証コードを使用して認証を完了します。get_auth_urlで取得したURLにアクセスし、リダイレクト先のURLから認証コードを取得して使用してください。',
          inputSchema: {
            type: 'object',
            properties: {
              code: {
                type: 'string',
                description: 'OAuth2認証コード(リダイレクト先のURLの「code=」の後の値)',
              },
            },
            required: ['code'],
          },
        },
        {
          name: 'check_auth_status',
          description: '現在の認証状態を確認します',
          inputSchema: {
            type: 'object',
            properties: {},
          },
        },
        {
          name: 'reset_auth',
          description: '保存された認証情報をリセットします',
          inputSchema: {
            type: 'object',
            properties: {},
          },
        },
        {
          name: 'list_accounts',
          description: 'Google Tag Managerのアカウント一覧を取得します',
          inputSchema: {
            type: 'object',
            properties: {},
          },
        },
        {
          name: 'list_containers',
          description: '指定されたアカウントのコンテナ一覧を取得します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
            },
            required: ['accountId'],
          },
        },
        {
          name: 'get_container',
          description: '指定されたコンテナの詳細を取得します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
            },
            required: ['accountId', 'containerId'],
          },
        },
        {
          name: 'create_container',
          description: '新しいコンテナを作成します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              name: {
                type: 'string',
                description: 'コンテナ名',
              },
              usageContext: {
                type: 'array',
                items: {
                  type: 'string',
                  enum: ['web', 'android', 'ios', 'amp'],
                },
                description: '使用コンテキスト(例: ["web"])',
              },
            },
            required: ['accountId', 'name', 'usageContext'],
          },
        },
        {
          name: 'list_workspaces',
          description: '指定されたコンテナのワークスペース一覧を取得します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
            },
            required: ['accountId', 'containerId'],
          },
        },
        {
          name: 'get_workspace',
          description: '指定されたワークスペースの詳細を取得します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId'],
          },
        },
        {
          name: 'list_tags',
          description: '指定されたワークスペースのタグ一覧を取得します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId'],
          },
        },
        {
          name: 'get_tag',
          description: '指定されたタグの詳細を取得します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
              tagId: {
                type: 'string',
                description: 'タグID',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId', 'tagId'],
          },
        },
        {
          name: 'create_tag',
          description: '新しいタグを作成します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
              name: {
                type: 'string',
                description: 'タグ名',
              },
              type: {
                type: 'string',
                description: 'タグタイプ(例: "googtag"=GA4設定, "gaawe"=GA4イベント, "awct"=Google広告コンバージョン, "html"=カスタムHTML, "img"=カスタム画像, "fbq"=Facebookピクセル, "ua"=Universal Analyticsなど)',
              },
              parameter: {
                type: 'array',
                description: 'タグのパラメータ配列',
                items: {
                  type: 'object',
                  properties: {
                    type: {
                      type: 'string',
                      description: 'パラメータタイプ',
                    },
                    key: {
                      type: 'string',
                      description: 'パラメータキー',
                    },
                    value: {
                      type: 'string',
                      description: 'パラメータ値',
                    },
                  },
                },
              },
              firingTriggerId: {
                type: 'array',
                items: {
                  type: 'string',
                },
                description: '発火トリガーIDの配列',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId', 'name', 'type'],
          },
        },
        {
          name: 'update_tag',
          description: '既存のタグを更新します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
              tagId: {
                type: 'string',
                description: 'タグID',
              },
              name: {
                type: 'string',
                description: 'タグ名',
              },
              type: {
                type: 'string',
                description: 'タグタイプ',
              },
              parameter: {
                type: 'array',
                description: 'タグのパラメータ配列',
              },
              firingTriggerId: {
                type: 'array',
                items: {
                  type: 'string',
                },
                description: '発火トリガーIDの配列',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId', 'tagId'],
          },
        },
        {
          name: 'delete_tag',
          description: 'タグを削除します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
              tagId: {
                type: 'string',
                description: 'タグID',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId', 'tagId'],
          },
        },
        {
          name: 'list_triggers',
          description: '指定されたワークスペースのトリガー一覧を取得します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId'],
          },
        },
        {
          name: 'get_trigger',
          description: '指定されたトリガーの詳細を取得します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
              triggerId: {
                type: 'string',
                description: 'トリガーID',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId', 'triggerId'],
          },
        },
        {
          name: 'update_trigger',
          description: '既存のトリガーを更新します。filter、autoEventFilter、waitForTagsなどのすべての設定を更新できます。',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
              triggerId: {
                type: 'string',
                description: 'トリガーID',
              },
              name: {
                type: 'string',
                description: 'トリガー名',
              },
              type: {
                type: 'string',
                description: 'トリガータイプ',
              },
              customEventFilter: {
                type: 'array',
                description: 'カスタムイベントフィルタ(CUSTOM_EVENTタイプ用)',
              },
              filter: {
                type: 'array',
                description: 'フィルタ(linkClick、clickなどのタイプ用)',
              },
              autoEventFilter: {
                type: 'array',
                description: '自動イベントフィルタ(linkClickタイプ用)',
              },
              waitForTags: {
                type: 'boolean',
                description: 'タグの待機を有効化(linkClickタイプ用)',
              },
              checkValidation: {
                type: 'boolean',
                description: 'バリデーションチェック(linkClickタイプ用)',
              },
              waitForTagsTimeout: {
                type: 'number',
                description: 'タグ待機タイムアウト(ミリ秒、linkClickタイプ用)',
              },
              // formSubmission用
              formId: {
                type: 'string',
                description: 'フォームID(formSubmissionタイプ用)',
              },
              formClasses: {
                type: 'string',
                description: 'フォームクラス(formSubmissionタイプ用)',
              },
              // scrollDepth用
              verticalThreshold: {
                type: 'number',
                description: '垂直スクロール閾値(パーセント、scrollDepthタイプ用)',
              },
              horizontalThreshold: {
                type: 'number',
                description: '水平スクロール閾値(パーセント、scrollDepthタイプ用)',
              },
              // elementVisibility用
              selector: {
                type: 'string',
                description: 'CSSセレクタ(elementVisibilityタイプ用)',
              },
              visiblePercentageThreshold: {
                type: 'number',
                description: '表示割合閾値(パーセント、elementVisibilityタイプ用)',
              },
              continuousTimeMinMilliseconds: {
                type: 'number',
                description: '連続表示時間(ミリ秒、elementVisibilityタイプ用)',
              },
              // youtubeVideo用
              videoId: {
                type: 'string',
                description: 'YouTube動画ID(youtubeVideoタイプ用)',
              },
              enableTriggerOnVideoStart: {
                type: 'boolean',
                description: '動画開始時に発火(youtubeVideoタイプ用)',
              },
              enableTriggerOnVideoProgress: {
                type: 'boolean',
                description: '動画再生中に発火(youtubeVideoタイプ用)',
              },
              enableTriggerOnVideoComplete: {
                type: 'boolean',
                description: '動画完了時に発火(youtubeVideoタイプ用)',
              },
              enableTriggerOnVideoPause: {
                type: 'boolean',
                description: '動画一時停止時に発火(youtubeVideoタイプ用)',
              },
              enableTriggerOnVideoSeek: {
                type: 'boolean',
                description: '動画シーク時に発火(youtubeVideoタイプ用)',
              },
              // timer用
              interval: {
                type: 'number',
                description: 'インターバル(ミリ秒、timerタイプ用)',
              },
              limit: {
                type: 'number',
                description: '発火回数の上限(timerタイプ用)',
              },
              startTimerOn: {
                type: 'string',
                description: 'タイマー開始タイミング(timerタイプ用、例: "windowLoad", "domReady")',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId', 'triggerId'],
          },
        },
        {
          name: 'delete_trigger',
          description: 'トリガーを削除します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
              triggerId: {
                type: 'string',
                description: 'トリガーID',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId', 'triggerId'],
          },
        },
        {
          name: 'create_trigger',
          description: '新しいトリガーを作成します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
              name: {
                type: 'string',
                description: 'トリガー名',
              },
              type: {
                type: 'string',
                description: 'トリガータイプ(例: "PAGEVIEW", "CLICK", "CUSTOM_EVENT", "linkClick"など)',
              },
              customEventFilter: {
                type: 'array',
                description: 'カスタムイベントフィルタ(CUSTOM_EVENTタイプ用)',
              },
              filter: {
                type: 'array',
                description: 'フィルタ(linkClick、clickなどのタイプ用)',
              },
              autoEventFilter: {
                type: 'array',
                description: '自動イベントフィルタ(linkClickタイプ用)',
              },
              waitForTags: {
                type: 'boolean',
                description: 'タグの待機を有効化(linkClickタイプ用)',
              },
              checkValidation: {
                type: 'boolean',
                description: 'バリデーションチェック(linkClickタイプ用)',
              },
              waitForTagsTimeout: {
                type: 'number',
                description: 'タグ待機タイムアウト(ミリ秒、linkClickタイプ用)',
              },
              // formSubmission用
              formId: {
                type: 'string',
                description: 'フォームID(formSubmissionタイプ用)',
              },
              formClasses: {
                type: 'string',
                description: 'フォームクラス(formSubmissionタイプ用)',
              },
              // scrollDepth用
              verticalThreshold: {
                type: 'number',
                description: '垂直スクロール閾値(パーセント、scrollDepthタイプ用)',
              },
              horizontalThreshold: {
                type: 'number',
                description: '水平スクロール閾値(パーセント、scrollDepthタイプ用)',
              },
              // elementVisibility用
              selector: {
                type: 'string',
                description: 'CSSセレクタ(elementVisibilityタイプ用)',
              },
              visiblePercentageThreshold: {
                type: 'number',
                description: '表示割合閾値(パーセント、elementVisibilityタイプ用)',
              },
              continuousTimeMinMilliseconds: {
                type: 'number',
                description: '連続表示時間(ミリ秒、elementVisibilityタイプ用)',
              },
              // youtubeVideo用
              videoId: {
                type: 'string',
                description: 'YouTube動画ID(youtubeVideoタイプ用)',
              },
              enableTriggerOnVideoStart: {
                type: 'boolean',
                description: '動画開始時に発火(youtubeVideoタイプ用)',
              },
              enableTriggerOnVideoProgress: {
                type: 'boolean',
                description: '動画再生中に発火(youtubeVideoタイプ用)',
              },
              enableTriggerOnVideoComplete: {
                type: 'boolean',
                description: '動画完了時に発火(youtubeVideoタイプ用)',
              },
              enableTriggerOnVideoPause: {
                type: 'boolean',
                description: '動画一時停止時に発火(youtubeVideoタイプ用)',
              },
              enableTriggerOnVideoSeek: {
                type: 'boolean',
                description: '動画シーク時に発火(youtubeVideoタイプ用)',
              },
              // timer用
              interval: {
                type: 'number',
                description: 'インターバル(ミリ秒、timerタイプ用)',
              },
              limit: {
                type: 'number',
                description: '発火回数の上限(timerタイプ用)',
              },
              startTimerOn: {
                type: 'string',
                description: 'タイマー開始タイミング(timerタイプ用、例: "windowLoad", "domReady")',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId', 'name', 'type'],
          },
        },
        {
          name: 'list_variables',
          description: '指定されたワークスペースの変数一覧を取得します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId'],
          },
        },
        {
          name: 'get_variable',
          description: '指定された変数の詳細を取得します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
              variableId: {
                type: 'string',
                description: '変数ID',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId', 'variableId'],
          },
        },
        {
          name: 'create_variable',
          description: '新しい変数を作成します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
              name: {
                type: 'string',
                description: '変数名',
              },
              type: {
                type: 'string',
                description: '変数タイプ(例: "c"=定数, "v"=データレイヤー, "j"=JavaScript, "d"=DOM要素, "k"=Cookie, "u"=URL, "ae"=自動イベント, "b"=組み込み変数など)',
              },
              parameter: {
                type: 'array',
                description: '変数のパラメータ配列。タイプに応じて必要なパラメータを設定してください。',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId', 'name', 'type'],
          },
        },
        {
          name: 'update_variable',
          description: '既存の変数を更新します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
              variableId: {
                type: 'string',
                description: '変数ID',
              },
              name: {
                type: 'string',
                description: '変数名',
              },
              type: {
                type: 'string',
                description: '変数タイプ',
              },
              parameter: {
                type: 'array',
                description: '変数のパラメータ配列',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId', 'variableId'],
          },
        },
        {
          name: 'delete_variable',
          description: '変数を削除します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
              variableId: {
                type: 'string',
                description: '変数ID',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId', 'variableId'],
          },
        },
        {
          name: 'create_version',
          description: 'ワークスペースの変更をバージョンとして作成(公開準備)します',
          inputSchema: {
            type: 'object',
            properties: {
              accountId: {
                type: 'string',
                description: 'アカウントID',
              },
              containerId: {
                type: 'string',
                description: 'コンテナID',
              },
              workspaceId: {
                type: 'string',
                description: 'ワークスペースID',
              },
              name: {
                type: 'string',
                description: 'バージョン名(オプション)',
              },
              notes: {
                type: 'string',
                description: 'バージョンノート(オプション)',
              },
            },
            required: ['accountId', 'containerId', 'workspaceId'],
          },
        },
      ],
    }));

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