• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive / 21887058846

10 Feb 2026 11:54PM UTC coverage: 61.541% (-0.04%) from 61.577%
21887058846

push

github

web-flow
Add `mcp.protocol.version`, client operation duration, span target naming, and client span kind (#3757)

* Fix SSE gauge leak, config bool handling, and metric error logging

- Fix SSE active connections gauge that was incremented but never
  decremented. Move increment into Handler with a defer decrement so
  the gauge correctly tracks SSE connection lifecycle.

- Fix config file `use-legacy-attributes: false` being silently ignored.
  Change UseLegacyAttributes from bool to *bool in app config so nil
  (not set) is distinguishable from explicit false. Add two test cases
  covering both scenarios.

- Log metric creation errors at debug level instead of silently
  discarding them. The OTEL SDK returns no-op instruments on error so
  there is no runtime risk, but logging aids troubleshooting.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add mcp.protocol.version, client operation duration, span target naming, and client span kind

- Add mcp.protocol.version span attribute by reading the
  MCP-Protocol-Version header from streamable HTTP requests.

- Add mcp.client.operation.duration histogram metric to vMCP backend
  client using the OTEL MCP semconv bucket boundaries, alongside the
  existing toolhive_vmcp_backend_requests_duration custom metric.

- Include target name in span names per OTEL MCP semconv. Span names
  now follow the "{method} {target}" format, e.g. "tools/call
  github_search" instead of just "tools/call".

- Set SpanKindClient on vMCP backend call spans for proper distributed
  trace linking.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

21 of 23 new or added lines in 2 files covered. (91.3%)

32 existing lines in 6 files now uncovered.

42748 of 69463 relevant lines covered (61.54%)

77.92 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

79.58
/pkg/transport/proxy/httpsse/http_proxy.go


Source Not Available

STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc