mshegolev/jaeger-mcp

mshegolev/jaeger-mcp

от mshegolev
MCP-сервер для read-only доступа к Jaeger: поиск трейсов, анализ спанов, сравнение трасс, карта зависимостей сервисов и прогнозирование деградации — всё через Claude без покидания диалога.

jaeger-mcp

PyPI version Python versions License: MIT Tests

MCP server for Jaeger distributed tracing. Give Claude (or any MCP-capable agent) read access to your trace data — search traces, inspect spans, compare traces, compute span statistics, map service dependencies, predict performance issues, and forecast capacity needs — without leaving the conversation.

Why another Jaeger MCP?

The existing Jaeger integrations require a running UI or custom scripts. This server:

  • Speaks the standard Model Context Protocol over stdio — works with Claude Desktop, Claude Code, Cursor, and any MCP client.
  • Is read-only: all 12 tools carry readOnlyHint: true — zero risk of modifying trace data.
  • Returns dual-channel output: structured JSON (structuredContent) for programmatic use + Markdown (content) for human-readable display.
  • Has actionable error messages that name the exact env var to fix and suggest a next step.
  • Supports Bearer token, HTTP Basic auth, or no auth (common for internal deployments).
  • Includes OpenAPI specification documenting the underlying Jaeger Query API (openapi.yaml).
Инструменты были проиндексированы:
jaeger_compare_tracesтолько чтениеидемпотентныйвнешний мир

Сравнивает две трассы структурно — находит добавленные, удалённые и изменённые спаны. Получает обе трассы из Jaeger и выполняет структурное сравнение, сопоставляя спаны по (operationName, serviceName, parentOperation), а не по идентификаторам спанов, которые различаются в разных трассах. Сообщает разницу в длительности и различия в тегах для изменённых спанов. Примеры: - Используйте когда: «Что изменилось между быстрым и медленным запросом?» → передайте идентификаторы трасс обоих запросов; проверьте changed_spans на разницу в длительности. - Используйте когда: «Добавил ли деплой новые вызовы сервисов?» → сравните трассу до деплоя с трассой после деплоя; проверьте added_spans на наличие новых операций. - Используйте когда: «Эти две трассы структурно идентичны?» → если added_spans, removed_spans и changed_spans пусты, трассы имеют одинаковую структуру. - Не используйте когда: Вам нужны агрегированные статистики по множеству трасс (используйте jaeger_span_statistics, как только он станет доступен). - Не используйте когда: У вас только одна трасса — используйте jaeger_get_trace для просмотра одной трассы. Возвращает: словарь с trace_id_a / trace_id_b / added_spans / removed_spans / changed_spans (с разницей в длительности и тегах) / unchanged_count.

Параметры
  • trace_id_astringобязательный

    First trace ID (baseline) as a hex string (16 or 32 hex chars). Obtain from jaeger_search_traces.

  • trace_id_bstringобязательный

    Second trace ID (comparison) as a hex string (16 or 32 hex chars). Obtain from jaeger_search_traces.

jaeger_compare_windowsтолько чтениеидемпотентныйвнешний мир

Сравнивает агрегированное поведение трасс между двумя временными периодами для сервиса. Выбирает трассы из обоих временных окон, агрегирует статистику спанов по операциям, затем сравнивает агрегированное поведение для обнаружения изменений производительности. Примеры: - Используйте когда: «Повлияло ли последнее развёртывание на производительность?» → сравните временные окна до и после развёртывания для сервиса. - Используйте когда: «Какие операции замедлились после обновления базы данных?» → проверьте столбцы comparison_p95_us и p95_delta_pct на увеличения. - Используйте когда: «Появляются ли новые шаблоны ошибок?» → ищите операции с увеличенным error_rate_delta. - Используйте когда: «Добавили или удалили ли мы какие-либо конечные точки API?» → проверьте added_count и removed_count в сводке. - Не используйте когда: нужно сравнить две конкретные трассы (вместо этого используйте jaeger_compare_traces). - Не используйте когда: нужна полная детализация спанов для одной трассы (вместо этого используйте jaeger_get_trace). Возвращает: WindowComparisonOutput с различиями по операциям и сводной статистикой.

Параметры
  • baseline_endintegerобязательный

    Baseline window end time (Unix timestamp in microseconds).

  • baseline_startintegerобязательный

    Baseline window start time (Unix timestamp in microseconds).

  • comparison_endintegerобязательный

    Comparison window end time (Unix timestamp in microseconds).

  • comparison_startintegerобязательный

    Comparison window start time (Unix timestamp in microseconds).

  • limitinteger

    Maximum traces to fetch per window (default 100).

  • operationstring | null

    Optional operation name filter.

  • servicestringобязательный

    Service name to compare across time windows.

