mcp-tagmanager
GTM Fixer — MCP + panel web de Google Tag Manager
Dos formas de usar la misma automatización de Tag Manager, sobre el mismo servidor y las mismas credenciales:
Conector MCP (
/mcp) — para operar por chat con Claude. Cada acción pide explícitamente cuenta / contenedor / workspace (o versión) — nada implícito — y las que afectan producción (pausar un tag, publicar una versión) exigenconfirm=true.Panel web (
/) — para operar con clics, desde el navegador, sin tener Claude abierto. Protegido con contraseña. Ver la sección "Panel web" más abajo.
Ambos le pegan a exactamente las mismas funciones Python — no hay lógica duplicada entre el chat y el panel.
Esto reemplaza el enfoque original "abre Chrome y lee la pantalla", que era la pestaña más frágil del panel de despacho porque dependía de la interfaz web de GTM en vez de una API tipada.
Costo: la Tag Manager API es gratis (sin cargos de Google por uso normal). Se despliega como un Web Service gratuito en Render — mismo plan, mismo costo (cero) que "Gustavo google ads- mcp".
Cómo están organizadas las credenciales (patrón estandarizado)
Este servidor NO usa un archivo token.json en producción — usa variables
de entorno, igual que el resto de tus conectores en Render:
GOOGLE_ADS_CLIENT_ID/GOOGLE_ADS_CLIENT_SECRET— se reutilizan, son el mismo cliente OAuth que ya usa "Gustavo google ads- mcp". No hace falta crear un cliente nuevo por herramienta.GTM_REFRESH_TOKEN— el único valor nuevo, específico de Tag Manager.
Si algún día prefieres un cliente OAuth separado solo para Tag Manager,
puedes definir GTM_CLIENT_ID / GTM_CLIENT_SECRET y tienen prioridad
sobre los de Google Ads.
Related MCP server: Samarth GTM MCP Server
1. Subir el código a GitHub
Repo ya creado:
github.com/gustavomkt/mcp-tagmanager(público).Sube todos los archivos de esta carpeta excepto
client_secret.json,token.jsony.flow_state.json(esos son solo para pruebas locales; nunca deben subirse — el.gitignoreya los excluye).
2. Desplegar en Render
Render → New → Web Service → conecta el repo
mcp-tagmanager.Runtime: Docker (detecta el
Dockerfileautomáticamente).Plan: Free.
Environment Variables (agrégalas tú mismo en el dashboard de Render — son credenciales, así que no te las voy a rellenar yo):
GOOGLE_ADS_CLIENT_ID= el mismo valor que ya tienes en el servicio de Google Ads.GOOGLE_ADS_CLIENT_SECRET= el mismo valor que ya tienes en el servicio de Google Ads.GTM_REFRESH_TOKEN= el refresh token que ya generamos para Tag Manager.DASHBOARD_PASSWORD= una contraseña que tú elijas, para entrar al panel web (/). Sin esta variable, el panel no deja entrar a nadie — nunca queda abierto por accidente.
Create Web Service. Cuando termine el build, copia la URL pública (algo como
https://mcp-tagmanager.onrender.com).
3. Conectarlo en Claude (uso por chat)
Agrégalo como conector MCP remoto nuevo, apuntando a la URL de Render del
paso anterior (con /mcp al final, ej. https://mcp-tagmanager.onrender.com/mcp
— es el endpoint streamable-http estándar). Ya está hecho: conectado como
"Gustavo GTM Fixer".
4. Panel web (uso sin Claude abierto)
Abre https://mcp-tagmanager.onrender.com/ (la misma URL del servicio,
sin /mcp) desde cualquier navegador — tu compu, tu celular, donde sea.
Pide la contraseña (DASHBOARD_PASSWORD) y luego deja:
Ver cuentas → contenedores → workspaces con selects encadenados.
Ver los tags de un workspace y pausarlos/reanudarlos con un clic.
Correr la auditoría de buenas prácticas.
Crear una versión y publicarla (con un modal de confirmación antes de tocar producción).
No necesita que tengas una sesión de Claude abierta ni que estés en este chat — es una aplicación web normal, corriendo 24/7 (dentro de las limitaciones del plan gratuito de Render, ver "Notas de estabilidad").
Seguridad del panel: la contraseña protege el acceso, pero viaja sobre HTTPS normal (no hay 2FA ni límite de intentos todavía). Es razonable para uso personal; si en algún momento lo compartes con más gente o quieres algo más robusto (usuarios separados, límite de intentos, etc.), dilo y se agrega — no cuesta nada extra en infraestructura, solo más código.
Alternativa: correrlo local con un archivo (sin Render)
Si alguna vez quieres correrlo en tu laptop en vez de Render:
pip install -r requirements.txt
python auth_setup.py # una vez, abre tu navegador
python server.py # sin PORT definido, corre por stdioserver.py primero busca GTM_REFRESH_TOKEN + client_id/secret en
variables de entorno; si no las encuentra, cae de vuelta a token.json.
Tools disponibles
Lectura (no cambian nada):
list_accounts()list_containers(account_id)list_workspaces(account_id, container_id)list_tags(account_id, container_id, workspace_id)get_tag(account_id, container_id, workspace_id, tag_id)list_triggers(account_id, container_id, workspace_id)list_variables(account_id, container_id, workspace_id)audit_workspace(account_id, container_id, workspace_id)— tags sin trigger, triggers sin tag, posibles duplicados, y si hay Consent Mode configurado. Es la versión confiable de lo que antes le pedíamos a Claude in Chrome que "leyera de la pantalla y adivinara".list_versions(account_id, container_id)
Escritura (piden confirm=true):
pause_tag(...)/resume_tag(...)— pausa o reanuda un tag en el workspace. No publica el contenedor.create_version(...)— crea una versión a partir del workspace. No publica.publish_version(account_id, container_id, version_id, confirm=true)— publica una versión (va a producción). Úsalo también para hacer rollback: pásale elversion_idde una versión anterior delist_versions.
Roadmap: llevar Google Ads, Meta y Shopify al mismo modelo
La idea de "un panel único, operable sin Claude, para las 4 plataformas"
aplica el mismo patrón que aquí a Google Ads, Meta/Social Ads y Shopify.
Para Tag Manager fue posible porque yo mismo generé y controlo su
GTM_REFRESH_TOKEN. Para los otros tres, el bloqueo real es que sus
conectores MCP actuales ("Gustavo google ads- mcp", "Gustavo Social Ads",
"Shopify") guardan sus credenciales dentro de la infraestructura de cada
conector — no como algo que yo pueda leer y reutilizar. Dos caminos,
según cada caso:
Si ya están en un servidor propio (como este), con URL pública — se le puede agregar el mismo panel
/+/api/*sin pedir ninguna credencial nueva, reusando lo que ya está desplegado. Falta confirmar cuáles de los tres viven así.Si no — hace falta que generes y me compartas (pegándolo tú mismo donde corresponda, nunca yo escribiéndolo) el equivalente al
GTM_REFRESH_TOKENde cada uno: un token de Meta Marketing API de larga duración, un Admin API access token de Shopify, o el refresh token + developer token de Google Ads. Con eso puedo desplegar un servicio dedicado por plataforma, mismo patrón, mismo costo ($0 en Render).
Créditos/promos de nube (AWS, Google Cloud)
Investigué qué ofrecen ambos para correr esto gratis más tiempo o sin el cold-start del plan gratuito de Render:
Google Cloud: crédito de bienvenida para cuentas nuevas (histórico: ~$300 USD por 90 días) más un "Always Free tier" permanente que incluye 1 instancia e2-micro de Compute Engine gratis de por vida en ciertas regiones de EE.UU. — ahí sí cabría correr esto 24/7 sin dormirse.
AWS: Free Tier con varios servicios gratis los primeros 12 meses (incluye una instancia EC2 t2.micro/t3.micro).
Ambos requieren crear una cuenta con tarjeta de crédito/débito (aunque no se cobre nada dentro del free tier) — eso es una acción que no puedo hacer yo por ti: entra en la categoría de "crear cuentas y meter datos de pago", que tengo prohibido hacer aunque me des permiso explícito. Si quieres ir por esa vía, créala tú y me compartes las credenciales de acceso al servidor (no la tarjeta) para que yo despliegue ahí — dime cuál prefieres y seguimos.
Mientras tanto, Render Free sigue siendo la opción de $0 sin fricción de cuenta nueva, con el único costo real siendo el cold-start de ~50s tras inactividad.
Notas de estabilidad
Cada llamada a la API de Google está envuelta en manejo de errores que regresa un mensaje claro (
{"ok": false, "error": "..."}) en vez de tumbar la conexión MCP sin explicación — esa clase de fallo silencioso fue parte de por qué los otros conectores "se caían" sin avisar.El token se refresca solo en cada llamada usando el refresh token; si algún día se revoca (cambio de contraseña, revocación manual en myaccount.google.com), el error te lo va a decir explícitamente y solo hace falta generar un
GTM_REFRESH_TOKENnuevo.Al ser un Web Service gratuito de Render, se "duerme" tras un rato sin uso y la primera llamada después de eso tarda ~50 segundos en responder — igual que "Gustavo google ads- mcp" hoy. Es la causa más probable de que los conectores parezcan "caerse": no es un error, es el cold start del plan gratuito. Si en algún momento quieres eliminar esa demora, la única vía es un plan de pago en Render — decisión tuya, no algo que yo cambie sin que me lo pidas.
This server cannot be installed
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 Servers
- AlicenseAqualityDmaintenanceMCP server for Google Tag Manager API, enabling users to manage containers, tags, and triggers through natural language using Google Application Default Credentials.1830Apache 2.0
- AlicenseBqualityAmaintenanceProduction-grade MCP server for the Google Tag Manager API v2 with read-only GA4 (Admin + Data API) tooling. 107 tools covering the full GTM surface, including server-side containers. Ships read-only: writes, publishes, and deletes are each gated behind separate opt-in flags, every mutation requires per-call confirmation, and a dry-run mode simulates changes. Includes container audits1008,2161MIT
- AlicenseAqualityAmaintenanceMCP server for Google Tag Manager and GA4, enabling tag management, consent auditing, workspace versioning, and analytics reporting through natural language.18552MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Google Tag Manager API v2, enabling programmatic management of accounts, containers, workspaces, tags, triggers, variables, and version workflows.4814MIT
Related MCP Connectors
MCP server for interacting with the Supabase platform
The official MCP Server from Mia-Platform to interact with Mia-Platform Console
MCP server for managing Prisma Postgres.
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/gustavomkt/mcp-tagmanager'
If you have feedback or need assistance with the MCP directory API, please join our Discord server