Google Tag Manager

Gerencie contas, contêineres e tags do Google Tag Manager via sua API, com Google OAuth integrado.

Documentação

Servidor MCP para Google Tag Manager

Trust Score

Uma interface para a API do Google Tag Manager via MCP, em duas versões: um servidor hospedado com OAuth do Google integrado e uma CLI local que roda com suas próprias credenciais.

Sumário

Estrutura do repositório

Workspace npm com um aplicativo e dois pacotes publicados:

CaminhoPacoteO que é
apps/worker(privado)O Cloudflare Worker hospedado em gtm-mcp.stape.ai: OAuth do Google, fluxo de aprovação, páginas públicas, remoção de sessão.
packages/cligoogle-tag-manager-mcp-serverO pacote npm: um servidor MCP local via stdio, autenticando com credenciais fornecidas por você.
packages/coregoogle-tag-manager-mcp-coreTodas as ferramentas e esquemas do GTM, independentes de como as credenciais são obtidas.

As ferramentas acessam o Google por meio de um GtmAuthProvider (getAccessToken(): Promise<string>) em vez de qualquer sessão específica, o que permite que o mesmo conjunto de ferramentas alimente ambos os servidores — e um privado com sua própria autenticação. Consulte o README do pacote principal.

Instalação

Este servidor vem em duas versões: Servidor hospedado e CLI local. Ambos oferecem as mesmas 18 ferramentas do GTM; a diferença é quem lida com a autenticação do Google.

Servidor hospedadoCLI local
AutenticaçãoOAuth do Google no seu navegador, tratado para vocêVocê fornece uma chave de conta de serviço, token de atualização ou token de acesso
DadosPassa por gtm-mcp.stape.aiNunca sai da sua máquina
ConfiguraçãoNenhumaDefina uma variável de ambiente

Se você é um colaborador testando uma alteração não publicada em vez de apenas usar as ferramentas, ignore tudo abaixo e consulte Teste suas alterações localmente.

Escolha seu cliente abaixo. O servidor hospedado precisa da ponte mcp-remote em clientes cujo suporte a MCP não conclui o fluxo OAuth do Google nativamente; onde um cliente faz isso sozinho, ele se conecta diretamente a https://gtm-mcp.stape.ai/mcp.

Claude Desktop

⬇️ Clique para expandir ⬇️

Servidor hospedado — O Claude Desktop conecta-se a servidores MCP HTTP remotos nativamente, sem necessidade de ponte. Vá para Configurações → Conectores → Adicionar conector personalizado, defina o nome como gtm-mcp-server e a URL como https://gtm-mcp.stape.ai/mcp, depois salve. Clique no novo conector para concluir o fluxo OAuth do Google na janela do navegador que abrir.

mcp-remote também é possível para o servidor hospedado, para quem preferir configurá-lo por meio do arquivo de configuração JSON (Configurações → Desenvolvedor → Editar configuração) em vez da interface de Conectores — menos recomendado, mas ainda suportado:

{
  "mcpServers": {
    "gtm-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://gtm-mcp.stape.ai/mcp"
      ]
    }
  }
}

CLI local — sem fluxo OAuth, sem dados passando pelo servidor de terceiros; você fornece uma chave de conta de serviço ou um token de atualização. Abra Configurações → Desenvolvedor → Editar configuração e adicione:

{
  "mcpServers": {
    "gtm-mcp-server": {
      "command": "npx",
      "args": ["-y", "google-tag-manager-mcp-server"],
      "env": {
        "GOOGLE_SERVICE_ACCOUNT_KEY": "{\"type\":\"service_account\", ... }"
      }
    }
  }
}

Consulte o README da CLI para todas as opções de credenciais.

Claude Code

⬇️ Clique para expandir ⬇️

O Claude Code fala HTTP diretamente, incluindo o handshake OAuth, então o servidor hospedado não precisa de ponte.

Servidor hospedado:

claude mcp add --transport http gtm-mcp-server https://gtm-mcp.stape.ai/mcp

