mcp-tagmanager

mcp-tagmanager

MCP server for Google Tag Manager, offering tools to manage accounts, containers, workspaces, tags, triggers, and versions, with explicit confirmation for production-affecting actions.

Category
访问服务器

README

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:

  1. 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) exigen confirm=true.
  2. 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.

1. Subir el código a GitHub

  1. Repo ya creado: github.com/gustavomkt/mcp-tagmanager (público).
  2. Sube todos los archivos de esta carpeta excepto client_secret.json, token.json y .flow_state.json (esos son solo para pruebas locales; nunca deben subirse — el .gitignore ya los excluye).

2. Desplegar en Render

  1. Render → New → Web Service → conecta el repo mcp-tagmanager.
  2. Runtime: Docker (detecta el Dockerfile automáticamente).
  3. Plan: Free.
  4. 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.
  5. 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 stdio

server.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 el version_id de una versión anterior de list_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:

  1. 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í.
  2. Si no — hace falta que generes y me compartas (pegándolo tú mismo donde corresponda, nunca yo escribiéndolo) el equivalente al GTM_REFRESH_TOKEN de 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_TOKEN nuevo.
  • 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.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选