npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

mcp-google-tagmanager

v1.2.0

Published

MCP server for the Google Tag Manager API v2 — accounts, containers, workspaces, tags, triggers, variables, versions and publishing. For Claude, Cursor, Codex and other AI clients.

Readme

Google Tag Manager MCP

English | Русский

npm CI Glama License: MIT

A1 Google Tag Manager MCP позволяет AI-приложению проверять и настраивать контейнеры Google Tag Manager на естественном языке. Можно увидеть, что срабатывает на странице, подготовить теги, триггеры и переменные в черновом рабочем пространстве, а затем осознанно собрать и опубликовать версию.

Сервер подключается к Google Tag Manager API v2 через ваш аккаунт Google. В отличие от догадки AI о настройке GTM, он работает с выбранными вами настоящими контейнером, рабочим пространством и версией.

  • 25 инструментов. 10 операций только читают данные GTM; 4 создают черновики или меняют встроенные переменные; 5 могут изменить, удалить, собрать или опубликовать конфигурацию.
  • Подключение из диалога. Скажите «подключи Google Tag Manager»: сервер проведёт через создание OAuth-клиента, поймает редирект Google на 127.0.0.1 с PKCE и сам сохранит токены — без конфигов и перезапуска.
  • Сначала черновик. Теги, триггеры и переменные создаются в рабочем пространстве. Публикация — отдельная явно разрушительная операция.
  • С учётом квоты. GTM разрешает 0,25 запроса в секунду на проект; сервер делает паузу не менее 4,2 секунды между запросами, а не перегружает API.
  • Ваш доступ Google. Сервер использует ваши OAuth-данные и запрашивает только scope GTM, нужные для чтения, редактирования, версий и публикации.

Начните с запроса, который только читает данные:

Какие теги в моих контейнерах срабатывают по триггеру просмотра страницы?

Подключить сервер · Посмотреть сценарии · Открыть техническую документацию


Увидеть работу за минуту

Вы: Покажи мои контейнеры GTM и теги, которые срабатывают при просмотре страницы.

Ассистент: Показывает контейнеры, их рабочие пространства, подходящие триггеры и привязанные теги. Ничего не меняется.

Вы: В Default Workspace контейнера GTM-ABC123 подготовь GA4 configuration tag для measurement ID G-XXXXXXX на всех страницах.

Ассистент: Показывает рабочее пространство, предлагаемые настройки тега и триггера, затем запрашивает подтверждение перед созданием черновика.

Вы: Подтверждаю черновик.

Ассистент: Создаёт тег в рабочем пространстве. Контейнер не публикуется: сборка и публикация версии остаются отдельным шагом.

Содержание

Быстрый старт

Нужны Node.js 20+ и Google-аккаунт. Учётные данные при установке не нужны: сервер подключается прямо в диалоге.

  1. Добавьте сервер в AI-приложение.
  2. Скажите «подключи Google Tag Manager» — ассистент проведёт создание OAuth-клиента и выдачу доступа, не трогая конфиги.
  3. Начните с запроса, который только читает данные.

В приложении:

  1. Откройте Settings → MCP servers.
  2. Нажмите Add server.
  3. Выберите STDIO, затем укажите npx -y mcp-google-tagmanager@latest и три переменные окружения ниже.

| Переменная | Значение | |---|---| | GOOGLE_TAGMANAGER_CLIENT_ID | Ваш Google OAuth client ID | | GOOGLE_TAGMANAGER_CLIENT_SECRET | Ваш Google OAuth client secret | | GOOGLE_TAGMANAGER_REFRESH_TOKEN | Ваш Google OAuth refresh token |

  1. Нажмите Save, затем Restart.

В командной строке:

codex mcp add google-tagmanager \
  -- npx -y mcp-google-tagmanager@latest
codex mcp list

Документация Codex MCP

claude mcp add \
  --transport stdio \
  --scope user \
  google-tagmanager \
  -- npx -y mcp-google-tagmanager@latest
claude mcp list

Документация Claude Code MCP

Актуальный официальный путь — Settings → Extensions. Для пользовательского desktop extension откройте Advanced settings → Extension Developer → Install Extension…, выберите файл .mcpb и следуйте подсказкам.

Этот репозиторий сейчас публикует npm-пакет со stdio и пока не содержит .mcpb. Поэтому используйте приведённый ниже JSON stdio-конфиг как fallback только в сборках Claude Desktop, где ещё поддерживается локальная конфигурация:

