Umami MCP

官方

将你的AI助手连接到Umami,并用日常语言询问网站分析数据。

你可以用 Umami MCP 做什么?

  • 列出可访问的站点 — 询问查看所有你能访问的网站;先调用 list_websites 获取 websiteId,供其他查询使用。
  • 获取流量摘要 — 通过 get_website_stats 询问页面浏览量、访客数、跳出率或访问时长,并可与上一周期进行对比。
  • 分析流量来源 — 使用 get_website_metrics 询问哪些页面、引荐来源、国家或设备带来了流量。
  • 跟踪自定义事件 — 通过 get_event_statsget_event_seriesget_event_properties 询问事件总数、序列或属性值。
  • 检查会话 — 通过 get_sessions 询问分页的会话列表,或使用 get_session 查看单个会话的活动时间线。
  • 运行分析模型 — 询问执行已保存的漏斗(run_funnel)、查看群组留存(run_retention)或检查目标转化(get_goals)。

托管 MCP 服务器

npx add-mcp 'https://cloud.umami.is/mcp'

可安装到 Claude Code、Codex、Cursor、VS Code 等客户端

文档

@umami/mcp

Model Context Protocol 服务器,用于 Umami 分析。让 Claude、ChatGPT、Cursor 及其他 MCP 客户端能够通过只读工具回答关于您网站流量的问题,这些工具通过 @umami/api-client 调用 Umami API。

MCP 服务器从不直接访问数据库;每个工具都通过公共 API 进行调用,并遵循与 Web 应用相同的用户/团队权限检查。

工具

工具用途
list_websites查找您可以访问的网站(先调用以获取 websiteId)。
get_website_daterange有记录数据的最早和最晚日期。
get_website_stats页面浏览量、访客数、访问次数、跳出率、停留时长 + 上一周期对比。
get_website_traffic按分钟、小时、天、月或年统计的页面浏览量/访问次数时间序列。
get_website_metrics热门页面、来源、渠道、国家、浏览器、设备、UTM、事件。
get_realtime当前活跃的访客。
get_events单个跟踪事件(分页)。
get_event_stats自定义事件总数 + 上一周期对比。
get_event_series自定义事件随时间变化的计数,按事件名称分组。
get_event_properties自定义事件属性名称,或某个属性的值。
get_sessions访客会话(分页)。
get_session_stats会话级汇总:访客数、访问次数、页面浏览量、事件数、国家。
get_annotations时间线上的带日期备注(发布、活动),用于解释变化。
list_segments已保存的细分和群组;通过 filters.segment / .cohort 传递 ID。
get_session单个会话及其活动时间线和属性。
list_funnels已保存的漏斗及其步骤(获取 funnelId 用于 run_funnel)。
run_funnel基于已保存的 funnelId 或临时页面/事件步骤的转化漏斗。
get_goals已保存的目标及其转化数、访客数和指定时间范围内的转化率。
run_journey访客最常走的路径。
run_retention群组留存表。
run_attribution转化的首次/末次点击归因。
get_revenue收入总计、时间序列和细分。
get_performance核心 Web 指标(LCP、INP、CLS、FCP、TTFB)百分位数、趋势、细分。

所有工具均为只读。日期采用 ISO 8601 格式;结果分页返回,页面大小有硬性上限。

远程:Umami Cloud

使用您现有的 Cloud API 密钥连接到 https://cloud.umami.is/mcp

Authorization: Bearer api_<your-cloud-api-key>

支持自定义请求头的客户端可以使用 x-umami-api-key 代替。如果同时提供两个请求头,它们必须包含相同的密钥。请使用支持 API 密钥或 Bearer 请求头配置的客户端。

Cloud MCP 与 Cloud API 具有相同的订阅要求和网站/团队权限。所有工具都调用 Cloud API 网关,该网关会验证密钥并将请求路由到您所在的区域。

远程:自托管

在您的 Umami 实例中,通过 设置 → API 密钥 生成 API 密钥,然后使用 Streamable HTTP 端点配置您的 MCP 客户端:

https://your-umami.example.com/mcp

使用您的密钥设置授权请求头:

Authorization: Bearer umami_<your-api-key>

请使用支持 Bearer 令牌或自定义授权请求头的客户端。该端点接受自托管 API 密钥;不支持浏览器登录令牌。工具为只读,并遵循密钥所有者现有的用户/团队权限。在设置中撤销密钥即可断开访问。MCP 默认禁用。设置 MCP_ENABLED=1 以启用该端点。

本地 / stdio

{
  "mcpServers": {
    "umami": {
      "command": "npx",
      "args": ["-y", "@umami/mcp"],
      "env": {
        "UMAMI_URL": "https://analytics.example.com",
        "UMAMI_API_TOKEN": "umami_…"
      }
    }
  }
}
变量描述
UMAMI_URL自托管实例 URL(自动追加 /api)。
UMAMI_API_URL完整的 API 基础 URL,例如 https://api.umami.is/v1
UMAMI_API_TOKENAPI 密钥或登录令牌(自托管)。
UMAMI_API_KEYUmami Cloud API 密钥。

对于 Cloud stdio,设置 UMAMI_API_KEY 并省略 UMAMI_URLUMAMI_API_TOKEN

{
  "mcpServers": {
    "umami": {
      "command": "npx",
      "args": ["-y", "@umami/mcp"],
      "env": { "UMAMI_API_KEY": "api_<your-cloud-api-key>" }
    }
  }
}

示例提示

  • 显示我的网站。
  • 上周 example.com 有多少访客?
  • 本月排名前 10 的页面是什么?
  • 将本月流量与上月进行比较。
  • 流量来自哪里?
  • 昨天发生了哪些注册事件?
  • 显示用户 abc123 的会话。
  • 上个月结账事件中人们选择了哪些定价方案?
  • 本周每天触发了多少次注册事件?
  • 运行我上个月的结账漏斗。
  • 我们本季度目标完成情况如何?
  • 哪些页面在移动端的 LCP 表现最差?
  • 流量激增那天发生了什么?

编程使用

import { UmamiClient } from '@umami/api-client';
import { createUmamiMcpServer } from '@umami/mcp';

const server = createUmamiMcpServer({
  client: new UmamiClient({ baseUrl, token }),
});

createUmamiMcpHttpHandler({ createClient }) 返回一个 Streamable HTTP 处理器,可嵌入到任何 Web 框架中;主机验证 Bearer 令牌并传递 authInfo