Repository navigation
v0.53.0
·
27 commits
to main
since this release
馃殌 Toolhive v0.53.0 is live!
This release adds group-based upstream selection to the vMCP embedded auth server, and stops the operator from acting on spec.permissionProfile as a security fix. It also makes vMCP keep a backend's valid tools when one of its items can't be decoded, and makes MCPRemoteProxy report config failures correctly.
馃攧 Deprecations
MCPServer.spec.permissionProfileis deprecated and the Kubernetes operator now ignores it. The field still exists in thev1beta1CRD so existing manifests keep applying, but it never restricted pods in Kubernetes. UsepodTemplateSpecsecurity contexts andNetworkPolicyresources instead. MCPServers that set the field get aPermissionProfileUnsupportedWarning event. No removal version has been announced yet. (security fix, commit d5aa374)
馃啎 New Features
- vMCP operators using the embedded auth server can set an upstream filter in
authserver-config.yaml. It picks which extra upstream providers each user goes through, based on group claims from the first upstream, so users skip OAuth legs for services they have no account on. The feature is opt-in and fails closed when the group claim is missing. CRD support follows in #6740. (#6739)
馃悰 Bug Fixes
- The operator no longer passes
spec.permissionProfileto the runner as a profile name or file path. Before, a crafted value could make the operator read arbitrary local files. Theconfigmapprofile volume is no longer mounted, andthv export --format k8sno longer emits the field. MCPServers that set the field may roll their proxy pods once after upgrading. (d5aa374) - When a referenced config fails to resolve, MCPRemoteProxy now reports
Ready=Falsewith a message naming the failing handler and an up-to-dateobservedGeneration. Before, it could showPhase: Failedwhile still reporting a staleReady=True. (#6776) - vMCP now skips individual
tools/list,resources/list, resource-template and prompt items it cannot decode, and logs a warning naming the backend and the item. Before, one bad item hid all of that backend's capabilities. This applies to the Modern list path only; the Legacy path is tracked in #6814. (#6772) - Tools whose top-level schema
typeis a JSON Schema type array (for example["object","null"]) are now kept, with the schema passed through unchanged, because toolhive-core is bumped to v0.0.52. (#6815)
馃摝 Dependencies
| Module | Version |
|---|---|
github.com/stacklok/toolhive-core |
v0.0.52 |
ghcr.io/modelcontextprotocol/inspector (default thv inspector image) |
2.10.1 |
github.com/go-chi/chi/v5 |
v5.4.0 |
github.com/aws/aws-sdk-go-v2 |
v1.47.3 |
github.com/aws/aws-sdk-go-v2/config |
v1.33.9 |
github.com/aws/aws-sdk-go-v2/service/sts |
v1.51.4 |
github.com/pressly/goose/v3 |
v3.29.0 |
github.com/prometheus/common |
v0.72.1 |
github.com/onsi/ginkgo/v2 |
v2.33.1 |
github.com/alicebob/miniredis/v2 |
v2.40.0 |
golang.org/x/crypto |
v0.58.0 |
golang.org/x/mod |
v0.42.0 |
golang.org/x/net |
v0.61.0 |
golang.org/x/sync |
v0.24.0 |
golang.org/x/sys |
v0.49.0 |
golang.org/x/term |
v0.47.0 |
golang.org/x/exp/jsonrpc2 |
faecfb2 |
oras.land/oras-go/v2 |
v2.6.3 |
python (e2e test image) |
3.15-slim |
GitHub Actions (create-github-app-token, download-artifact, setup-node, upload-artifact, claude-code-action, codeql-action, goreleaser-action, kind-action) |
latest patch/minor |
馃憢 Welcome to our newest contributor: @feiiiiii5 馃帀
Full commit log
What's Changed
- Update github actions by @renovate[bot] in #6775
- Add group-based upstream filter for vMCP auth by @hellouz818 in #6739
- Update docker images by @renovate[bot] in #6778
- Update golang.org/x/exp/jsonrpc2 digest to faecfb2 by @renovate[bot] in #6774
- Record config-handler failures on the MCPRemoteProxy status by @feiiiiii5 in #6776
- Update go modules by @renovate[bot] in #6777
- Skip undecodable items in Modern list responses by @reyortiz3 in #6772
- Bump toolhive-core to v0.0.52 by @reyortiz3 in #6815
- Release v0.53.0 by @toolhive-release-app[bot] in #6817
New Contributors
- @feiiiiii5 made their first contribution in #6776
Full Changelog: v0.52.0...v0.53.0
馃敆 Full changelog: v0.52.0...v0.53.0