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
Related MCP server: umami-mcp-server
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
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
- AlicenseCqualityBmaintenanceMCP server exposing Umami analytics (Cloud + self-hosted)5MIT
- 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.132MIT
- AlicenseAqualityBmaintenanceA security-first MCP server for Umami analytics (Cloud and self-hosted v3) enabling analytics, reporting, and administration with least privilege and credential-safe design.328MIT
- 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
Read-only Yandex Metrika MCP. Query visits, sources, geo, devices and more in plain language.
MCP server for interacting with the Supabase platform
Read-only MCP access to sessions, funnels, campaigns, errors, live visitors, and anomalies.
Appeared in Searches
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/Mzaxd/umami-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server