@mcp-use/client 2.1.3 → 2.1.4-canary.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1525,7 +1525,7 @@ init_connector_telemetry();
1525
1525
  init_logging();
1526
1526
 
1527
1527
  // src/utils/version.ts
1528
- var VERSION = "2.1.3";
1528
+ var VERSION = "2.1.4-canary.1";
1529
1529
  function getPackageVersion() {
1530
1530
  return VERSION;
1531
1531
  }
@@ -1900,7 +1900,7 @@ var HttpConnector = class extends BaseConnector {
1900
1900
  };
1901
1901
 
1902
1902
  // src/utils/version.ts
1903
- var VERSION = "2.1.3";
1903
+ var VERSION = "2.1.4-canary.1";
1904
1904
  function getPackageVersion() {
1905
1905
  return VERSION;
1906
1906
  }
@@ -1971,6 +1971,11 @@ function resolveClientOptions(clientOptions) {
1971
1971
  };
1972
1972
  }
1973
1973
 
1974
+ // src/auth/browser.ts
1975
+ import {
1976
+ extractWWWAuthenticateParams
1977
+ } from "@modelcontextprotocol/client";
1978
+
1974
1979
  // src/auth/storage.ts
1975
1980
  var AUTH_CRYPTO_DATABASE = "mcp-use-oauth-crypto";
1976
1981
  var AUTH_CRYPTO_STORE = "keys";
@@ -2510,6 +2515,8 @@ var BrowserOAuthClientProvider = class {
2510
2515
  proxyOAuthRequests;
2511
2516
  lastAttemptedAuthUrl = null;
2512
2517
  authorizationPending = false;
2518
+ /** Latest protected-resource metadata URL advertised by an MCP 401. */
2519
+ challengedResourceMetadataUrl;
2513
2520
  /** Callback invoked immediately before an authorization popup opens. */
2514
2521
  onPopupWindow;
2515
2522
  constructor(serverUrl, options = {}) {
@@ -2617,6 +2624,13 @@ var BrowserOAuthClientProvider = class {
2617
2624
  return url;
2618
2625
  }
2619
2626
  }
2627
+ rememberResourceMetadataChallenge(response) {
2628
+ if (response.status !== 401) return false;
2629
+ const { resourceMetadataUrl } = extractWWWAuthenticateParams(response);
2630
+ if (!resourceMetadataUrl) return false;
2631
+ this.challengedResourceMetadataUrl = resourceMetadataUrl.toString();
2632
+ return true;
2633
+ }
2620
2634
  /**
2621
2635
  * Returns a `fetch` function, scoped to this provider, that routes OAuth
2622
2636
  * metadata and non-browser OAuth endpoint requests through the configured
@@ -2655,10 +2669,12 @@ var BrowserOAuthClientProvider = class {
2655
2669
  }
2656
2670
  const isMetadata = pathname.includes("/.well-known/");
2657
2671
  if (!oauthProxyUrl) {
2658
- return await base(
2672
+ const response2 = await base(
2659
2673
  isMetadata ? url : input,
2660
2674
  isMetadata ? { ...init, cache: "no-store" } : init
2661
2675
  );
2676
+ if (!isMetadata) this.rememberResourceMetadataChallenge(response2);
2677
+ return response2;
2662
2678
  }
2663
2679
  if (!restoredDiscovery) {
2664
2680
  restoredDiscovery = true;
@@ -2678,7 +2694,11 @@ var BrowserOAuthClientProvider = class {
2678
2694
  pathname
2679
2695
  );
2680
2696
  if (!isMetadata && !isProxiedEndpoint) {
2681
- return await base(input, init);
2697
+ const response2 = await base(input, init);
2698
+ if (this.rememberResourceMetadataChallenge(response2)) {
2699
+ discoveredEndpoints.clear();
2700
+ }
2701
+ return response2;
2682
2702
  }
2683
2703
  try {
2684
2704
  const urlObj = new URL(url);
@@ -2815,8 +2835,15 @@ var BrowserOAuthClientProvider = class {
2815
2835
  return this.session.saveDiscoveryState(state);
2816
2836
  }
2817
2837
  /** Return previously saved OAuth discovery state, or `undefined`. */
2818
- discoveryState() {
2819
- return this.session.discoveryState();
2838
+ async discoveryState() {
2839
+ const state = await this.session.discoveryState();
2840
+ const challengedUrl = this.challengedResourceMetadataUrl;
2841
+ this.challengedResourceMetadataUrl = void 0;
2842
+ if (challengedUrl && state) {
2843
+ await this.session.invalidateCredentials("discovery");
2844
+ return void 0;
2845
+ }
2846
+ return state;
2820
2847
  }
2821
2848
  /**
2822
2849
  * Return the token endpoint from the SDK's persisted discovery state.