Google Tag Manager (GTM) を LLM から操作するための MCP サーバーです。
認証は Google OAuth 2.0 を利用します。
- English:
README.md - 日本語:
README.ja.md(このファイル)
- Google OAuth 認証 URL の発行、コード交換、状態確認、認証解除
- GTM API v2 の汎用呼び出し(
gtm_request) - タグ操作:
list/create/update/delete - トリガー操作:
list/create/update/delete - 変数操作:
list/create/update/delete
- このリポジトリには Codex 用スキルを同梱しています:
skills/gtm-mcp/SKILL.md
- セットアップ、MCP登録、OAuth初回フロー、GTMツール運用パターンをまとめています。
- Node.js 18+
- npm
- Codex CLI または Claude Code CLI(MCP登録に使う場合)
- Google Cloud で作成した OAuth クライアント
- Google Cloud で対象プロジェクトを作成/選択
Tag Manager APIを有効化OAuth 同意画面を設定OAuth クライアント IDを作成- リダイレクト URI に
http://127.0.0.1:8085を登録 Client IDとClient Secretを控える
git clone <this-repo-url>
cd gtm-mcp
npm install
npm run setupnpm run setup で実行される内容:
.envの作成/更新(対話入力)- TypeScript ビルド(
dist/生成)
以下のスクリプトで各種CLIにMCPサーバーとして登録できます。
npm run register:codex
npm run register:claude
npm run register:claude:local
npm run register:claude:user
npm run register:claude:project補足:
register:claudeはuserスコープに登録(~/.claude.json側)register:claude:localはlocalスコープに登録(~/.claude.jsonの project エントリ)register:claude:userは明示的にuserスコープへ登録register:claude:projectはprojectスコープへ登録(.mcp.json)- 同名の
gtmが既にある場合、register:codex/register:claudeは上書きせずスキップ
別ディレクトリから登録する場合:
npm --prefix /absolute/path/to/gtm-mcp run register:codex
npm --prefix /absolute/path/to/gtm-mcp run register:claude
npm --prefix /absolute/path/to/gtm-mcp run register:claude:local
npm --prefix /absolute/path/to/gtm-mcp run register:claude:user
npm --prefix /absolute/path/to/gtm-mcp run register:claude:projectregister:claude:project は実行元ディレクトリ(INIT_CWD)を project scope として登録します。
新しいCodex/Claudeセッションを開いて、以下を順に実行します。
oauth_get_consent_url- 返却URLをブラウザで開いて同意
- リダイレクト先URLから
codeを取得 oauth_exchange_codeにcodeを渡すoauth_statusで確認
npm run devnpm run build
npm startGOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your-client-secret
GOOGLE_REDIRECT_URI=http://127.0.0.1:8085
GTM_MCP_TOKEN_PATH=.gtm-mcp/tokens.json- トークンは
GTM_MCP_TOKEN_PATHに保存されます - 書き込み操作には
https://www.googleapis.com/auth/tagmanager.edit.containersが必要です