Threaded chat, claim-based authorization, and MCP tool rate limiting
This week brings a major Playground upgrade in the ToolHive Desktop UI with threaded chat and MCP Apps, claim-based authorization across the Registry Server for fine-grained access control, and per-user, per-tool call rate limiting for MCPServers in Kubernetes.
ToolHive Desktop UI: Playground upgrade and skills management
The ToolHive Desktop UI v0.28.1 ships a redesigned Playground experience and new skills tooling:
- Threaded chat in the Playground supports multiple chat threads with a sidebar, similar to the experience in Claude Desktop or ChatGPT. You can star, rename, and delete threads, and titles are auto-generated by the active model after the first response. Scroll position is persisted per thread so you don't lose your place when switching around.
- MCP Apps render interactive HTML views directly inside the chat for MCP
tools that declare a UI resource. The app runs in a sandboxed iframe with
server-declared CSP, supporting both inline and fullscreen display modes. This
implements the
mcp-apps/2026-01-26draft MCP specification for interactive UI resources.
Under the hood, this release bundles ToolHive v0.16.0, fixes CLI setup writing
to both .bashrc and .bash_profile on Linux, and patches Hono CVEs
(CVE-2026-39406 through CVE-2026-39410).
Registry Server: Claim-based authorization and access control
The Registry Server introduces identity-aware access control across all endpoints and improves operational reliability:
- Claim-based authorization gates all read, write, and admin operations by JWT claims. You only see and manage the resources your identity grants access to — unauthorized resources are hidden entirely rather than returning permission errors.
- Per-entry access control for Kubernetes sources lets individual MCP server and skill entries carry their own authorization claims, enabling per-user or per-team visibility without needing a separate source per team.
- Immutable entry visibility ensures that once an entry is published with a specific set of claims, subsequent versions must use identical claims, preventing accidental changes to who can see a resource.
- Caller identity endpoint exposes a new
/meendpoint that returns your authenticated identity and roles, following the same pattern used by GitHub, Microsoft Graph, and Slack. Useful for frontends to display user context and derive permissions. - Source and registry entry browsing lets admins list all entries within a specific source or registry, making it easier to audit what's being served.
- Skills sync from external sources picks up and serves skills alongside servers from upstream data sources. Previously, skills were silently ignored during sync (publishing still worked).
Additional fixes include immediate re-sync when filter configuration changes (rather than waiting for the next upstream data change) and corrected pagination for list endpoints that previously returned incomplete pages when access control filtering removed rows.
Rate limiting for MCP tool calls
MCPServers in Kubernetes now support
per-user, per-tool call rate limiting to
protect backend services from resource exhaustion, prevent performance
degradation under heavy load, and mitigate data exfiltration risks. Configure
shared limits that cap total requests across all users, per-user limits that
give each authenticated user an independent bucket, or combine both. Only
tools/call requests are rate-limited — lifecycle and discovery methods pass
through. When a request exceeds the limit, the proxy responds with HTTP 429 and
a Retry-After header. Rate limiting requires Redis for counter storage and
fails open if Redis is unreachable.
Virtual MCP Server: Embedded authorization server
vMCP now includes an embedded authorization server that operates as a full OAuth authorization server integrated within the vMCP process. It handles user authentication through upstream identity providers like GitHub, Google, or Okta, stores their tokens, and issues JWTs for subsequent vMCP requests. The server supports OAuth 2.0 Dynamic Client Registration (RFC 7591) so MCP clients can self-register without manual configuration, and offers two outgoing authentication strategies: forwarding stored upstream tokens directly, or exchanging them at a different identity provider for backend-specific credentials.
Getting started
For detailed release notes, check the project repositories:
- ToolHive Runtimes (CLI and Kubernetes Operator)
- ToolHive Desktop UI
- ToolHive Cloud UI
- ToolHive Registry Server
You can find all ToolHive documentation on the Stacklok documentation site.