Umami MCP Server
Umami MCP 服务器
用于 Umami 分析的只读 MCP 服务器。它通过 HTTP 直接与 Umami REST API 通信,优先支持自托管 Umami,同时也适用于 Umami Cloud API 密钥。
构建此仓库的目的是让上层代理能够获取分析数据,而无需每次都重新阅读 Umami 文档。不涉及浏览器自动化、DOM 抓取或写入操作。
功能特性
针对最常见 Umami 分析查询的只读 MCP 工具
两种认证模式:
UMAMI_API_KEYUMAMI_USERNAME+UMAMI_PASSWORD
内存中自托管 Bearer 令牌缓存
用户名/密码模式下自动重新登录并在
401错误时重试一次同时支持 ISO 时间字符串和毫秒级时间戳
跨统计、页面浏览量、细分数据和事件序列的共享过滤器处理
严格的 TypeScript,模块小巧且易于维护
清晰的结构化工具输出和明确的错误分类
要求
Node.js
>= 20pnpm
>= 10
安装
从 npm 安装:
npm install -g umami-analytics-mcp或者直接运行,无需安装:
npx -y umami-analytics-mcp在本仓库进行本地开发:
pnpm install配置
从 .env.example 创建一个 .env 文件。
cp .env.example .env填写以下任一认证选项:
API 密钥模式
UMAMI_API_URL=https://api.umami.is/v1
UMAMI_API_KEY=your-api-key
UMAMI_DEFAULT_TIMEZONE=Asia/Shanghai自托管用户名/密码模式
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确保 Inspector 进程可以使用相同的 Umami 环境变量。
推荐在 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 客户端中挂载
任何基于 stdio 的 MCP 客户端都可以通过以下方式运行此服务器:
command:npxargs:["-y", "umami-analytics-mcp"]env: 你的 Umami 变量
对于使用 mcpServers 对象的客户端,JSON 代码片段示例:
{
"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
此仓库现已结构化为 npm CLI 包。
推荐的发布流程:
pnpm test
pnpm build
pnpm pack --dry-run
npm login
pnpm publish注意:
包名称设置为
umami-analytics-mcp,因为umami-mcp在 npm 上已被占用。当前
license为UNLICENSED,作为安全的占位符。如果你想要一个宽松的许可证,请在正式公开开源发布之前替换它。如果你以后在自己的 npm 作用域下发布,只需更改
package.json中的name字段。
内部文档
本仓库使用的 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