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

stacklok / toolhive / 24363956980
66%

Build:
DEFAULT BRANCH: main
Ran 13 Apr 2026 08:04PM UTC
Jobs 1
Files 617
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

13 Apr 2026 07:59PM UTC coverage: 65.567% (-0.007%) from 65.574%
24363956980

push

github

web-flow
Support stateless streamable-HTTP remote servers (#4515)

* Support stateless streamable-HTTP remote servers

Remote MCP servers implementing the streamable-HTTP transport in
stateless mode (POST-only, no SSE) show zero tools when proxied by
ToolHive. The transparent proxy forwards all HTTP methods including
GET; stateless servers don't serve SSE on GET, so clients never
complete tool discovery.

Add a --stateless flag to thv run that gates GET, HEAD, and DELETE
requests at the proxy with 405, and switches the health check to a
POST-based JSON-RPC ping appropriate for servers without an SSE
endpoint.

Fixes #4514

Signed-off-by: Greg Katz <gkatz@indeed.com>

* Add --stateless flag to generated docs

Regenerate CLI and Swagger docs to include the new --stateless
flag added to the run command.

Signed-off-by: Greg Katz <gkatz@indeed.com>

* Apply stateless mode to all transports

Move stateless configuration outside the remote-URL guard so
--stateless works for both remote URLs and local container
workloads. Add Allow header to 405 responses per RFC 9110.
Update comments and flag text to remove remote-only language.

Signed-off-by: Greg Katz <gkatz@indeed.com>

* Add E2E test for stateless proxy mode

Verify that --stateless makes the proxy reject GET and DELETE
with 405 and forward POST to the upstream MCP server. Uses an
in-process mock server to avoid external dependencies.

Signed-off-by: Greg Katz <gkatz@indeed.com>

---------

Signed-off-by: Greg Katz <gkatz@indeed.com>

68 of 98 new or added lines in 6 files covered. (69.39%)

14 existing lines in 3 files now uncovered.

56854 of 86711 relevant lines covered (65.57%)

62.06 hits per line

Uncovered Changes

Lines Coverage ∆ File
7
55.49
-0.03% pkg/transport/http.go
7
84.51
-0.52% pkg/transport/proxy/transparent/transparent_proxy.go
6
37.34
-0.36% pkg/runner/runner.go
5
76.62
-0.48% pkg/runner/config_builder.go
4
86.02
5.17% pkg/transport/proxy/transparent/pinger.go
1
31.98
0.22% cmd/thv/app/run_flags.go

Coverage Regressions

Lines Coverage ∆ File
6
72.35
-1.29% pkg/runner/config.go
6
76.15
-5.5% pkg/secrets/keyring/keyctl_linux.go
2
82.29
-0.21% pkg/vmcp/composer/workflow_engine.go
Jobs
ID Job ID Ran Files Coverage
1 24363956980.1 13 Apr 2026 08:04PM UTC 617
65.57
GitHub Action Run
Source Files on build 24363956980
  • Tree
  • List 617
  • Changed 11
  • Source Changed 8
  • Coverage Changed 11
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #24363956980
  • 052ecdd1 on github
  • Prev Build on main (#24358329275)
  • Next Build on main (#24386621144)
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