Google Tag Manager MCP
This server provides AI assistants natural-language access to Google Tag Manager (GTM) API v2, enabling full management of accounts, containers, workspaces, tags, triggers, variables, built-in variables, and version publishing. You can list, get, create, update (full replace with fingerprint safety), and delete tags, triggers, and variables; manage built-in variables (enable/disable); create container versions (compiling and deleting the workspace) and publish them. It supports generic resource retrieval by API path and raw API calls for any endpoint not covered by dedicated tools (e.g., environments, folders, templates). Built-in features include rate limiting to GTM's 0.25 QPS with automatic request spacing, exponential backoff retries for 429/5xx errors, OAuth 2.0 token refresh, and compiler error detection.
Provides tools to manage Google Tag Manager entities such as accounts, containers, workspaces, tags, triggers, variables, and versions, including compiling and publishing versions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Tag Manager MCPWhich tags fire on the page view trigger in container GTM-ABC123?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Tag Manager MCP
English | Русский
A1 Google Tag Manager MCP lets an AI app inspect and manage Google Tag Manager containers in plain language. See what fires on a page, work with tags, triggers and variables in a draft workspace, then deliberately compile and publish a version when you are ready.
It connects to the Google Tag Manager API v2 through your Google account. The difference from asking an AI to guess a GTM setup is that it works with the actual container, workspace and version you choose.
19 tools. 10 operations only read GTM data; 4 create drafts or change built-in variables; 5 can alter, delete, compile or publish live configuration.
Draft first. Tags, triggers and variables are created in a workspace. Publishing is a separate, explicitly destructive operation.
Quota-aware. GTM permits 0.25 requests per second per project; the server spaces requests by at least 4.2 seconds instead of overwhelming the API.
Your Google access. The server uses your OAuth credentials and requests only the Tag Manager scopes needed for reading, editing, versioning and publishing.
Start with a read-only question:
Which tags in my containers fire on the page-view trigger?
Connect the server · Explore use cases · Open technical documentation
See it work in a minute
You: List my GTM containers and show which tags fire on page view.
Assistant: Lists the containers, their workspaces, relevant triggers and the tags attached to them. Nothing changes.
You: In the Default Workspace of
GTM-ABC123, prepare a GA4 configuration tag for measurement IDG-XXXXXXXon all pages.Assistant: Shows the workspace, proposed tag and trigger configuration, then asks for confirmation before creating the draft.
You: Confirm the draft.
Assistant: Creates the tag in the workspace. It does not publish the container; compiling and publishing a version remains a separate step.
Related MCP server: unboundai-gtm-mcp-server
Contents
Quick start
You need Node.js 20+, a Google account with access to a GTM container and OAuth credentials from a Google Cloud project where the Tag Manager API is enabled.
Add the server to your AI app.
Start with the read-only question above.
In the app:
Open Settings → Plugins → MCP servers.
Select Add server.
Add
npx -y mcp-google-tagmanager@latestand the three environment variables below.
Variable | Value |
| Your Google OAuth client ID |
| Your Google OAuth client secret |
| Your Google OAuth refresh token |
From the command line:
codex mcp add google-tagmanager \
--env GOOGLE_TAGMANAGER_CLIENT_ID=your_client_id \
--env GOOGLE_TAGMANAGER_CLIENT_SECRET=your_client_secret \
--env GOOGLE_TAGMANAGER_REFRESH_TOKEN=your_refresh_token \
-- npx -y mcp-google-tagmanager@latestcodex mcp listclaude mcp add \
--env GOOGLE_TAGMANAGER_CLIENT_ID=your_client_id \
--env GOOGLE_TAGMANAGER_CLIENT_SECRET=your_client_secret \
--env GOOGLE_TAGMANAGER_REFRESH_TOKEN=your_refresh_token \
--transport stdio \
--scope user \
google-tagmanager \
-- npx -y mcp-google-tagmanager@latestclaude mcp listOpen Settings → Developer → Edit Config.
Add this entry to
mcpServers:
{
"mcpServers": {
"google-tagmanager": {
"command": "npx",
"args": ["-y", "mcp-google-tagmanager@latest"],
"env": {
"GOOGLE_TAGMANAGER_CLIENT_ID": "your_client_id",
"GOOGLE_TAGMANAGER_CLIENT_SECRET": "your_client_secret",
"GOOGLE_TAGMANAGER_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}If Edit Config is unavailable, edit ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows.
Claude Desktop MCP documentation
Add a user-level server to ~/.cursor/mcp.json on macOS/Linux or %USERPROFILE%\.cursor\mcp.json on Windows:
{
"mcpServers": {
"google-tagmanager": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-google-tagmanager@latest"],
"env": {
"GOOGLE_TAGMANAGER_CLIENT_ID": "your_client_id",
"GOOGLE_TAGMANAGER_CLIENT_SECRET": "your_client_secret",
"GOOGLE_TAGMANAGER_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}Run MCP: Open User Configuration from the Command Palette and add:
{
"servers": {
"google-tagmanager": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-google-tagmanager@latest"],
"env": {
"GOOGLE_TAGMANAGER_CLIENT_ID": "${input:gtm_client_id}",
"GOOGLE_TAGMANAGER_CLIENT_SECRET": "${input:gtm_client_secret}",
"GOOGLE_TAGMANAGER_REFRESH_TOKEN": "${input:gtm_refresh_token}"
}
}
},
"inputs": [
{ "type": "promptString", "id": "gtm_client_id", "description": "Google OAuth client ID" },
{ "type": "promptString", "id": "gtm_client_secret", "description": "Google OAuth client secret", "password": true },
{ "type": "promptString", "id": "gtm_refresh_token", "description": "Google OAuth refresh token", "password": true }
]
}Check it with MCP: List Servers.
What you can ask it to do
Understand the current setup
List the GTM accounts and containers I can access.
Which tags fire on page view in this workspace?
Show the trigger and variable configuration for this tag.
Which built-in variables are enabled?
Prepare tracking changes in a draft
Create a workspace for the checkout tracking change.
Prepare a GA4 tag and a trigger for a specific event.
Enable the click variables needed for this trigger.
Update this tag after showing me the complete replacement configuration.
Release a version deliberately
Compile this workspace into a version named
April release.Show the compiler errors, if any.
Publish version
42after I confirm the version and its changes.
How GTM changes are connected
GTM has a clear release path:
An account contains one or more containers.
A container has workspaces for draft changes.
Tags, triggers and variables belong to a workspace.
Compiling a workspace creates a container version and removes the source workspace. GTM provides a replacement workspace.
Publishing makes a selected container version live.
This server can inspect each step. It does not treat a draft as a release: version creation and publishing are separate operations.
What can change
Operation | What happens | Confirmation boundary |
List accounts, containers, workspaces, tags, triggers, variables and versions | Reads GTM configuration | No change |
Create a container or workspace | Adds a new GTM object | Changes GTM |
Create a tag, trigger or variable | Adds a draft object to a workspace | Changes a draft workspace |
Enable or disable built-in variables | Changes the workspace configuration | Changes a draft workspace |
Update a tag, trigger or variable | Replaces the complete resource, protected by its fingerprint | Potentially destructive |
Delete a tag, trigger or variable | Removes the selected object | Destructive |
Compile a workspace | Creates a version and deletes the source workspace | Destructive |
Publish a version | Makes a selected version live | Destructive |
Raw API request | Can call API methods without a dedicated tool | Potentially destructive |
The AI client decides how it asks for confirmation. The server marks read-only, write and destructive operations so the client can distinguish inspection from a real change.
Getting access
The server uses Google OAuth 2.0. Google Tag Manager does not provide API keys for this user data.
Create or select a Google Cloud project and enable the Tag Manager API. A project without that API enabled receives no quota.
Configure the OAuth consent screen and create an OAuth client. A Desktop app client is suitable for local use.
Authorize your Google account and obtain a refresh token. The OAuth 2.0 Playground can do this if you enable Use your own OAuth credentials.
Request these scopes together:
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
The scopes are separate: reading, editing, compiling versions and publishing each need their corresponding permission. Treat the client secret and refresh token as passwords.
Configuration
Variable | Required | Description |
| Yes* | OAuth client ID. |
| Yes* | OAuth client secret. |
| Yes* | OAuth refresh token. |
| Yes* | Short-lived alternative to the OAuth trio. |
| No | Tag Manager API base URL override. |
| No | Per-request timeout; default |
| No | Maximum retries on temporary failures; default |
| No | Minimum request spacing; default |
* Provide either the OAuth trio or an access token. Access tokens expire in about an hour and are not refreshed automatically.
Data and telemetry
The server runs locally and sends GTM API requests and OAuth refresh requests to Google. Its anonymous telemetry contains a random installation ID, package version, AI client and Node.js/operating-system versions, and tool names. It does not send OAuth tokens, GTM data, tool arguments or prompts.
Disable telemetry for A1 MCP servers with:
ASKADS_TELEMETRY=0Limits and background work
GTM is rate-limited. The API allows 0.25 requests per second per project, so the server serializes calls at least 4.2 seconds apart. Broad audits can therefore take time.
Temporary limits are retried carefully.
429and Google quota403responses use exponential backoff andRetry-After. Reads retry after network and5xxfailures; writes are not replayed after an uncertain failure.There is no background monitoring. The server runs only when your AI app calls it. If the app supports scheduled tasks, it can periodically inspect a container or its live version.
A workspace disappears when compiled. Before calling
create_version, save anything you need from the workspace and inspect the returned replacement workspace path.
Technical documentation
MCP capability catalog — task-oriented pages for every tool.
Support
Found a bug or need a scenario? Create an issue or write in Telegram.
Maintenance
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP Server that provides a conversational interface to Google Tag Manager API, allowing users to manage tags, triggers, variables, and containers through natural language.
- AlicenseAqualityDmaintenanceMCP server for Google Tag Manager API, enabling users to manage containers, tags, and triggers through natural language using Google Application Default Credentials.1833Apache 2.0
- AlicenseNot gradedqualityCmaintenanceMCP server for Google Tag Manager API v2, enabling programmatic management of accounts, containers, workspaces, tags, triggers, variables, and version workflows.2614MIT
- FlicenseNot gradedqualityBmaintenanceA remote MCP server for Google Tag Manager that enables AI assistants to manage GTM accounts, containers, tags, triggers, variables, and more via OAuth or service account authentication.1
Related MCP Connectors
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
MCP server for generating rough-draft project plans from natural-language prompts.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/A1-x-Tech/mcp-google-tagmanager'
If you have feedback or need assistance with the MCP directory API, please join our Discord server