jaeger_critical_pathтолько чтениеидемпотентныйвнешний мир

Определяет критический путь и основные узкие места в трейсе. Находит самую длинную цепочку спанов (критический путь) от корня до листа и ранжирует спаны по собственному времени, чтобы выявить реальные узкие места производительности. Примеры: - Используйте, когда: «Почему этот трейс такой медленный?» → вызовите с ID медленного трейса; посмотрите на critical_path_duration_us и critical_path_percentage, чтобы узнать, сколько общего времени приходится на самый длинный путь. - Используйте, когда: «Какие операции потребляют больше всего CPU/собственного времени?» → проверьте список узких мест, отсортированный по self_time_us по убыванию. - Используйте, когда: Отладка регрессий производительности — сравнивайте доли критического пути до и после изменений. - Не используйте, когда: Нужна агрегированная статистика по множеству трейсов (для этого используйте jaeger_span_statistics). - Не используйте, когда: Нужно сравнить два трейса структурно (для этого используйте jaeger_compare_traces). Возвращает: словарь с метаданными трейса, спанами критического пути и рейтингом узких мест.

Параметры
  • trace_idstringобязательный

    Trace ID as a hex string (16 or 32 hex chars). Obtain from jaeger_search_traces.

jaeger_detect_anomaliesтолько чтениеидемпотентныйвнешний мир

Обнаруживает аномалии задержек и частоты ошибок для сервиса, сравнивая недавнее поведение с историческим базовым уровнем. Извлекает трассы из исторического базового окна и недавнего окна наблюдения, вычисляет статистику по каждой операции для обоих окон, а затем выявляет статистически значимые отклонения, которые могут указывать на проблемы с производительностью или надёжностью. Примеры: - Используйте, когда: «Есть ли новые проблемы с производительностью в order-service?» → service='order-service' (использует базовый период по умолчанию 60 минут, текущий – 5 минут). - Используйте, когда: «Нужна большая чувствительность к незначительным изменениям» → установите sensitivity=1.5 (более низкий порог). - Используйте, когда: «Проверить проблемы за последние 24 часа относительно предыдущей недели» → baseline_duration_minutes=10080, current_duration_minutes=1440. - Не используйте, когда: нужно сравнить два конкретных временных периода (вместо этого используйте jaeger_compare_windows). - Не используйте, когда: нужны полные детали спана для одного трейса (вместо этого используйте jaeger_get_trace). Возвращает: AnomalyDetectionOutput с отмеченными операциями и оценками серьёзности.

Параметры
  • baseline_duration_minutesinteger

    Historical baseline duration in minutes (5-1440, default 60).

  • current_duration_minutesinteger

    Current observation window in minutes (1-60, default 5).

  • sensitivitynumber

    Anomaly sensitivity threshold (1.0-5.0, default 2.0). Lower = more sensitive.

  • servicestringобязательный

    Service name to detect anomalies for.

jaeger_find_test_tracesтолько чтениеидемпотентный

Находит трассы Jaeger, соответствующие указанному запросу по тегам. Принимает любую схему ключ-значение тегов (Allure, pytest, custom) без нормализации. Если служба не указана, выполняет поиск по всем известным службам одновременно (не более 20). Результаты сортируются от новых к старым.

Параметры
  • limitinteger

    Maximum traces to return total.

  • lookback_hoursinteger

    Hours back from now to search.

  • servicestring | null

    Jaeger service name. If omitted, all services (up to 20) are searched concurrently.

  • tagsobjectобязательный

    Tag key-value pairs to filter traces. Any framework tag schema works — e.g. {'allure.id': 'TC-42'} or {'test.run_id': 'abc123'}.

jaeger_forecast_capacityтолько чтениеидемпотентныйвнешний мир

Прогнозирует будущие требования к пропускной способности и ресурсам для сервиса. Предоставляет прогнозы на ближайшие 7-30 дней с доверительными интервалами для принятия решений по масштабированию инфраструктуры. Args: service: Название сервиса, для которого нужно спрогнозировать ёмкость days_ahead: Количество дней для прогноза (по умолчанию: 30 дней) Returns: ForecastResult с прогнозами пропускной способности и требованиями к ресурсам

Параметры
  • days_aheadinteger

    Number of days to forecast ahead (1-90)

  • servicestringобязательный

    Service name to forecast capacity for

jaeger_get_dependenciesтолько чтениеидемпотентныйвнешний мир

Получает граф вызовов между сервисами из Jaeger. Оборачивает GET /api/dependencies. Возвращает направленные рёбра (родитель → потомок) с call_count — количество спанов, где родитель вызвал потомка за окно просмотра. Используйте это, чтобы понять топологию сервисов, найти сервисы с большим количеством исходящих вызовов (high fan-out) или проверить, что новый сервис подключён как ожидается. Примеры: - Используйте, когда: «Какие сервисы вызывает order-service?» → проверьте рёбра, где parent='order-service'. - Используйте, когда: «Построить полный граф зависимостей сервисов за последние 7 дней» → lookback_hours=168. - Используйте, когда: «Какие сервисы вызываются чаще всего?» → отсортируйте рёбра по call_count по убыванию. - Не используйте, когда: нужны детальные тайминги спанов (вместо этого используйте jaeger_search_traces + jaeger_get_trace). - Не используйте, когда: нужны данные в реальном времени — граф зависимостей Jaeger агрегирован и может отставать на несколько минут. Возвращает: dict с полями end_ts_us / lookback_hours / edge_count / edges (список {parent, child, call_count}).

Параметры
  • end_tsinteger | null

    End timestamp in microseconds since Unix epoch UTC (optional). Defaults to now. Example: 1713400000000000.

  • lookback_hoursinteger

    Number of hours to look back from end_ts (1-720, default 24).

jaeger_get_traceтолько чтениеидемпотентныйвнешний мир

Получает полную детализацию трассировки со всеми спанами, разбивкой по сервисам и деревом выполнения. Обёртка для GET /api/traces/{traceID}. Возвращает каждый спан в трассировке, статистику по каждому сервису и плоское дерево выполнения (каждый узел содержит идентификаторы дочерних спанов), которое обобщает иерархию вызовов. Спаны с ошибками определяются по tags["error"] = "true". Примеры: - Используй когда: «Почему трассировка abc123... тормозит — покажи разбивку по спанам» → trace_id='abc123...'; проверяй services на самый медленный сервис и execution_tree для иерархии вызовов. - Используй когда: «Какой сервис вызвал ошибку в трассировке xyz...?» → проверь spans, где is_error=true. - Используй когда: Вы нашли медленную или ошибочную трассировку в jaeger_search_traces и нужна полная детализация. - Не используй когда: У вас нет конкретного traceID — сначала примените jaeger_search_traces, чтобы его найти. - Не используй когда: Нужны только агрегированные данные по многим трассировкам (вместо этого используйте jaeger_search_traces с фильтрами). Возвращает: словарь с trace_id / span_count / service_count / root_operation / root_service / start_time_us / total_duration_us / errors_count / services (статистика по сервисам) / spans (все спаны) / execution_tree.

Параметры
  • trace_idstringобязательный

    Trace ID as a hex string (16 or 32 hex chars). Example: 'abcdef1234567890abcdef1234567890'. Obtain from jaeger_search_traces.

jaeger_list_operationsтолько чтениеидемпотентныйвнешний мир

Выводит все имена операций, которые Jaeger видел для заданного сервиса. Оборачивает GET /api/services/{service}/operations. Полезен для поиска имён операций, которые нужно передавать в качестве фильтров в jaeger_search_traces. Вывод ограничен 500 операциями. Примеры: - Используйте, когда: «Какие HTTP-эндпоинты order-service отслеживает в трейсинге?» → service='order-service'. - Используйте, когда: нужно найти конкретную медленную операцию, но точное имя неизвестно — сначала выведите список операций, затем передайте его в jaeger_search_traces. - Используйте, когда: аудит того, какие gRPC-методы отслеживает сервис. - Не используйте, когда: нет конкретного сервиса — сначала вызовите jaeger_list_services. - Не используйте, когда: нужно сразу искать трейсы (пропустите этот шаг, если имя операции уже известно). Возвращает: dict с ключами service / operations_count / truncated / operations (отсортированы по алфавиту).

Параметры
  • servicestringобязательный

    Service name exactly as returned by jaeger_list_services.

jaeger_list_servicesтолько чтениеидемпотентныйвнешний мир

Перечисляет все сервисы, для которых Jaeger наблюдал трассы. Обёртка над GET /api/services. Jaeger возвращает все сервисы сразу, без пагинации. Результат ограничен 500 сервисами с подсказкой об усечении. Сначала используйте его для обнаружения существующих имён сервисов перед вызовом jaeger_list_operations или jaeger_search_traces. Примеры: - Используйте, когда: "Какие сервисы знает Jaeger?" → вызовите без параметров; прочитайте список services. - Используйте, когда: "Инструментирован ли payment-service?" → проверьте, появляется ли payment-service в списке сервисов. - Используйте, когда: начинаете сессию отладки, сначала перечислите сервисы, затем выберите один для jaeger_list_operations или jaeger_search_traces. - Не используйте, когда: вы уже знаете имя сервиса и хотите найти его трассы (вызовите jaeger_search_traces напрямую). - Не используйте, когда: вам нужен граф зависимостей между сервисами (вызовите jaeger_get_dependencies). Возвращает: dict с ключами services_count / truncated / services.

Параметры

Без параметров.

jaeger_predict_degradationтолько чтениеидемпотентныйвнешний мир

Прогнозирует потенциальные события ухудшения производительности для сервиса. Анализирует исторические паттерны данных трассировки, тенденции критических путей и результаты обнаружения аномалий, чтобы прогнозировать вероятные проблемы с производительностью за 2-24 часа вперед. Аргументы: service: Имя сервиса для анализа на предмет возможного ухудшения производительности hours_back: Количество часов исторических данных для анализа (по умолчанию: 168 часов/1 неделя) Возвращает: PredictionResult с прогнозом ухудшения, уровнем уверенности и рекомендациями

Параметры
  • hours_backinteger

    Number of hours of historical data to analyze (1-720)

  • servicestringобязательный

    Service name to analyze for potential degradation

jaeger_regression_diffтолько чтениеидемпотентный

Сравнивает два временных окна Jaeger и классифицирует пооперационные регрессии.Извлекает трассы из базового и сравнительного окон, затем относит каждую операцию к категории регрессировавшей, восстановившейся, появившейся или удалённой. Результаты сортируются по оценке серьёзности (0–100) по убыванию для удобной приоритезации.

Параметры
  • baseline_endintegerобязательный

    Baseline window end time (Unix microseconds).

  • baseline_startintegerобязательный

    Baseline window start time (Unix microseconds).

  • comparison_endinteger | null

    Comparison window end time (Unix microseconds). Defaults to now.

  • comparison_startinteger | null

    Comparison window start time (Unix microseconds). Defaults to now minus 15 minutes.

  • limitinteger

    Maximum traces to fetch per window.

  • servicestringобязательный

    Jaeger service name to analyse for regressions.

jaeger_search_tracesтолько чтениеидемпотентныйвнешний мир

Ищет трейсы Jaeger с богатыми фильтрами. Обёртка над GET /api/traces. Возвращает список сводок по трейсам — используй jaeger_get_trace, чтобы углубиться в конкретный трейс и получить детали спанов. Параметр tags принимает JSON-строку, чтобы LLM могла строить произвольные фильтры по тегам. Длительности (min_duration/max_duration) передаются в Jaeger как есть (например '100ms', '1.5s'). Примеры: - Используй когда: «Покажи последние 500 ошибок в order-service» → service='order-service', tags='{"http.status_code":"500"}'. - Используй когда: «Найди медленные трейсы (>1с) для эндпоинта checkout» → service='checkout', operation='POST /checkout', min_duration='1s'. - Используй когда: «Выдай последние 5 трейсов за последний час» → limit=5, установи start = (сейчас - 3600с) в микросекундах. - Не используй когда: у тебя уже есть traceID и нужны полные детали (вызови jaeger_get_trace напрямую — одним круговым запросом меньше). - Не используй когда: нужна топология зависимостей сервисов (вызови jaeger_get_dependencies). Возвращает: dict с service / operation / returned / truncated / traces (список :class:TraceSummary).

Параметры
  • endinteger | null

    End time in microseconds since Unix epoch UTC (optional). If omitted and start is set, defaults to now.

  • limitinteger

    Maximum number of traces to return (1-1500, default 20).

  • max_durationstring | null

    Maximum trace duration filter (optional). Format: '100ms', '500ms'. Use to find fast traces or exclude outliers.

  • min_durationstring | null

    Minimum trace duration filter (optional). Format: '100ms', '1.5s', '2m'. Use to find slow traces.

  • operationstring | null

    Operation name filter (optional). Use jaeger_list_operations to discover valid names. Example: 'GET /api/orders' or 'grpc.health.v1.Health/Check'.

  • servicestringобязательный

    Service name to search traces for (required). Use jaeger_list_services to discover valid names.

  • startinteger | null

    Start time in microseconds since Unix epoch UTC (optional). Example: 1713400000000000 for 2024-04-18 00:00:00 UTC.

  • tagsstring | null

    JSON string of tag key-value pairs to filter by (optional). Example: '{"http.status_code":"500"}' to find 5xx errors, or '{"error":"true"}' for any error spans.