Uma janela do navegador abre para o fluxo OAuth do Google na primeira vez que uma ferramenta é usada. Execute /mcp dentro do Claude Code para confirmar a conexão.

CLI local:

claude mcp add gtm-mcp-server -e GOOGLE_SERVICE_ACCOUNT_KEY='{"type":"service_account", ... }' -- npx -y google-tag-manager-mcp-server

Ambos gravam em .mcp.json / sua configuração MCP do Claude Code.

VS Code

⬇️ Clique para expandir ⬇️

O cliente MCP do VS Code suporta servidores HTTP e seu fluxo OAuth nativamente, sem necessidade de mcp-remote. Adicione isto a .vscode/mcp.json:

Servidor hospedado:

{
  "servers": {
    "gtm-mcp-server": {
      "type": "http",
      "url": "https://gtm-mcp.stape.ai/mcp"
    }
  }
}

CLI local:

{
  "servers": {
    "gtm-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "google-tag-manager-mcp-server"],
      "env": {
        "GOOGLE_SERVICE_ACCOUNT_KEY": "{\"type\":\"service_account\", ... }"
      }
    }
  }
}

GitHub Copilot

⬇️ Clique para expandir ⬇️

O GitHub Copilot Chat no VS Code usa o próprio cliente MCP do VS Code, então ele lê o mesmo arquivo .vscode/mcp.json — consulte VS Code acima. Nenhuma configuração separada é necessária.

Copilot CLI

⬇️ Clique para expandir ⬇️

O Copilot CLI também conclui OAuth nativamente para servidores HTTP remotos. Adicione isto a ~/.copilot/mcp-config.json:

Servidor hospedado:

{
  "mcpServers": {
    "gtm-mcp-server": {
      "type": "http",
      "url": "https://gtm-mcp.stape.ai/mcp"
    }
  }
}

CLI local:

{
  "mcpServers": {
    "gtm-mcp-server": {
      "command": "npx",
      "args": ["-y", "google-tag-manager-mcp-server"],
      "env": {
        "GOOGLE_SERVICE_ACCOUNT_KEY": "{\"type\":\"service_account\", ... }"
      }
    }
  }
}

Consulte a documentação do GitHub para o subcomando copilot mcp add equivalente.

Cursor

⬇️ Clique para expandir ⬇️

O Cursor também fala HTTP diretamente, sem necessidade de mcp-remote. Adicione isto a .cursor/mcp.json (nível de projeto) ou ~/.cursor/mcp.json (global — Configurações → MCP → Adicionar novo servidor MCP global):

Servidor hospedado:

{
  "mcpServers": {
    "gtm-mcp-server": {
      "url": "https://gtm-mcp.stape.ai/mcp"
    }
  }
}

Uma janela do navegador abre para o fluxo OAuth do Google na primeira vez que uma ferramenta é usada.

CLI local:

{
  "mcpServers": {
    "gtm-mcp-server": {
      "command": "npx",
      "args": ["-y", "google-tag-manager-mcp-server"],
      "env": {
        "GOOGLE_SERVICE_ACCOUNT_KEY": "{\"type\":\"service_account\", ... }"
      }
    }
  }
}

Antigravity

⬇️ Clique para expandir ⬇️

O suporte OAuth próprio do Antigravity para servidores HTTP remotos ainda não entrega um token de forma confiável ao servidor (antigravity-cli#25), então use mcp-remote para o servidor hospedado aqui também. Adicione isto a ~/.gemini/config/mcp_config.json (global) ou .agents/mcp_config.json (local ao workspace) — acessível pelo painel de agentes do editor via … → MCP Servers → Manage MCP Servers → View raw config:

Servidor hospedado:

{
  "mcpServers": {
    "gtm-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://gtm-mcp.stape.ai/mcp"
      ]
    }
  }
}

CLI local:

