Umami MCP Server
Umami MCP Server
MCP-сервер только для чтения для аналитики Umami. Он взаимодействует с REST API Umami напрямую по HTTP, в первую очередь поддерживает self-hosted установки Umami, а также работает с ключами API Umami Cloud.
Этот репозиторий создан для того, чтобы агенты верхнего уровня могли запрашивать аналитику, не перечитывая документацию Umami каждый раз. Никакой автоматизации браузера, никакого парсинга DOM, никаких операций записи.
Возможности
Инструменты MCP только для чтения для наиболее распространенных запросов аналитики Umami
Два режима аутентификации:
UMAMI_API_KEYUMAMI_USERNAME+UMAMI_PASSWORD
Кэширование bearer-токена в памяти для self-hosted установок
Автоматический повторный вход и одна попытка повтора при
401для режима с именем пользователя/паролемПоддержка как ISO-строк времени, так и временных меток в миллисекундах
Общая обработка фильтров для статистики, просмотров страниц, разбивок и серий событий
Строгий TypeScript с небольшими, поддерживаемыми модулями
Четкий структурированный вывод инструментов и явные категории ошибок
Требования
Node.js
>= 20pnpm
>= 10
Установка
Из npm:
npm install -g umami-analytics-mcpИли запуск без установки:
npx -y umami-analytics-mcpДля локальной разработки в этом репозитории:
pnpm installНастройка
Создайте файл .env на основе .env.example.
cp .env.example .envЗаполните один из следующих вариантов аутентификации:
Режим API-ключа
UMAMI_API_URL=https://api.umami.is/v1
UMAMI_API_KEY=your-api-key
UMAMI_DEFAULT_TIMEZONE=Asia/ShanghaiРежим имени пользователя/пароля для self-hosted
UMAMI_API_URL=https://umami.example.com/api
UMAMI_USERNAME=admin
UMAMI_PASSWORD=secret
UMAMI_DEFAULT_TIMEZONE=Asia/ShanghaiПримечания:
UMAMI_API_URLдолжен указывать на базу API, а не просто на источник сайта.Если установлены и
UMAMI_API_KEY, и имя пользователя/пароль,UMAMI_API_KEYимеет приоритет.UMAMI_DEFAULT_TIMEZONEиспользуется, когда инструмент поддерживает часовой пояс, а вы его не указали.
Локальный запуск
Режим разработки:
pnpm devСборка и запуск:
pnpm build
pnpm startСервер использует транспорт MCP stdio, поэтому он остается подключенным к stdin/stdout до тех пор, пока клиент не отключится.
Если установлено из npm, эквивалентная команда:
umami-analytics-mcpТестирование
pnpm test
pnpm buildТакже существует шаблон интеграционного теста с реальным API, который по умолчанию пропускается:
UMAMI_INTEGRATION_TEST=1 pnpm test:integrationMCP Inspector
Сначала выполните сборку:
pnpm buildЗатем запустите официальный MCP Inspector для собранного сервера:
npx @modelcontextprotocol/inspector node dist/cli.jsДля горячей перезагрузки во время разработки это также работает:
npx @modelcontextprotocol/inspector pnpm devЕсли вы хотите протестировать путь к опубликованному пакету, используйте:
npx @modelcontextprotocol/inspector npx -y umami-analytics-mcpУбедитесь, что те же переменные окружения Umami доступны процессу Inspector.
Рекомендуемые дымовые тесты в Inspector:
umami_pingumami_list_websitesumami_get_statsumami_get_breakdown
Инструменты
umami_ping
Проверяет конфигурацию и аутентификацию.
Пример:
{}umami_list_websites
Выводит список доступных веб-сайтов.
Пример:
{}umami_find_website
Нечеткий поиск по названию или домену веб-сайта.
Пример:
{
"query": "example.com"
}umami_get_stats
Сводная статистика для веб-сайта и временного диапазона.
Пример:
{
"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
Временные ряды просмотров страниц и сессий.
Пример:
{
"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
Строки разбивки, такие как популярные страницы, источники переходов, страны, браузеры, устройства и многое другое.
Пример:
{
"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
Возвращает текущее количество активных посетителей.
Пример:
{
"websiteId": "8f2f8ce2-1234-4567-89ab-0123456789ab"
}umami_get_events_series
Возвращает количество пользовательских событий во времени.
Пример:
{
"websiteId": "8f2f8ce2-1234-4567-89ab-0123456789ab",
"startAt": "2026-04-17T00:00:00+08:00",
"endAt": "2026-04-23T23:59:59+08:00",
"unit": "day"
}Общие фильтры
Эти инструменты поддерживают один и тот же объект filters:
pathreferrertitlequerybrowserosdevicecountryregioncityhostname
Обработка ошибок
Ошибки инструментов возвращаются как структурированные результаты MCP-инструментов со следующими категориями:
config_missingauth_failedwebsite_not_foundumami_http_errornetwork_timeoutnetwork_errorinvalid_input
Подключение в любом Stdio MCP-клиенте
Любой MCP-клиент на базе stdio может запустить этот сервер с помощью:
command:npxargs:["-y", "umami-analytics-mcp"]env: ваши переменные Umami
Пример фрагмента JSON для клиентов, использующих объект mcpServers:
{
"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"
}
}
}
}Для локальной невыпущенной версии вы все равно можете указать путь напрямую к собранному файлу:
{
"mcpServers": {
"umami": {
"command": "node",
"args": ["/absolute/path/to/umami-mcp/dist/cli.js"]
}
}
}Публикация в npm
Этот репозиторий теперь структурирован как CLI-пакет npm.
Рекомендуемый процесс выпуска:
pnpm test
pnpm build
pnpm pack --dry-run
npm login
pnpm publishПримечания:
Имя пакета установлено как
umami-analytics-mcp, так какumami-mcpуже занято в npm.Текущая
license—UNLICENSEDв качестве безопасного заполнителя. Замените ее перед реальным публичным open-source релизом, если хотите использовать разрешительную лицензию.Если позже вы будете публиковать пакет под своим собственным пространством имен npm, измените только поле
nameвpackage.json.
Внутренняя документация
Сводка API, используемая этим репозиторием: 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