umami-mcp-server
umami-mcp-server
Ein MCP-Server für Umami Analytics. Schreibgeschützt, funktioniert sowohl mit Umami Cloud als auch mit selbst gehosteten Instanzen und spricht in Zeiträumen wie last_month und Websitenamen wie example.com statt in Epochen-Millisekunden und UUIDs.
Fünfundzwanzig Werkzeuge decken Website-Entdeckung, Traffic-Statistiken, Zeitreihen, Ranglisten-Aufschlüsselungen, benutzerdefinierte Ereignisse, einzelne Sitzungen, einen vollständigen Bericht mit einem einzigen Aufruf, vollständige Admin-CRUD-Funktionen für Websites/Benutzer/Teams, ein zusammengesetztes Client-Onboarding-Werkzeug und eine rohe GET-Hintertür für alles Weitere in der Umami-API ab.
Admin-Werkzeuge (Benutzer, Teams und Websites erstellen; beliebiges löschen) erfordern selbst gehostetes Umami mit einem Admin-Login oder einem Admin-API-Schlüssel. Umami Cloud stellt keine Benutzer- oder Teamverwaltung über die API bereit, deshalb geben diese Werkzeuge eine klare Fehlermeldung zurück, wenn sie auf die Cloud gerichtet werden, statt einer verwirrenden 404.
Installation
npm install
npm run buildRelated MCP server: Plausible MCP
Konfiguration
Kopiere .env.example und fülle einen der beiden Authentifizierungspfade aus.
Umami Cloud
Erstelle einen Schlüssel unter Einstellungen, API-Schlüssel.
Variable | Erforderlich | Hinweise |
| ja | Dein Cloud-API-Schlüssel |
| nein |
|
Selbst gehostet
Variable | Erforderlich | Hinweise |
| ja | Basis-URL der Instanz, z. B. |
| einer von beiden | Ein API-Schlüssel auf der Instanz |
| einer von beiden | Anmeldedaten, die gegen ein Bearer-Token ausgetauscht und bei Ablauf automatisch erneuert werden |
Beides
Variable | Standard | Hinweise |
|
| IANA-Zeitzone für Tagesgrenzen und Zeitreihen-Buckets, z. B. |
| keine | Website-ID, -Name oder -Domain, die verwendet wird, wenn ein Tool-Aufruf |
Einbinden
Claude Desktop oder Claude Code
Füge zu claude_desktop_config.json hinzu oder führe claude mcp add aus:
{
"mcpServers": {
"umami": {
"command": "node",
"args": ["/absolute/path/to/umami-mcp-server/dist/index.js"],
"env": {
"UMAMI_API_KEY": "your-key",
"UMAMI_TIMEZONE": "America/New_York",
"UMAMI_DEFAULT_WEBSITE": "example.com"
}
}
}
}Für eine selbst gehostete Instanz setze UMAMI_BASE_URL ein und entweder den Schlüssel oder das Benutzername/Passwort-Paar.
MCP Inspector
UMAMI_API_KEY=your-key npm run inspectWerkzeuge
Analyse (schreibgeschützt)
Tool | Beschreibung |
| Listet jede verfolgte Website, optional mit Suche. Fang hier an, wenn du eine ID nicht kennst |
| Website-Konfiguration plus den tatsächlich erfassten Datumsbereich sowie die aktuelle Besucherzahl |
| Eindeutige Besucher in den letzten 5 Minuten |
| Seitenaufrufe, Besucher, Bounce-Rate, durchschnittliche Besuchsdauer, mit Änderung gegenüber dem Vorzeitraum |
| Seitenaufrufe und Sitzungen als Zeitreihen im Minuten-, Stunden-, Tages-, Monats- oder Jahres-Raster |
| Ranglisten-Aufschlüsselung nach jeder Dimension. |
| Anzahl benutzerdefinierter Ereignisse im Zeitverlauf, nach Ereignisname gruppiert |
| Paginierte Liste einzelner anonymer Sitzungen |
| Eine Sitzung plus ihren Aktivitätsverlauf Seite für Seite |
| Statistiken und sieben Aufschlüsselungen in einem einzelnen Aufruf. Das richtige Werkzeug für „Wie läuft die Website?“ |
Admin: Websites (selbst gehostet, Admin-Login oder -Schlüssel)
Tool | Beschreibung |
| Eine neue Website registrieren und ihre Tracking-ID sowie den |
| Umbenennen, Domain ändern, einen öffentlichen Link setzen und alle Replay/Heatmap-Felder konfigurieren: Aktivierungsflags, Abtastrate, PII-Maskierungsstufe, maximale Aufnahmedauer, Block-Selektor |
| Liest die Live-Konfiguration aus, die Umami tatsächlich an den Tracker einer Website ausliefert. Nach |
| Destruktiv. Alle gesammelten Daten löschen, Website und Tracking-ID behalten. Erfordert |
| Destruktiv. Website-Registrierung samt aller Daten löschen. Erfordert |
Admin: Benutzer (selbst gehostet, Admin-Login oder -Schlüssel)
Tool | Beschreibung |
| Einen internen Login erstellen |
| Alle Logins der Instanz auflisten |
| Rolle eines Benutzers plus die Websites und Teams, auf die er zugreifen kann |
| Benutzername, Passwort oder instanzweite Rolle ändern |
| Datektiv. Einen Login entfernen. Erfordert |
Admin: Teams (selbst gehostet, Admin-Login oder -Schlüssel)
Tool | Beschreibung |
| Ein Team erstellen und seinen Zugriffscode erhalten |
| Teams mit Mitglieder- und Website-Anzahl auflisten |
| Teamdetails plus vollständige Mitgliederliste und Rollen |
| Websites, die einem Team gehören |
| Team umbenennen oder den Zugriffscode rotieren |
| Als angemeldeter Benutzer einem Team per Zugriffscode beitreten |
| Bestehenden Login direkt zu einem Team hinzufügen |
| Rolle eines Teammitglieds ändern |
| Destructive. Ein Mitglied aus einem Team entfernen. Erfordert |
| Destruktiv. Ein Team löschen. Erfordert |
Bereitstellung
Tool | Beschreibung |
| Ein Aufruf: Website erstellen, optional ein eigenes Team dafür, optional bestehendem Benutzer Zugriff gewähren, optional Replay/Heatmap-Konfiguration von Anfang an setzen. Schnellster Weg beim Einrichten eines neuen Kunden |
Notausstieg
Tool | Beschreibung |
| Schreibgeschützter GET an einen beliebigen Umami-Endpunkt ohne speziellem Werkzeug |
Jedes Datenwerkzeug akzeptiert response_format: json für eine lesbare Zusammenfassung, markdown für das strukturierte Ergebnis. Jedes destruktive Werkzeug (reset, delete, remove) verlangt das Argument confirm-datestype: true; ohne dieses wird der Aufruf abgelehnt, und es gibt keinen zusätzlichen Bestätigungssschritt. Betrachte dieses Argument also als Punkt ohne Wiederkehr.
Datumsbereiche
Übergib range in einer der folgenden Formen:
Relativ:
30m,24h,7d,4w,3mo,1yBenannt:
today,yesterday,this_week,last_week,this_month,last_month,this_yearcyt,mtd,ytd,all_time
Oder übergib start_date und end_date als YYYY-MM-DD, vollständigen ISO-8601-Timestamp oder Epochen-Millisekunden. Explizite Datumsangaben haben Vorrang vor range. Tagesgrenzen richten sich nach UMAMI_TIMEZONE oder zu einem timezone-Argument pro Anruf.
Filter
Die meisten Werkzeuge akzeptieren ein filters-Objekt, das die Abfrage segmentiert:
{ "country": "US", "device": "mobile", "path": "/pricing" }Unterstützte Schlüssel: path, referrer, title, query, browser, os, device, country, region, city, language, hostname, tag, event, distinctId, utmSource, utmMedium, utmCampaign, utmContent, utmTerm, segment, cohort.
Aufschlüsselungs-Dimensionen
Für umami_get_metrics und das breakdowns-Argument von umami_traffic_report: path, entry, exit, title, query, referrer, channel, domain, country, region, city, browser, os, device, language, screen, event, hostname, tag, distinctId.
Beispiele
Stell deine Fragen nach dem Verbinden einfach auf natürlich:
„Wie lief die Website letzten Monat im Vergleich zum Monat davor?“ →
umami_get_statsmitrange=last_month„Gib mir die komplette Analyse-Übersicht für die letzten 30 Tage“ →
umami_traffic_report„Wie ist die Absprungrate verschiedener Landingpages?“ →
besser:„Welche Landingpage hat die höchste Abbruchrate?“ →umami_get_metricsmittype=entry,expanded=true„Wie viele Kontaktformular-Submissions diese Woche?“ →
umami_get_events_seriesmitevent=contact-form-submit„Zeig mir die top Pages für mobile Besucher aus Florida“ →
umami_get_metricsmittype=path,filters={ device: "mobile", region: "US-FL" }„Was hat diese Session tatsächlich auf der Website gemacht?“ →
umami_list_sessions, dannumami_get_session„Richte Tracking für den neuen Kunden ein, ein eigenes Team dafür und füge nur Jordan hinzu“ →
umami_onboard_clientmitwebsite_name,domain,team_name,grant_user_id„Lösche die Testdaten, bevor diese Website live geht“ →
umami_reset_websitemitconfirm=true
Design-Hinweise
Website-Auflösung. Das
website-Argument jedes Tools akzeptiert eine UUID, einen Namen oder eine Domain. Namen und Domains werden gegen eine 60 Sekunden lang zwischengespeicherte Website-Liste abgeglichen, wobei bei Mehrdeutigkeit ein expliziter Fehler ausgegeben wird, statt stillschweigend falsch zu raten. Das Erstellen, Aktualisieren oder Löschen einer Website aktualisiert diesen Cache sofort.Vollständige Replay-/Heatmap-Konfiguration, nicht nur Schalter.
umami_update_websitelegt jedes Feld offen, das UmamisreplayConfigakzeptiert: Aktivierungsflags, unabhängige Sampling-Raten für Replay bzw. Heatmaps, PII-Maskierungsstufe, Block-Selektor und maximale Aufzeichnungsdauer. Umamis eigene Dokumentation verwendet uneinheitliche Einheiten fürmaxDuration(ein Beispiel impliziert Millisekunden, ein anderes Sekunden); statt zu raten liestumami_get_recorder_configdenselben öffentlichen Endpoint, den der Tracker selbst aufruft, sodass man den tatsächlichen Wert nach dem Speichern bestätigen kann, anstatt einem der Dokumentationsbeispiele zu vertrauen*.Abgeleitete Metriken. Umami liefert rohe
bounces- undtotaltime-Zählwerte. Absprungrate, Seitenaufrufe pro Besuch und durchschnittliche Besuchsdauer werden hier mitberechnet, damit jede Antwort direkt lesbar ist*.Teilweiser Fehlschlag.
umami_traffic_reportführt seine Aufschlüsselungen parallel aus und verwirft jede Dimension, die die Instanz nicht unterstützt, wobei die ausgelassenen Dimensionen benannt werden, statt den gesamten Bericht scheitern zu lassen. Das ist wichtig, weil die Unterstützung von Dimensionen je nach Umami-Version variiert*.Destroy-Operationen sind opt-in und werden nicht zweimal bestätigt.
umami_reset_website,umami_delete_website,umami_delete_user,umami_remove_team_userundumami_delete_teamverlangen alle ein literalesconfirm: true-Argument und schlagen andernfalls fehl. Es gibt keine separate "Sind Sie sicher?"-Rückfrage: Der Tool-Aufruf selbst ist die Bestätigung, daher sollte ein Agent (oder eine Person)confirm: truenur dann übergeben, wenn es auch ernst gemeint ist*.umami_onboard_clientist Best-Effort, nicht transaktional. Umamis API unterstützt keinerlei mehrstufige Transaktionen. Falls die Team-Erstellung gelingt, aber der Website-Schritt scheitert, bleibt das Team bestehen, und die Fehlermeldung sagt das ausdrücklich, mit einem Hinweis darauf, wo als Nächstes zu prüfen ist, statt stillschweigend zurückzurollen oder den partiellen Zustand zu verbergen*.Notausgang.
umami_api_getist bewusst rein als GET ausgelegt, getrennt von den obigen Admin-Tools. Es kann nichts erstellen, ändern, zurückgesetzen oder löschen*.Antwortgröße. Antworten sind auf 25.000 Zeichen begrenzt, mit einem Hinweis auf
limit,offsetoder einen engeren Zeitraum.
Tests
npm testtest/smoke.mjs fährt eine simulierte Umami-API sowie einen echten MCP-Client über stdio auf und übt die Analytics-Tools samt ihrer Fehlerpfade. test/auth.mjs deckt den Login-Austausch auf selbst gehosteten Systemen sowie die Aktualisierung des Tokens, die abläuft, wenn ein gecachter Bearer-Token veraltetet ist. test/admin.mjs deckt Website-/Benutzer-/Team-CRUD, Teammitgliedschaft, das kombinierte Onboarding-Tool und die Bestätigung ab, dass jedes destruktive Tool sich ohne confirm=true weigert zu laufen.
Geprüft gegen
Umami-v3-API-Referenz, Stand August 2026: /websites, /websites/:id, /websites/:id/stats, /pageviews, /metrics, /metrics/expanded, /events/series, /active, /daterange, /sessions, /sessions/:id, /sessions/:id/activity, /websites/:id/reset, /users, /admin/users, /users/:id, /users/:id/websites, /users/:id/teams, /teams, /teams/join, /teams/:id, /teams/:id/users, /teams/:id/users/:userId, /teams/:id/websites. Cloud-Anfragen gehen an https://api.umami.is/v1 mit einem Bearer-Token; selbst gehostete Anfragen gehen an {base}/api*. Endpoints für Benutzer- und Teamverwaltung existieren nur auf selbst gehosteten Instanzen.
Lizenz
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables 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.51MIT
- AlicenseBqualityDmaintenanceEnables natural language interaction with Plausible Analytics data to query traffic, visitors, engagement, and more using conversational questions.41MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Umami Analytics that provides read-only tools to query website stats, events, sessions, reports, and more, enabling natural language analytics queries.262MIT
- AlicenseAqualityBmaintenanceA read-only MCP server for Umami analytics, enabling natural language queries of website stats, traffic trends, events, sessions, and analytics reports.13121Elastic 2.0
Related MCP Connectors
Privacy-first web analytics. Query pageviews, referrers, trends, and AI insights.
Ask your app anything — revenue, errors, read-cost, growth — and get rendered charts back.
AI access to Hitsteps analytics, live visitors, uptime, goals, alerts, and chats.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/arttus/umami-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server