An MCP server for Umami Analytics that gives Claude (and any MCP-compatible client) full read/write access to your analytics data. Works with both Umami Cloud and self-hosted instances.
48 tools covering websites, stats, pageviews, metrics, sessions, events, reports (funnel, retention, goals, journey, attribution, UTM, revenue, performance, breakdown), teams, and user admin.
# Add the marketplace and install
claude /plugin marketplace add climactic/umami-mcp
claude /plugin install umami-mcp@climacticAdd to your mcpServers config:
{
"mcpServers": {
"umami": {
"command": "bunx",
"args": ["@climactic/umami-mcp"],
"env": {
"UMAMI_API_KEY": "your-api-key"
}
}
}
}git clone https://github.com/climactic/umami-mcp.git
cd umami-mcp
bun install
UMAMI_API_KEY=your-key bun run index.tsSet one of these env var combinations:
Umami Cloud:
| Variable | Required | Description |
|---|---|---|
UMAMI_API_KEY |
Yes | API key from Umami Cloud dashboard |
UMAMI_BASE_URL |
No | Override API base (default: https://api.umami.is/v1) |
UMAMI_DEFAULT_WEBSITE_ID |
No | Default website UUID for tools that accept websiteId |
Self-hosted:
| Variable | Required | Description |
|---|---|---|
UMAMI_BASE_URL |
Yes | Your Umami instance URL, e.g. https://umami.example.com |
UMAMI_USERNAME |
Yes | Admin username |
UMAMI_PASSWORD |
Yes | Admin password |
UMAMI_DEFAULT_WEBSITE_ID |
No | Default website UUID |
Me (2)
umami_whoami— Current authenticated userumami_list_my_websites— Websites accessible to current user
Websites (6)
umami_list_websites— List all websitesumami_get_website— Get website detailsumami_create_website— Create a new websiteumami_update_website— Update name/domain/shareIdumami_delete_website— Delete a website permanentlyumami_reset_website— Wipe all data for a website
Stats & Realtime (7)
umami_get_stats— Aggregate stats (pageviews, visitors, bounces, time)umami_get_pageviews— Pageviews + sessions time seriesumami_get_metrics— Top N by dimension (url, referrer, browser, os, country, event, ...)umami_get_active_users— Active users right nowumami_get_realtime— Last-30-minute realtime dataumami_get_daterange— Earliest/latest data timestampsumami_get_events_series— Event counts over time
Sessions (6)
umami_list_sessions— List sessions in a date rangeumami_get_session— Session detailsumami_get_session_stats— Session-level aggregatesumami_get_session_activity— Activity timeline for a sessionumami_get_session_properties— Custom properties on a sessionumami_list_session_property_values— Value counts for a session property
Events (7)
umami_list_events— List events in a date rangeumami_get_event_stats— Aggregate event statsumami_list_event_data— Events grouped by nameumami_list_event_fields— Event-data field value countsumami_list_event_properties— Event names + property countsumami_list_event_property_values— Value counts for event + propertyumami_send_event— Send a tracking event via/api/send
Reports (11)
umami_list_reports— List saved reportsumami_get_report— Fetch a saved reportumami_report_funnel— Funnel conversionumami_report_retention— Retention cohortsumami_report_goal— Goal trackingumami_report_journey— User journeysumami_report_attribution— Attribution (first/last click)umami_report_utm— UTM campaign breakdownumami_report_revenue— Revenue by currencyumami_report_performance— Core Web Vitalsumami_report_breakdown— Breakdown by custom fields
Teams (6)
umami_list_teams— List teamsumami_get_team— Team detailsumami_create_team— Create a teamumami_update_team— Update name/access codeumami_delete_team— Delete a teamumami_list_team_members— List team members
Users — self-hosted only (3)
umami_list_users— List all users (admin)umami_create_user— Create a userumami_delete_user— Delete a user
Ask Claude things like:
- "How many pageviews did my site get this week?"
- "What are my top 10 referrers for the last 30 days?"
- "Show me a funnel from / to /checkout to /thank-you"
- "What's the retention look like for January?"
- "Who's on the site right now?"
- "Create a new website for staging.example.com"
bun install
bun test # run test suite
bun run index.ts # start the server (needs env vars)
bunx tsc --noEmit # type check
bunx oxlint # lintIf this project saves you time, consider supporting its development:
