← Explore all mcp servers

OBSERVABILITY / CNCF Jaeger Project

Jaeger Telemetry MCP Server

In-tree Jaeger query service MCP server exposing OpenTelemetry distributed tracing queries over Streamable HTTP and SSE.

“Jaeger telemetry MCP server providing distributed tracing inspection tools directly from jaeger-query.”

01 / THE REASONING

Why this made the selection.

  • Official CNCF OpenTelemetry tracing server exposing 9 dedicated read tools (search_traces, get_services, get_span_details, get_trace_errors, get_trace_topology, get_critical_path, get_dependencies) with zero write or mutation methods.
  • Mounts natively on jaeger-query's mux under /api/ai/mcp/ via Streamable HTTP without requiring an external proxy or container shim.
  • The pinned file is Jaeger's telemetry MCP adapter over an existing QueryService, served as streamable HTTP when a caller mounts the handler.
  • Search results are summaries, and the topology tool omits span attributes, events, and links.

02 / THE REVIEW RECORD

What we actually inspected.

Source review has boundaries.
A clear record is more useful than a “safe” badge.

Material inspected

  • cmd/jaeger/internal/extension/jaegerquery/internal/mcptools/server.go
  • cmd/jaeger/internal/extension/jaegerquery/internal/mcptools/mcptools-config.go
  • LICENSE
  • 2026-10-14 reread of retained pinned setup/configuration evidence for the specific operational details added in this batch.
  • cmd/jaeger/internal/extension/jaegerquery/internal/server.go
  • cmd/jaeger/internal/extension/jaegerquery/internal/mcptools/config.go

Our findings

  • Source files declare Copyright (c) 2026 The Jaeger Authors, SPDX-License-Identifier: Apache-2.0.
  • Tool handlers call in-process QueryService read methods directly and mount no file-write or mutating tools.
  • Additional query-server integration mounts MCP whenever ai.mcp is configured, independently of ai.agent_url. The shared handler owns sessions and a five-minute idle timeout; stopping a client is not an authentication boundary.
  • The tools wrap a QueryService and are exposed over streamable HTTP. NewHandler does not bind a listener; the caller mounts the handler.
  • search_traces returns lightweight summaries without individual spans or attributes. get_trace_topology does not include attributes, events, or links.
  • get_trace_errors may truncate to the server limit. read_skill serves embedded playbooks and is not a trace query.

Not established by this review

  • Server compilation and live trace query RPCs were not run.
  • Authentication bearer token forwarding was not tested.
  • No authenticated session, installation, permission bypass or package-to-source parity test was performed.
  • The server was not started and its tools were not called.
  • A pin does not verify transitive dependencies.

The review applies to the material and revision named here. A newer upstream release can change its behavior.

03 / PUT IT TO WORK

Connect a server deliberately.

Upstream setup instructions ↗
  1. Use a Jaeger build containing the reviewed query MCP integration and a configured trace store; no compatibility with the old 2.0.0 image is established here.
  2. Configure ai.mcp under the jaeger_query extension, then connect to the query-server base path plus /api/ai/mcp/.
  3. Protect the query endpoint and tenant identity, then begin with bounded trace search and progressively fetch details.

Before you start

  • Docker or a compiled Jaeger v2 binary
  • Active trace store containing OpenTelemetry span data

Documented configuration example

Use the client and authentication context described in the setup guidance. Configuration formats vary between hosts.

{
  "mcpServers": {
    "jaeger": {
      "type": "http",
      "url": "http://127.0.0.1:16686/api/ai/mcp/"
    }
  }
}

04 / FOLLOW THE EVIDENCE

The source trail.

Our notes are separate from the original resource.
Check upstream before adopting a new version.

  1. https://github.com/jaegertracing/jaeger/blob/2dbe46862ac14ecfb3b1ea9f511f3d9a83ac7b0d/cmd/jaeger/internal/extension/jaegerquery/internal/mcptools/server.go

    Supports: summary, transports, whySelected, bestFor, limitations, install, configExample, access, review, compatibility

  2. https://github.com/jaegertracing/jaeger/blob/2dbe46862ac14ecfb3b1ea9f511f3d9a83ac7b0d/LICENSE

    Supports: license

  3. https://github.com/jaegertracing/jaeger/blob/2dbe46862ac14ecfb3b1ea9f511f3d9a83ac7b0d/cmd/jaeger/internal/extension/jaegerquery/internal/server.go

    Supports: summary, install, configExample, access, limitations, bestFor, review, compatibility, transports

  4. https://github.com/jaegertracing/jaeger/blob/2dbe46862ac14ecfb3b1ea9f511f3d9a83ac7b0d/cmd/jaeger/internal/extension/jaegerquery/internal/mcptools/config.go

    Supports: summary, install, configExample, access, limitations, bestFor, review, compatibility, transports

  5. https://github.com/jaegertracing/jaeger/blob/2dbe46862ac14ecfb3b1ea9f511f3d9a83ac7b0d/cmd/jaeger/internal/extension/jaegerquery/internal/mcptools/server.go

    Supports: summary, transports, whySelected, bestFor, limitations

Evidence & Ask