Skip to main content
Glama
arttus

umami-mcp-server

by arttus

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 build

Related 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

UMAMI_API_KEY

ja

Dein Cloud-API-Schlüssel

UMAMI_REGION

nein

us oder eu. Standard ist die Region des Schlüsselinhabers

Selbst gehostet

Variable

Erforderlich

Hinweise

UMAMI_BASE_URL

ja

Basis-URL der Instanz, z. B. https://analytics.example.com. Das Suffix /api wird automatisch angehängt.

UMAMI_API_KEY

einer von beiden

Ein API-Schlüssel auf der Instanz

UMAMI_USERNAME + UMAMI_PASSWORD

einer von beiden

Anmeldedaten, die gegen ein Bearer-Token ausgetauscht und bei Ablauf automatisch erneuert werden

Beides

Variable

Standard

Hinweise

UMAMI_TIMEZONE

UTC

IANA-Zeitzone für Tagesgrenzen und Zeitreihen-Buckets, z. B. America/New_York

UMAMI_DEFAULT_WEBSITE

keine

Website-ID, -Name oder -Domain, die verwendet wird, wenn ein Tool-Aufruf website weglässt. Setze das, wenn du hauptsächlich eine einzelne Website abfragst

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 inspect

Werkzeuge

Analyse (schreibgeschützt)

Tool

Beschreibung

umami_list_websites

Listet jede verfolgte Website, optional mit Suche. Fang hier an, wenn du eine ID nicht kennst

umami_get_website

Website-Konfiguration plus den tatsächlich erfassten Datumsbereich sowie die aktuelle Besucherzahl

umami_get_active_visitors

Eindeutige Besucher in den letzten 5 Minuten

umami_get_stats

Seitenaufrufe, Besucher, Bounce-Rate, durchschnittliche Besuchsdauer, mit Änderung gegenüber dem Vorzeitraum

umami_get_pageviews_series

Seitenaufrufe und Sitzungen als Zeitreihen im Minuten-, Stunden-, Tages-, Monats- oder Jahres-Raster

umami_get_metrics

Ranglisten-Aufschlüsselung nach jeder Dimension. expanded=true fügt Engagement-Kennzahlen pro Zeile hinzu

umami_get_events_series

Anzahl benutzerdefinierter Ereignisse im Zeitverlauf, nach Ereignisname gruppiert

umami_list_sessions

Paginierte Liste einzelner anonymer Sitzungen

umami_get_session

Eine Sitzung plus ihren Aktivitätsverlauf Seite für Seite

umami_traffic_report

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

umami_create_website

Eine neue Website registrieren und ihre Tracking-ID sowie den <script>-Snippet zurückerhalten

umami_update_website

Umbenennen, Domain ändern, einen öffentlichen Link setzen und alle Replay/Heatmap-Felder konfigurieren: Aktivierungsflags, Abtastrate, PII-Maskierungsstufe, maximale Aufnahmedauer, Block-Selektor

umami_get_recorder_config

Liest die Live-Konfiguration aus, die Umami tatsächlich an den Tracker einer Website ausliefert. Nach umami_update_website die Quelle der Wahrheit, da dasselbe Feld in Umamis eigener Dokumentation in unterschiedlichen Einheiten auftaucht

umapi_reset_website

Destruktiv. Alle gesammelten Daten löschen, Website und Tracking-ID behalten. Erfordert confirm=true

umami_delete_website

Destruktiv. Website-Registrierung samt aller Daten löschen. Erfordert confirm=true

Admin: Benutzer (selbst gehostet, Admin-Login oder -Schlüssel)

Tool

Beschreibung

umami_create_user

Einen internen Login erstellen

umami_list_users_

Alle Logins der Instanz auflisten

umami_get_user

Rolle eines Benutzers plus die Websites und Teams, auf die er zugreifen kann

umami_update_user

Benutzername, Passwort oder instanzweite Rolle ändern

umami_delete_user

Datektiv. Einen Login entfernen. Erfordert confirm=true

Admin: Teams (selbst gehostet, Admin-Login oder -Schlüssel)

Tool

Beschreibung

umami_create_team

Ein Team erstellen und seinen Zugriffscode erhalten

umami_list_teams

Teams mit Mitglieder- und Website-Anzahl auflisten

umami_get_team

Teamdetails plus vollständige Mitgliederliste und Rollen

umami_get_team_websites

Websites, die einem Team gehören

umami_update_team

Team umbenennen oder den Zugriffscode rotieren

umami_join_team

Als angemeldeter Benutzer einem Team per Zugriffscode beitreten

umami_add_team_user

Bestehenden Login direkt zu einem Team hinzufügen

umami_update_team_user

Rolle eines Teammitglieds ändern

umami_remove_team_user

Destructive. Ein Mitglied aus einem Team entfernen. Erfordert confirmD=true

umami_delete_team

Destruktiv. Ein Team löschen. Erfordert confirm=true

Bereitstellung

Tool

Beschreibung

umami_onboard_client

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

umami_api_get

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, 1y

  • Benannt: 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_stats mit range=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_metrics mit type=entry, expanded=true

  • „Wie viele Kontaktformular-Submissions diese Woche?“ → umami_get_events_series mit event=contact-form-submit

  • „Zeig mir die top Pages für mobile Besucher aus Florida“ → umami_get_metrics mit type=path, filters={ device: "mobile", region: "US-FL" }

  • „Was hat diese Session tatsächlich auf der Website gemacht?“ → umami_list_sessions, dann umami_get_session

  • „Richte Tracking für den neuen Kunden ein, ein eigenes Team dafür und füge nur Jordan hinzu“ → umami_onboard_client mit website_name, domain, team_name, grant_user_id

  • „Lösche die Testdaten, bevor diese Website live geht“ → umami_reset_website mit confirm=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_website legt jedes Feld offen, das Umamis replayConfig akzeptiert: Aktivierungsflags, unabhängige Sampling-Raten für Replay bzw. Heatmaps, PII-Maskierungsstufe, Block-Selektor und maximale Aufzeichnungsdauer. Umamis eigene Dokumentation verwendet uneinheitliche Einheiten für maxDuration (ein Beispiel impliziert Millisekunden, ein anderes Sekunden); statt zu raten liest umami_get_recorder_config denselben ö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- und totaltime-Zählwerte. Absprungrate, Seitenaufrufe pro Besuch und durchschnittliche Besuchsdauer werden hier mitberechnet, damit jede Antwort direkt lesbar ist*.

  • Teilweiser Fehlschlag. umami_traffic_report fü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_user und umami_delete_team verlangen alle ein literales confirm: 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: true nur dann übergeben, wenn es auch ernst gemeint ist*.

  • umami_onboard_client ist 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_get ist 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, offset oder einen engeren Zeitraum.

Tests

npm test

test/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

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    F
    maintenance
    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.
    5
    1
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables natural language interaction with Plausible Analytics data to query traffic, visitors, engagement, and more using conversational questions.
    4
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for Umami Analytics that provides read-only tools to query website stats, events, sessions, reports, and more, enabling natural language analytics queries.
    26
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A read-only MCP server for Umami analytics, enabling natural language queries of website stats, traffic trends, events, sessions, and analytics reports.
    13
    12
    1
    Elastic 2.0

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

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/arttus/umami-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server