关于 Matomo Analytics
Matomo Analytics 是面向 Matomo 用户的 MCP 服务,通过精心设计的只读工具提供网站分析数据,并保留完整 Reporting API 调用入口。其单一二进制程序包含实时报告、响应大小限制和错误重试。
主要功能
- 0115 个只读分析工具
- 02覆盖流量、页面、来源及电商报告
- 03提供实时访客计数与访问日志
- 04通过完整 API 入口调用其他方法
- 05限制行数和响应大小
- 06对临时故障自动重试
适用场景
- 01比较不同日期范围的网站流量
- 02查看转化、目标和电商数据
- 03分析访客来源、设备及地域
- 04检查当前访客和访问日志
- 05调用专用工具未覆盖的报告 API
MCP 相关
它通过 MCP 向客户端提供 Matomo 报告工具,支持 stdio 和可流式传输的 HTTP。工具只读,并可调用 Reporting API 的其他方法。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
matomo-mcp
与 Matomo Analytics 对话。 可通过 Claude、Cursor、VS Code 或任何 MCP 客户端使用。
15 个精心设计的只读分析工具 + 完整 API 备用方案。单个二进制文件,即时启动,上下文友好。
You ▸ How was traffic yesterday, and where did it come from?
Claude ▸ Yesterday you had 14,472 visits (11,416 unique visitors, 66% bounce rate).
Top acquisition channels:
1. Organic search — 6,120 visits (Google 92%)
2. Direct — 4,890 visits
3. AI assistants — 1,204 visits (↑ 31% vs. last week)
Want me to break down which landing pages converted best?
Matomo 仪表板能回答的所有问题,现在你的 AI 助手也都能回答——包括后续问题、比较和“为什么?”。
✨ 为什么选择 matomo-mcp?
| 🎯 精心设计,而非自动生成 | 15 个手工打造的工具,针对真实分析问题设计——而不是 70 多个自动生成的 API 镜像,它们会占满模型的上下文并降低工具选择的准确性。 |
| ⚡ 即时启动 | 无需往返进行内省。单个静态二进制文件,无需 Node、Python 或运行时。毫秒级启动。 |
| 🔒 默认安全 | 只读报告工具。令牌仅通过 POST 发送(绝不出现在 URL 或日志中),并从所有错误信息中清除。默认启用 TLS 验证。 |
| 🧠 上下文友好 | 每份报告都限制行数,并设有硬性响应预算和可操作的指导——单次工具调用绝不会撑爆上下文窗口。 |
| 📡 包含实时功能 | 实时访客计数器和访问日志(matomo_realtime)——查看此刻正在发生什么。 |
| 🧰 毫无限制 | 当精心设计的工具无法满足需求时,matomo_api 可调用任意 Reporting API 方法(漏斗、热图、自定义维度等)。 |
| 🔁 弹性可靠 | 遇到 429/5xx 错误或网络故障时自动退避重试。提供带提示注释的实用错误信息,便于模型采取行动。 |
🚀 快速开始
1. 安装
预构建二进制文件(Linux、macOS、Windows)——可从 Releases 下载,或:
# Cargo
cargo install matomo-mcp
# From source
cargo install --git https://github.com/Liohtml/matomo-mcp
# Docker
docker pull ghcr.io/liohtml/matomo-mcp
2. 获取 Matomo API 令牌
Matomo → 设置(⚙)→ 个人 → 安全 → 身份验证令牌 → 创建新令牌。 只需查看权限即可。
3. 验证连接
matomo-mcp --url https://your-matomo.example.com --token YOUR_TOKEN --check
✓ Connected — Matomo version 5.2.1
✓ Token grants access to 3 site(s):
#1 My Shop (https://shop.example.com)
#2 Blog (https://blog.example.com)
#3 Docs (https://docs.example.com)
4. 连接你的客户端 ⬇
🔌 连接客户端
Claude Code
claude mcp add matomo \
--env MATOMO_URL=https://your-matomo.example.com \
--env MATOMO_TOKEN=YOUR_TOKEN \
--env MATOMO_DEFAULT_SITE_ID=1 \
-- matomo-mcp
Claude Desktop
添加到 claude_desktop_config.json(macOS:~/Library/Application Support/Claude/,Windows:%APPDATA%\Claude\):
{
"mcpServers": {
"matomo": {
"command": "matomo-mcp",
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "YOUR_TOKEN",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}
}
}
Cursor
.cursor/mcp.json(项目级)或 ~/.cursor/mcp.json(全局):
{
"mcpServers": {
"matomo": {
"command": "matomo-mcp",
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "YOUR_TOKEN",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}
}
}
VS Code (GitHub Copilot)
.vscode/mcp.json:
{
"servers": {
"matomo": {
"type": "stdio",
"command": "matomo-mcp",
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "${input:matomo-token}",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}
},
"inputs": [
{
"id": "matomo-token",
"type": "promptString",
"description": "Matomo API token",
"password": true
}
]
}
Windsurf / Zed / 其他 MCP 客户端
任何支持通过 stdio 使用 MCP 的客户端都可以使用以下通用配置:
{
"command": "matomo-mcp",
"args": [],
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "YOUR_TOKEN",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}
Docker(任何客户端)
{
"mcpServers": {
"matomo": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "MATOMO_URL", "-e", "MATOMO_TOKEN", "-e", "MATOMO_DEFAULT_SITE_ID",
"ghcr.io/liohtml/matomo-mcp"
],
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "YOUR_TOKEN",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}
}
}
可流式传输的 HTTP — 托管一次,连接多个客户端
运行一次服务(在工作站、局域网设备或容器上),然后让任意数量的 MCP 客户端连接到它:
matomo-mcp --url https://your-matomo.example.com --token YOUR_TOKEN --http 127.0.0.1:8080
客户端使用可流式传输的 HTTP 传输连接到 http://127.0.0.1:8080/mcp,例如:
claude mcp add --transport http matomo http://127.0.0.1:8080/mcp
警告
HTTP 端点没有内置身份验证。请将其绑定到
127.0.0.1,或在其前面配置带身份验证的反向代理(或防火墙), 然后再将其暴露到本地主机之外。
提示
设置
MATOMO_DEFAULT_SITE_ID,模型就不必再询问你指的是哪个网站。 手头没有令牌?可以试试公开演示:--url https://demo.matomo.cloud --default-site-id 1(无需令牌)。
🧭 工具
| 工具 | 可回答的问题 |
|---|---|
matomo_list_sites | “我们跟踪了哪些网站?” |
matomo_visits_summary | “上周的流量有多少?” |
matomo_pages | “哪些页面最热门?访客从哪里离开?” |
matomo_referrers | “访客来自哪里?哪些营销活动效果好?AI 助手给我们带来了多少流量?” |
matomo_events | “配置器被打开了多少次?” |
matomo_goals | “每个目标的转化率是多少?” |
matomo_ecommerce | “本月收入是多少?哪些产品最畅销?” |
matomo_geo | “访客来自哪些国家/城市?” |
matomo_devices | “移动设备和桌面设备的情况如何?访客使用哪些浏览器?” |
matomo_visit_times | “人们通常在一天/一周中的什么时候访问?” |
matomo_site_search | “人们在我们的网站上搜索什么,却找不到结果?” |
matomo_realtime | “现在有哪些人在网站上?” |
matomo_page_performance | “哪些页面加载缓慢?” |
matomo_annotations | “哪些部署或营销活动启动时间与这次流量激增相吻合?” |
matomo_api | 其他所有内容——漏斗、热图、自定义维度,以及 Reporting API 中的任意 Module.action |
所有工具都接受 site_id、period(day/week/month/year/range)、date
(today、yesterday、2026-07-01、last30 或 start,end 范围)、可选的
segment(例如 deviceType==mobile;country==DE)以及行数 limit。
可尝试的提示词
- “比较本周和上周的流量——有什么变化?原因是什么?”
- “列出本月按转化次数排名前 10 的落地页及其跳出率。”
- “我们是否获得了来自 ChatGPT 或 Perplexity 的流量?查看近 3 个月的趋势。”
- “哪些站内搜索没有返回结果?建议我们应该创建哪些内容。”
- “当前访客日志中有什么异常吗?”
⚙️ 配置
| 标志 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
--url | MATOMO_URL | — | Matomo 实例 URL(支持安装在子目录中的实例,例如 https://example.com/matomo/)。未指定时,服务仍会启动,但工具调用会返回设置指南 |
--token | MATOMO_TOKEN | — | API 令牌(token_auth),拥有查看权限即可 |
--default-site-id | MATOMO_DEFAULT_SITE_ID | — | 模型未指定站点时使用的站点 |
--header | MATOMO_EXTRA_HEADERS | — | 额外的 HTTP 标头(Name:Value,可重复指定或用逗号分隔)——适用于身份验证代理、Zero-Trust、多租户设置 |
--timeout-secs | MATOMO_TIMEOUT_SECS | 30 | 每次请求的超时时间 |
--max-response-chars | MATOMO_MAX_RESPONSE_CHARS | 50000 | 响应截断前的长度上限 |
--http | MATOMO_HTTP_BIND | — | 在此地址上通过可流式传输的 HTTP 提供 MCP 服务,而非使用 stdio(端点:http://<addr>/mcp) |
--insecure | MATOMO_INSECURE | false | 接受自签名 TLS 证书(需明确启用) |
--check | — | — | 验证 URL、令牌和站点访问权限,然后退出 |
🆚 这与 FGRibreau/mcp-matomo 有何不同?
mcp-matomo(本项目受其启发——感谢!🙏)会在启动时检查你的 Matomo 实例,并为每个 API 方法生成一个 MCP 工具。matomo-mcp 则采取了相反的做法:
| matomo-mcp | mcp-matomo | |
|---|---|---|
| 工具集 | 15 个精选工具 + 备用入口 | 约 70 个以上的生成工具 |
| 模型上下文开销 | 小且稳定 | 大,取决于实例 |
| 参数类型 | 精确、手动编写的枚举值/默认值 | 根据参数名称推断 |
| 启动 | 即时(无网络 I/O) | 需要往返检查(或使用缓存的规范文件) |
| TLS 验证 | 默认开启 | 检查时禁用 |
| 子目录安装 | ✅ | 路径会被覆盖 |
| 响应大小保护 | 行数限制 + 硬性上限 | — |
| 瞬时错误重试 | ✅ | — |
| 实时(Live)工具 | ✅ | —(不属于报告元数据) |
如果你希望每个 API 方法都各自成为一个工具,请使用 mcp-matomo。如果你希望模型可靠地选择正确的工具,且不会让上下文过载,请使用 matomo-mcp。
🩺 故障排除
“site_id is required”
传入 --default-site-id 1(推荐),或者先让模型调用 matomo_list_sites。
401 / “cannot be authenticated”
运行 matomo-mcp --url ... --token ... --check。如果失败,请重新生成令牌(Settings → Personal → Security),并确保该令牌至少拥有此站点的查看权限。
404 或返回 HTML 而非 JSON
MATOMO_URL 必须指向 Matomo 根目录,也就是包含 index.php 的文件夹。对于 https://example.com/matomo/index.php,请使用 https://example.com/matomo/。
位于 Cloudflare Access / OAuth2 代理 / Zero Trust 后面?
注入绕过验证的标头:--header "CF-Access-Client-Id:..." --header "CF-Access-Client-Secret:..."(或通过 MATOMO_EXTRA_HEADERS 设置)。
响应似乎被截断
这是上下文保护机制正常工作所致。请减少请求行数、缩短日期范围,或调高 --max-response-chars。
🗺️ 路线图
- 可流式传输的 HTTP 传输(
--http,托管一次,供多个客户端连接) -
matomo_annotations— 读取部署标记并与流量关联 - 多实例支持(一个服务,支持多个 Matomo 安装)
- Homebrew tap 和 winget manifest
- MCP 注册表上架(通过
server.json上架至官方注册表,以及 Glama)
希望尽早实现其中某项?提交 issue——或提交 PR,参见 CONTRIBUTING.md。
🛠️ 开发
cargo test # 37 tests, fully offline (wiremock)
cargo clippy --all-targets -- -D warnings
cargo run -- --url https://demo.matomo.cloud --default-site-id 1 --check
架构与设计决策:docs/ARCHITECTURE.md。
📄 许可证与致谢
MIT。与 Matomo 无关联,也未获其认可 — Matomo 是 InnoCraft Ltd. 的注册商标。
使用官方 Rust MCP SDK rmcp 构建。灵感来自 FGRibreau/mcp-matomo。
- MCP Registry 名称:
mcp-name: io.github.Liohtml/matomo-mcp
如果 matomo-mcp 帮你省去了访问仪表板的麻烦,点个 ⭐ 就能帮助其他人发现它。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。