Google Tag Manager MCP Server
by CarC96
README.md
# Google Tag Manager MCP Server
**Built by [Growthers.io](https://growthers.io?utm_source=github&utm_medium=readme&utm_campaign=githubmcpgtm)** — Data-driven growth agency.
An open-source MCP (Model Context Protocol) server that gives AI agents full access to the Google Tag Manager API v2.
Works with Claude Code, Claude Desktop, Cursor, and any MCP-compatible client. Manage accounts, containers, workspaces, tags, triggers, variables, consent mode, and container versions — all from your AI assistant.
No external services required. Runs locally on your machine using your own Google credentials.
## Prerequisites
- Python 3.10+
- [pipx](https://pipx.pypa.io/) (recommended) or pip
- A Google Cloud project with the **Tag Manager API** enabled
- [gcloud CLI](https://cloud.google.com/sdk/docs/install) for credential setup
## Setup
### 1. Enable the Tag Manager API
1. Go to [Google Cloud Console](https://console.cloud.google.com/)
2. Select or create a project
3. Go to **APIs & Services > Enable APIs**
4. Search for **Tag Manager API** and enable it
### 2. Authenticate
```bash
gcloud auth application-default login \
--scopes="https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/tagmanager.readonly,https://www.googleapis.com/auth/tagmanager.edit.containers,https://www.googleapis.com/auth/tagmanager.edit.containerversions"
```
This creates a credentials file at `~/.config/gcloud/application_default_credentials.json`.
> **Tip:** If the default gcloud client blocks some scopes, create a custom OAuth Client ID in your Google Cloud project (APIs & Services > Credentials > Create OAuth Client > Desktop App), then use `--client-id-file=<path-to-client-secret.json>` with the command above.
### 3. Install
#### Option A: With pipx (recommended)
```bash
pipx install git+https://github.com/CarC96/google-tag-manager-mcp.git
```
#### Option B: From source
```bash
git clone https://github.com/CarC96/google-tag-manager-mcp.git
cd google-tag-manager-mcp
pip install .
```
### 4. Configure your MCP client
Add to your MCP client configuration (e.g. `~/.claude.json` for Claude Code):
```json
{
"mcpServers": {
"gtm-mcp": {
"type": "stdio",
"command": "pipx",
"args": ["run", "gtm-mcp"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "<path-to>/application_default_credentials.json"
}
}
}
}
```
Replace `<path-to>` with the actual path to your credentials file (typically `~/.config/gcloud/application_default_credentials.json`).
## How it works
Despite the name "server", this runs as a **local process** on your machine. Your MCP client launches it as a subprocess and communicates via stdin/stdout. No network ports are opened, no cloud hosting is needed — it's essentially a plugin.
```
MCP Client (Claude Code, etc.) ←— stdin/stdout —→ gtm-mcp (local process) ——→ Google Tag Manager API
```
## Available Tools (30)
### Accounts
| Tool | Description |
|------|-------------|
| `list_accounts` | List all GTM accounts |
| `get_account` | Get account details |
| `list_user_permissions` | List permissions for an account |
### Containers
| Tool | Description |
|------|-------------|
| `list_containers` | List all containers in an account |
| `get_container` | Get container details |
| `get_container_snippet` | Get the install snippet for a website |
### Workspaces
| Tool | Description |
|------|-------------|
| `list_workspaces` | List workspaces in a container |
| `get_workspace` | Get workspace details |
| `get_workspace_status` | Check for conflicts and modified entities |
| `create_workspace` | Create a new workspace |
### Tags
| Tool | Description |
|------|-------------|
| `list_tags` | List all tags |
| `get_tag` | Get tag details |
| `create_tag` | Create a new tag |
| `update_tag` | Update a tag |
| `delete_tag` | Delete a tag |
### Triggers
| Tool | Description |
|------|-------------|
| `list_triggers` | List all triggers |
| `get_trigger` | Get trigger details |
| `create_trigger` | Create a new trigger |
| `update_trigger` | Update a trigger |
| `delete_trigger` | Delete a trigger |
### Variables
| Tool | Description |
|------|-------------|
| `list_variables` | List all variables |
| `get_variable` | Get variable details |
| `create_variable` | Create a new variable |
| `update_variable` | Update a variable |
| `delete_variable` | Delete a variable |
### Built-in Variables
| Tool | Description |
|------|-------------|
| `list_built_in_variables` | List all enabled built-in variables |
### Versions
| Tool | Description |
|------|-------------|
| `list_version_headers` | List all version headers (summary) |
| `get_live_version` | Get the published version with all entities (great for audits) |
| `get_version` | Get a specific version by ID |
## Use Cases
- **Consent Mode Audits** — Analyze all tags and their consent settings in seconds
- **Bulk Tag Management** — Create, update, or delete tags/triggers/variables programmatically
- **GDPR Compliance** — Verify consent configurations across all tags
- **Container Migrations** — Read and replicate configurations across containers
- **Documentation** — Auto-generate reports of your GTM setup
## About Growthers.io
[Growthers.io](https://growthers.io?utm_source=github&utm_medium=readme&utm_campaign=githubmcpgtm) is a data-driven growth agency specializing in analytics, tracking infrastructure, and marketing automation. We build tools that make digital marketing more efficient and compliant.
## License
Apache-2.0
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues