Skip to main content
Glama
arttus

umami-mcp-server

by arttus

umami-mcp-server

面向 Umami Analytics 的 MCP 服务器。只读,同时适用于 Umami Cloud 和自托管实例,并使用 last_month 这样的时间范围和 example.com 这样的网站名,而不是 epoch 毫秒和 UUID。

其中包含 25 个工具:网站发现、流量统计、时间序列、排名细分、自定义事件、单个匿名会话、一键式完整报告、网站/用户/团队的完整管理 CRUD、组合式客户开通工具,以及用于 Umami API 中其他任何内容的原始 GET 逃生舱。

管理类工具(创建用户、团队和网站;删除任何内容)需要 自托管的 Umami 实例,并使用管理员登录或管理员 API 密钥。Umami Cloud 不通过 API 暴露用户或团队管理,因此在指向 Cloud 时这些工具会返回明确的错误提示,而不是令人困惑的 404。

安装

npm install
npm run build

Related MCP server: Plausible MCP

配置

复制 .env.example,并选择两种认证方式之一填写。

Umami Cloud

在 Settings > API keys 下创建一个密钥。

变量

必填

说明

UMAMI_API_KEY

你的 Cloud API 密钥

UMAMI_REGION

useu。默认使用密钥所属区域

自托管

变量

必填

说明

UMAMI_BASE_URL

实例的根 URL,例如 https://analytics.example.com。会自动追加 /api 后缀

UMAMI_API_KEY

二选一

实例上的 API 密钥

UMAMI_USERNAME + UMAMI_PASSWORD

二选一

登录凭据,会换取 bearer token,并在过期时自动刷新

两者通用

变量

默认值

说明

UMAMI_TIMEZONE

UTC

用于日界和时间序列分桶的 IANA 时区,例如 America/New_York

UMAMI_DEFAULT_WEBSITE

当工具调用省略 website 参数时使用的网站 ID、名称或域名。如果你大多查询同一个网站,可以设置此项

接入

Claude Desktop 或 Claude Code

添加到 claude_desktop_config.json,或者运行 claude mcp add

{
  "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"
      }
    }
  }
}

对于自托管实例,请传入 UMAMI_BASE_URL,并使用 API 密钥或用户名密码对。

MCP Inspector

UMAMI_API_KEY=your-key npm run inspect

工具

分析(只读)

工具

说明

umami_list_websites

列出所有被跟踪的网站,支持可选搜索。如果不知道网站 ID,从这里开始

umami_get_website

网站配置、实际收集到的数据的日期范围,以及实时访客数

umami_get_active_visitors

过去 5 分钟内的独立访客数

umami_get_stats

页面浏览量、访客数、独立访客数、跳出率、平均访问时长,并带环比变化

umami_get_pageviews_series

按分钟、小时、日、月或年分桶的页面浏览量和访问次数

umami_get_metrics

按任意维度的排名细分。expanded=true 时为每行增加互动指标

umami_get_events_series

自定义事件随时间变化的计数,按事件名称分组

umami_list_sessions

分页的匿名会话列表

umami_get_session

单个会话及其逐页活动轨迹

umami_traffic_report

一次调用获取统计数据和 7 个细分维度。适合回答“网站表现如何”

管理:网站(自托管、管理员登录或密钥)

工具

说明

umami_create_website

注册新网站,返回其跟踪 ID 和 <script> 代码片段

umami_update_website

重命名、更改域名、设置公开分享链接,并配置所有回放/热图字段:开启开关、采样率、PII 脱敏级别、最大录制时长、拦截选择器

umami_get_recorder_config

读取 Umami 实际提供给网站跟踪器的实时配置。umami_update_website 之后以此为准,因为同一个字段在 Umami 官方文档中可能使用不同单位

umami_reset_website

破坏性。 清除所有已收集的数据,保留网站和跟踪 ID。需要 confirm=true

umami_delete_website

破坏性。 删除网站注册及其所有数据。需要 confirm=true

管理:用户(自托管、管理员登录或密钥)

工具

说明

umami_create_user

创建一个内部登录账号

umami_list_users

列出实例上的所有登录账号

umami_get_user

单个用户的角色以及其可访问的网站和团队

umami_update_user

修改用户名、密码或实例级角色

umami_delete_user

破坏性。 删除一个登录账号。需要 confirm=true

管理:团队(自托管或管理员登录或密钥)

工具

说明

umami_create_team

创建团队并获取其访问码

umami_list_teams

列出团队、成员数和网站数

umami_get_team

团队详情以及完整成员列表和角色

umami_get_team_websites

属于某个团队的网站

umami_update_team

重命名团队或轮换其访问码

umami_join_team

通过访问码,以当前登录用户身份加入团队

umami_add_team_user

直接将已有登录账号添加到一个团队中

umami_update_team_user

修改团队成员的的角色

umami_remove_team_user

破坏性。 从团队中移除一名成员。需要 confirm=true

umami_delete_team

破坏性。 删除团队。需要 confirm=true

开通配置

工具

说明

umami_onboard_client

一个调用即可:创建网站,可选用一个专属团队,可选用一个已有用户授权,可选用一步配置回放/热力图。这是新客户上线的快捷路径

逃生舱

工具

说明

umami_api_get

对任何 Umami 端点发起只读 GET 请求,无需专用工具

每个数据工具都支持 response_formatmarkdown 返回可读摘要,json 返回结构化数据。每个破坏性工具(resetdeleteremove)都必须传入 confirm: true;没有该参数,调用会被拒绝,而且也没有其他确认步骤,因此请把该参数视为不可回头的临界点。

时间范围

range 支持以下任意形式:

  • 相对时间:30. 表示、24h7h4w3mo1y

  • 命名时间:todayyesterdaythis_weeklast_weekthis_monthlast_month``、this_yearlast_yearmtdytdall_time`

或者将 start_dateend_date 传为 YYYY-MM-DD 格式、完整的 ISO 8601 时间戳或 epoch 毫秒数。显式日期会覆盖 range。日期边界遵循 UMAMI_TIMEZONE,或通过每次调用传入 timezone 参数指定。

过滤器

大多数工具接受一个 filters 对象来细分查询:

{ "country": "US", "device": "mobile", "path": "/pricing" }

支持的键:pathreferrertitlequerybrowserosdevicecountryregioncitylanguagehostnametageventdistinctIdutmSourceutmMediumutmCampaignutmContentutmTermsegmentcohort

细分维度

适用于 umami_get_metrics 以及 umami_traffic_reportbreakdowns 参数:pathentryexittitlequeryreferrerchanneldomaincountryregioncitybrowserosdevicelanguagescreeneventhostnametagdistinctId

示例

接入后可直接用自然语言提问:

  • “网站上月与前一个月的表现相比如何?”→ umami_get_stats,传入 range=last_month

  • “给过去 30 天的完整分析报告” → umami_traffic_report

  • “哪个落地页的跳出率最高?” → umami_get_metrics,传入 type=entryexpanded=true

  • “这周的 contact form 提交次数是多少?” → umami_get_events_series,传入 event=contact-form-submit

  • “显示佛罗里达州移动端访客访问最多页面” → umami_get_metrics,传入 type=pathfilters={ device: "mobile", region: "US-FL" }

  • “该会话在网站上实际做了什么?” → 先 umami_list_sessions,再 umami_get_session

  • “为新客户开通跟踪、创建其独立团队,并授权给 jordan” → umami_onboard_client,传入 website_namedomainteam_namegrant_user_id

  • “上线前清除测试数据” → umami_reset_website,传入 confirm=true

设计说明

  • 网站解析。 任何工具的 website 参数都接受一个 UUID、名称或域名。名称和域名会与一份缓存 60 秒的网站列表进行匹配;如果存在歧义,会明确报错,而不是默默地猜错。创建、更新或删除网站都会立即刷新该缓存。

  • 完整的回放/热力图配置,而不只是开关。 umami_update_website 会暴露 Umami 的 replayConfig 所接受的全部字段:启用标志、回放和热力图各自独立的采样率、PII 掩码级别、屏蔽选择器,以及最大录制时长。Umami 官方文档对 maxDuration 的单位说明并不一致(一个示例暗示是毫秒,另一个暗示是秒);与其靠猜,umami_get_recorder_config 会直接读取追踪器(tracker)自身调用的同一个公共端点,因此你可以在保存之后确认实际生效的值,而不是信任任何一个文档示例。

  • 派生指标。 Umami 只返回原始的 bouncestotaltime 计数;跳出率、每次访问浏览数和平均访问时长都在这里算出,从而让每个响应都直接可读。

  • 部分失败。 umami_traffic_report 会并行运行各细分统计,并丢弃当前实例不支持的维度,同时点名哪些维度被跳过,而不是让整个报告失败。这一点很重要,因为不同 Umami 版本对维度的支持情况并不相同。

  • 破坏性操作是显式选择,而不需要二次确认。 umami_reset_websiteumami_delete_websiteumami_delete_userumami_remove_team_userumami_delete_team 都要求使用字面量 confirm: true 参数,不然就失败。没有独立的“你确定吗”往返过程:工具调用本身就是确认,所以一个 agent(或人)只应该在真正想执行时才传入 confirm: true

  • umami_onboard_client 是尽力而为(best-effort),不是事务性的。 Umami 的 API 不支持多步骤事务。如果团队创建成功、网站步骤却失败,团队仍然保留,错误消息也会明确说明这一点,并指出下一步该检查什么,而不是静默回滚或掩盖这种部分完成状态。

  • 逃生出口。 umami_api_get 特意只允许 GET 请求,与支持上面的这些管理工具分开。它不能创建、修改、重置或删除任何内容。

  • 响应大小限制。 响应会被限制在 25,000 个字符以内,并提示使用 limitoffset 或更窄的范围。

测试

npm test

test/smoke.mjs 会建起一个假的 Umami API,通过 stdio 连接真实的 MCP 客户端,并完整走一遍数据分析工具及它们的错误路径。test/auth.mjs 覆盖自托管的登录交换,以及缓存的 bearer token 过期时所触发的 token 刷新。test/admin.mjs 覆盖网站/用户/团队 CRUD、团队成员关系、组合 onboarding 工具,并确认任何破坏性工具在没有 confirm=true 时都会拒绝执行。

已验证

依据 Umami v3 API 参考(2026 年 8 月版本):/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。云端请求会发送到 https://api.umami.is/v1 并使用 bearer token;自建(self-hosted)请求会发送到 {base}/api。用户和团队管理端点只存在于自建实例上。

许可证

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