google-tag-manager-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP port (default 8080). | 8080 |
| BASE_URL | No | Public URL of this service. Used for OAuth metadata and as the canonical resource URI tokens are bound to. Required for Mode B. | |
| LOG_LEVEL | No | Python log level (default INFO). | INFO |
| GCP_PROJECT_ID | No | GCP project hosting Firestore. Required for Mode B. | |
| MCP_USER_EMAIL | No | Your email, set in Claude Desktop config so the server finds your stored token. Required for Mode A. | |
| ALLOWED_DOMAINS | No | Comma-separated email domain allowlist (e.g. acme.com,beta.com). Empty = no restriction. | |
| GOOGLE_CLIENT_ID | No | Google OAuth client ID (alternative to OAUTH_CONFIG_PATH in Mode B). | |
| OAUTH_CONFIG_PATH | No | Path to client_secret.json downloaded from Google Cloud Console. Can be used in both modes, or replaced by GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET in Mode B. | |
| GOOGLE_CLIENT_SECRET | No | Google OAuth client secret (alternative to OAUTH_CONFIG_PATH in Mode B). | |
| OAUTHLIB_RELAX_TOKEN_SCOPE | No | Set to 1. Required for Mode B - Google returns a superset scope and without this the OAuth callback fails. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| gtm_accountB | Manage GTM accounts. Actions:
|
| gtm_containerA | Manage GTM containers. Standard CRUD (list/create: parent='accounts/{a}'; get/update/remove: path='accounts/{a}/containers/{c}') plus:
|
| gtm_workspaceA | Manage GTM workspaces. Standard CRUD (list/create: parent=; get/update/remove: path=) plus:
|
| gtm_tagB | Manage GTM tags within a workspace. Actions:
|
| gtm_triggerB | Manage GTM triggers within a workspace. Same action set as gtm_tag (create, get, list, update, remove, revert; remove/revert require confirm=true). |
| gtm_variableA | Manage GTM variables within a workspace. Same action set as gtm_tag (create, get, list, update, remove, revert; remove/revert require confirm=true). |
| gtm_built_in_variableB | Manage GTM built-in variables. Actions:
|
| gtm_folderB | Manage GTM folders. Standard CRUD+revert like gtm_tag, plus:
|
| gtm_clientB | Manage GTM clients within a workspace. Same action set as gtm_tag (create, get, list, update, remove, revert; remove/revert require confirm=true). |
| gtm_zoneB | Manage GTM zones within a workspace. Same action set as gtm_tag (create, get, list, update, remove, revert; remove/revert require confirm=true). |
| gtm_templateC | Manage GTM custom templates. Standard CRUD+revert plus:
|
| gtm_transformationB | Manage GTM transformations within a workspace. Same action set as gtm_tag (create, get, list, update, remove, revert; remove/revert require confirm=true). |
| gtm_gtag_configC | Manage GTM Google tag (gtag) config. Standard CRUD (no revert). |
| gtm_destinationA | Manage GTM destinations. Actions:
|
| gtm_environmentB | Manage GTM environments. Standard CRUD (list/create: parent=''; get/update/remove: path='/environments/{id}') plus:
|
| gtm_versionA | Manage GTM container versions. Actions:
|
| gtm_version_headerB | List GTM container version headers. Actions:
|
| gtm_user_permissionB | Manage GTM account user permissions. Actions:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Each tool is explicitly scoped to a distinct GTM entity (account, container, workspace, tag, trigger, etc.), with names like gtm_tag and gtm_trigger making the target resource clear. Despite shared CRUD actions, the entity distinction eliminates any ambiguity.
All tools follow the consistent pattern gtm_<entity> in snake_case, and actions within each tool use standard verbs (list, get, create, update, remove, revert). This uniform naming convention makes the tool set predictable and easy to navigate.
At 18 tools, the count is on the higher end of the typical range, but it is justified by the breadth of GTM's API which includes many distinct entity types. Each tool earns its place by covering a unique resource, so the count feels appropriate for the domain's complexity.
The server covers all major GTM entities including accounts, containers, workspaces, tags, triggers, variables, folders, clients, zones, templates, transformations, destinations, environments, versions, and user permissions. It also includes built-in variables and version headers, providing comprehensive lifecycle management with no obvious gaps.