jaeger_span_statisticsтолько чтениеидемпотентныйвнешний мир

Вычисляет процентили задержки и частоту ошибок для каждой операции по последним трейсам. Получает до limit трейсов для указанного сервиса (опционально отфильтрованных по операции), затем агрегирует все спаны по имени операции. Для каждой операции сообщает: количество спанов, p50/p95/p99 длительность в микросекундах, количество ошибок и частоту ошибок. Длительность указывается в микросекундах (целое число). Частота ошибок — error_count / span_count (число с плавающей точкой, 0.0–1.0). Примеры: - Используйте когда: «Какие p95 задержки для каждой конечной точки в order-service?» → service='order-service'; проверьте p95_duration_us для каждой операции. - Используйте когда: «Как часто ошибается конечная точка POST /checkout?» → service='checkout-svc', operation='POST /checkout'; посмотрите error_rate в статистике. - Используйте когда: «Сравнить распределение задержек между операциями» → посмотрите разброс p50 и p99, чтобы найти операции с высокой вариативностью. - Используйте когда: «Получить большую выборку для более точной статистики» → limit=100 для более достоверных процентилей. - Не используйте когда: нужно сравнить два конкретных трейса (вместо этого используйте jaeger_compare_traces). - Не используйте когда: нужны полные детали спанов для одного трейса (вместо этого используйте jaeger_get_trace). Возвращает: словарь с полями service / operation / trace_count / stats (список статистики по каждой операции: count, p50/p95/p99 duration_us, error_count, error_rate).

Параметры
  • limitinteger

    Number of traces to fetch and analyze (1-100, default 20).

  • operationstring | null

    Operation name filter (optional). When set, only traces matching this operation are fetched. Use jaeger_list_operations to discover valid names.

  • servicestringобязательный

    Service name to compute statistics for (required). Use jaeger_list_services to discover valid names.

jaeger_test_profileтолько чтениеидемпотентный

Агрегирует точки задержки по каждой операции среди всех трейсов, соответствующих заданному запросу тегов. Операции сортируются по общему времени выполнения по убыванию, поэтому самые затратные отображаются первыми.

Параметры
  • limitinteger

    Maximum traces to aggregate.

  • lookback_hoursinteger

    Hours back from now to search.

  • servicestring | null

    Jaeger service name. If omitted, all services (up to 20) are searched concurrently.

  • tagsobjectобязательный

    Tag key-value pairs scoping the test run — e.g. {'test.run_id': 'abc123'} or {'allure.id': 'TC-42'}.

Похожие MCP-сервера

last9/last9-mcp-server

last9/last9-mcp-server

официальный

Last9 MCP-сервер подключает AI-агентов (Claude, Cursor, Windsurf) к вашим производственным данным observability — логам, метрикам, трейсам, алертам. Без установки бинарников, через OAuth. Полезен S...

Go60
rrmistry/tilt-mcp

rrmistry/tilt-mcp

Интегрирует Tilt с LLM-ассистентами (Claude, Copilot). Предоставляет доступ к ресурсам, логам и статусу сервисов, а также управляет сборкой и мониторингом. Идеально для разработчиков, автоматизирую...

Python6
context-rot-detection

context-rot-detection

MCP инструмент, дающий AI-агентам самосознание: измеряет деградацию когнитивного здоровья при заполнении контекста. Разработчики применяют его для выявления context rot и получения рекомендаций.

TypeScript13
alilxxey/openobserve-community-mcp

alilxxey/openobserve-community-mcp

MCP сервер для OpenObserve Community Edition в режиме read-only через stdio и REST API. Выполняет поиск логов, просмотр схем потоков и дашбордов. Интегрируется с Claude и Codex для анализа данных OpenObserve без права записи.

Python16
Sentry MCP

Sentry MCP

официальный

Официальный MCP-сервер Sentry для доступа к ошибкам, issues и трейсам приложения прямо из AI-агента. Отладка, анализ производительности и root-cause через Seer.

TypeScript846
shibley/apistatuscheck-mcp-server

shibley/apistatuscheck-mcp-server

MCP-сервер для проверки доступности 114+ облачных сервисов (AWS, GitHub, Stripe, OpenAI и других) в реальном времени. Полезен разработчикам и DevOps для быстрого мониторинга статуса API прямо из ас...

TypeScript1
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин