paolobtl/gtm-mcp
If you are the rightful owner of gtm-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The GTM MCP Server is a Model Context Protocol server that facilitates interaction between Claude and Google Tag Manager, enabling efficient management of GTM accounts, containers, and related resources.
GTM MCP Server
A Model Context Protocol (MCP) server that enables Claude to interact with Google Tag Manager.
Table of Contents
- Features
- Quick Start
- Complete Setup Guide
- Available Tools
- How Authentication Works
- Upgrade
- Troubleshooting
- Security Notes
- Development
- License
- Contributing
- Getting Help
Features
- List GTM accounts and containers
- Manage tags, triggers, and variables
- Create and publish container versions
- Full workspace management
🚀 Quick Start
Prerequisites
- Python 3.10 or higher
- Claude Desktop (or any MCP-compatible client like Cursor)
- A Google account with access to Google Tag Manager
📋 Complete Setup Guide
Part 1: Install the Package
pip install gtm-mcp
See PyPi
🔧 Alternative Install Options
Instead of installing from PyPI, you can also install from source or from the built distributions:
1. Install in development mode (editable)
git clone https://github.com/paolobtl/gtm-mcp.git
cd gtm-mcp
pip install -e .
Useful if you plan to modify the code locally.
Changes in src/gtm_mcp/
are immediately reflected.
Run this command from the same directory where pyproject.toml
is located:
Unix/macOS | Windows |
---|---|
python3 -m build | py -m build |
This command should output a lot of text and once completed should generate two files in the dist
directory.
2. Install from built wheel
pip install dist/gtm_mcp-0.1.0-py3-none-any.whl
3. Install from source tarball
pip install dist/gtm_mcp-0.1.0.tar.gz
Part 2: Create Google Cloud OAuth Credentials
Step 1: Create a Google Cloud Project
- Go to Google Cloud Console
- Click on the project dropdown (top left)
- Click "New Project"
- Enter a project name (e.g., "My GTM MCP Server")
- Click "Create"
- Wait for the project to be created and select it
Step 2: Enable Tag Manager API
- In your project, go to "APIs & Services" → "Library"
- Search for "Tag Manager API"
- Click on it and click "Enable"
- Wait for it to enable (may take a minute)
Step 3: Configure OAuth Consent Screen
- Go to "APIs & Services" → "OAuth consent screen"
- Select "External" (unless you have a Google Workspace)
- Click "Create"
- Fill in required fields:
- App name: My GTM MCP (or whatever you like)
- User support email: Your email
- Developer contact email: Your email
- Click "Save and Continue"
- Click "Update" then "Save and Continue"
- Add your email as a test user
- Click "Save and Continue"
Step 4: Create OAuth Credentials
- Go to "APIs & Services" → "Credentials"
- Click "Create Credentials" → "OAuth client ID"
- Select "Desktop app" as the application type
- Enter a name: "GTM MCP Desktop Client"
- Click "Create"
- IMPORTANT: A dialog appears with your credentials - DO NOT CLOSE IT YET
Step 5: Save Your Credentials
From the dialog that appeared:
- Copy the Client ID (looks like:
123456789-abc123.apps.googleusercontent.com
) - Copy the Client secret (looks like:
GOCSPX-...
) - Note your Project ID from the Google Cloud Console (top bar, next to project name)
- Save these somewhere safe - you'll need them in the next step
You can also download the JSON file, but you only need the three values above.
Part 3: Configure Claude Desktop
⬆ top Edit your Claude Desktop config file:
- Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- Claude Code
~/.claude.json
Add your credentials:
{
"mcpServers": {
"gtm-mcp": {
"command": "gtm-mcp",
"env": {
"GTM_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GTM_CLIENT_SECRET": "GOCSPX-your-client-secret",
"GTM_PROJECT_ID": "your-project-id"
}
}
}
}
Replace the values with your actual credentials from Part 2, Step 5.
Note: If you have other MCP servers configured, just add the
"gtm-mcp"
entry to the existing"mcpServers"
object.
Part 4: Restart and Authorize
-
Restart Claude Desktop completely (close and reopen)
-
Ask Claude to use a GTM tool (e.g., "List my GTM accounts")
-
First-time authorization - a browser window will open automatically:
- Sign in with your Google account
- You'll see "Google hasn't verified this app" warning
- Click "Advanced" → "Go to [Your App Name] (unsafe)"
- This is safe because you created the app yourself
- Grant the requested permissions
- You'll see "The authentication flow has completed"
- Return to Claude Desktop
-
Your authorization is saved locally - you won't need to do this again!
🛠️ Available Tools
⬆ top
Once configured, Claude will have access to these GTM tools:
Tool | Description |
---|---|
gtm_list_accounts | List all your GTM accounts |
gtm_list_containers | List containers in an account |
gtm_list_tags | List tags in a workspace |
gtm_get_tag | Get detailed configuration of a specific tag |
gtm_create_tag | Create a new tag |
gtm_update_tag | Update an existing tag |
gtm_list_triggers | List triggers in a workspace |
gtm_create_trigger | Create a new trigger |
gtm_list_variables | List variables in a workspace |
gtm_create_variable | Create a new variable (constant, data layer, cookie, URL, etc.) |
gtm_publish_container | Create and publish a new container version |
🔐 How Authentication Works
⬆ top
This MCP server uses OAuth 2.0 to securely access Google Tag Manager:
- You create OAuth credentials in your own Google Cloud project
- You configure those credentials in Claude Desktop
- First use: Browser opens to authorize access to your GTM account
- Your tokens are saved locally on your machine (
~/.gtm-mcp-token.json
) for future use
Why Do I Need My Own OAuth Credentials?
For security and privacy:
- ✅ You maintain full control over the OAuth app
- ✅ No shared credentials between users
- ✅ You can revoke access anytime
- ✅ Your credentials stay private
- ✅ Compliant with Google's OAuth policies
Upgrade
Run pip install --upgrade gtm-mcp
❓ Troubleshooting
"Missing required OAuth credentials" Error
Problem: The MCP server can't find your credentials.
Solution: Make sure you:
- Set the environment variables correctly in
claude_desktop_config.json
(or~/.claude.json
) - Restarted Claude Desktop after editing the config
- Used the correct format (no extra quotes in JSON)
- The config file is valid JSON (use a JSON validator if unsure)
"Google hasn't verified this app" Warning
Problem: Google shows a security warning during first authorization.
Solution: This is completely normal for personal OAuth apps. Since you created the OAuth app yourself, Google shows this warning.
To proceed: Click "Advanced" → "Go to [App Name] (unsafe)"
This is safe because you control the app.
Can't Access GTM Accounts
Possible causes:
- Your Google account doesn't have access to any GTM accounts
- You didn't grant all requested permissions during authorization
- Tag Manager API isn't enabled in your Google Cloud project
Solution:
- Verify your Google account has GTM access
- Re-authorize by deleting
~/.gtm-mcp-token.json
and trying again - Check that Tag Manager API is enabled in Google Cloud Console
Connection Issues
Debugging steps:
- Verify Claude Desktop is completely restarted
- Check Claude Desktop logs for MCP server errors
- Verify
gtm-mcp
command works: rungtm-mcp
in terminal - Check your config file is valid JSON
- Ensure all three environment variables are set correctly
Package Not Found After Install
Problem: gtm-mcp
command not found after installation.
Solution:
# Ensure pip install location is in PATH
pip install --user gtm-mcp
# Or use pipx for isolated installation
pipx install gtm-mcp
Revoking Access
To revoke access to your GTM account:
- Go to Google Account Permissions
- Find your app name in the list
- Click "Remove access"
- Delete the local token file:
rm ~/.gtm-mcp-token.json
You can re-authorize anytime by using any GTM tool in Claude again.
🔒 Security Notes
- Your OAuth credentials are yours alone - keep them private
- Never share your Client Secret - treat it like a password
- Your access tokens are stored locally:
~/.gtm-mcp-token.json
- You can regenerate credentials anytime in Google Cloud Console
- You can revoke access anytime from your Google account settings
- This server only accesses GTM - no other Google services
💻 Development
Running Tests
pip install -e ".[dev]"
pytest
📝 License
⬆ top see LICENSE file for details
🤝 Contributing
⬆ top Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
For bugs and feature requests, please open an issue.
🆘 Getting Help
⬆ top If you encounter issues:
- Check the Troubleshooting section above
- Review Claude Desktop logs for error messages
- Verify your Google Cloud project has Tag Manager API enabled
- Ensure environment variables are set correctly in the config
- Open an issue on GitHub with:
- Your operating system
- Python version (
python --version
) - Error messages from Claude Desktop logs
- Steps to reproduce the issue