anacraft — Google Analytics 4 について
anacraftはMCPサーバー経由でアシスタントをGoogle Analytics 4に接続し、CLIレポートと計測監査を提供します。トラフィックの確認や、分析データの収集・設定状況を調べたいサイト運営者向けです。
主な機能
- 01自然な英語でGA4データを質問
- 02トラフィック、ページ、流入元、国のレポート
- 03トラッキングとキーイベント設定の監査
- 04一部のGA4計測設定を修正
- 05JSONまたはSlack形式でレポートを出力
活用シーン
- 01アシスタントにサイトの状況を尋ねる
- 02分析計測の設定漏れを見つける
- 03レポートや監査結果を定期的にSlackへ送る
MCP 対応
`craft mcp`コマンドは、アシスタントを選択したGoogle Analytics 4プロパティに接続するMCPサーバーを起動します。ツールはそのプロパティの分析データに基づいて回答します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://app.anacraft.dev/mcpclaude mcp add --transport http dev-anacraft-google-analytics-ga4 https://app.anacraft.dev/mcp{"mcpServers":{"dev-anacraft-google-analytics-ga4":{"type":"http","url":"https://app.anacraft.dev/mcp"}}}Cursor で開く{"servers":{"dev-anacraft-google-analytics-ga4":{"type":"http","url":"https://app.anacraft.dev/mcp"}}}VS Code で開く{"mcpServers":{"dev-anacraft-google-analytics-ga4":{"type":"http","url":"https://app.anacraft.dev/mcp"}}}{"mcpServers":{"dev-anacraft-google-analytics-ga4":{"serverUrl":"https://app.anacraft.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
⛏ craft
GA4 について、自然な英語で質問できます。
MCP サーバーを介してアシスタントを Google Analytics 4 に接続します。サイトの状況を質問すると、実際の数値に基づいた回答が得られます。 anacraft.dev/app のダッシュボードで プロパティを作成してタグを取得できます。CLI で計測内容を監査して問題を修正し、 ターミナルダッシュボードで数値を確認できます。
anacraft.dev ·
リリース ·
craft dash --demo · osaka-jade · 132×52
インストール
macOS / Linux
curl -fsSL https://anacraft.dev/install.sh | bash
書き込み可能な場合は /usr/local/bin にインストールし、それ以外の場合は ~/.local/bin にインストールします。
sudo は使用しません。別の場所を指定するには INSTALL_DIR を設定してください。
curl -fsSL https://anacraft.dev/install.sh | INSTALL_DIR=~/bin bash
ソースから
cargo install --git https://github.com/mehfuzh/anacraft
手動 — リリースからバイナリをダウンロードして展開し、anacraft を PATH に追加してください。
クイックスタート
コマンドを指定せずに anacraft を実行すると、ダッシュボードが開きます。デフォルトのコマンドは dash です。プロパティが保存されていない場合は合成データで実行されるため、サインインする前から利用できます。
# The dashboard, on synthetic data — no Google account needed
craft
# Connect your GA4 property
craft login # OAuth sign-in
craft props # list the properties this account can read
craft use 1234567 # save it as the default
# Same bare command, now against your property
craft
プロパティをまだお持ちでない場合:anacraft.dev/app にサインインし、新しいプロパティを作成を選んでサイトの URL を入力してください。プロパティとウェブデータストリームが作成され、測定 ID があらかじめ入った gtag.js スニペットが、コピー用ボタンとともに表示されます。インストールは不要です。<head> に貼り付けたら、ここで craft use <id> を実行し、続けて craft live を実行すると、最初の訪問が届く様子を確認できます。ダッシュボードは
Anacrafter Elite プラン(月額 $9.99、craft mcp と同じプラン)に含まれています。料金の支払いが必要になるのは、Analytics アカウントで何かが作成される前です。
すでにプロパティがあるドメインを指定した場合、新たには何も作成されず、既存のプロパティが見つかってそのタグが表示されます。そのため、もう一度実行すればタグを再取得でき、トラフィックを分けてしまう 2 つ目のプロパティが作成されることはありません。
ターミナルで操作したい場合は、月額 $2.99 の Anacrafter プランで craft configure yoursite.com を実行すると、同じことを 1 つのコマンドで行い、そのプロパティをデフォルトとして保存できます。実行時に Google から Analytics アカウントへの書き込み許可を求められます。サインイン時に求められることはありません。詳しくは
docs/oauth-scopes.md を参照してください。
自分のマシンで使うダッシュボード
craft serve は、anacraft.dev/app のページをローカルで実行するコマンドです。CLI 自身の認証情報でサインインしたい場合や、同じ API を使ったスクリプトを実行したい場合に使います。
craft serve # opens a page: sign in, pick or make the property, copy the tag
craft serve --demo # the whole walkthrough on synthetic data, creating nothing
127.0.0.1 でのみリッスンし、ほかの場所ではリッスンしません。一度だけ表示するベアラートークンを発行し、自身のオリジンからのブラウザーリクエストにのみ応答します。このページは、全体が anacraft.dev/serve.html にドキュメント化されている API の最初の呼び出し元です。そのため、スクリプト、エディター拡張機能、別のサービスからも、同じ方法でタグを登録できます。ホスト型ダッシュボードと同じプロパティとストリームを、同じ 2 つの Admin API 呼び出しで作成します。また、craft delete --all と同じように、プロパティを Google のゴミ箱に移すこともできます。実行前に ID を 2 回確認します。
これは Anacrafter Elite プランに含まれています。このプランには craft mcp も含まれるため、1 つのサブスクリプションで、タグと、その後に数値を読み取るアシスタントの両方を利用できます。コマンド自体は誰でも起動できます。サインインや、必要に応じたサブスクリプションの申し込みはページ上で行います。
craft serve --demo ではすべての流れを確認できますが、何も作成されません。
1 回限りのレポート
ダッシュボードが不要な場合もあります。これらのコマンドはレポートを出力して終了します。
craft overview --days 30 # headline metrics, deltas, achievements
craft pages # most-visited pages
craft portals # where traffic arrives from
craft realms # traffic by country
craft live # who is on the site right now
craft demo # render an overview from synthetic data
2 つのフラグはグローバルです。--property <id> は保存済みのデフォルト以外のプロパティをクエリし、--theme <name> は保存済みのテーマ以外のパレットで表示します。
数値を別の場所にパイプする
overview は --format を受け取るため、人がパネルとして読むレポートを、データとしてターミナルの外に出力することもできます。
craft overview --format json # one object, one line — for jq or a script
craft overview --format slack # a Block Kit payload, for a webhook
json は site_status MCP ツールと同じ形式で応答します。単位付きのラベル付き指標、前の期間、変化率、日ごとのユーザー系列、発生した達成項目が含まれます。期間はここで計算するのではなく、API が実際に返した最初の日と最後の日として報告されます。GA はプロパティのタイムゾーンで last 7 days を解決するため、必ずしもこのマシンのタイムゾーンとは一致しません。
slack は同じ数値をブロック形式で出力します。どちらもペイロード以外は何も出力しないため、週次ダイジェストは cron の 1 行で実行できます。
0 9 * * 1 craft overview --days 7 --format slack \
| curl -sX POST -H 'Content-Type: application/json' -d @- "$SLACK_WEBHOOK"
どちらの形式もサブスクリプションは不要です。craft overview がすでに無料で出力しているレポートを整形して表示します。
Claude Desktop
craft mcp --install # write Claude Desktop and Smartloop configs
craft mcp --install --demo # ...pointed at synthetic data instead
craft mcp --uninstall # take it back out again
Claude Desktop を再起動して、サイトの状況を尋ねてください。マージされるブロックは、ほかのサーバーには影響しません。
{
"mcpServers": {
"anacraft": { "command": "/usr/local/bin/craft", "args": ["mcp"] }
}
}
最初に craft login を実行し、有効なサブスクリプションが必要です。どちらかが不足している場合でも、サーバーは起動し、ツールが不足しているものを通知するため、クライアントが接続解除として報告することはありません。craft mcp --demo は、どちらも不要で合成データを使って実行できます。詳しくはアシスタントに質問するをご覧ください。
監査
ほかのコマンドは「何が起きたか」に答えます。craft audit は、その前に問うべきことに答えます。このプロパティはサイトを正しく計測できているのか、そして計測した内容は信頼に値するのか、という問いです。
craft audit # sixteen checks over the last 28 days
craft audit --fix # ...and apply the ones GA4 can fix itself
craft audit --days 90 # a longer window
craft audit --format json # the findings as one object, for a script
craft audit --format slack # a Block Kit payload, for a webhook
craft audit --demo # a synthetic report — no account, no subscription
計測と設定は別々に失敗するため、2 つの API を読み取ります。Data API は purchase が何回発生したかを示し、Admin API は purchase が重要なイベントとして GA4 に登録されているかを示します。プロパティが前者に合格し、後者に失敗したまま、誰にも気づかれず 1 年が過ぎることがあります。トラフィックは届いているのに、成果としてマークされたものは何もないというこの状態が、このコマンドで最もよく見つかる問題です。
チェックする項目。 数値を誤らせる 5 つの要因です。
-
記録がまったくない状態です。タグがインストールされていないか、サイトの報告先がそのプロパティではありません
-
ウェブデータストリームがありません。そのため、サイトに設定する測定 ID がありません
-
重要なイベントがマークされていない状態、または重要なイベントとして設定されているのに一度も発生していない状態です。GA4 は名前を完全一致で照合するため、
Purchaseとpurchaseは別々のイベントであり、カウントされるのはどちらか一方だけです -
purchaseがvalueなしで届いている状態です。この場合、そのプロパティの収益、ARPU、ROAS の数値はすべてゼロになります。そこからコンバージョンをインポートしている Google Ads アカウントでも同様です -
拡張計測機能がマスタースイッチでオフになっている状態です。ストリームの自動イベントは設定済みでオンと表示されますが、何も収集されません 1つを歪める5つの項目:
-
ページビューが二重にカウントされること。ページに残されたgtagスニペットと、同じくページビューを送信するGTMタグが併存している場合、ここではこう見えます。直帰率はほぼゼロで、セッションあたりのビュー数は2倍になります。
-
サイト自身が参照元になること。クロスドメイン設定の対象外のドメインによって、訪問数が半分に分割されています。
-
コンバージョンが決済ページやサインインページに計上されること。ゲートウェイを参照元とする新しいセッションとして、戻りの訪問が始まるためです。
-
この期間とその前の期間の間に、イベントの発火が止まっていること。タグが削除、名前変更されたか、現在は実行されない何かの後ろに移動されています。
-
成果がマークされずに届くこと。
sign_upが1,000回発火しているのに、それが成果であることをGA4で示す設定がないため、コンバージョンレポートにカウントされません。 -
計測が有効なのに、何も記録されていないこと。ストリームではスクロール、サイト内検索、動画、ダウンロードを収集するように設定されていますが、1か月間、そのどれも記録されていません。これは調整するしきい値がない唯一のチェックです。期待値は私たちではなく、Googleが定めているためです。
そして、ほかを読む前に知っておく価値のある5つの項目があります。同じイベントに2つの名前が付いていること、GA4がまったく帰属できなかったセッション、キャンペーンにタグが付いていない可能性を示すほど高いダイレクト流入の割合、複数のサイトが同じプロパティにデータを送信していること、そしてストリームで収集できるのに収集されていない計測です。
--fixの動作。 監査で見つかる問題のほとんどはサイト上にあり、APIでは修正できません。送信されていないイベントを、設定を変更して届くようにすることはできません。例外となる指摘は2種類あり、craft audit --fixはこれらに対応します。プロパティですでに記録されている成果をキーイベントとしてマークすることと、サイト上のタグがすでにサポートしている計測(スクロール、外部リンクのクリック、動画、ダウンロード)を有効にすることです。サイト内検索とフォーム操作は報告されますが、設定は書き込まれません。これらは訪問者が入力した内容を記録するものであり、アナリティクスの設定が正しいかどうかではなく、プライバシーポリシーに関する判断事項だからです。どちらの種類の修正も、フラグを渡す前に、修正のきっかけとなった指摘の下に表示されます。どちらも追加のみの変更で、GA4コンソールからワンクリックで元に戻せます。
修正処理によって、データ収集を無効にしたり、保持期間を短くしたり、サイトから送信されるデータを変更したりすることはありません。実行にはプロパティの編集者権限が必要です。監査の実行には閲覧者権限で十分ですが、修正には足りません。
実行しないこと。 症状を報告し、よくある原因を挙げますが、その逆は行いません。「直帰率が1.2%」はAPIが返した情報ですが、「page_viewタグが2つある」は推測です。GTMコンテナの中を見ることはできないため、データに現れるタグ付けの不具合は見つけますが、コンテナ内でしか確認できない不具合は見つけません。また、すべてのチェックには最低基準があります。セッションが80件のプロパティでは、直帰率にもダイレクト流入の割合にも意味がないため、こうしたチェックはノイズに反応するのではなく、未実行として報告されます。
終了コード。 プロパティに問題がなければ0、問題があれば2、エラーが発生した場合は1です。--fixを使った場合、修正されたばかりの指摘によって終了コードが変わることはありません。craft watchと同じ規則なので、週次監査をSlackに送る処理はcronの1行で済みます。
0 9 * * 1 craft audit --format slack \
| curl -sX POST -H 'Content-Type: application/json' -d @- "$SLACK_WEBHOOK"
craft watchとは異なり、問題がない場合も結果を出力します。監査は誰かが依頼するものであり、「16項目をチェックし、問題は見つかりませんでした」が求められた答えだからです。各レポートの末尾には、実行されたチェックの数が表示されます。「指摘なし」という結果は、どれだけの観点から調べたかが分からなければ意味をなしません。また、Admin APIを読み取れない、またはプロパティのデータが少なすぎて判断できないなどの理由で実行できなかったチェックは、合格ではなく未実行として報告されます。
craft auditはAnacrafter Proプランの一部です。craft audit --demoはプランに含まれず、何も接続する前にレポートの全体像を確認できます。
アラート
craft watch は、直近の完了した日をそれ以前の日の平均と比較し、通常より大きく変動した項目を報告します。役立てるために設定する必要はありません。サイト自体の履歴がしきい値になります。
craft watch # check once, print what moved, exit
craft watch --every 3600 # keep checking, hourly
craft watch --webhook "$HOOK" # POST the alert to a Slack incoming webhook
craft watch --format json # the same finding as one object, for a script
craft watch --demo # synthetic alerts — no account, no subscription
3種類のアラートが発生します。指標のしきい値を超える低下または急増、そして途絶です。途絶とは、ベースラインがゼロではないのにカウントがゼロになった状態で、ここから見ると、タグが削除された場合やサイトが停止した場合に当たります。どの指標にもデータがない期間は、6つの指標すべてが途絶したものとしてではなく、その期間自体として一度だけ報告されます。
デフォルト値は指標ごとに設定されています。コンバージョンは通常の火曜日でも3分の1ほど変動しますが、直帰率はそうではないためです。ユーザー、セッション、ビューは30%、コンバージョンは40%、平均セッション時間は25%、直帰率は20%です。ベースラインが10未満の場合、カウントのアラートは発生しません。1日あたりのコンバージョンが平均4件のサイトでは、静かな1日は25%の「低下」になりますが、何の意味もありません。
これらはプロパティごとに調整できます。
[[property]]
id = "552157097"
[property.watch]
baseline_days = 28 # days the baseline averages over
min_baseline = 10 # a baseline under this never fires a count
users = 25 # % deviation that wakes somebody
conversions = 40
bounce_rate = 15
キーには users、sessions、views、conversions、bounce_rate、avg_session、またはお好みで GA4 API 名を指定できます。--baseline <days> を指定すると、実行時にウィンドウが上書きされます。
Slack に届く内容。 各アラートには、指標、その日の値、変動幅、変動前のベースラインが含まれます。さらに、報告対象の日で終わるウィンドウ全体のスパークラインも表示されます。「通常より38%低い」だけでは、数値が一週間ずっと下がっていたのか、昨夜急落したのかが分からないためです。変動の大部分を占めるチャネルがある場合は、そのチャネル名が示されます。主にオーガニック検索 — 331から96へ(変動の79%)。対象はカウントのみで、そのチャネルが全変動の少なくとも35%を占める場合に限られます。それ未満の場合はサイト全体の変動であり、最大の内訳を示すと原因のように受け取られてしまうためです。メッセージには GA4 のプロパティへのリンクが付き、側面には赤または琥珀色のバーが表示されるため、メッセージを読む前にチャンネル内のほかの投稿と見分けられます。
同じ日のアラートは一度だけ送信されます。状態は ~/.anacraft/watch.json に保存され、報告対象の日付をキーにします。そのため、--every 3600 を指定しても、低下に関するメッセージは24件ではなく1件だけ送信され、新しい日になれば再び通知されます。記録されるのは配信が成功した後だけです。Webhook に接続できず誰にも届かなかった場合は、次の実行時に再試行されます。
終了コード。 何も発生しなかった場合は 0、何か発生した場合は 2、エラーの場合は 1 です。シェルから独自に判定できます。
craft watch --format slack \
|| craft watch --format slack | curl -sX POST -d @- "$SLACK_WEBHOOK"
静かな日には --format slack は何も出力しません。そのため、cron の設定行が毎時空のメッセージを投稿することはありません。ループ内では --webhook が POST を直接実行するため、デーモンからパイプで渡すものはありません。
--format は Webhook が受け取る形式を選択します。そのため、Slack 以外を指す URL には、受信側で読み取れる形式を指定できます。--format json --webhook <url> を指定すると、JSON オブジェクトが POST されます。例外が2つあります。パネルには送信形式がないため、--format を指定せずに Webhook を渡すと Slack ブロックが POST されます。また、hooks.slack.com の URL には、--format の指定にかかわらず常にブロックが送信されます。Slack は JSON オブジェクトだけを送ると 400 no_text を返すためです。この場合はフラグより送信先が優先されるので、craft slack --install で --format json を指定してもエラーになりません。
Slack へのインストール
Webhook を手動で作成するには、開発者コンソールで6つの手順が必要です。craft slack は、Google 用の craft login と同じ方法で作成します。
craft slack --install # opens Slack; pick the workspace and channel there
craft slack --test # post one message, to check it before an alert needs to
craft slack # say where alerts currently go
craft slack --uninstall # forget the webhook (the app stays installed in Slack)
Slack のインストール画面にはワークスペースとチャンネルの選択欄があり、incoming-webhook スコープを指定すると、OAuth の応答で URL が返されるため、手動でコピーする必要はありません。その後の craft watch では --webhook は不要です。
スコープは1つだけで、機能する範囲で最も限定的なものです。選択した単一のチャンネルへの投稿権限です。ワークスペース内のどこにでも投稿できる chat:write ではありません。
Webhook URL は、--webhook、ANACRAFT_WEBHOOK、craft slack --install が ~/.anacraft/slack.json に保存した値の順に取得されます。意図的に config.toml からは取得しません。このファイルはドットファイル用のリポジトリに安全にコミットできるようにするもので、Slack に投稿できる URL を含めるべきではないためです。
--webhook は、cron、CI、アプリをインストールできないワークスペース向けに引き続き使用できます。
ターミナルでの craft watch は Anacrafter プランに含まれます。Slack への配信は Anacrafter Pro の機能です(同じコマンドに --webhook を指定します)。
craft watch --demo はどちらも必要ないため、料金を支払ったり設定したりする前に、アラートの表示を確認できます。
ダッシュボード
7つのパネルがあり、それぞれ表示を切り替えられます。不要なパネルをオフにすると、残りのパネルがターミナルいっぱいに再配置されます。
| キー | パネル | 表示内容 |
|---|---|---|
1 | イベント | 日ごとのイベント数。今期を前期に重ねて表示し、合計とその変化も表示します |
2 | 現在の状況 | リアルタイムのプレイヤー数と、出現/離脱イベントのフィード |
3 | 国 | 世界地図上にトラフィックを表示します |
4 | 人気ページ | 最も閲覧されたページと、表示回数の棒グラフおよび順位の変化 |
5 | 主要指標 | ユーザー数、セッション数、表示回数、コンバージョン、直帰率、平均セッション時間 |
6 | 上位の国 | ランク順の国とティアマーカー |
7 | 日別ユーザー数 | 日ごとのユーザー数。各棒に日付と件数を表示し、今期のユーザー数を前期と比較します |
操作
| キー | 操作 |
|---|---|
1–7 | パネルの表示を切り替えます。e l m p v g d でも同じ操作ができます |
0 | ダッシュボードをリセットします。すべてのパネルをキー順に表示し、選択もズームも解除します。最初に確認が表示され、y で確定します |
| 矢印キー | ペインを選択します。太い金色の枠で囲まれます |
shift+矢印キー | 選択したペインをダッシュボード上で移動し、隣のペインと入れ替えます |
z | 選択したペインをダッシュボードいっぱいに拡大し、もう一度押すと元に戻します。ズーム中は矢印キーでペインを切り替えます |
tab | 複数のプロパティが設定されている場合、次のプロパティに切り替えます |
shift+D | 画面に表示中のプロパティを削除します。ローテーションから外しますが、Google には残します |
t | パレットを順に切り替えて保存します |
b | シンプルモード。テクスチャパックの代わりに GA4 の標準名称を使います |
s | デモ専用。Anacrafter の外観をプレビューします |
r | 再構築。今すぐ強制的に再取得します |
? / h | ヘルプオーバーレイ |
q / Esc | 終了します。Esc はまずズームを解除し、次に選択中のペインを解除してから終了します |
パレット
craft theme # list the palettes with swatches
craft theme tokyo-night # switch and persist
craft --theme github dash # override for one run
osaka-jade(デフォルト) · solarized-dark · tokyo-night · catppuccin · github · solarized-light · catppuccin-latte
鉱石の用語(ダイヤモンド、金、レッドストーン、ラピス)は、選択中のパレットに対応付けられるため、テーマを切り替えてもテクスチャパックはそのまま使えます。
コマンドは craft です。エイリアスとして anacraft も併せてインストールされるため、以前のスクリプトや、使い慣れたコマンドも引き続き動作します。
アシスタントに尋ねる
craft mcp は、ダッシュボードの数値を Model Context
Protocol 経由で提供するため、Claude Desktop、Claude Code、または
ほかの MCP クライアントが、人間が TUI を読まなくても「サイトの調子はどうですか」と答えられます。
craft mcp --install # write Claude Desktop and Smartloop configs
craft mcp --install --demo # use synthetic data in both entries
craft mcp --uninstall # take the server back out of Claude Desktop's config
craft mcp # the server itself; clients spawn this, you rarely do
craft mcp --demo # synthetic data, no Google account, no subscription
Claude Desktop ならコマンドは 1 つです。Claude Code の場合は
claude mcp add anacraft -- craft mcp を実行します。それ以外のクライアントでも、同じコマンドと引数を使います。
設定を手動で書く場合は、絶対パスを使ってください。デスクトップアプリはシェルから起動されず、craft が動作する PATH を引き継がないためです。貼り付ける値は which craft で確認できます。
| ツール | 回答内容 |
|---|---|
site_status | 直前の期間との比較を含む主要指標、日別ユーザー系列、発生した達成項目 |
audit_site | プロパティが正しく計測されているかどうか。28 日間にわたる 16 項目の評価付きチェックと、それぞれの意味 |
live_visitors | 国別の、現在サイトを訪問しているユーザー |
list_pages | 最も訪問されたページ |
list_events | 件数別イベントと、前の期間と比較した日別合計 |
list_referrers | トラフィックを送っている URL |
list_traffic_sources | GA4 のソース/メディアの組み合わせ |
list_countries | 国別のトラフィック |
list_properties | このアカウントが読み取り可能なすべてのプロパティ |
search_pages | パスに部分文字列を含むページ |
search_events | 名前に部分文字列を含むイベント |
configure_site | ドメインのプロパティとウェブストリームを作成し、貼り付けるタグを返します。唯一の書き込みツールです |
すべてのレポートツールは任意の property を受け取り、指定がなければ保存済みのデフォルトを使うため、設定について何も知らないアシスタントでも回答を得られます。各ツールはそれぞれ独自の days のデフォルト値も持ち、共通の値は使いません。質問に必要な期間も質問の一部だからです。「調子はどうですか」には 7 日間が適切ですが、「何か壊れていますか」には適していないため、audit_site では 28 日間を指定します。唯一の書き込みツールである configure_site は、プロパティの作成が目的なので、代わりに domain を受け取ります。応答は構造化された JSON です。表示用パネルではなく、プロパティ ID と対象の日付範囲が付いたラベル付きの数値を返します。
書き込みツールは 1 つ。 configure_site は、アカウントでまだ計測していないドメインのプロパティとウェブストリームを作成し、タグを返します。ブラウザーを開かず、保存済みの認証情報を使って動作します。ここにあるほかの機能が OAuth フローを開始したり、~/.anacraft/ に書き込んだり、デフォルトのプロパティを変更したりすることはありません。login と use は引き続き人間が実行するコマンドであり、configure_site もデフォルトを設定しません(その場合は craft use を実行してください)。認証情報が保存されていない場合、クライアントのサブプロセス内でブラウザーを開くのではなく、ツールが craft login の実行を促します。同一のレポートは 1 分間キャッシュされるため、頻繁に呼び出すエージェントがダッシュボードに必要な GA4 の割り当てを消費することはありません。
サブスクリプション。 craft mcp は Anacrafter の Elite プランです。2.99 ドルのスタータープランには craft subscribe を、上位 2 プランには --plan pro/--plan elite を使います。各プランの内容についてはanacraft.dev/pricing をご覧ください。Stripe を開いて支払い完了を待ち、supporter = true(およびプラン)を自動的に書き込みます。ダッシュボード、craft watch、MCP サーバーは起動時に再確認し、その状態を最新に保ちます。記録はサインインに使った Google アカウントにひも付けられているため、2 台目のマシンでは craft login を実行するだけです。ブラウザーを開かずに確認するには --check を追加してください。サブスクリプションがなくてもプロセスは停止しません。MCP クライアントにとって予期しない終了は「サーバー切断」として表示され、何を修正すべきか分からないため、サーバーは起動してハンドシェイクを完了し、すべてのツール呼び出しに問題の解決方法を示す文を返します。ログインがない場合も同様です。craft mcp --demo は制限なしで使えるため、まずサーバーを接続して動作を確認できます。
設定
| ファイル | 用途 |
|---|---|
~/.config/anacraft/config.toml | プロパティとその設定 |
~/.anacraft/token.json | OAuth リフレッシュトークン。login によって書き込まれます |
設定では $XDG_CONFIG_HOME が尊重されます。トークンを ~/.config の外に置いているのは意図的です。このディレクトリはドットファイルのリポジトリに含まれがちで、リフレッシュトークンを一緒に持ち運ぶべきではありません。0.4 より前の ~/.anacraft/config.json は、初回実行時に移行されます。
複数のプロパティ
craft use <id> は直前のプロパティを置き換えるのではなく、新しいプロパティを追加するため、設定に蓄積されていきます。ダッシュボードでは tab でプロパティを切り替えられ、終了時に選択しているものが active になります。そのため、ダッシュボードとその他の CLI コマンドで、現在のプロパティの認識が食い違うことはありません。別の場所へ移動する途中で通過するだけなら何も起きません。移動先として選ぶと、その選択が確定します。
特に指定しない場合、すべてのコマンドは active を読み取ります。優先順位は --property <id>、ANACRAFT_PROPERTY_ID、active の順です。そのため、フラグまたはエクスポート済みの ID が設定されている間は、craft use よりも優先されます。
active = "397412345"
theme = "osaka-jade" # palette for any property that doesn't name one
[[property]]
id = "397412345"
name = "anacraft.dev"
label = "site" # shown instead of name in the switcher
theme = "catppuccin"
days = 14
refresh = 60
live_refresh = 5
[[property]]
id = "88820011" # everything optional: inherits the defaults
[[property]] の各キーはすべて省略可能で、省略した場合はグローバルのデフォルト値が使われます。そのため、何も保存していないプロパティに切り替えると、前のプロパティのウィンドウ設定を引き継ぐのではなく、デフォルト値が使われます。コマンドラインフラグは両方よりも優先されます。
ディスク上にプロパティを保存しておきたくない場合は、ANACRAFT_PROPERTY_ID で保存済みのプロパティを上書きできます。
独自の OAuth クライアント
公式ビルドには OAuth クライアントが含まれているため、セットアップなしで craft login を実行できます。代わりに独自のクライアントを使うには、ANACRAFT_OAUTH_CLIENT_ID と ANACRAFT_OAUTH_CLIENT_SECRET を設定するか、~/.anacraft/client.json に記述します。どちらも組み込みクライアントより優先されます。また、独自の Google Cloud プロジェクトを登録すると、他のユーザーによるクォータ消費の影響も受けません。
GA4 のセットアップ
推奨される方法は anacraft.dev/app です。サインインして 新しいプロパティを作成 すると、コンソールを使わずにプロパティ、データストリーム、タグが設定されます。craft configure <domain> を使えば、ターミナルから同じことができます。どちらもサブスクリプションの一部で、ダッシュボードは Elite、コマンドは Anacrafter で利用できます。支払いが完了するまで、Analytics アカウントには何も作成されません。アクセス管理、データ保持、キーイベント、API の有効化など、Google 側の残りの作業はコンソールで行います。詳しくは アナリティクスの設定 をご覧ください。
craft delete <domain|id> を使うと、元の状態に戻せます。このコマンド単体で行うことは、名前から想像するよりも少ないものです。プロパティをここから削除して、そのプロパティがダッシュボードの起動先にならないようにし、コンソールへのリンクと、プロパティを削除するための2つのクリック手順を表示します。Analytics 側には何も変更を加えません。
craft delete <domain|id> --all を使うと、その2つのクリック操作を代わりに実行します。Google 上のデータを削除するのはこのコマンドだけです。指定したプロパティ以外に触れることはなく、コマンドを明示して実行する必要があります。craft delete だけでは、決して削除されません。このコマンドが使うのは Google のソフト削除機能です。そのため、プロパティは Analytics アカウントのゴミ箱に移され、コンソールから35日間は復元できます。その期間が過ぎると、プロパティとそのデータは完全に削除されます。
リポジトリをクローンして Claude Code を使っていますか?.claude/skills/anacraft/ には、スキルが同梱されています。インストール、プロパティへの接続、ダッシュボードの操作、craft mcp の設定、各エラーメッセージの意味が説明されています。Claude に anacraft のセットアップを頼むか、失敗したコマンドを貼り付けてください。
要件
- Google Analytics 4 のプロパティ
- Truecolor に対応したターミナル
- ソースからビルドする場合は Rust 1.74 以降
コントリビューション
cargo run -- dash --demo を実行すると、Google アカウントを接続せずに動作するダッシュボードを起動できます。コードの構成と CI の要件については、CONTRIBUTING.md をご覧ください。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。