Fixed
- (deps) Update module github.com/giantswarm/mcp-oauth to v1.3.22 in #477 by @renovate[bot]
Full Changelog: https://github.com/giantswarm/klaus/compare/v0.1.9...v0.1.10
Full Changelog: https://github.com/giantswarm/klaus/compare/v0.1.9...v0.1.10
list_tools. A muster restart empties the index while the sessions’ tokens and cached capabilities persist, so every session that held on across a rollout got Tool execution failed: tool not found: x_prometheus_get_rules from call_tool for each family tool – with core_mcpserver_list reporting the member Connected – until it listed tools again; a session that signed in and called without ever listing hit the same. call_tool now fills the index from the session’s view, the pass list_tools runs, when the name lies in a declared family’s name space and the index does not know it, and the call goes through. When the name still cannot be routed, the error says so in terms of the family and the session: tool x_kubernetes_list_podz is not exposed under family "kubernetes" by any member this session is connected to (k8s-a), or, for a session connected to no member, which members exist and that core_auth_login connects one – instead of tool not found. Scenario: mcpserver-family-tool-call-without-listing.Full Changelog: https://github.com/giantswarm/klaus/compare/v0.1.8...v0.1.9
Full Changelog: https://github.com/giantswarm/muster/compare/v5.18.1...v5.18.2
Full Changelog: https://github.com/giantswarm/klaus/compare/v0.1.7...v0.1.8
Full Changelog: https://github.com/giantswarm/klausctl/compare/v0.4.4...v0.4.5
MusterMCPServerFailed and MusterMCPServerFlapping survive a muster rollout (#1203). Both expressions now aggregate over cluster_id, installation, pipeline, provider, namespace, mcpserver_namespace, mcpserver_name (max by for the state gauge, sum by for the transition counter) instead of carrying the scrape labels pod, instance, container, endpoint, service, job and otel_scope_name into the alert. Before, every rollout ended the old pod’s series – Alertmanager sent RESOLVED – and the new pod’s series started a fresh for window that fired again 20 minutes later: four rollouts in one day produced seven notifications for a single backend that never came back. The alert’s identity is now the MCPServer on a cluster; the for windows, labels and annotations are unchanged, and state is no longer an alert label (both rules only select Failed). The promtool suite covers the series moving from one pod to the next mid-window.oauth.server.allowPrivateIPRedirectURIs (Helm: muster.oauth.server.allowPrivateIPRedirectURIs): a client’s redirect URI may resolve to a private address. On a cluster whose own hostnames resolve to an internal load balancer the authorization-time check rejected every platform-hosted client’s callback with redirect_uri: hostname resolves to private IP address (DNS rebinding protection) – klaus-gateway’s Slack sign-in ended in server_error: Failed to start authorization flow right after allowPrivateIPClientMetadata had let the client through. Off by default; emits a startup warning when set; exact redirect-URI matching is unchanged. (#1201)oauth.server.allowPrivateIPClientMetadata (Helm: muster.oauth.server.allowPrivateIPClientMetadata): a CIMD client_id URL – the Client ID Metadata Document an OAuth client such as klaus-gateway self-hosts – may resolve to a private, loopback or link-local address. Needed where the platform’s own hostnames resolve to an internal load balancer (a management cluster reachable only over VPN): until now the SSRF guard rejected such a client with invalid_client: ... client_id metadata URL resolves to private/internal IP address and nothing in muster’s configuration could lift it, although mcp-oauth has had the switch (AllowPrivateIPClientMetadata). Off by default; emits a startup warning when set; PKCE and redirect-URI validation are unchanged. (#1199)Full Changelog: https://github.com/giantswarm/agent-platform/compare/v3.22.6...v3.22.7