{
  "mcpServers": {
    "gtm-mcp-server": {
      "command": "npx",
      "args": ["-y", "google-tag-manager-mcp-server"],
      "env": {
        "GOOGLE_SERVICE_ACCOUNT_KEY": "{\"type\":\"service_account\", ... }"
      }
    }
  }
}

ChatGPT

⬇️ Clique para expandir ⬇️
  1. No ChatGPT, ative o modo Desenvolvedor: Configurações → Apps e Conectores → Configurações avançadas → Modo Desenvolvedor.
  2. Vá para Configurações → Conectores → Criar e defina a URL do servidor como https://gtm-mcp.stape.ai/mcp.
  3. Defina Autenticação como OAuth e conclua o login do Google na janela do navegador que abrir.

O ChatGPT só alcança servidores pela internet pública; ele não pode iniciar um processo local — então não há opção de CLI local aqui, apenas o servidor hospedado.

Outros clientes MCP

⬇️ Clique para expandir ⬇️

Qualquer outro cliente compatível com MCP que espere uma configuração no estilo stdio command/args pode usar o mesmo bloco mcp-remote para o servidor hospedado:

{
  "mcpServers": {
    "gtm-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://gtm-mcp.stape.ai/mcp"
      ]
    }
  }
}

Ou a CLI local diretamente, com suas credenciais:

{
  "mcpServers": {
    "gtm-mcp-server": {
      "command": "npx",
      "args": ["-y", "google-tag-manager-mcp-server"],
      "env": {
        "GOOGLE_SERVICE_ACCOUNT_KEY": "{\"type\":\"service_account\", ... }"
      }
    }
  }
}

Solução de problemas

Limite de comprimento do nome do servidor MCP

Alguns clientes MCP (como o Cursor AI) têm um limite de 60 caracteres para o comprimento combinado do nome do servidor MCP + nome da ferramenta. Se você usar um nome de servidor mais longo em sua configuração (por exemplo, gtm-mcp-server-your-additional-long-name), algumas ferramentas podem ser filtradas.

Para evitar esse problema:

  • Use nomes de servidor mais curtos em sua configuração MCP (por exemplo, gtm-mcp-server)

Limpando o cache MCP

Se você estiver conectando por meio de mcp-remote (Antigravity ou Claude Desktop configurado dessa forma), ele armazena todas as informações de credenciais dentro de ~/.mcp-auth (ou onde seu MCP_REMOTE_CONFIG_DIR aponta). Se você estiver tendo problemas persistentes, tente executar:

rm -rf ~/.mcp-auth

Em seguida, reinicie seu cliente MCP.

Teste suas alterações localmente

Qual fluxo de trabalho você precisa depende do que você alterou. A maioria das alterações está na primeira categoria — recorra à segunda apenas se estiver mexendo no próprio Worker.

Alterações em packages/core ou packages/cli

Esta é a lógica das ferramentas em si (esquemas, chamadas à API do GTM, tratamento de erros) — quase tudo que você corrigiria ou adicionaria está aqui. Você não precisa de um cliente OAuth do Google Cloud nem de configuração do Worker: compile a partir do código-fonte e execute a CLI diretamente com credenciais que você já possui.

git clone https://github.com/stape-io/google-tag-manager-mcp-server
cd google-tag-manager-mcp-server
gh pr checkout <PR number>   # or: git checkout <your-branch>
npm install
npm run build

Aponte seu cliente MCP para o build local em vez de npx — mesmas opções de credenciais do exemplo da CLI local do Claude Desktop acima; um token de acesso do OAuth Playground é a maneira mais rápida de testar uma única alteração:

{
  "mcpServers": {
    "gtm-mcp-local": {
      "command": "node",
      "args": ["/absolute/path/to/google-tag-manager-mcp-server/packages/cli/dist/index.js"],
      "env": {
        "GOOGLE_ACCESS_TOKEN": "..."
      }
    }
  }
}

Consulte o README da CLI para todas as opções de credenciais.

Alterações em apps/worker

