Google Tag Manager MCP Server
Provides tools for managing Google Tag Manager accounts, containers, workspaces, folders, tags, triggers, and variables, enabling programmatic interaction with GTM through the API.
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 MCP Serverlist all my GTM accounts"
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 Server
Local Model Context Protocol (MCP) server for Google Tag Manager, allowing Claude to interact with your GTM accounts, containers, tags, triggers, and variables.
π Quick Start
1. Clone and Install
git clone <repository-url>
cd gtm-mcp-server
npm install2. Setup Google Cloud Project and API
π Go to Google Cloud Console
π Create a new project (important: create a new project specifically for this)
π§ Enable Google Tag Manager API:
Inside your project, go to "APIs & Services" > "Library"
Search for "Tag Manager API"
Click on it and press "Enable"
3. Create OAuth 2.0 Credentials
π On the Tag Manager API page, click "Create Credentials" button
β In "What data will you be accessing?" select "User data"
π± In "OAuth Client ID" section:
Application type: select "Desktop app"
Give it any name you want
π₯ Download the JSON file and save it as
credentials.jsonin the project root
4. Configure Test Users
π€ Go to "APIs & Services" > "Credentials" (left sidebar)
π Find your newly created "OAuth 2.0 Client ID" and click on it
π₯ Go to "Audience" tab, scroll down to "Test Users" section
β Add your email address as a test user
5. Run Authorization
# Build the project first
npm run build
# Run authorization
npm run authThis will:
Open a browser window for Google authorization
Redirect you to sign in with the email you added as a test user
After successful authorization, show a success page at
http://localhost:3000/callbackCreate a
gtm-config.jsonfile with access tokens in your project
6. Configure Claude Desktop
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"google-tag-manager": {
"command": "node",
"args": ["/FULL/PATH/TO/YOUR/gtm-mcp-server/dist/index.js"],
"env": {
"PATH": "/usr/local/bin:/usr/bin:/bin"
}
}
}
}β οΈ Important: Replace /FULL/PATH/TO/YOUR/gtm-mcp-server/ with the actual absolute path to your project folder.
For example:
macOS:
"/Users/wiefix/WORK/gtm-mcp-server/dist/index.js"Windows:
"C:\\Users\\YourName\\Documents\\gtm-mcp-server\\dist\\index.js"
PATH explanation: The PATH environment variable specifies directories where system executables (like node) are located. On macOS/Linux, these standard paths ensure the MCP server can find Node.js.
7. Restart Claude Desktop
After saving the configuration file, restart Claude Desktop to connect the MCP server.
Related MCP server: Google Tag Manager MCP Server
π οΈ Available Tools
π gtm_account
GTM account management
get- get account detailslist- list all accountsupdate- update account settings
π¦ gtm_container
GTM container management
get- get container detailslist- list containers in accountcreate- create new containerupdate- update containerdelete- delete container
π gtm_workspace
GTM workspace management
get- get workspace detailslist- list workspaces in containercreate- create new workspaceupdate- update workspacedelete- delete workspace
π gtm_folder
Folder management for organizing elements
get- get folder detailslist- list folders in workspacecreate- create new folderupdate- update folderdelete- delete folder
π·οΈ gtm_tag
GTM tag management
get- get tag detailslist- list tags in workspacecreate- create new tagupdate- update tagdelete- delete tag
β‘ gtm_trigger
GTM trigger management
get- get trigger detailslist- list triggers in workspacecreate- create new triggerupdate- update triggerdelete- delete trigger
π’ gtm_variable
GTM variable management
get- get variable detailslist- list variables in workspacecreate- create new variableupdate- update variabledelete- delete variable
π§ gtm_builtin_variable
GTM built-in variable management
list- list built-in variablescreate- enable built-in variable (pageUrl, pageTitle, etc.)delete- disable built-in variable
π¬ Usage Examples
After setup, you can ask Claude:
Basic navigation:
"Show all my GTM accounts"
"List containers in account 123456"
"Show workspaces in container 456789"
Organization:
"Create folder 'Analytics Tags' for organizing tags"
"List all folders in workspace"
Working with tags:
"Create Google Analytics tag with Measurement ID GA_MEASUREMENT_ID"
"Show all tags in workspace 7"
"Update tag with ID 15 with new settings"
"Delete unused tag"
Triggers:
"Create trigger for all page views"
"Create click trigger for button with class 'download-btn'"
"List all triggers"
Variables:
"Enable built-in variable Page URL"
"Create custom variable for GA Measurement ID"
"Show all variables in workspace"
π§ Troubleshooting
Authorization Errors
Make sure
credentials.jsonis in the project rootVerify that Google Tag Manager API is enabled in your Google Cloud project
Check that your email is added as a test user in OAuth consent screen
Try running
npm run authagain
API Errors
Ensure your Google account has access to GTM accounts
Check access permissions in GTM interface
Verify that the API is enabled and credentials are correct
Connection Errors
Restart Claude Desktop after making configuration changes
Verify correct absolute paths in
claude_desktop_config.jsonCheck that the
dist/index.jsfile exists (runnpm run buildif missing)
π File Structure
gtm-mcp-server/
βββ credentials.json # Your Google OAuth credentials (downloaded from Google Cloud)
βββ gtm-config.json # Access tokens (auto-created after successful authorization)
βββ src/ # TypeScript source code
βββ dist/ # Compiled JavaScript (created by npm run build)
βββ package.json # Project dependencies and scripts
βββ README.md # This instruction fileβ οΈ Security
Files
credentials.jsonandgtm-config.jsoncontain sensitive authentication dataThese files are automatically added to
.gitignoreto prevent accidental commitsNever publish these files in public repositories or share them
Keep your Google Cloud project credentials secure
π Development
# Development mode with auto-reload
npm run dev
# Build project for production
npm run build
# Code linting and formatting
npm run lint
# Re-run authorization if needed
npm run authπ Support
If you encounter problems:
Double-check all setup steps - make sure you followed the exact sequence
Verify Node.js version - ensure you're using Node.js v20.19.5 or higher
Check Google Cloud setup:
Project created and Tag Manager API enabled
OAuth credentials created as Desktop app
Your email added as test user
Verify file paths in Claude Desktop config are absolute and correct
Check logs in Claude Desktop terminal for error messages
Rebuild the project with
npm run buildif needed
π― Quick Verification
To verify everything works:
Complete all setup steps above
Restart Claude Desktop
Open a new chat in Claude
Ask: "List my GTM accounts"
You should see your Google Tag Manager accounts listed
Available Tools
8 toolsgtm_accountA
Performs all account-related operations: get, list, update. Use the 'action' parameter to select the operation.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The account operation to perform. Must be one of: 'get', 'list', 'update'. | |
| config | No | Configuration for 'update' action. All fields correspond to the GTM Account resource. | |
| accountId | No | The unique ID of the GTM Account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only lists the operations without disclosing behavior such as side effects of update, required permissions, response format, or how accountId is used across actions. This is a significant gap for a multi-action tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the tool's purpose and operation list. Every word contributes to understanding the tool's scope, with no unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With three operations, no output schema, and no annotations, the description is too brief. It does not explain what get or list return, how update behaves, or how accountId and config are used per action, leaving an agent without enough context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all parameters, so the baseline is 3. The description adds no new parameter meaning beyond reiterating the action parameter, which is already documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs all account-related operations (get, list, update), specifying a verb and resource. It distinguishes from sibling tools like gtm_container or gtm_workspace, which target other GTM resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool is for any account-related operation, implying it is the go-to for account actions. However, it does not explicitly mention alternatives or exclusions, though the sibling list makes the distinction implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_builtin_variableA
Manages GTM built-in variables: list, create (enable), delete (disable).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Type of built-in variable (required for create/delete). Examples: 'pageUrl', 'pagePath', 'pageTitle', 'referrer', 'event', etc. | |
| action | Yes | The built-in variable operation to perform. | |
| accountId | Yes | The unique ID of the GTM Account. | |
| containerId | Yes | The unique ID of the GTM Container. | |
| workspaceId | Yes | The unique ID of the GTM Workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that create enables and delete disables, which is helpful. However, it does not mention return values, permissions, idempotency, or side effects. This is minimal viable transparency but not particularly rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently packs the resource, operations, and semantic nuances (enable/disable). No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, so the description should cover more. It covers the operations but omits return value expectations, list behavior, and any prerequisites or caveats. For a simple CRUD tool, this is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and all parameters have descriptions. The description itself adds little beyond the schemaβit only restates that type is needed for create/delete, which is already captured. The baseline 3 applies because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages GTM built-in variables and enumerates the exact operations (list, create/enable, delete/disable). It explicitly mentions 'built-in variables', which distinguishes it from sibling gtm_variable. The verb 'manages' plus specific actions makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for built-in variables only, but it does not explicitly name alternatives or provide when-to-use guidance. It does clarify that create means enable and delete means disable, which gives some context for action selection, but no explicit exclusions or comparisons to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_containerC
Performs container operations: get, list, create, update, delete.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The container operation to perform. | |
| config | No | Configuration for create/update actions. | |
| accountId | Yes | The unique ID of the GTM Account. | |
| containerId | No | The unique ID of the GTM Container (required for get, update, delete). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose the effects of each operation, such as the destructive nature of delete or permission requirements for create/update. With no annotations to compensate, an agent cannot infer the safety profile or expected behavior beyond the action names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-sentence description is efficiently front-loaded with the tool's purpose, but it sacrifices explanatory depth. It contains no fluff, so it earns a 4 for conciseness, though it is under-informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-action tool with nested config objects and no output schema or annotations, this description is insufficient. It lacks operation-specific details, prerequisites, return values, and any guidance on config structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all parameters with descriptions and enum values, and the description provides no additional semantic contextβit just repeats the action list. Baseline 3 applies because schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the tool as handling container operations and enumerates the supported actions (get, list, create, update, delete). This is clearer than a tautology but remains generic with the weak verb 'performs' and lacks specific details about the container resource scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to select this tool over sibling tools like gtm_account or gtm_workspace, nor which action to choose for a given scenario. The description simply lists operations without any contextual recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_folderC
Manages GTM folders for organizing tags, triggers, and variables.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The folder operation to perform. | |
| config | No | Configuration for create/update actions. | |
| folderId | No | The unique ID of the GTM Folder (required for get, update, delete). | |
| accountId | Yes | The unique ID of the GTM Account. | |
| containerId | Yes | The unique ID of the GTM Container. | |
| workspaceId | Yes | The unique ID of the GTM Workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden, but it only says 'manages' without disclosing destructive potential, permissions, or operation outcomes. This is minimal behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and front-loaded, but it's under-specified. It's concise but lacks necessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an action enum with five operations and a nested config object, yet the description provides no context on operation behavior, when to use each action, or expected results. The schema is rich but the description doesn't complement it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description adds no parameter semantics beyond what the schema already documents. Baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool 'manages' GTM folders, which is a generic verb and doesn't specify the supported operations (get, list, create, update, delete) that are visible in the schema. It does identify the resource and distinguishes from sibling tools by resource type, but lacks operational specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus sibling tools like gtm_tag or gtm_trigger. The description focuses only on what folders are for, not how to perform operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_tagC
Performs tag operations: get, list, create, update, delete.
| Name | Required | Description | Default |
|---|---|---|---|
| tagId | No | The unique ID of the GTM Tag (required for get, update, delete). | |
| action | Yes | The tag operation to perform. | |
| config | No | Configuration for create/update actions. | |
| accountId | Yes | The unique ID of the GTM Account. | |
| containerId | Yes | The unique ID of the GTM Container. | |
| workspaceId | Yes | The unique ID of the GTM Workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only lists operations without disclosing side effects, permissions, or other behavioral traits. The mention of 'delete' implies destructive behavior, but no context is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, efficient and front-loaded. The opening phrase 'Performs tag operations' is somewhat redundant with the name, but the listing of operations adds value without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-action dispatcher with 6 parameters and a nested config object, the description is under-specified. It omits action-specific parameter requirements, output behavior, and any caveats, making it insufficient for reliable invocation without schema inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond restating the action enum, which overlaps with the schema's action property.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (tag) and lists the operations (get, list, create, update, delete), making the purpose clear. It doesn't explicitly contrast with sibling tools like gtm_trigger or gtm_variable, but the resource name suffices to differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any indication of which action to choose for common scenarios. The schema offers an enum of actions, but the description fails to explain use cases or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_triggerC
Performs trigger operations: get, list, create, update, delete.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The trigger operation to perform. | |
| config | No | Configuration for create/update actions. | |
| accountId | Yes | The unique ID of the GTM Account. | |
| triggerId | No | The unique ID of the GTM Trigger (required for get, update, delete). | |
| containerId | Yes | The unique ID of the GTM Container. | |
| workspaceId | Yes | The unique ID of the GTM Workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of disclosing behavioral traits. It only states that it performs trigger operations; it does not mention side effects (e.g., delete is destructive), required parameters per operation, return values, or any other behavioral context. This is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a clear list of operations, making it concise and front-loaded. However, it is somewhat sparse for a multi-action tool, but it earns a high score for being free of fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters, nested config objects, and multiple actions, yet the description provides no operational guidance (e.g., which parameters apply to which action) or return value details. With no output schema and minimal description, the agent lacks essential context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with each parameter already documented. The description adds no parameter-level meaning beyond what the schema provides. It merely repeats the action enum values, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource ('trigger') and enumerates the specific operations (get, list, create, update, delete). This distinguishes it from sibling tools like gtm_tag or gtm_variable by naming the trigger resource explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It only lists operations without any context about prerequisites, preferred scenarios, or exclusions. The sibling tools are not referenced, so an agent receives no decision hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_variableA
Performs variable operations: get, list, create, update, delete.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The variable operation to perform. | |
| config | No | Configuration for create/update actions. | |
| accountId | Yes | The unique ID of the GTM Account. | |
| variableId | No | The unique ID of the GTM Variable (required for get, update, delete). | |
| containerId | Yes | The unique ID of the GTM Container. | |
| workspaceId | Yes | The unique ID of the GTM Workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It lists mutating operations (create, update, delete) which signals potential side effects, but it does not elaborate on consequences like permanent deletion, required permissions, or idempotency. This lack of depth leaves critical safety information undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that immediately identifies the tool's purpose and lists all actions. Every word is used efficiently, with no fluff or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters and no output schema, but the description is minimal. It communicates the core purpose and action list but omits guidance on when each action is appropriate, how config relates to create/update, or what the response looks like. Given the complexity, more detail would be expected, though the schema covers parameter definitions comprehensively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no additional parameter meaning beyond what is already in the schema, matching the baseline score of 3 for high schema coverage. It does not clarify inter-parameter dependencies or action-specific requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs variable operations and explicitly enumerates the supported actions (get, list, create, update, delete). This specific verb+resource combination distinguishes it from sibling tools like gtm_tag or gtm_trigger, which handle different GTM entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for GTM variable management but does not explicitly state when to use this tool over siblings or provide exclusions. There is no mention of alternatives or scenarios where another tool would be more appropriate, leaving the agent to infer from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_workspaceB
Performs workspace operations: get, list, create, update, delete.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The workspace operation to perform. | |
| config | No | Configuration for create/update actions. | |
| accountId | Yes | The unique ID of the GTM Account. | |
| containerId | Yes | The unique ID of the GTM Container. | |
| workspaceId | No | The unique ID of the GTM Workspace (required for get, update, delete). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavioral traits. It lists actions but does not mention that delete is destructive, update modifies state, or any permission or authorization requirements. This is a significant gap for a tool that includes mutation actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and free of filler. It front-loads the purpose (performs workspace operations) and enumerates the supported actions efficiently. However, it is under-specified in terms of detail, which limits it slightly from a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters (including a nested config object), no output schema, and no annotations, the description is notably incomplete. It fails to explain what config contains, the difference between get and list, return values, error handling, or any side effects. The tool complexity demands more than a one-line summary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, as all five parameters have descriptions (action, config, accountId, containerId, workspaceId). The tool description adds no additional meaning beyond reiterating the action list; the schema already documents parameter purposes, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this tool performs workspace operations with a list of specific actions (get, list, create, update, delete), which is a specific verb+resource combination. It distinguishes from sibling tools via the 'workspace' resource, though it doesn't elaborate on what a workspace is or the context of these operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for workspace CRUD operations but provides no explicit when-to-use guidance or alternatives. Sibling tool names clearly indicate different resources, but the description does not state 'use this for workspace management' or mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
8 tool updates
v3.0.3- First observed
gtm_account - First observed
gtm_builtin_variable - First observed
gtm_container - First observed
gtm_folder - First observed
gtm_tag - First observed
gtm_trigger - First observed
gtm_variable - First observed
gtm_workspace
TDQS
Each tool is named after a distinct GTM entity (account, container, workspace, folder, tag, trigger, variable, built-in variable), making it clear which resource to target. Even though individual tools handle multiple operations via an 'action' parameter, the resource types are mutually exclusive and unambiguous.
All tools follow a consistent snake_case pattern of 'gtm_' plus a noun, with no mixed conventions or vague verbs. The naming is uniform and predictable, matching the style of the calibration high example.
With 8 tools covering the primary GTM resource types, the count is well-scoped for the domain. Each tool earns its place, and the set is neither too thin nor too heavy for a GTM-focused server.
The tools provide full CRUD/lifecycle coverage for containers, workspaces, tags, triggers, and variables, plus account management and built-in variable control. Minor gaps exist (e.g., no explicit create/delete for accounts, no version or environment management), but core workflows are covered without dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Let AI manage your Google Tag Manager containers β tags, triggers, variables, and more.
Read and edit GA4, Search Console and Google Tag Manager from any MCP client. 29 tools.
Interact with your Google Cloud Firestore resources using natural language commands.
Interact with your Google Bigtable resources using natural language commands.
Related MCP Servers
- FlicenseBqualityCmaintenanceEnables comprehensive management of Google Tag Manager accounts, containers, workspaces, tags, triggers, and variables through OAuth2 authentication, allowing users to create, update, and publish GTM configurations via natural language.26-
- AlicenseNot gradedqualityAmaintenanceEnables interaction with Google Tag Manager through its API with built-in Google OAuth authentication. Allows managing GTM containers, tags, triggers, and variables through natural language.448210Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables natural language management of Google Tag Manager accounts, containers, tags, triggers, variables, and versions, including creation, update, and publishing.Creative Commons Zero v1.0 Universal
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage Google Tag Manager accounts, containers, workspaces, tags, triggers, variables, and versions via the Tag Manager API v2.2Apache 2.0
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/metkamedia/gtm-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server