Umami MCP Server
Provides read-only access to Umami analytics data, including website stats, pageviews, breakdowns (top pages, referrers, countries, etc.), active visitors, and custom event series through the Umami REST API.
Click on "Install 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., "@Umami MCP Servershow top pages for last week"
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.
Umami MCP Server
Read-only MCP server for Umami analytics. It talks to the Umami REST API directly over HTTP, supports self-hosted Umami first, and also works with Umami Cloud API keys.
This repo is built so upper-layer agents can ask for analytics without re-reading the Umami docs each time. No browser automation, no DOM scraping, no write operations.
Features
Read-only MCP tools for the most common Umami analytics queries
Two auth modes:
UMAMI_API_KEYUMAMI_USERNAME+UMAMI_PASSWORD
Self-hosted bearer token caching in memory
Automatic re-login and one retry on
401for username/password modeISO time strings and millisecond timestamps both accepted
Shared filter handling across stats, pageviews, breakdowns, and event series
Strict TypeScript with small, maintainable modules
Clear structured tool output and explicit error categories
Requirements
Node.js
>= 20pnpm
>= 10
Install
From npm:
npm install -g umami-analytics-mcpOr run without installing:
npx -y umami-analytics-mcpFor local development in this repo:
pnpm installConfigure
Create a .env file from .env.example.
cp .env.example .envFill in one of the following auth options:
API key mode
UMAMI_API_URL=https://api.umami.is/v1
UMAMI_API_KEY=your-api-key
UMAMI_DEFAULT_TIMEZONE=Asia/ShanghaiSelf-hosted username/password mode
UMAMI_API_URL=https://umami.example.com/api
UMAMI_USERNAME=admin
UMAMI_PASSWORD=secret
UMAMI_DEFAULT_TIMEZONE=Asia/ShanghaiNotes:
UMAMI_API_URLshould point to the API base, not just the site origin.If both
UMAMI_API_KEYand username/password are set,UMAMI_API_KEYwins.UMAMI_DEFAULT_TIMEZONEis used when a tool supports timezone and you omit it.
Run Locally
Development mode:
pnpm devBuild and run:
pnpm build
pnpm startThe server uses MCP stdio transport, so it stays attached to stdin/stdout until the client disconnects.
If installed from npm, the equivalent command is:
umami-analytics-mcpTest
pnpm test
pnpm buildThere is also a real-API integration test template that is skipped by default:
UMAMI_INTEGRATION_TEST=1 pnpm test:integrationMCP Inspector
Build first:
pnpm buildThen launch the official MCP Inspector against the built server:
npx @modelcontextprotocol/inspector node dist/cli.jsFor hot reload during development, this also works:
npx @modelcontextprotocol/inspector pnpm devIf you want to test the published package path instead, use:
npx @modelcontextprotocol/inspector npx -y umami-analytics-mcpMake sure the same Umami environment variables are available to the Inspector process.
Recommended smoke calls in Inspector:
umami_pingumami_list_websitesumami_get_statsumami_get_breakdown
Tools
umami_ping
Validates configuration and authentication.
Example:
{}umami_list_websites
Lists accessible websites.
Example:
{}umami_find_website
Fuzzy search by website name or domain.
Example:
{
"query": "example.com"
}umami_get_stats
Summary stats for a website and time range.
Example:
{
"websiteId": "8f2f8ce2-1234-4567-89ab-0123456789ab",
"startAt": "2026-04-23T00:00:00+08:00",
"endAt": "2026-04-23T23:59:59+08:00",
"filters": {
"path": "/pricing"
}
}umami_get_pageviews
Time-series pageviews and sessions.
Example:
{
"websiteId": "8f2f8ce2-1234-4567-89ab-0123456789ab",
"startAt": "2026-04-17T00:00:00+08:00",
"endAt": "2026-04-23T23:59:59+08:00",
"unit": "day",
"compare": "prev",
"filters": {
"path": "/blog"
}
}umami_get_breakdown
Breakdown rows such as top pages, referrers, countries, browsers, devices, and more.
Example:
{
"websiteId": "8f2f8ce2-1234-4567-89ab-0123456789ab",
"startAt": "2026-04-17T00:00:00+08:00",
"endAt": "2026-04-23T23:59:59+08:00",
"type": "path",
"limit": 10,
"expanded": false
}umami_get_active
Returns the current active visitor count.
Example:
{
"websiteId": "8f2f8ce2-1234-4567-89ab-0123456789ab"
}umami_get_events_series
Returns custom event counts over time.
Example:
{
"websiteId": "8f2f8ce2-1234-4567-89ab-0123456789ab",
"startAt": "2026-04-17T00:00:00+08:00",
"endAt": "2026-04-23T23:59:59+08:00",
"unit": "day"
}Shared Filters
These tools support the same filters object:
pathreferrertitlequerybrowserosdevicecountryregioncityhostname
Error Handling
Tool errors are returned as structured MCP tool results with these categories:
config_missingauth_failedwebsite_not_foundumami_http_errornetwork_timeoutnetwork_errorinvalid_input
Mount In Any Stdio MCP Client
Any stdio-based MCP client can run this server with:
command:npxargs:["-y", "umami-analytics-mcp"]env: your Umami variables
Example JSON snippet for clients that use an mcpServers object:
{
"mcpServers": {
"umami": {
"command": "npx",
"args": ["-y", "umami-analytics-mcp"],
"env": {
"UMAMI_API_URL": "https://umami.example.com/api",
"UMAMI_USERNAME": "admin",
"UMAMI_PASSWORD": "secret",
"UMAMI_DEFAULT_TIMEZONE": "Asia/Shanghai"
}
}
}
}For a local unreleased checkout, you can still point directly to the built file:
{
"mcpServers": {
"umami": {
"command": "node",
"args": ["/absolute/path/to/umami-mcp/dist/cli.js"]
}
}
}Publish To npm
This repo is now structured as an npm CLI package.
Recommended release flow:
pnpm test
pnpm build
pnpm pack --dry-run
npm login
pnpm publishNotes:
The package name is set to
umami-analytics-mcpbecauseumami-mcpis already taken on npm.The current
licenseisUNLICENSEDas a safe placeholder. Replace it before a real public open-source release if you want a permissive license.If you later publish under your own npm scope, change only the
namefield inpackage.json.
Internal Docs
API summary used by this repo: docs/umami-api.md
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/Mzaxd/umami-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server