Skip to content

v1.0.2 — MCP OAuth token refresh fixes + discovered tools panel

Choose a tag to compare

@lqdflying lqdflying released this 16 May 05:28
· 829 commits to main since this release

Highlights

  • MCP OAuth token refresh: Fixed an end-to-end bug where listTools, listResources, listPrompts, and manifest fetch silently lost OAuth refresh capability, causing tools to "disappear" after token expiry. All routes now construct and pass oauthContext to the service layer for proactive refresh and 401 retry.
  • Stale client caching: Non-refreshable OAuth clients cached by earlier calls are evicted when a later call provides oauthContext, preventing permanent cache poisoning.
  • Discover MCP tools in Settings: The MCP Management detail pane now performs live tool discovery when you click an installed MCP plugin. Shows expandable tool cards with name, description, and input schema parameters. Supports both HTTP and stdio (desktop) MCP servers.

Bug Fixes

  • OAuth token status now distinguishes expired_refreshable from expired so the UI can tell which tokens can be silently refreshed.
  • listResources() and listPrompts() client methods now retry on 401 with token refresh (was only listTools).
  • Failed OAuth refresh no longer silently returns [] — surfaces the auth error instead.
  • NoValidSessionId retry preserves oauthContext so the retried client retains refresh capability.
  • Stdio MCP discovery in settings forwards saved environment variables (env) to the desktop client.
  • Rapid MCP selection in settings guards against stale async responses.

Style

  • MCP OAuth status tag uses localized labels instead of raw enum values (e.g., "Expired, can refresh" instead of "expired_refreshable").
  • Settings detail header: icon, title, Edit Now and Uninstall rendered in one horizontal row.

Full diff: v1.0.1...v1.0.2