MCP server/monitoring

Umami MCP Server

Enables AI assistants to interact with Umami Analytics

lukasschmit/umami-mcp ↗by lukasschmitupdated
1

Add it to Claude Code

claude mcp add umami-mcp-dac2 -- uvx --from git+https://github.com/lukasschmit/umami-mcp umami-mcp
2

Make your agent remember this setup

umami-mcp-dac2's config, env vars, and the gotchas you hit — recalled in every future Claude Code, Cursor, and Codex session.

npx conare@latest

Free · one command · indexes the sessions already on disk. Set up in the browser instead →

What it does

  • Supports both Umami Cloud and self-hosted instances
  • Zero dependencies, pure Python implementation
  • Retrieves real-time active visitor counts
  • Provides detailed time-series pageview and session data
  • Supports complex metric breakdowns including browser, OS, and geography

Tools 5

get_websitesList all tracked websites
get_statsSummary stats: pageviews, visitors, visits, bounces, totaltime
get_pageviewsTime-series pageview/session data
get_metricsBreakdown by type: path, url, entry, exit, referrer, domain, title, query, event, tag, hostname, browser, os, device, screen, language, country, region, city, channel
get_activeNumber of currently active visitors (last 5 minutes)

Environment Variables

UMAMI_URLBase URL for Umami instance
UMAMI_API_KEYAPI key for Umami Cloud
UMAMI_USERNAMELogin username for self-hosted
UMAMI_PASSWORDLogin password for self-hosted
UMAMI_CF_ACCESS_CLIENT_IDCloudflare Access service token client ID
UMAMI_CF_ACCESS_CLIENT_SECRETCloudflare Access service token secret
UMAMI_USER_AGENTCustom User-Agent for outbound requests
UMAMI_DEBUGSet to 1/true to log outbound request URLs

Try it

How many active visitors are currently on my website?
Get the summary statistics for my main website for the last 7 days.
Show me a breakdown of visitor countries for my website.
What are the top performing pages on my site based on pageviews?
List all the websites I have configured in my Umami account.
Original README from lukasschmit/umami-mcp

Umami MCP Server

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.

Why?

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.

Tools

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)

Quick Start

1. Get your credentials

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.

2. Add to your MCP client

No cloning required — uvx fetches and runs it directly from GitHub.

Requires `uv`. Install with: curl -LsSf https://astral.sh/uv/install.sh | sh

Claude Desktop / Claude Code

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"
      }
    }
  }
}
Cursor

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"
      }
    }
  }
}
VS Code (Copilot)

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"
        }
      }
    }
  }
}
BoltAI

Go to Settings → MCP Servers → Add Server, then enter:

  • Command: uvx
  • Arguments: --from git+https://github.com/lukasschmit/umami-mcp umami-mcp
  • Environment Variables:
    • UMAMI_URL = https://api.umami.is
    • UMAMI_API_KEY = your_api_key_here

Environment Variables

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_mon

Frequently Asked Questions

What are the key features of Umami MCP Server?

Supports both Umami Cloud and self-hosted instances. Zero dependencies, pure Python implementation. Retrieves real-time active visitor counts. Provides detailed time-series pageview and session data. Supports complex metric breakdowns including browser, OS, and geography.

What can I use Umami MCP Server for?

Quickly checking website traffic trends without leaving the AI chat interface. Generating automated reports on visitor demographics and behavior. Monitoring real-time traffic spikes during product launches. Analyzing top-performing content paths to inform SEO strategy.

How do I install Umami MCP Server?

Install Umami MCP Server by running: uvx --from git+https://github.com/lukasschmit/umami-mcp umami-mcp

What MCP clients work with Umami MCP Server?

Umami MCP Server works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Conare · memory for coding agents

Turn this server into reusable context

Keep Umami MCP Server docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Set up free$npx conare@latest