jaeger-mcp
jaeger-mcp
Servidor MCP para rastreo distribuido de Jaeger. Dale a Claude (o a cualquier agente compatible con MCP) acceso de lectura a tus datos de rastreo: busca rastreos, inspecciona spans, mapea dependencias de servicios, todo sin salir de la conversación.
¿Por qué otro MCP para Jaeger?
Las integraciones existentes de Jaeger requieren una interfaz de usuario en ejecución o scripts personalizados. Este servidor:
Habla el Protocolo de Contexto de Modelo estándar a través de stdio: funciona con Claude Desktop, Claude Code, Cursor y cualquier cliente MCP.
Es de solo lectura: las 5 herramientas incluyen
readOnlyHint: true, por lo que no hay riesgo de modificar los datos de rastreo.Devuelve salida de doble canal: JSON estructurado (
structuredContent) para uso programático + Markdown (content) para visualización legible por humanos.Tiene mensajes de error accionables que indican exactamente la variable de entorno a corregir y sugieren el siguiente paso.
Admite token Bearer, autenticación HTTP Basic o sin autenticación (común para despliegues internos).
Herramientas
Herramienta | Endpoint | Descripción |
|
| Lista todos los servicios instrumentados |
|
| Lista los nombres de operaciones de un servicio |
|
| Busca rastreos con filtros avanzados |
|
| Detalle completo del rastreo con árbol de spans |
|
| Grafo de llamadas entre servicios |
Instalación
pip install jaeger-mcpO ejecútalo directamente sin instalar:
uvx jaeger-mcpConfiguración
Toda la configuración se realiza mediante variables de entorno:
Variable | Requerido | Predeterminado | Descripción |
| Sí | — | URL del servicio de consulta de Jaeger, p. ej. |
| No | — | Token Bearer (tiene prioridad sobre la autenticación Basic) |
| No | — | Nombre de usuario para autenticación HTTP Basic |
| No | — | Contraseña para autenticación HTTP Basic |
| No |
| Establecer en |
Copia .env.example a .env y rellena tus valores.
Configuración de Claude Desktop / Claude Code
Añádelo a tu configuración de MCP (claude_desktop_config.json o .claude/mcp.json):
{
"mcpServers": {
"jaeger": {
"command": "jaeger-mcp",
"env": {
"JAEGER_URL": "https://jaeger.example.com",
"JAEGER_TOKEN": "your-token-here"
}
}
}
}O con uvx (no requiere instalación):
{
"mcpServers": {
"jaeger": {
"command": "uvx",
"args": ["jaeger-mcp"],
"env": {
"JAEGER_URL": "https://jaeger.example.com"
}
}
}
}Docker
docker run --rm -e JAEGER_URL=https://jaeger.example.com jaeger-mcpConsultas de ejemplo
Una vez configurado, pregúntale a Claude:
"¿Qué servicios conoce Jaeger?"
"Busca rastreos con errores HTTP 500 en
order-servicede la última hora""Muéstrame los rastreos más lentos (más de 2 segundos) para
GET /checkout""¿Qué causó el error en el rastreo
abcdef1234567890?""Mapea el grafo de dependencias de servicios de los últimos 7 días"
"¿Qué servicios llaman a
postgrescon más frecuencia?"
Guía de uso de herramientas
jaeger_list_services
Devuelve todos los nombres de servicios que Jaeger ha visto. Empieza aquí cuando no sepas qué servicios están instrumentados. La salida está limitada a 500 servicios con una indicación de truncamiento.
jaeger_list_operations
Devuelve todos los nombres de operaciones para un servicio dado (p. ej., rutas HTTP, nombres de métodos gRPC). Úsalo para descubrir nombres de operaciones válidos antes de filtrar en jaeger_search_traces.
jaeger_search_traces
La herramienta de búsqueda principal. Filtros:
service(requerido) — nombre del servicio dejaeger_list_servicesoperation— limitar a un endpoint específicotags— cadena JSON de filtros de etiquetas, p. ej.{"http.status_code":"500"}o{"error":"true"}start/end— rango de tiempo en microsegundos UTCmin_duration/max_duration— cadenas de duración como"100ms","1.5s","2m"limit— predeterminado 20, máximo 1500
Devuelve resúmenes de rastreo con trace_id, duration_us, span_count, service_count, root_operation, errors_count.
jaeger_get_trace
Detalle completo del rastreo. Acepta un trace_id (cadena hexadecimal, 16-32 caracteres) y devuelve:
Todos los spans con etiquetas, nombres de servicio, relaciones padre/hijo
Estadísticas por servicio (conteo de spans, duración total, conteo de errores)
Árbol de ejecución (cada nodo lista los IDs de sus spans hijos)
Los spans con error se identifican mediante tags["error"] = "true".
jaeger_get_dependencies
Grafo de topología de servicios. Devuelve aristas dirigidas (padre → hijo) con call_count. Usa lookback_hours (predeterminado 24, máximo 720) para controlar la ventana de tiempo.
Características de rendimiento
Todas las herramientas utilizan una única
requests.Sessionpersistente con agrupación de conexiones.La sesión tiene
trust_env = Falsepara omitir proxies de entorno (Jaeger suele ser un servicio interno).Las solicitudes tienen un tiempo de espera de 30 segundos.
jaeger_search_tracespasa ellimitdirectamente a Jaeger; evita solicitar más rastreos de los necesarios.jaeger_get_traceobtiene el rastreo completo en una sola llamada; los rastreos grandes (miles de spans) pueden ser lentos.jaeger_get_dependenciesagrega datos sobre toda la ventana de tiempo; las ventanas grandes pueden ser lentas en clústeres ocupados.
Desarrollo
git clone https://github.com/mshegolev/jaeger-mcp
cd jaeger-mcp
pip install -e '.[dev]'
pytest tests/ -v
ruff check src tests
ruff format src testsLicencia
MIT — ver LICENSE.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/mshegolev/jaeger-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server