Skip to main content
Glama

WAS GTM MCP

Manage Google Tag Manager from Claude Desktop, Cursor, Google Antigravity, or any MCP-compatible client using natural language. 19 tools cover the full GTM v2 API: accounts, containers, workspaces, tags, triggers, variables, versions, environments, destinations, and more.

100 percent local. Your credentials stay on your machine. Built by Abdullah Al Masum — Web Analytics Solution (WAS). MIT licensed.


Step 1 — Create Google Cloud OAuth Credentials

  1. Go to the Google Cloud Console Credentials Page.

  2. Create a Project (or select an existing one) and enable the Google Tag Manager API.

  3. Go to OAuth consent screen:

    • User Type: External -> Create

    • App name: anything (e.g. My GTM MCP)

    • User support email: your email

    • Developer contact email: your email -> Save

    • Under Test users, click Add Users and add the Google account you will sign in with.

  4. Open Google Credentials Page:

    • Create credentials -> OAuth client ID

    • Application type: Desktop app

    • Name: anything -> Create

    • Copy the Client ID and Client secret from the dialog.


Related MCP server: Google Tag Manager MCP Server

Step 2 — Connect with one terminal command

Run the interactive setup command in your terminal:

npx -y github:was-member-keramat/was-gtm-mcp auth

The tool will:

  1. Ask you to paste your Client ID and Client secret

  2. Open your browser to Google sign-in

  3. After you click Allow, save everything to `~/.was-gtm-mcp/config.jsona on your machine

That's it for setup. No more typing.


Step 3 — Add 4 lines to your AI client config

Open your AI tool config file:

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Paste this block (merge with any existing mcpServers):

{
  "mcpServers: {
    "WAS GTM MCP": {
      "command": "npx",
      "args": ["-y", "github:was-member-keramat/was-gtm-mcp"]
    }
  }
}

What you can ask the AI

Here are example prompts you can use once connected:

  • Discovery: "List all my GTM accounts and containers."

  • Tags: "List all tags in my main workspace."

  • Create Tag: "Create a GA4 Event tag named 'GA4 - Purchase Event' with event name 'purchase'."

  • Triggers: "Create a Custom Event trigger for event name 'generate_lead'."

  • Variables: "Create a Data Layer Variable named 'dlv - user_id' for variable 'user_id'."

  • Raw API: "Use ngtm_api to GET container version headers."


All tools (19 total)

Category

Tool

Description

Accounts

gtm_list_accounts

List all accessible GTM accounts

Accounts

gtm_get_account

Get details of a specific GTM account

Containers

gtm_list_containers

List containers in an account

Containers

gtm_get_container

Get container details

Containers

gtm_create_container

Create a new container (Web, iOS, Android, Server)

Workspaces

gtm_list_workspaces

List workspaces in a container

Workspaces

gtm_get_workspace

Get workspace details

Workspaces

gtm_create_workspace

Create a new workspace

Tags

gtm_list_tags

List all tags in a workspace

Tags

gtm_get_tag

Get details of a tag

Tags

gtm_create_tag

Create a new tag (GA4, Custom HTML, Google Tag, etc.)

Tags

gtm_update_tag

Update an existing tag

Tags

gtm_delete_tag

Delete a tag from a workspace

Triggers

gtm_list_triggers

List all triggers in a workspace

Triggers

gtm_get_trigger

Get details of a trigger

Triggers

gtm_create_trigger

Create a new trigger (Page View, Custom Event, Click, etc.)

Variables

gtm_list_variables

List user-defined variables in a workspace

)Variables*

gtm_create_variable

Create a user-defined variable (Data Layer, Constant, JS)

Universal

gtm_api

Raw escape-hatch tool to invoke any GTM v2 REST API endpoint


CLI commands

npx -y github:was-member-keramat/was-gtm-mcp          # Start MCP server (stdio)
npx -y github:was-member-keramat/was-gtm-mcp auth     # Interactive OAuth login
npx -y github:was-member-keramat/was-gtm-mcp status   # View current config status
npx -y github:was-member-keramat/was-gtm-mcp logout   # Delete saved credentials
npx -y github:was-member-keramat/was-gtm-mcp help     # Display usage instructions

Multi-account setup

You can run multiple GTM setups by specifying environment variables per entry in your AI client config:

{
  "mcpServers: {
    "GTM Account A": {
      "command": "npx",
      "args": ["-y", "github:was-member-keramat/was-gtm-mcp"],
      "env": {
        "GTM_CLIENT_ID": "xxxx.apps.googleusercontent.com",
        "GTM_CLIENT_SECRET": "GOCSPX-xxxx",
        "GTM_REFRESH_TOKEN": "1//xxxx-token-a"
      }
    }
  }
}

Troubleshooting

Windows Script Execution Policy Error

If PowerShell blocks execution (npx.ps1 cannot be loaded), run:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
``a

### Stale `npx` Cache on Windows
If Windows caches an old version after updates are pushed to GitHub, clear the cache:
```powershell
Remove-Item -Recurse -Force "$env:LOCALAPPDATA\npm-cache" -ErrorAction SilentlyContinue
npm cache clean --force

Security & Privacy

  • Stores refresh token locally in ~/.was-gtm-mcp/config.json at POSIX mode 0600.

  • Runs over standard stdio transport. No remote servers, tracking, or proxy middleman.


License

MIT License. Built by Abdullah Al Masum — Web Analytics Solution (WAS).

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/was-member-keramat/was-gtm-mcp'

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