Skip to main content
Glama
metkamedia

Google Tag Manager MCP Server

by metkamedia

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 install

2. Setup Google Cloud Project and API

  1. 🌐 Go to Google Cloud Console

  2. πŸ“ Create a new project (important: create a new project specifically for this)

  3. πŸ”§ 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

  1. πŸ”‘ On the Tag Manager API page, click "Create Credentials" button

  2. ❓ In "What data will you be accessing?" select "User data"

  3. πŸ“± In "OAuth Client ID" section:

    • Application type: select "Desktop app"

    • Give it any name you want

  4. πŸ“₯ Download the JSON file and save it as credentials.json in the project root

4. Configure Test Users

  1. πŸ‘€ Go to "APIs & Services" > "Credentials" (left sidebar)

  2. πŸ” Find your newly created "OAuth 2.0 Client ID" and click on it

  3. πŸ‘₯ Go to "Audience" tab, scroll down to "Test Users" section

  4. βž• Add your email address as a test user

5. Run Authorization

# Build the project first
npm run build

# Run authorization
npm run auth

This 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/callback

  • Create a gtm-config.json file 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 details

  • list - list all accounts

  • update - update account settings

πŸ“¦ gtm_container

GTM container management

  • get - get container details

  • list - list containers in account

  • create - create new container

  • update - update container

  • delete - delete container

πŸš€ gtm_workspace

GTM workspace management

  • get - get workspace details

  • list - list workspaces in container

  • create - create new workspace

  • update - update workspace

  • delete - delete workspace

πŸ“ gtm_folder

Folder management for organizing elements

  • get - get folder details

  • list - list folders in workspace

  • create - create new folder

  • update - update folder

  • delete - delete folder

🏷️ gtm_tag

GTM tag management

  • get - get tag details

  • list - list tags in workspace

  • create - create new tag

  • update - update tag

  • delete - delete tag

⚑ gtm_trigger

GTM trigger management

  • get - get trigger details

  • list - list triggers in workspace

  • create - create new trigger

  • update - update trigger

  • delete - delete trigger

πŸ”’ gtm_variable

GTM variable management

  • get - get variable details

  • list - list variables in workspace

  • create - create new variable

  • update - update variable

  • delete - delete variable

πŸ”§ gtm_builtin_variable

GTM built-in variable management

  • list - list built-in variables

  • create - 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.json is in the project root

  • Verify 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 auth again

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.json

  • Check that the dist/index.js file exists (run npm run build if 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.json and gtm-config.json contain sensitive authentication data

  • These files are automatically added to .gitignore to prevent accidental commits

  • Never 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:

  1. Double-check all setup steps - make sure you followed the exact sequence

  2. Verify Node.js version - ensure you're using Node.js v20.19.5 or higher

  3. Check Google Cloud setup:

    • Project created and Tag Manager API enabled

    • OAuth credentials created as Desktop app

    • Your email added as test user

  4. Verify file paths in Claude Desktop config are absolute and correct

  5. Check logs in Claude Desktop terminal for error messages

  6. Rebuild the project with npm run build if needed

🎯 Quick Verification

To verify everything works:

  1. Complete all setup steps above

  2. Restart Claude Desktop

  3. Open a new chat in Claude

  4. Ask: "List my GTM accounts"

  5. You should see your Google Tag Manager accounts listed

Available Tools

8 tools
gtm_accountA

Performs all account-related operations: get, list, update. Use the 'action' parameter to select the operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesThe account operation to perform. Must be one of: 'get', 'list', 'update'.
configNoConfiguration for 'update' action. All fields correspond to the GTM Account resource.
accountIdNoThe unique ID of the GTM Account.

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoType of built-in variable (required for create/delete). Examples: 'pageUrl', 'pagePath', 'pageTitle', 'referrer', 'event', etc.
actionYesThe built-in variable operation to perform.
accountIdYesThe unique ID of the GTM Account.
containerIdYesThe unique ID of the GTM Container.
workspaceIdYesThe unique ID of the GTM Workspace.

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesThe container operation to perform.
configNoConfiguration for create/update actions.
accountIdYesThe unique ID of the GTM Account.
containerIdNoThe unique ID of the GTM Container (required for get, update, delete).

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesThe folder operation to perform.
configNoConfiguration for create/update actions.
folderIdNoThe unique ID of the GTM Folder (required for get, update, delete).
accountIdYesThe unique ID of the GTM Account.
containerIdYesThe unique ID of the GTM Container.
workspaceIdYesThe unique ID of the GTM Workspace.

TDQS

C2.4/5.0
Behavior1/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagIdNoThe unique ID of the GTM Tag (required for get, update, delete).
actionYesThe tag operation to perform.
configNoConfiguration for create/update actions.
accountIdYesThe unique ID of the GTM Account.
containerIdYesThe unique ID of the GTM Container.
workspaceIdYesThe unique ID of the GTM Workspace.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesThe trigger operation to perform.
configNoConfiguration for create/update actions.
accountIdYesThe unique ID of the GTM Account.
triggerIdNoThe unique ID of the GTM Trigger (required for get, update, delete).
containerIdYesThe unique ID of the GTM Container.
workspaceIdYesThe unique ID of the GTM Workspace.

TDQS

C2.9/5.0
Behavior1/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesThe variable operation to perform.
configNoConfiguration for create/update actions.
accountIdYesThe unique ID of the GTM Account.
variableIdNoThe unique ID of the GTM Variable (required for get, update, delete).
containerIdYesThe unique ID of the GTM Container.
workspaceIdYesThe unique ID of the GTM Workspace.

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesThe workspace operation to perform.
configNoConfiguration for create/update actions.
accountIdYesThe unique ID of the GTM Account.
containerIdYesThe unique ID of the GTM Container.
workspaceIdNoThe unique ID of the GTM Workspace (required for get, update, delete).

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 8 tool updatesv3.0.3
    • First observedgtm_account
    • First observedgtm_builtin_variable
    • First observedgtm_container
    • First observedgtm_folder
    • First observedgtm_tag
    • First observedgtm_trigger
    • First observedgtm_variable
    • First observedgtm_workspace

TDQS

B3.4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • F
    license
    B
    quality
    C
    maintenance
    Enables 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
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to manage Google Tag Manager accounts, containers, workspaces, tags, triggers, variables, and versions via the Tag Manager API v2.
    2
    Apache 2.0

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/metkamedia/gtm-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server