Heimdall — MCP proxy that exports AI agent tool calls as OTel spans to Jaeger (OTLP) #8613
enmanuelmag
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hi Jaeger community,
Sharing a project I built that might be interesting to folks here: Heimdall, an OpenTelemetry proxy for the MCP protocol (used by AI assistants like Claude Desktop to call external tools).
MCP agents are opaque. When Claude calls a filesystem tool, a GitHub API, or a database server, there's no structured trace of what happened, just unstructured logs at best.
Heimdall sit transparently between the MCP client and any MCP server, intercept every JSON-RPC message, and emit a proper OTel span for each tool call.
Jaeger integration:
Since Jaeger supports OTLP natively (gRPC on
:4317, HTTP on:4318), you can point Heimdall directly at it:Each tool call becomes a span with:
service.name/service.version/service.namespacevia@opentelemetry/semantic-conventionsBIGINTSpanKind(2 = CLIENT) andSpanStatusCodevaluesThe result is a standard Jaeger trace showing every agent action — searchable, timing-annotated, and correlatable with backend service spans if you propagate context.
NEW: Config Policies
Beyond tracing, the latest release adds per-server
allow/denyrules so you can restrict what tools an agent is allowed to call. Think of it as a policy layer on top of the observability layer.Docs: https://stack.cardor.dev/heimdall
Repo: https://github.com/enmanuelmag/heimdall-mcp
Happy to hear thoughts on the span schema or Jaeger compatibility — especially from anyone running large-scale OTLP pipelines!
Beta Was this translation helpful? Give feedback.
All reactions