Changelog
Version history for opentel-mcp, current version v0.4.0, sourced from the project's real commit history and CHANGELOG.md — not reconstructed from memory.
v0.4.0Deep Failure FingerprintingJuly 24, 2026
- Adds
computeFingerprint()— a stable, 16-hex-character identity (SHA-256, truncated) for every thrown error and every tool-level failure (isError: true), so repeated occurrences of the same underlying bug group under one fingerprint. See Deep Failure Fingerprinting. - Five new
mcp.failure.*span attributes: fingerprint, signature, category (8 values), origin, and error class. METRIC_SAFE_ATTRIBUTES— a frozen array structurally limiting which fingerprint-derived values can reach a metric label tocategoryandorigin(24 combinations maximum), so nothing unbounded can leak into a metrics backend.fingerprintingoption (defaulttrue) oninstrumentMcpServer().computeFingerprint,toSpanAttributes,ATTRIBUTE_KEYS,METRIC_SAFE_ATTRIBUTES, andDEFAULT_CLASSIFIERSre-exported from the package root.
Known type-declaration gap in v0.4.0
Thefingerprinting option is implemented and defaults to true in src/config.js and src/instrument.js, but isn't listed in the InstrumentOptions TypeScript interface in src/index.d.ts as of this version. It works at runtime; TypeScript consumers may see a type error passing { fingerprinting: false } anyway. Fixed in v0.5.0. See API Reference.v0.3.0MetricsJuly 20, 2026
- Four
mcp.tool.*OpenTelemetry metrics instruments via@opentelemetry/api's Metrics API — no bundled SDK or exporter, same host-app-provides-the-SDK pattern tracing already used:mcp.tool.calls(counter, every call),mcp.tool.errors(counter, thrown/rejected handlers),mcp.tool.silent_failures(counter,isError: true), andmcp.tool.duration(histogram, ms). See Metrics. mcp.tool.silent_failuresfires from the sameisErrorcheck that marks the spanERROR— extracted into one sharedisToolResultError()helper so the detection logic isn't duplicated between traces and metrics.enableMetricsoption (defaulttrue) to opt out of metric emission without affecting tracing.- Metrics are a zero-overhead no-op until the host application registers a
MeterProvider— default@opentelemetry/apibehavior, not special-cased. - README: new Metrics section with an instrument table and a SigNoz OTLP/HTTP wiring example.
v0.2.0TypeScript declarations and semantic-convention alignmentJuly 13, 2026
- Hand-written TypeScript declarations (.d.ts) so TypeScript consumers get accurate types without a build step.
- Span attributes realigned to the MCP semantic conventions:
mcp.tool.namerenamed togen_ai.tool.name,mcp.request.idrenamed tojsonrpc.request.id,mcp.tool.error.typerenamed toerror.type, and span name changed to{mcp.method.name} {tool}, kindSERVER. - Fix:
serviceNameis no longer required whensetupNodeSdkisfalse. - Build: workspace entries stripped from the published package.json manifest.
- Docs: ESM-only requirement noted in the install section; ADR 004 documents the semantic-conventions alignment.
v0.1.0Initial releaseJuly 9, 2026
instrumentMcpServer()— supports both the low-levelServerand high-levelMcpServerAPIs from@modelcontextprotocol/sdk.- One OpenTelemetry span per tool invocation, marked
ERRORon a thrown exception or onCallToolResult.isError: true— the silent-failure detection this package exists for from the first release. See Silent Failures. - Respects an existing global
TracerProvider; optional zero-configsetupNodeSdkdev mode, exporting to stderr so stdio-transport JSON-RPC isn't corrupted. - Privacy by design: argument counts captured, never argument values.
- Cross-platform (Windows/macOS/Linux), pure JavaScript, zero native dependencies.
- 25 tests, 3 ADRs, 2 working examples at initial release.
Where do I go from here?
- Deep Failure Fingerprinting — the full v0.4.0 feature.
- API Reference — current exported surface.