MCP Server for Google Tag Manager について
MCP Server for Google Tag Managerは、20個のツールでGoogle Tag Manager APIの操作を提供します。Google OAuth対応のホスト型サーバーと、独自の認証情報を使うローカルCLIを選べます。
主な機能
- 01Google Tag Manager用ツールを20個提供
- 02Google OAuth対応のホスト型エンドポイント
- 03ローカルのstdio CLIサーバー
- 04サービスアカウントまたはトークン認証
- 05各サーバーモードで共通のツールロジック
活用シーン
- 01MCPクライアントからGoogle Tag Managerを確認・管理
- 02ローカル認証情報の設定なしでホスト型OAuthを利用
- 03独自のGoogle認証情報でローカル実行
MCP 対応
ホスト型のHTTP MCPエンドポイントとローカルのstdio MCPサーバーを提供します。クライアントはOAuthでホスト型サーバーに接続するか、指定した認証情報でCLIを起動できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Google Tag Manager 用 MCP サーバー
MCP 経由で Google Tag Manager API に接続するインターフェースです。Google OAuth を組み込んだホスト型サーバーと、ユーザー自身の認証情報で実行するローカル CLI の 2 種類があります。
目次
リポジトリの構成
1 つのアプリと、公開されている 2 つのパッケージで構成される npm ワークスペースです。
| パス | パッケージ | 内容 |
|---|---|---|
apps/worker | (private) | gtm-mcp.stape.io で稼働するホスト型 Cloudflare Worker です。Google OAuth、承認フロー、公開ページ、セッションの削除を担います。 |
packages/cli | google-tag-manager-mcp-server | npm パッケージです。ユーザーが提供する認証情報で認証する、stdio 経由のローカル MCP サーバーです。 |
packages/core | google-tag-manager-mcp-core | GTM のすべてのツールとスキーマを含み、認証情報の取得方法には依存しません。 |
ツールは、特定のセッションを介するのではなく、GtmAuthProvider(getAccessToken(): Promise<string>)を通じて Google にアクセスします。そのため、同じツールセットを両方のサーバーで利用でき、独自の認証を使うプライベートなサーバーでも利用できます。詳しくはコアパッケージの READMEをご覧ください。
インストール
このサーバーには、ホスト型サーバーとローカル CLI の 2 種類があります。どちらも同じ 20 個の GTM ツールを提供します。違いは、Google 認証をどちらが処理するかです。
| ホスト型サーバー | ローカル CLI | |
|---|---|---|
| 認証 | ブラウザーで Google OAuth を実行し、サーバーが処理します | サービスアカウントキー、リフレッシュトークン、またはアクセストークンをユーザーが用意します |
| データ | gtm-mcp.stape.io を経由します | ユーザーのマシンから外部に送信されることはありません |
| セットアップ | 不要です | 環境変数を 1 つ設定します |
ツールを使うだけでなく、未リリースの変更をテストするコントリビューターの方は、以下の手順をすべて省略し、代わりに変更をローカルでテストするをご覧ください。
以下から使用するクライアントを選んでください。ホスト型サーバーは、https://gtm-mcp.stape.io/mcp にあるリモートの HTTP ベース MCP エンドポイントです。Google OAuth フローをクライアント自身で完了できるクライアント(Claude Desktop、Claude Code、VS Code、Copilot CLI、Cursor、ChatGPT)は、この URL に直接接続し、初回接続時に Google でサインインします。それ以外のクライアント(Antigravity、stdio 専用クライアント)は、リモート HTTP MCP サーバーへの小規模なブリッジである mcp-remote を介して接続します。設定を変更した後は、クライアントを再起動してください。
Claude Desktop
⬇️ クリックして展開 ⬇️
ホスト型サーバー、カスタムコネクター(推奨)。
- Customize → Connectors → Add custom connector に移動します。Team プランと Enterprise プランでは、代わりにオーナーが Organization settings → Connectors → Add → Custom から追加し、各メンバーが Customize → Connectors でそのコネクターの Connect を選択して、自分の Google アカウントでサインインします。
- 名前(例:
gtm-mcp-server)と URLhttps://gtm-mcp.stape.io/mcpを設定します。認証方法を尋ねられた場合は Sign in now を選択します。OAuth クライアントについて尋ねられた場合は Register automatically を選択します(サーバーは Use Claude's published identity に対応していません)。 - Add、次に Connect を選択し、Google でサインインします。
このコネクターは claude.ai でも動作します。
ホスト型サーバー、mcp-remote。 claude_desktop_config.json(Settings → Developer → Edit Config)から設定する場合:
{
"mcpServers": {
"gtm-mcp-server": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://gtm-mcp.stape.io/mcp"
]
}
}
}
ローカル CLI — OAuth フローはなく、他者のサーバーを経由してデータを送信することもありません。サービスアカウントキーまたはリフレッシュトークンを指定します。Settings → Developer → Edit Config を開き、次を追加します:
{
"mcpServers": {
"gtm-mcp-server": {
"command": "npx",
"args": ["-y", "google-tag-manager-mcp-server"],
"env": {
"GOOGLE_SERVICE_ACCOUNT_KEY": "{\"type\":\"service_account\", ... }"
}
}
}
}
すべての認証情報のオプションについては、CLI README を参照してください。
Claude Code
⬇️ クリックして展開 ⬇️
Claude Code は OAuth ハンドシェイクを含む HTTP に直接対応しているため、ホスト型サーバーにブリッジは不要です。
ホスト型サーバー:
claude mcp add --transport http gtm-mcp-server https://gtm-mcp.stape.io/mcp
その後、Claude Code 内で /mcp を実行するか、シェルから claude mcp login gtm-mcp-server を実行して、Google でサインインします。claude mcp list で接続状況を確認できます。
ローカル CLI:
claude mcp add gtm-mcp-server -e GOOGLE_SERVICE_ACCOUNT_KEY='{"type":"service_account", ... }' -- npx -y google-tag-manager-mcp-server
どちらもサーバーを現在のプロジェクトのみに追加します。すべてのプロジェクトで使用するには --scope user を追加します。--scope project はプロジェクトの .mcp.json に書き込みます。秘密情報が含まれず、チームメイトがそれぞれ自分の Google アカウントでサインインするホスト型サーバーには適していますが、認証情報がエントリーに含まれるローカル CLI には適していません。
VS Code
⬇️ クリックして展開 ⬇️
VS Code の MCP クライアントは HTTP サーバーとその OAuth フローにネイティブで対応しているため、mcp-remote は不要です。これを .vscode/mcp.json(このワークスペース)または MCP: Open User Configuration で開くファイル(すべてのワークスペース)に追加します:
ホスト型サーバー:
{
"servers": {
"gtm-mcp-server": {
"type": "http",
"url": "https://gtm-mcp.stape.io/mcp"
}
}
}
サーバーの初回起動時に、VS Code から Google へのサインインを求められます。
ローカル CLI:
{
"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
⬇️ クリックして展開 ⬇️
VS Code の GitHub Copilot Chat は VS Code 独自の MCP クライアントを使用するため、同じ MCP 設定を読み込みます。上記の VS Code を参照してください。別途設定する必要はありません。
Copilot CLI
⬇️ クリックして展開 ⬇️
ホスト型サーバー — Copilot CLI はリモート HTTP サーバーの OAuth をネイティブに完了します:
copilot mcp add --transport http gtm-mcp-server https://gtm-mcp.stape.io/mcp
Copilot CLI から求められたら、Google でサインインします。
ローカル CLI:
copilot mcp add --env GOOGLE_SERVICE_ACCOUNT_KEY='{"type":"service_account", ... }' gtm-mcp-server -- npx -y google-tag-manager-mcp-server
どちらもサーバーのエントリーを ~/.copilot/mcp-config.json に書き込みます。copilot mcp get gtm-mcp-server を実行して確認します。インタラクティブセッション内では、/mcp add をフォームから実行して同じ操作ができます。詳しくはGitHub のドキュメントを参照してください。
Cursor
⬇️ クリックして展開 ⬇️
Cursor は OAuth フローを含む HTTP に直接対応しているため、mcp-remote は不要です。これを .cursor/mcp.json(このプロジェクト)または ~/.cursor/mcp.json(すべてのプロジェクト)に追加します:
ホスト型サーバー:
{
"mcpServers": {
"gtm-mcp-server": {
"url": "https://gtm-mcp.stape.io/mcp"
}
}
}
その後、Cursor のサイドバーにある Customize で、サーバーのエントリーから Google にサインインします。
ローカル CLI:
{
"mcpServers": {
"gtm-mcp-server": {
"command": "npx",
"args": ["-y", "google-tag-manager-mcp-server"],
"env": {
"GOOGLE_SERVICE_ACCOUNT_KEY": "{\"type\":\"service_account\", ... }"
}
}
}
}
⬇️ クリックして展開 ⬇️
Antigravity のリモート HTTP サーバー向け OAuth サポートでは、まだサーバーにトークンが渡されないため(antigravity-cli#25)、ここではホスト型サーバーに mcp-remote を使用します。Antigravity のエディターと CLI で共有される ~/.gemini/config/mcp_config.json に、以下を追加してください。エディターでは、エージェントパネルから … → MCP Servers → Manage MCP Servers → View raw config を開きます。
ホスト型サーバー:
{
"mcpServers": {
"gtm-mcp-server": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://gtm-mcp.stape.io/mcp"
]
}
}
}
ローカル CLI:
{
"mcpServers": {
"gtm-mcp-server": {
"command": "npx",
"args": ["-y", "google-tag-manager-mcp-server"],
"env": {
"GOOGLE_SERVICE_ACCOUNT_KEY": "{\"type\":\"service_account\", ... }"
}
}
}
}
または、Antigravity CLI から次のいずれかを実行します(agy mcp add は同じ名前のエントリーを置き換えます)。
ホスト型サーバー:
agy mcp add gtm-mcp-server -- npx -y mcp-remote https://gtm-mcp.stape.io/mcp
ローカル CLI:
agy mcp add --env GOOGLE_SERVICE_ACCOUNT_KEY='{"type":"service_account", ... }' gtm-mcp-server -- npx -y google-tag-manager-mcp-server
mcp-remote は、初回接続時にブラウザーで Google サインインを開きます。
ChatGPT
⬇️ クリックして展開 ⬇️
- Web 版 ChatGPT で Plugins に移動し、+ を選択してから、Add custom MCP server を選択します。
- 名前(例:
gtm-mcp-server)を入力し、Connection でサーバー URL をhttps://gtm-mcp.stape.io/mcpに設定します。 - 認証を OAuth に設定します。サーバーは Dynamic Client Registration をサポートしているため、クライアント ID やシークレットは不要です。
- リスクに関する警告(I understand and want to continue)を確認し、Create as a plugin を選択します。
- 個人用プラグインからプラグインをインストールし、Google にサインインして、プロンプトボックスで
@を使って選択します。
ChatGPT はパブリックインターネット経由でのみサーバーに接続するため、ここではローカル CLI の選択肢はなく、ホスト型サーバーのみを使用できます。ワークスペース管理者はカスタム MCP サーバーを制限できます。詳しくは OpenAI のドキュメントをご覧ください。
その他の MCP クライアント
⬇️ クリックして展開 ⬇️
クライアントが OAuth を使ったリモート HTTP MCP サーバーに対応している場合は、Cursor の設定と同様に https://gtm-mcp.stape.io/mcp を指定します。対応していない場合は、ホスト型サーバーに mcp-remote を使用します。
{
"mcpServers": {
"gtm-mcp-server": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://gtm-mcp.stape.io/mcp"
]
}
}
}
または、認証情報を指定してローカル CLI を直接使用します。
{
"mcpServers": {
"gtm-mcp-server": {
"command": "npx",
"args": ["-y", "google-tag-manager-mcp-server"],
"env": {
"GOOGLE_SERVICE_ACCOUNT_KEY": "{\"type\":\"service_account\", ... }"
}
}
}
}
トラブルシューティング
認証エラー
ツールが 401/403 エラーで失敗する場合は、アシスタントに gtm_auth_status の実行を依頼してください。トークンを明かすことなく、現在の Google トークンが受け付けられているか、有効期限はいつか、不足している Tag Manager スコープはどれかを報告します。
MCP サーバー名の長さ制限
一部の MCP クライアント(Cursor AI など)には、MCP サーバー名とツール名を合わせた長さに 60 文字の上限があります。設定で長いサーバー名(例:gtm-mcp-server-your-additional-long-name)を使用すると、一部のツールが除外されることがあります。
この問題を避けるには:
- MCP の設定で短いサーバー名を使用します(例:
gtm-mcp-server)
MCP キャッシュのクリア
mcp-remote 経由で接続している場合(Antigravity、この方式で設定した Claude Desktop、または mcp-remote ブロックを使用するその他のクライアント)、すべての認証情報は ~/.mcp-auth(または MCP_REMOTE_CONFIG_DIR の指定先)に保存されます。問題が解消しない場合は、次を実行してください。
rm -rf ~/.mcp-auth
その後、MCP クライアントを再起動します。
変更をローカルでテストする
必要なワークフローは、変更内容によって異なります。ほとんどの変更は最初のカテゴリに該当します。Worker 自体に手を加える場合に限り、2 番目の方法を使用してください。
packages/core または packages/cli の変更
これはツールのロジックそのもの(スキーマ、GTM API 呼び出し、エラー処理)です。修正や追加のほとんどはここで行います。Google Cloud OAuth クライアントや Worker のセットアップは必要ありません。ソースからビルドし、すでにお持ちの認証情報を使って CLI を直接実行してください。
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
npx の代わりにローカルビルドを MCP クライアントに指定します。認証情報のオプションは、上記の Claude Desktop のローカル CLI の例と同じです。単一の変更をテストする場合は、OAuth Playground から取得したアクセストークンを使うのが最も手早い方法です。
{
"mcpServers": {
"gtm-mcp-local": {
"command": "node",
"args": ["/absolute/path/to/google-tag-manager-mcp-server/packages/cli/dist/index.js"],
"env": {
"GOOGLE_ACCESS_TOKEN": "..."
}
}
}
}
認証情報のすべてのオプションについては、CLI README をご覧ください。
apps/worker の変更
ホスト型サーバー独自のコード(OAuth フロー、ルーティング、セッション処理、承認ページ、ステータスページ)にのみ必要です。このコードを gtm-mcp.stape.io ではなく、独自の Google Cloud OAuth 認証情報を使ってローカルマシンで実行します。
1. Google Cloud OAuth クライアントを設定する
- Google Cloud Console でプロジェクトを作成または選択し、Tag Manager API を有効にします。
- APIs & Services > OAuth consent screen に移動し、設定します(External で問題ありません)。アプリの公開ステータスが Testing の間は、テストユーザーとして登録されたアカウントのみログインできます。
- Audience に移動し、Test users に自分の Google アカウントを追加します。
- APIs & Services > Credentials > Create Credentials > OAuth client ID に移動し、種類として Web application を選択します。
- Authorized redirect URIs に
http://localhost:8788/callbackを追加します。(Authorized JavaScript origins は空のままでかまいません。このフローはサーバーサイドのみで実行され、ブラウザーの JavaScript から Google に直接呼び出すことはありません。) - 保存し、生成された Client ID と Client secret をコピーします。
2. ローカル環境変数を設定する
サンプルファイルをコピーし、前の手順で取得した値を入力します。
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 は git の追跡対象外です。ローカルでのみ使用され、コミットされることはありません。
3. サーバーを起動する
npm install
npm run build
npm run dev
npm run build は Worker がバンドルするコアパッケージをコンパイルし、npm run dev は http://localhost:8788 で Worker を起動します。
4. MCP クライアントをローカルサーバーに接続する
Claude Desktop のカスタムコネクタには外部からアクセス可能な URL が必要なため、localhost を指定するには mcp-remote だけが選択肢となります。
{
"mcpServers": {
"gtm-mcp-server-local": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:8788/mcp"]
}
}
}
Claude Desktop を再起動します。Google OAuth フロー用のブラウザーウィンドウが開きます。手順 1 でテストユーザーとして追加したアカウントでログインしてください。
注: ホスト型サーバーに以前接続したことがある場合(またはローカルとホスト型を切り替える場合)は、先に mcp-remote のキャッシュをクリアし(上記のトラブルシューティングを参照)、MCP クライアントを完全に再起動してください。そうしないと、古い接続やキャッシュ済みの接続が再利用される場合があります。
リリース
バージョンと変更履歴は Changesets で管理しています。リリース対象となる変更とあわせて、次を追加してください。
npm run changeset
main にマージされると、リリースワークフローによって「Version Packages」PR が作成されます。その PR をマージすると npm に公開されます。まずコアが公開され、その後、コアに依存する CLI が公開されます。Worker は非公開で、公開されることはありません。main へのプッシュごとにデプロイされます。
開発
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
プルリクエストでは上記のすべてに加えて、Worker のバンドルチェックが実行され、変更セットなしで公開済みパッケージに変更が加えられた場合は警告されます。
@modelcontextprotocol/sdk と agents は、apps/worker で厳密なバージョンに固定されています。SDK は instanceof を使ってツールのスキーマを識別するため、ワークスペース全体で解決されるコピーは 1 つである必要があります。また、agents のリリースでは、ビルドに使用した SDK のバージョンが固定されています。両者を一緒に更新し、慎重にデプロイしてください。
参考資料
オープンソース
Google Tag Manager 用 MCP サーバー は、Apache 2.0 ライセンスのもと、Stape Team によって開発・保守されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。