Matomo-MCP
matomo-mcp
Habla con tus análisis de Matomo. Desde Claude, Cursor, VS Code o cualquier cliente MCP.
15 herramientas de análisis seleccionadas y de solo lectura + una vía de escape a la API completa. Un único binario, arranque instantáneo, respetuoso con el contexto.
Inicio rápido · Clientes · Herramientas · Configuración · Preguntas frecuentes
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?Cada pregunta que tu panel de Matomo puede responder, tu asistente de IA también puede responderla ahora, incluidas las preguntas de seguimiento, las comparaciones y los «por qué».
✨ ¿Por qué matomo-mcp?
🎯 Seleccionadas, no generadas | 15 herramientas artesanales modeladas a partir de preguntas reales de analítica, no 70+ espejos de API autogenerados que saturan el contexto del modelo y degradan la selección de herramientas. |
⚡ Arranque instantáneo | Sin idas y vueltas de introspección. Un único binario estático, sin Node, sin Python, sin runtime. Arranca en milisegundos. |
🔒 Seguro por defecto | Herramientas de informes de solo lectura. El token se envía solo mediante POST (nunca en URLs/logs) y se redacta de todos los errores. Verificación TLS activada por defecto. |
🧠 Respetuoso con el contexto | Límites de filas en cada informe y un presupuesto de respuesta estricto con orientación práctica: una sola llamada a una herramienta nunca puede reventar la ventana de contexto. |
📡 Tiempo real incluido | Contadores de visitantes en vivo y un registro de visitas ( |
🧰 Nunca una jaula |
|
🔁 Resistente | Reintentos automáticos con retroceso ante 429/5xx/errores de red. Mensajes de error útiles y con pistas que el modelo puede aprovechar. |
Related MCP server: mcp-server-wazuh
🚀 Inicio rápido
1. Instalación
Binario precompilado (Linux, macOS, Windows): descárgalo desde Releases, o:
# Cargo
cargo install matomo-mcp
# From source
cargo install --git https://github.com/Liohtml/matomo-mcp
# Docker
docker pull ghcr.io/liohtml/matomo-mcp2. Obtén un token de API de Matomo
Matomo → Ajustes (⚙) → Personal → Seguridad → Tokens de autenticación → Crear nuevo token. Solo necesita permisos de solo lectura.
3. Verifica la conexión
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. Conecta tu cliente ⬇
🔌 Conecta tu cliente
claude mcp add matomo \
--env MATOMO_URL=https://your-matomo.example.com \
--env MATOMO_TOKEN=YOUR_TOKEN \
--env MATOMO_DEFAULT_SITE_ID=1 \
-- matomo-mcpAñádelo a 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/mcp.json (proyecto) o ~/.cursor/mcp.json (global):
{
"mcpServers": {
"matomo": {
"command": "matomo-mcp",
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "YOUR_TOKEN",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}
}
}.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
}
]
}Cualquier cliente que hable MCP sobre stdio funciona con la forma genérica:
{
"command": "matomo-mcp",
"args": [],
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "YOUR_TOKEN",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}{
"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"
}
}
}
}Ejecuta el servidor una vez (en una estación de trabajo, una máquina de la LAN o un contenedor) y apunta cualquier número de clientes MCP hacia él:
matomo-mcp --url https://your-matomo.example.com --token YOUR_TOKEN --http 127.0.0.1:8080Los clientes se conectan a http://127.0.0.1:8080/mcp con el transporte HTTP streamable, por ejemplo:
claude mcp add --transport http matomo http://127.0.0.1:8080/mcp[!WARNING] El endpoint HTTP no tiene autenticación integrada. Mantenlo vinculado a
127.0.0.1, o coloca un proxy inverso con autenticación (o un cortafuegos) delante antes de exponerlo más allá de localhost.
[!TIP] Configura
MATOMO_DEFAULT_SITE_IDy el modelo nunca tendrá que preguntar a qué sitio te refieres. ¿No tienes un token a mano? Pruébalo contra la demo pública:--url https://demo.matomo.cloud --default-site-id 1(no se necesita token).
🧭 Herramientas
Herramienta | Responde a preguntas como |
| "¿Qué sitios rastreamos?" |
| "¿Cuánto tráfico tuvimos la semana pasada?" |
| "¿Cuáles son nuestras páginas principales? ¿Dónde sale la gente?" |
| "¿De dónde vienen los visitantes? ¿Qué campañas funcionan? ¿Qué nos envían los asistentes de IA?" |
| "¿Con qué frecuencia se abrió el configurador?" |
| "¿Cuál es nuestra tasa de conversión por objetivo?" |
| "¿Ingresos este mes? ¿Productos más vendidos?" |
| "¿De qué países/ciudades vienen los visitantes?" |
| "¿Móvil vs. escritorio? ¿Qué navegadores?" |
| "¿Cuándo durante el día/semana visita la gente?" |
| "¿Qué busca la gente en nuestro sitio — y no encuentra nada?" |
| "¿Quién está en el sitio ahora mismo?" |
| "¿Qué páginas cargan lentamente?" |
| "¿Qué despliegues o lanzamientos de campañas coinciden con ese pico de tráfico?" |
| Todo lo demás: embudos, mapas de calor, dimensiones personalizadas, cualquier |
Todas las herramientas aceptan site_id, period (day/week/month/year/range), date (today, yesterday, 2026-07-01, last30 o rangos start,end), un segment opcional (p. ej. deviceType==mobile;country==DE) y un limit de filas.
Prompts para probar
"Compara el tráfico de esta semana con el de la semana pasada: ¿qué cambió y por qué?"
"Las 10 mejores páginas de aterrizaje por conversiones este mes, con tasas de rebote."
"¿Estamos recibiendo tráfico de ChatGPT o Perplexity? Tendencia en 3 meses."
"¿Qué búsquedas internas no devuelven resultados? Sugiere contenido que deberíamos crear."
"¿Algo inusual en el registro de visitantes ahora mismo?"
⚙️ Configuración
Flag | Env | Default | Descripción |
|
| — | URL de la instancia de Matomo (funcionan las instalaciones en subdirectorios como |
|
| — | Token de API ( |
|
| — | Sitio utilizado cuando el modelo no especifica uno |
|
| — | Cabeceras HTTP adicionales ( |
|
|
| Tiempo de espera por petición |
|
|
| Presupuesto de respuesta antes del truncado |
|
| — | Servir MCP sobre HTTP streamable en esta dirección en lugar de stdio (endpoint: |
|
|
| Aceptar certificados TLS autofirmados (adhesión explícita) |
| — | — | Verificar URL + token + acceso al sitio y salir |
🆚 ¿En qué se diferencia de FGRibreau/mcp-matomo?
mcp-matomo (que inspiró este proyecto, ¡gracias! 🙏) inspecciona tu instancia de Matomo al arrancar y genera una herramienta MCP por método de API. matomo-mcp adopta el enfoque opuesto:
matomo-mcp | mcp-matomo | |
Conjunto de herramientas | 15 herramientas seleccionadas + vía de escape | ~70+ herramientas generadas |
Coste de contexto del modelo | Pequeño y estable | Grande y dependiente de la instancia |
Tipos de parámetros | Enums/valores por defecto exactos y escritos a mano | Inferidos de los nombres de los parámetros |
Arranque | Instantáneo (sin E/S de red) | Idas y vueltas de introspección (o archivo de especificación en caché) |
Verificación TLS | Activada por defecto | Desactivada para la introspección |
Instalaciones en subdirectorios | ✅ | La ruta se sobrescribe |
Protección del tamaño de respuesta | Límites de filas + presupuesto estricto | — |
Reintentos en errores transitorios | ✅ | — |
Herramientas en tiempo real (Live) | ✅ | — (no forman parte de los metadatos de los informes) |
Si quieres cada método de API como herramienta propia, usa mcp-matomo. Si quieres que el modelo elija de forma fiable la herramienta correcta y nunca sature su contexto, usa matomo-mcp.
🩺 Solución de problemas
O bien pasa --default-site-id 1 (recomendado) o deja que el modelo llame a matomo_list_sites primero.
Ejecuta matomo-mcp --url ... --token ... --check. Si falla: regenera el token (Ajustes → Personal → Seguridad), asegúrate de que tenga al menos acceso de vista al sitio.
MATOMO_URL debe apuntar a la raíz de Matomo — la carpeta que contiene index.php. Para https://example.com/matomo/index.php, usa https://example.com/matomo/.
Inyecta las cabeceras de omisión: --header "CF-Access-Client-Id:..." --header "CF-Access-Client-Secret:..." (o mediante MATOMO_EXTRA_HEADERS).
Eso es el guardián de contexto haciendo su trabajo. Pide menos filas, un rango de fechas más corto, o aumenta --max-response-chars.
🗺️ Roadmap
Transporte HTTP transmisible (
--http, alójalo una vez, conecta muchos clientes)matomo_annotations— lee y correlaciona marcadores de despliegue con el tráficoSoporte multi-instancia (un servidor, varias instalaciones de Matomo)
Homebrew tap y manifest de winget
Listado en el registro MCP (registro oficial mediante
server.json, Glama)
¿Quieres alguna de estas antes? Abre un issue — o un PR, consulta CONTRIBUTING.md.
🛠️ Desarrollo
cargo test # 37 tests, fully offline (wiremock)
cargo clippy --all-targets -- -D warnings
cargo run -- --url https://demo.matomo.cloud --default-site-id 1 --checkDecisiones de arquitectura y diseño: docs/ARCHITECTURE.md.
📄 Licencia y créditos
MIT. No afiliado ni respaldado por Matomo — Matomo es una marca registrada de InnoCraft Ltd.
Construido con rmcp, el SDK oficial de MCP para Rust. Inspirado por FGRibreau/mcp-matomo.
Nombre en el registro MCP:
mcp-name: io.github.Liohtml/matomo-mcp
Si matomo-mcp te ahorra una visita al panel, una ⭐ ayuda a otros a encontrarlo.
Maintenance
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
- AlicenseNot gradedqualityFmaintenanceMCP Server for Nutanix Prism Central14MIT
- MIT
- AlicenseBqualityBmaintenanceMCP Server for Apache Pinot1417Apache 2.0
- -licenseNot gradedqualityNot gradedmaintenanceEnables AI models to interact with Matomo analytics through a complete MCP server implementation. Provides tools for retrieving analytics data, managing sites, and generating reports with zero configuration setup.
Related MCP Connectors
MCP server for Tinify image optimization — one tool, max optimization
MCP Server for agents to onboard, pay, and provision services autonomously with InFlow
MCP server for Blockscout
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Liohtml/matomo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server