Matomo Analytics について
Matomo Analyticsは、Matomo利用者向けのMCPサーバーです。厳選した読み取り専用ツールでサイト分析データを取得でき、Reporting API全体への呼び出し口も備えています。単一バイナリでリアルタイムレポートや応答制限、再試行に対応します。
主な機能
- 0115種類の読み取り専用分析ツール
- 02トラフィック、ページ、参照元、ECレポート
- 03リアルタイム訪問者数と訪問ログ
- 04他のメソッド向けの全API呼び出し口
- 05行数と応答サイズの制限
- 06一時的な障害時の自動再試行
活用シーン
- 01期間別のサイトトラフィック比較
- 02コンバージョン、目標、ECデータの確認
- 03訪問者の流入元、端末、地域の分析
- 04現在の訪問者と訪問ログの確認
- 05厳選ツールにないReporting APIの呼び出し
MCP 対応
stdioまたはストリーム可能なHTTP経由で、Matomoレポート用ツールをMCPクライアントに提供します。ツールは読み取り専用で、他のReporting APIメソッドも呼び出せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
matomo-mcp
Matomo Analytics に話しかけましょう。 Claude、Cursor、VS Code、または任意の MCP クライアントから利用できます。
厳選された読み取り専用の分析ツール 15 個と、全 API にアクセスできる代替手段を備えています。単一のバイナリで即時起動し、コンテキストに優しい設計です。
You ▸ How was traffic yesterday, and where did it come from?
Claude ▸ Yesterday you had 14,472 visits (11,416 unique visitors, 66% bounce rate).
Top acquisition channels:
1. Organic search — 6,120 visits (Google 92%)
2. Direct — 4,890 visits
3. AI assistants — 1,204 visits (↑ 31% vs. last week)
Want me to break down which landing pages converted best?
Matomo のダッシュボードで答えられる質問には、AI アシスタントも答えられます。追加の質問や比較、「なぜ?」という問いにも対応します。
✨ matomo-mcp を選ぶ理由
| 🎯 生成ではなく、厳選 | 実際の分析に関する質問をもとに手作業で作成した 15 個のツールを用意しています。70 個以上の API ミラーを自動生成してモデルのコンテキストを圧迫し、ツール選択の精度を下げることはありません。 |
| ⚡ 即時起動 | 内省のための往復通信は不要です。静的バイナリ 1 つで動作し、Node、Python、ランタイムは必要ありません。ミリ秒単位で起動します。 |
| 🔒 デフォルトで安全 | レポート用の読み取り専用ツールです。トークンは POST でのみ送信され(URL やログには含まれません)、すべてのエラーから取り除かれます。TLS 検証はデフォルトで有効です。 |
| 🧠 コンテキストに優しい | すべてのレポートに行数制限を設け、実用的なガイダンス付きの厳格な応答上限を設定しています。1 回のツール呼び出しでコンテキストウィンドウがあふれることはありません。 |
| 📡 リアルタイム対応 | ライブ訪問者数と訪問ログ(matomo_realtime)を利用できるため、今この瞬間の状況を確認できます。 |
| 🧰 制限なし | 厳選されたツールでカバーできない場合も、matomo_api から 任意の Reporting API メソッド(ファネル、ヒートマップ、カスタムディメンションなど)にアクセスできます。 |
| 🔁 高い回復力 | 429/5xx エラーやネットワークの一時的な問題が発生すると、バックオフ付きで自動再試行します。モデルが対応できるよう、ヒント付きの分かりやすいエラーメッセージを返します。 |
🚀 クイックスタート
1. インストール
ビルド済みバイナリ(Linux、macOS、Windows)— Releases からダウンロードするか、以下を実行します。
# Cargo
cargo install matomo-mcp
# From source
cargo install --git https://github.com/Liohtml/matomo-mcp
# Docker
docker pull ghcr.io/liohtml/matomo-mcp
2. Matomo API トークンを取得
Matomo → Settings(⚙)→ Personal → Security → Auth tokens → Create new token。 必要なのは閲覧専用の権限だけです。
3. 接続を確認
matomo-mcp --url https://your-matomo.example.com --token YOUR_TOKEN --check
✓ Connected — Matomo version 5.2.1
✓ Token grants access to 3 site(s):
#1 My Shop (https://shop.example.com)
#2 Blog (https://blog.example.com)
#3 Docs (https://docs.example.com)
4. クライアントを接続 ⬇
🔌 クライアントを接続する
Claude Code
claude mcp add matomo \
--env MATOMO_URL=https://your-matomo.example.com \
--env MATOMO_TOKEN=YOUR_TOKEN \
--env MATOMO_DEFAULT_SITE_ID=1 \
-- matomo-mcp
Claude Desktop
claude_desktop_config.json に追加します(macOS:~/Library/Application Support/Claude/、Windows:%APPDATA%\Claude\):
{
"mcpServers": {
"matomo": {
"command": "matomo-mcp",
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "YOUR_TOKEN",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}
}
}
Cursor
.cursor/mcp.json(プロジェクト)または ~/.cursor/mcp.json(グローバル):
{
"mcpServers": {
"matomo": {
"command": "matomo-mcp",
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "YOUR_TOKEN",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}
}
}
VS Code (GitHub Copilot)
.vscode/mcp.json:
{
"servers": {
"matomo": {
"type": "stdio",
"command": "matomo-mcp",
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "${input:matomo-token}",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}
},
"inputs": [
{
"id": "matomo-token",
"type": "promptString",
"description": "Matomo API token",
"password": true
}
]
}
Windsurf / Zed / その他の MCP クライアント
stdio 経由で MCP を利用できるクライアントなら、次の汎用形式で動作します。
{
"command": "matomo-mcp",
"args": [],
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "YOUR_TOKEN",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}
Docker(任意のクライアント)
{
"mcpServers": {
"matomo": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "MATOMO_URL", "-e", "MATOMO_TOKEN", "-e", "MATOMO_DEFAULT_SITE_ID",
"ghcr.io/liohtml/matomo-mcp"
],
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "YOUR_TOKEN",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}
}
}
ストリーム可能な HTTP — サーバーを一度起動し、複数のクライアントを接続
サーバーを一度起動し(ワークステーション、LAN 上のマシン、コンテナなど)、任意の数の MCP クライアントから接続します。
matomo-mcp --url https://your-matomo.example.com --token YOUR_TOKEN --http 127.0.0.1:8080
クライアントはストリーム可能な HTTP トランスポートを使って http://127.0.0.1:8080/mcp に接続します。例:
claude mcp add --transport http matomo http://127.0.0.1:8080/mcp
警告
HTTP エンドポイントには認証機能が組み込まれていません。
127.0.0.1にバインドするか、ローカルホストの外部に公開する前に、認証付きリバースプロキシ(またはファイアウォール)を前段に設置してください。
ヒント
MATOMO_DEFAULT_SITE_IDを設定すれば、どのサイトを指しているかモデルに尋ねられることはありません。 トークンが手元にない場合は、公開デモでお試しください:--url https://demo.matomo.cloud --default-site-id 1(トークンは不要です)。
🧭 ツール
| ツール | たとえば、次のような質問に答えます |
|---|---|
matomo_list_sites | 「トラッキングしているサイトはどれですか?」 |
matomo_visits_summary | 「先週のトラフィックはどれくらいでしたか?」 |
matomo_pages | 「人気のページはどれですか?ユーザーはどこで離脱していますか?」 |
matomo_referrers | 「訪問者はどこから来ていますか?効果のあるキャンペーンはどれですか?AI アシスタントからどれくらい流入していますか?」 |
matomo_events | 「コンフィギュレーターは何回開かれましたか?」 |
matomo_goals | 「目標ごとのコンバージョン率はどれくらいですか?」 |
matomo_ecommerce | 「今月の売上は?最も売れている商品は?」 |
matomo_geo | 「訪問者はどの国や都市から来ていますか?」 |
matomo_devices | 「モバイルとデスクトップの比率は?どのブラウザーが使われていますか?」 |
matomo_visit_times | 「訪問者が訪れるのは、曜日や時間帯でいつが多いですか?」 |
matomo_site_search | 「サイト内で何が検索され、何も見つからないのはどの検索ですか?」 |
matomo_realtime | 「今、サイトを閲覧している人はいますか?」 |
matomo_page_performance | 「読み込みが遅いページはどれですか?」 |
matomo_annotations | 「このトラフィック急増と時期が一致するデプロイやキャンペーン開始はありますか?」 |
matomo_api | その他すべて — ファネル、ヒートマップ、カスタムディメンション、Reporting API の任意の Module.action |
すべてのツールは、site_id、period(day/week/month/year/range)、date
(today、yesterday、2026-07-01、last30、または start,end の範囲)、任意の
segment(例:deviceType==mobile;country==DE)、および行の limit を受け付けます。
試してみるプロンプト
- 「今週のトラフィックを先週と比較して、何が、なぜ変わりましたか?」
- 「今月、コンバージョン数の多いランディングページの上位 10 件と、その直帰率を教えてください。」
- 「ChatGPT や Perplexity から流入していますか?過去 3 か月の推移を教えてください。」
- 「検索結果が見つからないサイト内検索はどれですか?作成すべきコンテンツを提案してください。」
- 「今、訪問者ログに何か異常はありますか?」
⚙️ 設定
| フラグ | 環境変数 | デフォルト | 説明 |
|---|---|---|---|
--url | MATOMO_URL | — | Matomo インスタンスの URL(https://example.com/matomo/ のようなサブディレクトリへのインストールにも対応しています)。指定しなくてもサーバーは起動し、ツール呼び出し時にセットアップ手順が返されます |
--token | MATOMO_TOKEN | — | API トークン(token_auth)。閲覧アクセス権があれば十分です |
--default-site-id | MATOMO_DEFAULT_SITE_ID | — | モデルがサイトを指定しない場合に使用するサイト |
--header | MATOMO_EXTRA_HEADERS | — | 追加の HTTP ヘッダー(Name:Value、複数回指定またはカンマ区切り)— 認証プロキシ、Zero-Trust、マルチテナント環境向け |
--timeout-secs | MATOMO_TIMEOUT_SECS | 30 | リクエストごとのタイムアウト |
--max-response-chars | MATOMO_MAX_RESPONSE_CHARS | 50000 | 切り詰め前のレスポンス上限 |
--http | MATOMO_HTTP_BIND | — | stdio の代わりに、このアドレスでストリーミング可能な HTTP 経由で MCP を提供します(エンドポイント:http://<addr>/mcp) |
--insecure | MATOMO_INSECURE | false | 自己署名 TLS 証明書を受け入れます(明示的なオプトインが必要です) |
--check | — | — | URL、トークン、サイトへのアクセスを検証して終了します |
🆚 FGRibreau/mcp-matomo との違いは何ですか?
mcp-matomo(このプロジェクトの着想元です。ありがとうございます!🙏)は起動時に Matomo インスタンスをイントロスペクションし、API メソッドごとに MCP ツールを生成します。matomo-mcp はその逆のアプローチを取ります。
| matomo-mcp | mcp-matomo | |
|---|---|---|
| ツールの種類 | 厳選された 15 個のツール+代替手段 | 約 70 個以上の生成されたツール |
| モデルコンテキストのコスト | 小さく、安定 | 大きく、インスタンスに依存 |
| パラメーターの型 | 正確な、手書きの列挙型/デフォルト値 | パラメーター名から推定 |
| 起動 | 即時(ネットワーク I/O なし) | イントロスペクションの往復通信(またはキャッシュ済み仕様ファイル) |
| TLS 検証 | デフォルトで有効 | イントロスペクション時は無効 |
| サブディレクトリへのインストール | ✅ | パスが上書きされます |
| レスポンスサイズの制限 | 行数制限+厳格な上限 | — |
| 一時的なエラー時の再試行 | ✅ | — |
| リアルタイム(Live)ツール | ✅ | —(レポートのメタデータには含まれません) |
すべての API メソッドをそれぞれ独立したツールとして使いたい場合は、mcp-matomo をお使いください。モデルに適切なツールを確実に選ばせ、コンテキストがあふれないようにしたい場合は、matomo-mcp をお使いください。
🩺 トラブルシューティング
「site_id is required」
--default-site-id 1 を指定する(推奨)か、先にモデルから matomo_list_sites を呼び出してください。
401 / 「cannot be authenticated」
matomo-mcp --url ... --token ... --check を実行してください。失敗する場合は、トークンを再生成し(Settings → Personal → Security)、サイトへの閲覧アクセス権があることを確認してください。
404 または JSON ではなく HTML が返される
MATOMO_URL は Matomo のルート、つまり index.php があるフォルダーを指している必要があります。https://example.com/matomo/index.php の場合は、https://example.com/matomo/ を指定してください。
Cloudflare Access/OAuth2 プロキシ/Zero Trust の背後にありますか?
バイパス用ヘッダーを挿入してください:--header "CF-Access-Client-Id:..." --header "CF-Access-Client-Secret:..."(または MATOMO_EXTRA_HEADERS 経由)。
レスポンスが途中で切れているように感じます
これはコンテキスト制限が適切に機能しているためです。行数を減らす、日付範囲を短くする、または --max-response-chars を大きくしてください。
🗺️ ロードマップ
- ストリーミング可能な HTTP トランスポート(
--httpを使用し、一度ホストすれば複数のクライアントを接続できます) -
matomo_annotations— デプロイマーカーを読み取り、トラフィックと照合します - マルチインスタンス対応(1 つのサーバーで複数の Matomo インストールを利用)
- Homebrew tap と winget マニフェスト
- MCP レジストリへの掲載(
server.jsonを使用した公式レジストリ、Glama)
これらのいずれかを早く実現したい場合は、issue を作成してください。PR も歓迎します。CONTRIBUTING.md をご覧ください。
🛠️ 開発
cargo test # 37 tests, fully offline (wiremock)
cargo clippy --all-targets -- -D warnings
cargo run -- --url https://demo.matomo.cloud --default-site-id 1 --check
アーキテクチャと設計上の決定事項:docs/ARCHITECTURE.md。
📄 ライセンスとクレジット
MITです。Matomoとは提携しておらず、推奨も受けていません。MatomoはInnoCraft Ltd.の登録商標です。
公式Rust MCP SDKであるrmcpを使用して構築されています。FGRibreau/mcp-matomoに着想を得ています。
- MCP Registry 名:
mcp-name: io.github.Liohtml/matomo-mcp
matomo-mcpのおかげでダッシュボードを見に行く手間が省けたら、⭐を付けていただけると、ほかの人にも見つけてもらいやすくなります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。