Skip to content

v0.53.0

Choose a tag to compare

@toolhive-release-app toolhive-release-app released this 13 Oct 19:32
· 27 commits to main since this release
fa7e344

馃殌 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.permissionProfile is deprecated and the Kubernetes operator now ignores it. The field still exists in the v1beta1 CRD so existing manifests keep applying, but it never restricted pods in Kubernetes. Use podTemplateSpec security contexts and NetworkPolicy resources instead. MCPServers that set the field get a PermissionProfileUnsupported Warning 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.permissionProfile to the runner as a profile name or file path. Before, a crafted value could make the operator read arbitrary local files. The configmap profile volume is no longer mounted, and thv export --format k8s no 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=False with a message naming the failing handler and an up-to-date observedGeneration. Before, it could show Phase: Failed while still reporting a stale Ready=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 type is 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

New Contributors

Full Changelog: v0.52.0...v0.53.0

馃敆 Full changelog: v0.52.0...v0.53.0