Model Context Protocol · Google Tag Manager API v2
Um servidor MCP que liga o Claude aos seus containers GTM — leia, audite, crie, versione e publique tags, triggers e variáveis sem abrir a UI do Tag Manager. Login OAuth embutido. Status: LIVE.
O MCP GTM B2 TECH é um servidor Model Context Protocol que dá ao Claude acesso real aos seus containers — não um chatbot que adivinha, mas chamadas tipadas na Google Tag Manager API v2.
Instale ou audite um Meta Pixel, uma tag de conversão do Google Ads ou o GA4; crie triggers de clique, formulário e scroll; publique uma versão nova — tudo conversando com o Claude. O login do Google é OAuth2, embutido no fluxo.
Account → Container → Workspace (branch) → create_version (commit) → publish (deploy). Toda edição acontece num workspace; concorrência otimista via fingerprint de cada entidade.
Deploy multi-tenant em mcp-gtm.vercel.app — tokens cifrados no Supabase, cache no Upstash, e nós somos o OAuth 2.1 Authorization Server. Mesmo stack dos MCPs de Meta Ads, Google Ads, Instagram e Cloudflare.
27 tools agrupadas por função — da autenticação ao publish, do snippet de instalação à edição de tags, triggers e variáveis. Tudo abaixo já está implementado e no ar.
publicId (GTM-XXXX).kind ∈ tag/trigger/variable).fingerprint.parameter cru + escape hatch extra.fingerprint).confirm).confirm).confirm).Do zero ao publicado numa conversa: create_container → get_container_snippet → tags e triggers → create_version → publish_version.
Publicar um container muda o site em produção. Por isso cada write passa por barreiras explícitas — você está sempre no controle do que vai pro ar.
Edições ficam no workspace
Todo write acontece num rascunho. O site só muda quando você congela uma versão e publica — nunca antes.
Destrutivos exigem confirm=true
delete_element, disable_builtin_variables e publish_version. Sem confirm, a tool devolve um preview e não executa nada.
preview=true = dry-run
Devolve o payload exato que seria enviado, sem chamar a API. Cheque antes de executar de verdade.
fingerprint anti-conflito
Concorrência otimista: um fingerprint desatualizado retorna erro de conflito (409) mandando reler — ninguém sobrescreve mudança alheia sem saber.
Tenant nunca é argumento
Localmente é a credencial única guardada; em produção o tenant é derivado do access token do Authorization Server embutido. Nenhuma tool aceita "de qual cliente".
Tokens cifrados em repouso
Refresh tokens com AES-256-GCM no Supabase, RLS default-deny e service key só no servidor. O gtm_token_status mostra exatamente quais escopos estão ativos.
Dois caminhos: o hospedado (recomendado, zero setup) e o local stdio (para devs single-tenant). Os dois terminam no mesmo lugar — o Claude operando sua conta.
Adicione o servidor MCP como connector no Claude e faça login. Nada para instalar; nós cuidamos do OAuth e dos tokens.
https://mcp-gtm.vercel.app/api/mcp. No Claude Code, use o comando abaixo.# Claude Code claude mcp add --transport http \ gtm https://mcp-gtm.vercel.app/api/mcp
/mcp.gtm_token_status para validar a credencial e list_accounts para ver suas contas GTM. Pronto para operar.Rode o servidor na sua máquina. O refresh token fica num arquivo 0600 local; você usa seu próprio OAuth client do GCP.
python -m venv venv
venv/bin/pip install -e ".[dev]"
cp .env.example .env.local.env.local: GOOGLE_OAUTH_CLIENT_ID, GOOGLE_OAUTH_CLIENT_SECRET e NGROK_URL (o redirect URI é ${NGROK_URL}/oauth/callback no client OAuth do GCP).PYTHONPATH=src venv/bin/python \
-m mcp_gtm
# no Claude: gtm_login → gtm_submit_callbackFicou alguma dúvida? Escreva para bruno@b2tech.io.
publish_version roda com confirm=true. Ações destrutivas sem confirm devolvem apenas um preview, e preview=true retorna o payload exato sem chamar a API.create_version (commit) → publish (deploy). Você edita num workspace, congela numa versão imutável e só então publica.fingerprint, e um fingerprint desatualizado retorna um erro de conflito estilo 409 mandando reler antes de escrever — ninguém sobrescreve mudança alheia sem saber.0600 na sua máquina (single-tenant).mcp-gtm.vercel.app) é o caminho rápido: zero setup, é só adicionar como connector no Claude e logar. Local stdio é single-tenant, para devs que querem rodar tudo na própria máquina com o refresh token num arquivo 0600.Tags, triggers, variáveis, versões e environments — do zero ao container publicado, com OAuth embutido e publish só com confirm=true. Grátis e no ar.
27 tools · OAuth2 embutido · multi-tenant na Vercel