Necessário apenas para o código do próprio servidor hospedado: o fluxo OAuth, roteamento, tratamento de sessão, as páginas de aprovação e status. Isso executa esse código em sua própria máquina com suas próprias credenciais OAuth do Google Cloud em vez de gtm-mcp.stape.ai.

1. Configure um cliente OAuth do Google Cloud

  1. No Google Cloud Console, crie ou selecione um projeto e ative a API Tag Manager.
  2. Vá para APIs e Serviços > Tela de consentimento OAuth e configure-a (Externo é suficiente). Enquanto o aplicativo estiver no status de publicação Teste, apenas contas listadas como usuários de teste podem fazer login.
  3. Vá para Público, em Usuários de teste adicione sua própria conta do Google.
  4. Vá para APIs e Serviços > Credenciais > Criar credenciais > ID do cliente OAuth, tipo Aplicativo da web.
  5. Em URIs de redirecionamento autorizados, adicione http://localhost:8788/callback. (Você pode deixar Origens de JavaScript autorizadas vazio — este fluxo é apenas no lado do servidor, nenhum JS do navegador chama o Google diretamente.)
  6. Salve e copie o ID do cliente e o Segredo do cliente gerados.

2. Configure as variáveis de ambiente locais

Copie o arquivo de exemplo e preencha os valores da etapa anterior:

cp apps/worker/.dev.vars.example apps/worker/.dev.vars
GOOGLE_CLIENT_ID="<your client ID>"
GOOGLE_CLIENT_SECRET="<your client secret>"
COOKIE_ENCRYPTION_KEY="<any random string, at least 32 chars, e.g. output of: openssl rand -hex 32>"
WORKER_HOST="http://localhost:8788"
HOSTED_DOMAIN=""

.dev.vars é ignorado pelo git — é usado apenas localmente e nunca é commitado.

3. Inicie o servidor

npm install
npm run build
npm run dev

npm run build compila o pacote principal contra o qual o Worker é empacotado; npm run dev inicia o Worker em http://localhost:8788.

4. Aponte seu cliente MCP para o servidor local

Os conectores personalizados do Claude Desktop precisam de uma URL publicamente acessível, então mcp-remote é a única opção para apontar para localhost:

{
  "mcpServers": {
    "gtm-mcp-server-local": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://localhost:8788/mcp"]
    }
  }
}

Reinicie o Claude Desktop. Uma janela do navegador abrirá para o fluxo OAuth do Google; faça login com a conta que você adicionou como usuário de teste na etapa 1.

Observação: se você já se conectou ao servidor hospedado (ou alterna entre local e hospedado), limpe o cache do mcp-remote primeiro (consulte Solução de problemas acima) e reinicie completamente seu cliente MCP; caso contrário, ele pode reutilizar uma conexão obsoleta/em cache.

Publicação

Versões e changelogs são gerenciados com Changesets. Junto com uma alteração que deve ser publicada, adicione:

npm run changeset

Ao mesclar em main, o fluxo de trabalho de publicação abre um PR "Version Packages"; mesclar esse PR publica no npm, primeiro o pacote principal e depois a CLI que depende dele. O Worker é privado e nunca é publicado — ele é implantado a partir de main a cada push.

Desenvolvimento

npm install
npm run build      # core, then the CLI, then the Worker's generated version
npm run typecheck
npm run lint
npm run smoke      # starts the built CLI and runs an MCP handshake against it

Pull requests executam tudo acima mais uma verificação do bundle do Worker e sinalizam alterações em um pacote publicado que chegam sem um changeset. Ambos @modelcontextprotocol/sdk e agents estão fixados em versões exatas no apps/worker. O SDK identifica os esquemas de ferramentas com instanceof, então todo o workspace precisa resolver uma única cópia, e os lançamentos do agents fixam a versão do SDK contra a qual foram compilados. Atualize-os juntos e faça a implantação com cuidado.

Recursos úteis

Código aberto

O MCP Server para Google Tag Manager é desenvolvido e mantido pela Stape Team sob a licença Apache 2.0.