A secure, read-only MCP server for Umami Analytics 3.2+ — Cloud and self-hosted
Umami Compass demonstrates solid tool design with consistent verb-noun naming (get_*, list_), comprehensive parameter schemas with types and descriptions, and clear documentation of read-only semantics. All 8 tools have descriptions (avg 95 chars, within 10-1024 baseline). Parameters include proper constraints (enums for metric types, UUID format validation, min/max bounds). However, output schemas are not explicitly documented in the source code, only inferred from descriptions. Error handling guidance is minimal. No tool annotations (readOnlyHint, idempotentHint) visible. Composition is clean: each tool has one responsibility, and chaining IDs (websiteId) are consistently returned.
Get the current number of active visitors for a website.
Get a ranked aggregate Umami metric breakdown such as paths, referrers, countries, devices, events, channels or URLs. Visitor identifiers are excluded from the core toolset.
Get Umami 3.2 pageview and session time series. Both arrays are preserved in the response.
Get the local package version, enabled toolsets, safety limits, and supported analysis capabilities without exposing credentials.
Get metadata for one website.
Get the earliest and latest analytics timestamps available for a website.
Output schemas not explicitly documented in source code. Tool descriptions infer structure but LLMs cannot reliably parse undocumented response formats. get_metrics, get_pageviews, get_website_stats lack explicit return type definitions.
No tool annotations (readOnlyHint, idempotentHint, destructiveHint) present. All tools are read-only but this is not formally declared in tool metadata, forcing LLMs to infer safety from descriptions alone.
Error handling guidance absent. No recovery hints in tool descriptions (e.g., 'If website not found, call list_websites first'). Errors will not guide LLM to next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2025-06-18+ | v2 |
Get visits, visitors, pageviews, bounces, visit duration and Umami's comparison values for a time range.
List websites visible directly or through any team membership of the configured Umami identity. If UMAMI_WEBSITE_IDS is set, returns only that exact allowlist.
Pagination guidance incomplete. list_websites accepts page/pageSize but no documentation of total count or next_cursor in response. get_metrics accepts limit/offset but response structure unclear.
Parameter 'filters' in get_website_stats, get_pageviews, get_metrics is documented as 'Optional query filters' (object type) but structure is not defined. LLMs cannot construct valid filter objects without schema.