{
  "mcpServers": {
    "google-tagmanager": {
      "command": "npx",
      "args": ["-y", "mcp-google-tagmanager@latest"]
    }
  }
}

В таких сборках сохраните его в ~/Library/Application Support/Claude/claude_desktop_config.json на macOS или %APPDATA%\Claude\claude_desktop_config.json на Windows.

Документация Claude Desktop MCP

Добавьте сервер уровня пользователя в ~/.cursor/mcp.json на macOS/Linux или в %USERPROFILE%\.cursor\mcp.json на Windows:

{
  "mcpServers": {
    "google-tagmanager": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-google-tagmanager@latest"]
    }
  }
}

Документация Cursor MCP

Запустите MCP: Open User Configuration из Command Palette и добавьте:

{
  "servers": {
    "google-tagmanager": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-google-tagmanager@latest"]
    }
  }
}

Проверьте сервер командой MCP: List Servers.

Документация VS Code MCP

Что можно поручить

Понять текущую настройку

  • Покажи доступные мне аккаунты и контейнеры GTM.
  • Какие теги срабатывают при просмотре страницы в этом рабочем пространстве?
  • Покажи настройки триггера и переменных для этого тега.
  • Какие встроенные переменные включены?

Подготовить изменение аналитики в черновике

  • Создай рабочее пространство для изменения отслеживания checkout.
  • Подготовь GA4-тег и триггер для нужного события.
  • Включи переменные клика, необходимые для этого триггера.
  • Обнови этот тег, сначала показав мне полную конфигурацию для замены.

Осознанно выпустить версию

  • Собери из этого рабочего пространства версию с названием April release.
  • Покажи ошибки компилятора, если они есть.
  • Опубликуй версию 42 после моего подтверждения версии и её изменений.

Как связаны изменения GTM

В GTM есть понятный путь выпуска:

  1. В аккаунте находятся один или несколько контейнеров.
  2. У контейнера есть рабочие пространства для черновых изменений.
  3. Теги, триггеры и переменные принадлежат рабочему пространству.
  4. Сборка рабочего пространства создаёт версию контейнера и удаляет исходное рабочее пространство. GTM создаёт замену.
  5. Публикация делает выбранную версию контейнера рабочей.

Сервер умеет проверить каждый шаг. Он не приравнивает черновик к выпуску: создание версии и публикация — разные операции.

Что может измениться

| Операция | Что происходит | Граница подтверждения | |---|---|---| | Просмотр аккаунтов, контейнеров, пространств, тегов, триггеров, переменных и версий | Читает конфигурацию GTM | Ничего не меняет | | Создание контейнера или рабочего пространства | Добавляет объект GTM | Меняет GTM | | Создание тега, триггера или переменной | Добавляет черновой объект в пространство | Меняет черновое пространство | | Включение или выключение встроенных переменных | Меняет конфигурацию пространства | Меняет черновое пространство | | Обновление тега, триггера или переменной | Полностью заменяет ресурс, защищённый fingerprint | Потенциально разрушительно | | Удаление тега, триггера или переменной | Удаляет выбранный объект | Разрушительно | | Сборка рабочего пространства | Создаёт версию и удаляет исходное пространство | Разрушительно | | Публикация версии | Делает выбранную версию рабочей | Разрушительно | | Технический запрос API | Может вызвать метод API без отдельного инструмента | Потенциально разрушительно |

То, как AI-приложение запрашивает подтверждение, определяет само приложение. Сервер помечает операции как read-only, write и destructive, чтобы оно могло отличить проверку от реального изменения.

Как получить доступ

Google Tag Manager требует OAuth 2.0: одного API-ключа недостаточно. Путей два, и первый не требует править конфигурационные файлы.

Подключение из диалога (рекомендуемый путь)

Скажите «подключи Google Tag Manager», и ассистент пройдёт флоу вместе с вами:

  1. setup_instructions выдаёт чек-лист: создать или выбрать проект Google Cloud, включить Tag Manager API, настроить consent screen и создать OAuth-клиент типа Desktop app.
  2. Скачайте JSON этого клиента («Download JSON») и передайте ассистенту путь к файлу — set_client сохранит его с правами только для владельца. Секрет через переписку не проходит.
  3. start_login возвращает ссылку на согласие Google. Откройте её на этой же машине и подтвердите доступ: код возвращается на одноразовый слушатель 127.0.0.1 (PKCE), а не в чат.
  4. finish_login меняет код на токены и кладёт их в ~/.config/mcp-google-tagmanager/credentials.json (права 0600) и проверяет их реальным вызовом Tag Manager API — так невключённый API ловится сразу.

