Skip to main content
Glama
@byterover/umami-mcp

@byterover/umami-mcp

by campfirein

@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-mcp

Configure

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_key

Self-hosted — point at your instance and provide a login:

UMAMI_API_URL=https://umami.example.com
UMAMI_USERNAME=your_username
UMAMI_PASSWORD=your_password

Advanced: 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

list_websites

Websites (id, name, domain) these credentials can see. Start here.

data_range

Earliest/latest timestamps with data — call before querying ranges.

Traffic & trends

Tool

What it returns

website_stats

Pageviews, visitors, visits, bounces, total time (with prior period).

pageviews_series

Pageviews/sessions time series, bucketed by hour/day/month/year.

realtime

Live activity in the last ~30 min (active visitors, recent views/events).

Breakdowns & events

Tool

What it returns

metrics

Top values for one dimension (url, referrer, browser, country, event, …); expanded=true adds engagement.

events_series

Custom-event time series over a range.

explore_event_data

Drill into event properties/values (mode: events / properties / fields / stats / values).

Sessions & journeys

Tool

What it returns

list_sessions

Individual visitor sessions (paginated, searchable).

session_detail

One session's summary + activity log + custom properties.

Analyses (compute-reads, POST — still read-only)

Tool

What it returns

funnel_report

Conversion funnel across ordered steps (paths/events).

retention_report

Return-visitor retention over the range (needs a timezone).

journey_report

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 lint

License

Elastic License 2.0 — © byterover.

Available Tools

13 tools
data_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

    A3.7/5.0

    Scored across 13 tools

    Disambiguation5/5

    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).

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness5/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Read-only MCP server for Umami analytics. It talks to the Umami REST API directly over HTTP, supporting self-hosted and cloud setups.
      8
      8 npm
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      An 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.
      10
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for Umami Analytics that provides read-only tools to query website stats, events, sessions, reports, and more, enabling natural language analytics queries.
      24 npm
      3
      MIT