umami-mcp-server
umami-mcp-server
Umami Analytics 向けの MCP サーバーです。読み取り専用で、Umami Cloud とセルフホストインスタンスの両方で動作します。エポックミリ秒や UUID ではなく、last_month のようなレンジや example.com のようなサイト名で指定します。
ウェブサイトの探索、トラフィック統計、時系列、ランキング内訳、カスタムイベント、個別セッション、1回の呼び出しでの完全なレポート、ウェブサイト・ユーザー・チームの完全な管理者 CRUD、クライアントオンボーディングの複合ツール、そしてそれ以外の Umami API にアクセスするための素の GET エスケープハッチまで、25 本のツールを備えています。
管理者ツール(ユーザー・チーム・ウェブサイトの作成、および各種削除)には、管理者ログインまたは管理者 API キーを持つセルフホスト Umami が必要です。Umami Cloud は API 経由でユーザーやチームの管理を公開していないため、Cloud に向けて使うと紛らわしい 404 ではなく明確なエラーが返ります。
インストール
npm install
npm run buildRelated MCP server: Plausible MCP
設定
.env.example をコピーし、2 つの認証方法のうちいずれかを記入します。
Umami Cloud
Settings の API keys からキーを作成してください。
変数 | 必須 | 備考 |
| はい | お使いの Cloud API キー |
| いいえ |
|
セルフホスト
変数 | 必須 | 備考 |
| はい | インスタンスのルート URL。例: |
| いずれか | インスタンス上の API キー |
| いずれか | ログイン認証情報。ベアラートークンに交換され、有効期限切れ時に自動更新されます |
共通
変数 | デフォルト | 備考 |
|
| 日付境界と時系列バケットの IANA タイムゾーン。例: |
| なし | ツール呼び出しで |
接続する
Claude Desktop または Claude Code
claude_desktop_config.json に追加するか、claude mcp add を実行します:
{
"mcpServers": {
"umami": {
"command": "node",
"args": ["/absolute/path/to/umami-mcp-server/dist/index.js"],
"env": {
"UMAMI_API_KEY": "your-key",
"UMAMI_TIMEZONE": "America/New_York",
"UMAMI_DEFAULT_WEBSITE": "example.com"
}
}
}
}セルフホストインスタンスの場合は、UMAMI_BASE_URL と、API キーまたはユーザー名とパスワードのペアのどちらかを設定します。
MCP Inspector
UMAMI_API_KEY=your-key npm run inspectツール
アナリティクス(読み取り専用)
ツール | 説明 |
| 任意の検索に対応し、トラッキング中のすべてのウェブサイトを一覧表示します。ID が分からない場合はここから始めましょう |
| ウェブサイト設定と、実際に収集されたデータの期間、現在の訪問者数を取得します |
| 直近 5 分間のユニーク訪問者数 |
| ページビュー、訪問者、ビジット、直帰率、平均滞在時間を、前期比の変化とともに表示します |
| ページビューとセッションを、分・時間・日・月・年の単位でバケット化して表示 |
| 任意のディメンションでランク付けられた内訳を表示します。 |
| カスタムイベントの発生数を、イベントと名前ごとに時系列で集計 |
| 匿名の個別セッションの一覧をページネーション付きで表示 |
| 1 つのセッションと、そのページごとの行動履歴を表示 |
| 統計と 7 種の内訳を 1 回の呼び出しで取得。サイトの調子を知るときに最適なツールです |
管理者: ウェブサイト(セルフホスト、管理者ログインまたはキー)
ツール | 説明 |
| 新しいウェブサイトを登録し、そのトラッキング ID と |
| 名称変更、ドメイン変更、公開共有リンクの設定、リプレイ/ヒートマップのすべてのフィールド(有効フラグ、サンプリングレート、PII マスクレベル、最大録画時間、ブロックセレクタ)を設定します |
| Umami がトラッカーに実際に配信している現在の設定を読み取ります。同じフィールドが Umami の公式ドキュメント内でテキスト単位が異なることがあるため、 |
| 破壊的。 収集済みのデータをすべて消去し、ウェブサイトとトラッキング ID は残します。 |
| 破壊的。 ウェブサイトの登録とそのすべてのデータを削除します。 |
管理者: ユーザー(セルフホスト、管理者ログインまたはキー)
ツール | 説明 |
| 内部ログインを作成します |
| インスタンス上のすべてのログインを一覧表示します |
| 1 人のロールと、アクセスできるウェブサイトとチームを表示します |
| ユーザー名、パスワード、インスタンス全体のロールを変更します |
| 破壊的。 ログインを削除します。 |
管理者: チーム(セルフホスト、管理者ログインまたはキー)
ツール | 説明 |
| チームを作成し、そのアクセスコードを取得します |
| メンバー数とウェブサイト数を伴うチーム一覧を表示します |
| チームの詳細と、全メンバー一覧とロールを表示します |
| チームに所属するウェブサイトを表示します |
| チーム名の変更、アクセスコードのローテーションを行います |
| 認証済みユーザーとして、アクセスコード経由でチームに参加します |
| 既存のログインをチームへ直接追加します |
| チームメンバーのロールを変更します |
| 破壊的。 チームからメンバーを削除します。 |
| 破壊的。 チームを削除します。 |
プロビジョニング
ツール | 説明 |
| 1 回の呼び出しで、ウェブサイトを作成し、任意で専用のチームも作成し、任意で既存ユーザーへのアクセス権を付与し、任意で最初からリプレイ/ヒートマップ設定を構成します。新しいクライアントをセットアップするための最短経路です |
エスケープハッチ
ツール | 説明 |
| 専用ツールがなくても、任意の Umami エンドポイントに対して読み取り専用の GET を実行します |
すべてのデータツールは response_format を受け付けます。読みやすい要約には markdown、構造化されたペイロードには json を指定します。破壊的ツール(reset、delete、remove)はすべて必須の confirm: true 引数を取ります。これがないと呼び出しは拒否されます。他に確認手順はないため、この引数が「引き返せない地点」です。
日付レンジ
range には以下のいずれかを渡します:
相対:
30m,24h,7d,4w,3mo,1y名前付き:
today,yesterday,this_week,last_week,this_month,last_month,this_year,last_year,mtd,ytd,all_time
または start_date と end_date を YYYY-MM-DD、完全な ISO 8601 タイムスタンプ、エポックミリ秒で渡します。明示的な日付は range をオーバーライドします。日付境界は UMAMI_TIMEZONE、または呼び出しごとの timezone 引数に従います。
フィルター
ほとんどのツールは、クエリをセグメントする filters オブジェクトを受け取ります:
{ "country": "US", "device": "mobile", "path": "/pricing" }サポートされているキー: path、referrer、title、query、browser、os、device、country、region、city、language、hostname、tag、event、distinctId、utmSource、utmMedium、utmCampaign、utmContent、utmTerm、segment、cohort。
内訳のディメンション
umami_get_metrics と umami_traffic_report の breakdowns 引数で使用できます: path、entry、exit、title、query、referrer、channel、domain、country、region、city、browser、os、device、language、screen、event、hostname、tag、distinctId。
例
接続し終えたら、自然な言葉で質問できます:
「先月のサイトの調子は前月と比べてどうでしたか?」 →
range=last_monthを指定したumami_get_stats「直近 30 日間のアナリティクスの全体像を見せて」 →
umami_traffic_report「どのランディングページが最も直帰率が悪いですか?」 →
type=entryとexpanded=trueを指定したumami_get_metrics「今週の問い合わせフォーム送信は何件ですか?」 →
event=contact-form-submitを指定したumami_get_events_series「フロリダのモバイル訪問者にとって多いページを表示して」 →
type=pathとfilters={ device: "mobile", region: "US-FL" }を指定したumami_get_metrics「そのセッションは実際にサイトで何をしましたか?」 →
umami_list_sessions、続けてumami_get_session「新しいクライアントのトラッキングと専用チームを設定し、jordan を追加して」 →
website_name、domain、team_name、grant_user_idを指定したumami_onboard_client「サイトを公開する前にテストデータを削除したい」 →
confirm=trueを指定したumami_reset_website
設計メモ
Webサイトの解決。 どのツールも
website引数でUUID、名前、またはドメインを受け付けます。名前とドメインは60秒間キャッシュされたWebサイト一覧と照合され、黙って誤った推測をするのではなく、明確なあいまいさエラーを返します。Webサイトの作成・更新・削除を行うと、そのキャッシュは即座に更新されます。リプレイ/ヒートマップの完全な設定(トグルのみではありません)。
umami_update_websiteは、UmamiのreplayConfigが受け入れるすべてのフィールドを公開します。有効化フラグ、リプレイとヒートマップでそれぞれ独立したサンプルレート、PIIマスクレベル、ブロックセレクタ、最大録画時間です。Umami公式ドキュメントはmaxDurationの単位について不整合があります(ある例はミリ秒、別の例は秒を示しています)。推測で済ませるのではなく、umami_get_recorder_configはトラッカー自体が呼び出すのと同じ公開エンドポイントを読み取るため、どちらのドキュメント例に頼らなくても、保存後に実際に有効な値を確認できます。導出メトリクス。 Umamiは生の
bouncesとtotaltimeのカウントを返します。直帰率、訪問あたりのビュー数、平均訪問時間はこのサーバー側で計算されるため、どのレスポンスもそのまま読める形になっています。部分的な失敗。
umami_traffic_reportは内訳を並列実行し、インスタンスがサポートしていないディメンションを除外します。その際、スキップしたディメンションの名前を挙げることで、レポート全体を失敗させません。ディメンションの対応状況はUmamiのバージョンによって異なるため、これは重要です。破壊的操作はオプトインであり、二重確認はありません。
umami_reset_website、umami_delete_website、umami_delete_user、umami_remove_team_user、umami_delete_teamはすべて、リテラルconfirm: trueを引数として必須とし、それ以外では失敗します。独立した「本当に実行しますか?」のやりとりはありません。ツール呼び出し自体が確認であるため、エージェント(または人間)は、意図して実行する場合にのみconfirm: trueを渡すべきです。umami_onboard_clientはベストエフォートであり、トランザクショナルではありません。 UmamiのAPIには複数ステップのトランザクション機能はありません。チームの作成に成功してもWebサイトのステップが失敗した場合、チームは残されたままになり、エラーメッセージにはその旨と次に確認すべきことが明示されます。静かにロールバックしたり、部分的な状態を隠したりはしません。エスケープハッチ。
umami_api_getは意図的にGET専用で、上記の管理ツールとは分離されています。何も作成・変更・リセット・削除できません。レスポンスサイズ。 レスポンスは25,000文字に制限され、
limit、offset、またはより狭い範囲を指し示すメッセージが返されます。
テスト
npm testtest/smoke.mjsは、ダミーのUmami APIを立ち上げ、実際のMCPクライアントをstdioで接続し、アナリティクスツールとそのエラーパスを実行します。test/auth.mjsは、セルフホストのログイン交換と、キャッシュ済みベアラートークンが失効したときに発火するトークン更新をカバーします。test/admin.mjsは、Webサイト/ユーザー/チームのCRUD、チームメンバーシップ、複合オンボーディングツールをカバーし、すべての破壊的ツールがconfirm=trueなしでは実行を拒否することを確認します。
検証対象
Umami v3 APIリファレンス(2026年8月時点): /websites, /websites/:id, /websites/:id/stats, /pageviews, /metrics, /metrics/expanded, /events/series, /active, /daterange, /sessions, /sessions/:id, /sessions/:id/activity, /websites/:id/reset, /users, /admin/users, /users/:id, /users/:id/websites, /users/:id/teams, /teams, /teams/join, /teams/:id, /teams/:id/users, /teams/:id/users/:userId, /teams/:id/websites。クラウドへのリクエストは、ベアラートークンを用いてhttps://api.umami.is/v1へ送信されます。セルフホストへのリクエストは{base}/apiへ送信されます。ユーザーおよびチーム管理エンドポイントは、セルフホストインスタンスにのみ存在します。
ライセンス
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables AI assistants to interact with Umami Analytics for both Cloud and self-hosted instances. It provides tools to retrieve website statistics, visitor metrics, pageview trends, and real-time active user counts.51MIT
- AlicenseBqualityDmaintenanceEnables natural language interaction with Plausible Analytics data to query traffic, visitors, engagement, and more using conversational questions.41MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Umami Analytics that provides read-only tools to query website stats, events, sessions, reports, and more, enabling natural language analytics queries.262MIT
- AlicenseAqualityBmaintenanceA read-only MCP server for Umami analytics, enabling natural language queries of website stats, traffic trends, events, sessions, and analytics reports.13121Elastic 2.0
Related MCP Connectors
Privacy-first web analytics. Query pageviews, referrers, trends, and AI insights.
Ask your app anything — revenue, errors, read-cost, growth — and get rendered charts back.
AI access to Hitsteps analytics, live visitors, uptime, goals, alerts, and chats.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/arttus/umami-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server