Токены перечитываются на каждый вызов, поэтому подключение действует немедленно — перезапускать AI-приложение не нужно. auth_status показывает состояние, logout отзывает токен и удаляет его.

Переменные окружения (CI и автоматические установки)

  1. Создайте или выберите проект Google Cloud и включите Tag Manager API. Проект без включённого API не получает квоту.

  2. Настройте OAuth consent screen и создайте OAuth-клиент. Для локальной работы подходит тип Desktop app.

  3. Авторизуйте свой Google-аккаунт и получите refresh token. Это можно сделать через OAuth 2.0 Playground, если включить Use your own OAuth credentials.

  4. Запросите все scope вместе:

    https://www.googleapis.com/auth/tagmanager.readonly
    https://www.googleapis.com/auth/tagmanager.edit.containers
    https://www.googleapis.com/auth/tagmanager.edit.containerversions
    https://www.googleapis.com/auth/tagmanager.publish

Scope разделены: для чтения, редактирования, сборки версии и публикации требуется соответствующее разрешение. Храните client secret и refresh token как пароли.

Конфигурация

Все переменные необязательные — без единой из них сервер подключается из диалога.

| Переменная | Обязательна | Описание | |---|---|---| | GOOGLE_TAGMANAGER_CLIENT_ID | Нет* | OAuth client ID. | | GOOGLE_TAGMANAGER_CLIENT_SECRET | Нет* | OAuth client secret. | | GOOGLE_TAGMANAGER_REFRESH_TOKEN | Нет* | OAuth refresh token. | | GOOGLE_TAGMANAGER_ACCESS_TOKEN | Нет* | Короткоживущая альтернатива OAuth-тройке. | | GOOGLE_TAGMANAGER_OAUTH_PORT | Нет | Фиксированный порт loopback-слушателя для входа из диалога; нужен при пробросе портов по SSH. | | GOOGLE_TAGMANAGER_API_BASE | Нет | Переопределяет базовый URL Tag Manager API. | | GOOGLE_TAGMANAGER_TIMEOUT_MS | Нет | Тайм-аут запроса; по умолчанию 60000 мс. | | GOOGLE_TAGMANAGER_MAX_RETRIES | Нет | Максимум повторов при временных ошибках; по умолчанию 3. | | GOOGLE_TAGMANAGER_MIN_INTERVAL_MS | Нет | Минимальная пауза между запросами; по умолчанию 4200 мс. |

* Передайте либо OAuth-тройку, либо access token. Access token истекает примерно через час и автоматически не обновляется.

Данные и телеметрия

Сервер работает локально и отправляет запросы GTM API и OAuth refresh requests в Google. Анонимная телеметрия содержит случайный ID установки, версию пакета, версии AI-клиента, Node.js и операционной системы, а также имена инструментов. OAuth-токены, данные GTM, аргументы инструментов и промпты не отправляются.

Отключить телеметрию для MCP-серверов A1 можно так:

ASKADS_TELEMETRY=0

Ограничения и работа в фоне

  • GTM ограничивает частоту. API разрешает 0,25 запроса в секунду на проект, поэтому сервер выполняет запросы с интервалом не менее 4,2 секунды. Широкая проверка может занять время.
  • Временные лимиты обрабатываются осторожно. Ответы 429 и quota 403 от Google обрабатываются с экспоненциальной задержкой и Retry-After. Чтение повторяется после сетевых и 5xx ошибок; запись после неопределённой ошибки не повторяется.
  • Постоянного наблюдения нет. Сервер работает только во время вызова из AI-приложения. Если приложение поддерживает задания по расписанию, оно может периодически проверять контейнер или его рабочую версию.
  • Рабочее пространство исчезает при сборке. Перед create_version сохраните нужные данные и проверьте путь к созданному GTM пространству-замене.

Техническая документация

Поддержка

Нашли ошибку или не хватает сценария? Создайте issue или напишите в Telegram.