@byterover/umami-mcp
Provides read-only access to Umami analytics (cloud or self-hosted), enabling listing websites, retrieving stats, time series, top metrics (URL, referrer, browser, country, etc.), live visitors, event data, sessions, funnels, retention, and journey reports.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@byterover/umami-mcp Show me pageviews for the last 7 days"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@byterover/umami-mcp
A minimal, read-only Model Context Protocol server for Umami analytics — Cloud or self-hosted.
It exposes a small set of read tools (list sites, stats, time series, top metrics, live visitors) over stdio, so an MCP client such as Grove can let an agent answer questions about your web analytics. It issues no writes — there are no create/update/ delete tools, by design.
Why this exists
Community Umami MCP servers exist but have little usage and aren't reviewed by anyone we trust with an analytics credential. This is byterover's first-party, source-available wrapper: small enough to read end-to-end, read-only, and published with provenance. We dogfood it on our own landing-page analytics.
Related MCP server: umami-mcp-server
Install
npx @byterover/umami-mcpConfigure
Pick one mode via environment variables.
Umami Cloud — create a read-only API key at cloud.umami.is (Settings → API keys):
UMAMI_API_KEY=your_api_keySelf-hosted — point at your instance and provide a login:
UMAMI_API_URL=https://umami.example.com
UMAMI_USERNAME=your_username
UMAMI_PASSWORD=your_passwordAdvanced: UMAMI_API_URL overrides the base host (Cloud default
https://api.umami.is) and UMAMI_API_PATH overrides the path prefix (Cloud
/v1, self-hosted /api).
Use with Grove
Add it to your mcp.json as a stdio server (pin the version; keep the key in
.env via a ${VAR} ref):
{
"mcpServers": {
"umami": {
"command": "npx",
"args": ["-y", "@byterover/umami-mcp@0.1.0"],
"env": { "UMAMI_API_KEY": "${UMAMI_API_KEY}" }
}
}
}Tools surface in Grove as umami__list_websites, umami__website_stats, etc.
Tools
Thirteen read tools covering essentially all of Umami's analytics reads —
consolidated (one metrics tool spans ~10 dimensions; explore_event_data
folds five endpoints behind a mode), never mirroring the REST API 1:1.
Discovery
Tool | What it returns |
| Websites (id, name, domain) these credentials can see. Start here. |
| Earliest/latest timestamps with data — call before querying ranges. |
Traffic & trends
Tool | What it returns |
| Pageviews, visitors, visits, bounces, total time (with prior period). |
| Pageviews/sessions time series, bucketed by hour/day/month/year. |
| Live activity in the last ~30 min (active visitors, recent views/events). |
Breakdowns & events
Tool | What it returns |
| Top values for one dimension (url, referrer, browser, country, event, …); |
| Custom-event time series over a range. |
| Drill into event properties/values ( |
Sessions & journeys
Tool | What it returns |
| Individual visitor sessions (paginated, searchable). |
| One session's summary + activity log + custom properties. |
Analyses (compute-reads, POST — still read-only)
Tool | What it returns |
| Conversion funnel across ordered steps (paths/events). |
| Return-visitor retention over the range (needs a timezone). |
| Common navigation paths between a start and (optional) end step. |
Range tools accept ISO startAt/endAt; report tools accept ISO
startDate/endDate (e.g. 2026-07-01). Omit them for the last 7 days.
Develop
pnpm install
pnpm build # tsc → dist/
pnpm typecheck
pnpm test # keyless, network-free
pnpm lintLicense
Elastic License 2.0 — © byterover.
Available Tools
13 toolsdata_rangeA
The earliest and latest timestamps with collected data for a website. Call this before querying ranges so you don't ask for windows that have no data.
Inputs: websiteId (required).
events_seriesB
Time series of tracked custom events for a website over a date range, bucketed by unit.
Inputs: websiteId (required), unit, endAt, startAt, +1 more.
explore_event_dataB
Drill into custom-event PROPERTIES (not just counts over time). Modes: events = event names + counts; properties = property names per event; fields = property/value counts; stats = totals; values = counts for one event+property (both required for this mode).
Inputs: websiteId (required), mode, endAt, event, +2 more.
funnel_reportB
Conversion funnel: given an ordered list of steps (each a page path or an event), how many visitors reach each step and where they drop off. Minimum two steps.
Inputs: steps (required), websiteId (required), window, endDate, +1 more.
journey_reportC
User journeys: the common navigation paths between a starting step and an (optional) ending step, over a chosen number of steps (3–7).
Inputs: startStep (required), websiteId (required), steps, endDate, +2 more.
list_sessionsA
List individual visitor sessions for a website over a date range (paginated). Each session carries browser/OS/device, geo, and visit/view/event counts. Use it to answer per-visitor questions.
Inputs: websiteId (required), page, endAt, search, +2 more.
list_websitesA
List the websites (id, name, domain) visible to these credentials. Start here to get a websiteId.
Inputs: no named parameters.
metricsA
Top values for one dimension of a website's traffic over a date range — e.g. type=url for top pages, type=referrer for top referrers, type=browser / os / device / country / event. Set expanded=true for engagement detail (visitors, visits, bounce, duration per row).
Inputs: type (required), websiteId (required), endAt, limit, +2 more.
pageviews_seriesB
Time series of pageviews and sessions for a website over a date range, bucketed by unit.
Inputs: websiteId (required), unit, endAt, startAt, +1 more.
realtimeA
Live activity for a website over the last ~30 minutes: active visitors, recent views and events.
Inputs: websiteId (required).
retention_reportC
Retention: of the visitors first seen in the range, what fraction return on each subsequent day. Requires a timezone.
Inputs: timezone (required), websiteId (required), endDate, startDate.
session_detailA
Everything about one session: its summary, its activity log (the pages/events in order), and its custom properties — fetched together. Get a sessionId from list_sessions first.
Inputs: sessionId (required), websiteId (required), endAt, startAt.
website_statsA
Summary metrics for one website over a date range: pageviews, visitors, visits, bounces, total time (each with the prior-period value for comparison).
Inputs: websiteId (required), endAt, startAt.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
Each tool targets a distinct area of Umami analytics (time series, events, sessions, reports, etc.) with clear boundaries. The few overlaps, like metrics vs website_stats, are differentiated by purpose (top values vs summary aggregates).
All tool names are lowercase snake_case, following a consistent pattern of verb_noun (e.g., list_websites, explore_event_data) or descriptive compound nouns (e.g., funnel_report, data_range). No mixing of styles or conventions.
13 tools is well-scoped for an analytics server, covering all major data categories (pageviews, events, sessions, reports, realtime, website info) without unnecessary bloat or too few options.
The tool set covers all core Umami functionalities: website listing, stats, time series for pageviews and events, session exploration, funnel/journey reports, retention, realtime, and data boundaries. No obvious gaps for a read-only analytics API.
Maintenance
Related MCP Connectors
Read-only Google Analytics 4 MCP server for AI assistants.
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Google Search Console, GA4 and PageSpeed MCP server for Claude, ChatGPT and Cursor. Free, hosted.
Related MCP Servers
- AlicenseAqualityDmaintenanceRead-only MCP server for Umami analytics. It talks to the Umami REST API directly over HTTP, supporting self-hosted and cloud setups.88 npmMIT
- AlicenseAqualityCmaintenanceAn MCP server that gives Claude read access to Umami web analytics, allowing natural language queries for stats, breakdowns, pageview trends, live visitors, and user journeys.101MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for Umami Analytics that provides read-only tools to query website stats, events, sessions, reports, and more, enabling natural language analytics queries.24 npm3MIT
- AlicenseAqualityCmaintenanceOpen-source MCP server for Umami Analytics — Cloud and self-hosted.1477 npmMIT