loading…
Search for a command to run...
loading…
Enables AI assistants to interact with Umami Analytics for both Cloud and self-hosted instances. It provides tools to retrieve website statistics, visitor metri
Enables AI assistants to interact with Umami Analytics for both Cloud and self-hosted instances. It provides tools to retrieve website statistics, visitor metrics, pageview trends, and real-time active user counts.
An MCP server for Umami Analytics — works with both Umami Cloud and self-hosted instances.
Zero dependencies. No cloning, no install steps — just point your MCP client at it.
Existing Umami MCP servers either don't support Umami Cloud (which uses API key auth, not username/password) or are broken and bloated (torch, faiss, sentence-transformers for… analytics?).
This server talks to the Umami API and exposes 5 tools over MCP. Pure Python, zero dependencies.
| Tool | Description |
|---|---|
get_websites |
List all tracked websites |
get_stats |
Summary stats: pageviews, visitors, visits, bounces, totaltime (seconds) |
get_pageviews |
Time-series pageview/session data (unit: minute/hour/day/month/year; timezone: IANA, e.g. UTC) |
get_metrics |
Breakdown by type: path/url/entry/exit/referrer/domain/title/query/event/tag/hostname/browser/os/device/screen/language/country/region/city/channel |
get_active |
Number of currently active visitors (last 5 minutes) |
Umami Cloud: Go to Settings → API Keys in your Umami Cloud dashboard and create an API key.
Self-hosted: Use the username and password you log in with.
No cloning required — uvx fetches and runs it directly from GitHub.
Requires uv. Install with:
curl -LsSf https://astral.sh/uv/install.sh | sh
Add to your MCP config (~/.claude.json, Claude Desktop settings, etc.):
Umami Cloud:
{
"mcpServers": {
"umami": {
"command": "uvx",
"args": ["--from", "git+https://github.com/lukasschmit/umami-mcp", "umami-mcp"],
"env": {
"UMAMI_URL": "https://api.umami.is",
"UMAMI_API_KEY": "your_api_key_here"
}
}
}
}
Self-hosted:
{
"mcpServers": {
"umami": {
"command": "uvx",
"args": ["--from", "git+https://github.com/lukasschmit/umami-mcp", "umami-mcp"],
"env": {
"UMAMI_URL": "https://your-umami-instance.com",
"UMAMI_USERNAME": "admin",
"UMAMI_PASSWORD": "your_password"
}
}
}
}
Add to .cursor/mcp.json in your project root (or global settings):
{
"mcpServers": {
"umami": {
"command": "uvx",
"args": ["--from", "git+https://github.com/lukasschmit/umami-mcp", "umami-mcp"],
"env": {
"UMAMI_URL": "https://api.umami.is",
"UMAMI_API_KEY": "your_api_key_here"
}
}
}
}
Add to your VS Code settings.json:
{
"mcp": {
"servers": {
"umami": {
"command": "uvx",
"args": ["--from", "git+https://github.com/lukasschmit/umami-mcp", "umami-mcp"],
"env": {
"UMAMI_URL": "https://api.umami.is",
"UMAMI_API_KEY": "your_api_key_here"
}
}
}
}
}
Go to Settings → MCP Servers → Add Server, then enter:
uvx--from git+https://github.com/lukasschmit/umami-mcp umami-mcpUMAMI_URL = https://api.umami.isUMAMI_API_KEY = your_api_key_here| Variable | Required | Description |
|---|---|---|
UMAMI_URL |
Self-hosted: Yes, Cloud: Optional | Base URL — defaults to https://api.umami.is in Cloud mode |
UMAMI_API_KEY |
Cloud | API key from Umami Cloud dashboard |
UMAMI_USERNAME |
Self-hosted | Login username |
UMAMI_PASSWORD |
Self-hosted | Login password |
UMAMI_CF_ACCESS_CLIENT_ID |
Optional | Cloudflare Access service token client ID (for protected self-hosted APIs) |
UMAMI_CF_ACCESS_CLIENT_SECRET |
Optional | Cloudflare Access service token secret |
UMAMI_USER_AGENT |
Optional | Custom User-Agent for outbound requests (default: umami-mcp/1.0) |
UMAMI_DEBUG |
Optional | Set to 1/true to log outbound request URLs to stderr for debugging |
Set either UMAMI_API_KEY (Cloud) or both UMAMI_USERNAME + UMAMI_PASSWORD (self-hosted). The server auto-detects which mode to use.
For convenience, UMAMI_URL may include /v1 (Cloud) or /api (self-hosted); suffixes are normalized automatically.
If your self-hosted Umami is behind Cloudflare Access, set both UMAMI_CF_ACCESS_CLIENT_ID and UMAMI_CF_ACCESS_CLIENT_SECRET so machine-to-machine MCP calls can pass Access checks.
get_metrics accepts both type="path" and type="url" for compatibility across Umami versions.
startAt and endAt accept Unix-millisecond integers or numeric strings from MCP clients.
For time-based tools, you can use range instead of raw timestamps:
last_24h, last_7d, last_30d, this_month, last_month.
compare supports prev (previous period, same length) and yoy (year-over-year).
Once connected, you can ask your AI assistant things like:
The assistant will call the appropriate tools with the right parameters.
The server implements the Model Context Protocol over stdio (JSON-RPC, one JSON object per line). When an MCP client starts it, the server:
initialize, tools/list, and tools/call methodsNo background processes, no polling, no state beyond the auth token.
MIT
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"umami-mcp-server": {
"command": "npx",
"args": []
}
}
}