Umami MCP Server
Umami MCP-Server
Schreibgeschützter MCP-Server für Umami-Analysen. Er kommuniziert direkt über HTTP mit der Umami-REST-API, unterstützt primär selbst gehostetes Umami und funktioniert auch mit Umami-Cloud-API-Schlüsseln.
Dieses Repository wurde so konzipiert, dass übergeordnete Agenten Analysedaten abrufen können, ohne jedes Mal die Umami-Dokumentation lesen zu müssen. Keine Browser-Automatisierung, kein DOM-Scraping, keine Schreibvorgänge.
Funktionen
Schreibgeschützte MCP-Tools für die gängigsten Umami-Analyseabfragen
Zwei Authentifizierungsmodi:
UMAMI_API_KEYUMAMI_USERNAME+UMAMI_PASSWORD
Zwischenspeicherung des Bearer-Tokens im Arbeitsspeicher bei selbst gehosteten Instanzen
Automatische erneute Anmeldung und ein Wiederholungsversuch bei
401im Benutzername/Passwort-ModusAkzeptiert sowohl ISO-Zeitzeichenfolgen als auch Zeitstempel in Millisekunden
Gemeinsame Filterbehandlung für Statistiken, Seitenaufrufe, Aufschlüsselungen und Ereignisserien
Strenges TypeScript mit kleinen, wartbaren Modulen
Klare, strukturierte Tool-Ausgabe und explizite Fehlerkategorien
Anforderungen
Node.js
>= 20pnpm
>= 10
Installation
Über npm:
npm install -g umami-analytics-mcpOder ohne Installation ausführen:
npx -y umami-analytics-mcpFür die lokale Entwicklung in diesem Repository:
pnpm installKonfiguration
Erstellen Sie eine .env-Datei basierend auf .env.example.
cp .env.example .envFüllen Sie eine der folgenden Authentifizierungsoptionen aus:
API-Schlüssel-Modus
UMAMI_API_URL=https://api.umami.is/v1
UMAMI_API_KEY=your-api-key
UMAMI_DEFAULT_TIMEZONE=Asia/ShanghaiModus für selbst gehosteten Benutzername/Passwort
UMAMI_API_URL=https://umami.example.com/api
UMAMI_USERNAME=admin
UMAMI_PASSWORD=secret
UMAMI_DEFAULT_TIMEZONE=Asia/ShanghaiHinweise:
UMAMI_API_URLsollte auf die API-Basis zeigen, nicht nur auf den Ursprung der Website.Wenn sowohl
UMAMI_API_KEYals auch Benutzername/Passwort festgelegt sind, hatUMAMI_API_KEYVorrang.UMAMI_DEFAULT_TIMEZONEwird verwendet, wenn ein Tool eine Zeitzone unterstützt und Sie diese weglassen.
Lokal ausführen
Entwicklungsmodus:
pnpm devErstellen und ausführen:
pnpm build
pnpm startDer Server verwendet den MCP-Stdio-Transport und bleibt daher mit stdin/stdout verbunden, bis der Client die Verbindung trennt.
Bei einer Installation über npm lautet der entsprechende Befehl:
umami-analytics-mcpTesten
pnpm test
pnpm buildEs gibt auch eine Vorlage für Integrationstests mit der echten API, die standardmäßig übersprungen wird:
UMAMI_INTEGRATION_TEST=1 pnpm test:integrationMCP-Inspektor
Zuerst erstellen:
pnpm buildStarten Sie dann den offiziellen MCP-Inspektor für den erstellten Server:
npx @modelcontextprotocol/inspector node dist/cli.jsFür Hot-Reload während der Entwicklung funktioniert auch:
npx @modelcontextprotocol/inspector pnpm devWenn Sie stattdessen den Pfad des veröffentlichten Pakets testen möchten, verwenden Sie:
npx @modelcontextprotocol/inspector npx -y umami-analytics-mcpStellen Sie sicher, dass dem Inspektor-Prozess dieselben Umami-Umgebungsvariablen zur Verfügung stehen.
Empfohlene Smoke-Tests im Inspektor:
umami_pingumami_list_websitesumami_get_statsumami_get_breakdown
Tools
umami_ping
Überprüft die Konfiguration und Authentifizierung.
Beispiel:
{}umami_list_websites
Listet zugängliche Websites auf.
Beispiel:
{}umami_find_website
Fuzzy-Suche nach Website-Name oder Domain.
Beispiel:
{
"query": "example.com"
}umami_get_stats
Zusammenfassende Statistiken für eine Website und einen Zeitraum.
Beispiel:
{
"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
Zeitreihen für Seitenaufrufe und Sitzungen.
Beispiel:
{
"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
Aufschlüsselungszeilen wie Top-Seiten, Referrer, Länder, Browser, Geräte und mehr.
Beispiel:
{
"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
Gibt die aktuelle Anzahl der aktiven Besucher zurück.
Beispiel:
{
"websiteId": "8f2f8ce2-1234-4567-89ab-0123456789ab"
}umami_get_events_series
Gibt benutzerdefinierte Ereignisanzahlen im Zeitverlauf zurück.
Beispiel:
{
"websiteId": "8f2f8ce2-1234-4567-89ab-0123456789ab",
"startAt": "2026-04-17T00:00:00+08:00",
"endAt": "2026-04-23T23:59:59+08:00",
"unit": "day"
}Gemeinsame Filter
Diese Tools unterstützen dasselbe filters-Objekt:
pathreferrertitlequerybrowserosdevicecountryregioncityhostname
Fehlerbehandlung
Tool-Fehler werden als strukturierte MCP-Tool-Ergebnisse mit folgenden Kategorien zurückgegeben:
config_missingauth_failedwebsite_not_foundumami_http_errornetwork_timeoutnetwork_errorinvalid_input
In jedem Stdio-MCP-Client einbinden
Jeder stdio-basierte MCP-Client kann diesen Server wie folgt ausführen:
command:npxargs:["-y", "umami-analytics-mcp"]env: Ihre Umami-Variablen
Beispiel-JSON-Snippet für Clients, die ein mcpServers-Objekt verwenden:
{
"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"
}
}
}
}Für einen lokalen, nicht veröffentlichten Checkout können Sie weiterhin direkt auf die erstellte Datei verweisen:
{
"mcpServers": {
"umami": {
"command": "node",
"args": ["/absolute/path/to/umami-mcp/dist/cli.js"]
}
}
}Auf npm veröffentlichen
Dieses Repository ist jetzt als npm-CLI-Paket strukturiert.
Empfohlener Release-Ablauf:
pnpm test
pnpm build
pnpm pack --dry-run
npm login
pnpm publishHinweise:
Der Paketname ist auf
umami-analytics-mcpfestgelegt, daumami-mcpauf npm bereits vergeben ist.Die aktuelle
licenseistUNLICENSEDals sicherer Platzhalter. Ersetzen Sie diese vor einer echten öffentlichen Open-Source-Veröffentlichung, wenn Sie eine permissive Lizenz wünschen.Wenn Sie später unter Ihrem eigenen npm-Scope veröffentlichen, ändern Sie nur das Feld
namein derpackage.json.
Interne Dokumentation
API-Zusammenfassung, die von diesem Repository verwendet wird: 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