Skip to main content
Glama
Liohtml

Matomo-MCP

by Liohtml

matomo-mcp

Habla con tus análisis de Matomo. Desde Claude, Cursor, VS Code o cualquier cliente MCP.

CI Crates.io License: MIT Rust 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 (matomo_realtime): ve lo que está sucediendo ahora mismo.

🧰 Nunca una jaula

matomo_api llega a cualquier método de la Reporting API (embudos, mapas de calor, dimensiones personalizadas, …) cuando las herramientas seleccionadas no lo cubren.

🔁 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-mcp

2. Obtén un token de API de Matomo

Matomo → Ajustes (⚙) → PersonalSeguridadTokens de autenticaciónCrear 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-mcp

Añá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:8080

Los 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_ID y 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

matomo_list_sites

"¿Qué sitios rastreamos?"

matomo_visits_summary

"¿Cuánto tráfico tuvimos la semana pasada?"

matomo_pages

"¿Cuáles son nuestras páginas principales? ¿Dónde sale la gente?"

matomo_referrers

"¿De dónde vienen los visitantes? ¿Qué campañas funcionan? ¿Qué nos envían los asistentes de IA?"

matomo_events

"¿Con qué frecuencia se abrió el configurador?"

matomo_goals

"¿Cuál es nuestra tasa de conversión por objetivo?"

matomo_ecommerce

"¿Ingresos este mes? ¿Productos más vendidos?"

matomo_geo

"¿De qué países/ciudades vienen los visitantes?"

matomo_devices

"¿Móvil vs. escritorio? ¿Qué navegadores?"

matomo_visit_times

"¿Cuándo durante el día/semana visita la gente?"

matomo_site_search

"¿Qué busca la gente en nuestro sitio — y no encuentra nada?"

matomo_realtime

"¿Quién está en el sitio ahora mismo?"

matomo_page_performance

"¿Qué páginas cargan lentamente?"

matomo_annotations

"¿Qué despliegues o lanzamientos de campañas coinciden con ese pico de tráfico?"

matomo_api

Todo lo demás: embudos, mapas de calor, dimensiones personalizadas, cualquier Module.action de la Reporting API

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

MATOMO_URL

URL de la instancia de Matomo (funcionan las instalaciones en subdirectorios como https://example.com/matomo/). Sin ella, el servidor sigue arrancando y las llamadas a herramientas devuelven orientación de configuración

--token

MATOMO_TOKEN

Token de API (token_auth), con acceso de solo lectura es suficiente

--default-site-id

MATOMO_DEFAULT_SITE_ID

Sitio utilizado cuando el modelo no especifica uno

--header

MATOMO_EXTRA_HEADERS

Cabeceras HTTP adicionales (Name:Value, repetibles / separadas por comas) — para proxies de autenticación, configuraciones Zero-Trust y multi-tenant

--timeout-secs

MATOMO_TIMEOUT_SECS

30

Tiempo de espera por petición

--max-response-chars

MATOMO_MAX_RESPONSE_CHARS

50000

Presupuesto de respuesta antes del truncado

--http

MATOMO_HTTP_BIND

Servir MCP sobre HTTP streamable en esta dirección en lugar de stdio (endpoint: http://<addr>/mcp)

--insecure

MATOMO_INSECURE

false

Aceptar certificados TLS autofirmados (adhesión explícita)

--check

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áfico

  • Soporte 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 --check

Decisiones 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.

A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
1wRelease cycle
5Releases (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

View all related MCP servers

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

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/Liohtml/matomo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server