@mcp-ts/sdk 2.3.2 → 2.3.4

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.
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-DYNe6az3.mjs';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-C7hGqzgM.mjs';
2
2
  import { d as ToolRouter } from '../tool-router-BhHsvBfP.mjs';
3
3
  import '../events-CK3N--3g.mjs';
4
4
  import '@modelcontextprotocol/sdk/types.js';
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-BYtguGJm.js';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-C_kPHpD5.js';
2
2
  import { d as ToolRouter } from '../tool-router-BMzhoNYt.js';
3
3
  import '../events-CK3N--3g.js';
4
4
  import '@modelcontextprotocol/sdk/types.js';
@@ -2,7 +2,7 @@ import { Observable } from 'rxjs';
2
2
  import { Middleware, RunAgentInput, AbstractAgent, BaseEvent } from '@ag-ui/client';
3
3
  export { AbstractAgent, BaseEvent, EventType, Middleware, RunAgentInput, Tool, ToolCallEndEvent } from '@ag-ui/client';
4
4
  import { AguiTool } from './agui-adapter.mjs';
5
- import '../multi-session-client-DYNe6az3.mjs';
5
+ import '../multi-session-client-C7hGqzgM.mjs';
6
6
  import '../events-CK3N--3g.mjs';
7
7
  import '@modelcontextprotocol/sdk/types.js';
8
8
  import '@modelcontextprotocol/sdk/client/auth.js';
@@ -2,7 +2,7 @@ import { Observable } from 'rxjs';
2
2
  import { Middleware, RunAgentInput, AbstractAgent, BaseEvent } from '@ag-ui/client';
3
3
  export { AbstractAgent, BaseEvent, EventType, Middleware, RunAgentInput, Tool, ToolCallEndEvent } from '@ag-ui/client';
4
4
  import { AguiTool } from './agui-adapter.js';
5
- import '../multi-session-client-BYtguGJm.js';
5
+ import '../multi-session-client-C_kPHpD5.js';
6
6
  import '../events-CK3N--3g.js';
7
7
  import '@modelcontextprotocol/sdk/types.js';
8
8
  import '@modelcontextprotocol/sdk/client/auth.js';
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-DYNe6az3.mjs';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-C7hGqzgM.mjs';
2
2
  import { ToolSet } from 'ai';
3
3
  import { d as ToolRouter } from '../tool-router-BhHsvBfP.mjs';
4
4
  import '../events-CK3N--3g.mjs';
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-BYtguGJm.js';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-C_kPHpD5.js';
2
2
  import { ToolSet } from 'ai';
3
3
  import { d as ToolRouter } from '../tool-router-BMzhoNYt.js';
4
4
  import '../events-CK3N--3g.js';
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-DYNe6az3.mjs';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-C7hGqzgM.mjs';
2
2
  import { StructuredTool } from '@langchain/core/tools';
3
3
  import { d as ToolRouter } from '../tool-router-BhHsvBfP.mjs';
4
4
  import '../events-CK3N--3g.mjs';
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-BYtguGJm.js';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-C_kPHpD5.js';
2
2
  import { StructuredTool } from '@langchain/core/tools';
3
3
  import { d as ToolRouter } from '../tool-router-BMzhoNYt.js';
4
4
  import '../events-CK3N--3g.js';
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-DYNe6az3.mjs';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-C7hGqzgM.mjs';
2
2
  import { z } from 'zod';
3
3
  import '../events-CK3N--3g.mjs';
4
4
  import '@modelcontextprotocol/sdk/types.js';
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-BYtguGJm.js';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-C_kPHpD5.js';
2
2
  import { z } from 'zod';
3
3
  import '../events-CK3N--3g.js';
4
4
  import '@modelcontextprotocol/sdk/types.js';
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- export { M as MCPClient, a as MultiSessionClient, S as StorageOAuthClientProvider } from './multi-session-client-DYNe6az3.mjs';
1
+ export { M as MCPClient, a as MultiSessionClient, S as StorageOAuthClientProvider } from './multi-session-client-C7hGqzgM.mjs';
2
2
  export { A as AuthenticationError, C as ConfigurationError, a as ConnectionError, I as InvalidStateError, M as McpError, N as NotConnectedError, R as RpcErrorCode, b as RpcErrorCodes, S as SessionNotFoundError, c as SessionValidationError, T as ToolExecutionError, U as UnauthorizedError, s as sanitizeServerLabel } from './utils-DELRKQPU.mjs';
3
3
  export { ClientMetadata, NextMcpHandlerOptions, SSEConnectionManager, SSEHandlerOptions, Session, SessionMutationEvent, SessionMutationListener, SessionMutationType, SessionStore, createNextMcpHandler, createSSEHandler, onSessionMutation, sessions } from './server/index.mjs';
4
4
  export { D as Disposable, a as DisposableStore, E as Emitter, b as Event, M as McpConnectionEvent, c as McpConnectionState, d as McpObservabilityEvent } from './events-CK3N--3g.mjs';
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { M as MCPClient, a as MultiSessionClient, S as StorageOAuthClientProvider } from './multi-session-client-BYtguGJm.js';
1
+ export { M as MCPClient, a as MultiSessionClient, S as StorageOAuthClientProvider } from './multi-session-client-C_kPHpD5.js';
2
2
  export { A as AuthenticationError, C as ConfigurationError, a as ConnectionError, I as InvalidStateError, M as McpError, N as NotConnectedError, R as RpcErrorCode, b as RpcErrorCodes, S as SessionNotFoundError, c as SessionValidationError, T as ToolExecutionError, U as UnauthorizedError, s as sanitizeServerLabel } from './utils-DELRKQPU.js';
3
3
  export { ClientMetadata, NextMcpHandlerOptions, SSEConnectionManager, SSEHandlerOptions, Session, SessionMutationEvent, SessionMutationListener, SessionMutationType, SessionStore, createNextMcpHandler, createSSEHandler, onSessionMutation, sessions } from './server/index.js';
4
4
  export { D as Disposable, a as DisposableStore, E as Emitter, b as Event, M as McpConnectionEvent, c as McpConnectionState, d as McpObservabilityEvent } from './events-CK3N--3g.js';
package/dist/index.js CHANGED
@@ -926,7 +926,7 @@ var SupabaseStorageBackend = class {
926
926
  if ("active" in data) updateData.active = data.active;
927
927
  if ("headers" in data) updateData.headers = encryptObject(data.headers);
928
928
  if ("clientInformation" in data) updateData.client_information = data.clientInformation;
929
- if ("tokens" in data) updateData.tokens = encryptObject(data.tokens);
929
+ if ("tokens" in data) updateData.tokens = data.tokens === void 0 ? null : encryptObject(data.tokens);
930
930
  if ("codeVerifier" in data) updateData.code_verifier = data.codeVerifier;
931
931
  if ("clientId" in data) updateData.client_id = data.clientId;
932
932
  const { data: updatedRows, error } = await this.supabase.from("mcp_sessions").update(updateData).eq("user_id", userId).eq("session_id", sessionId).select("id");
@@ -1129,7 +1129,7 @@ var NeonStorageBackend = class {
1129
1129
  updatedSession.active ?? false,
1130
1130
  encryptObject(updatedSession.headers),
1131
1131
  updatedSession.clientInformation,
1132
- encryptObject(updatedSession.tokens),
1132
+ updatedSession.tokens === void 0 ? null : encryptObject(updatedSession.tokens),
1133
1133
  updatedSession.codeVerifier,
1134
1134
  updatedSession.clientId,
1135
1135
  expiresAt,
@@ -1783,7 +1783,7 @@ var RpcErrorCodes = {
1783
1783
  };
1784
1784
 
1785
1785
  // src/server/mcp/oauth-client.ts
1786
- var MCPClient = class _MCPClient {
1786
+ var MCPClient = class {
1787
1787
  /**
1788
1788
  * Creates a new MCP client instance
1789
1789
  * Can be initialized with minimal options (userId + sessionId) for session restoration
@@ -2117,8 +2117,6 @@ var MCPClient = class _MCPClient {
2117
2117
  throw new Error(error);
2118
2118
  }
2119
2119
  try {
2120
- this.emitProgress("Validating OAuth tokens...");
2121
- await this.getValidTokens();
2122
2120
  this.emitStateChange("CONNECTING");
2123
2121
  const { transportType } = await this.tryConnect();
2124
2122
  this.transportType = transportType;
@@ -2443,59 +2441,6 @@ var MCPClient = class _MCPClient {
2443
2441
  };
2444
2442
  return await this.client.request(request, types_js.ReadResourceResultSchema);
2445
2443
  }
2446
- /**
2447
- * Refreshes the OAuth access token using the refresh token
2448
- * Discovers OAuth metadata from server and exchanges refresh token for new access token
2449
- * @returns True if refresh was successful, false otherwise
2450
- */
2451
- async refreshToken() {
2452
- await this.initialize();
2453
- if (!this.oauthProvider) {
2454
- return false;
2455
- }
2456
- const tokens = await this.oauthProvider.tokens();
2457
- if (!tokens || !tokens.refresh_token) {
2458
- return false;
2459
- }
2460
- const clientInformation = await this.oauthProvider.clientInformation();
2461
- if (!clientInformation) {
2462
- return false;
2463
- }
2464
- try {
2465
- const resourceMetadata = await auth_js.discoverOAuthProtectedResourceMetadata(this.serverUrl);
2466
- const authServerUrl = resourceMetadata?.authorization_servers?.[0] || this.serverUrl;
2467
- const authMetadata = await auth_js.discoverAuthorizationServerMetadata(authServerUrl);
2468
- const newTokens = await auth_js.refreshAuthorization(authServerUrl, {
2469
- metadata: authMetadata,
2470
- clientInformation,
2471
- refreshToken: tokens.refresh_token
2472
- });
2473
- await this.oauthProvider.saveTokens(newTokens);
2474
- return true;
2475
- } catch (error) {
2476
- console.error("[OAuth] Token refresh failed:", error);
2477
- return false;
2478
- }
2479
- }
2480
- /**
2481
- * Ensures OAuth tokens are valid, refreshing them if expired
2482
- * Called automatically by connect() - rarely needs to be called manually
2483
- * @returns True if valid tokens are available, false otherwise
2484
- */
2485
- async getValidTokens() {
2486
- await this.initialize();
2487
- if (!this.oauthProvider) {
2488
- return false;
2489
- }
2490
- const tokens = await this.oauthProvider.tokens();
2491
- if (!tokens) {
2492
- return false;
2493
- }
2494
- if (this.oauthProvider.isTokenExpired()) {
2495
- return await this.refreshToken();
2496
- }
2497
- return true;
2498
- }
2499
2444
  /**
2500
2445
  * Reconnects to MCP server using existing OAuth provider from Redis
2501
2446
  * Used for session restoration in serverless environments
@@ -2627,10 +2572,14 @@ var MCPClient = class _MCPClient {
2627
2572
  }
2628
2573
  /**
2629
2574
  * Gets MCP server configuration for all active user sessions
2630
- * Loads sessions from Redis, validates OAuth tokens, refreshes if expired
2631
- * Returns ready-to-use configuration with valid auth headers
2575
+ * Loads sessions from storage and returns server connection metadata.
2576
+ * OAuth refresh is handled by SDK transports through their authProvider.
2577
+ * @deprecated This returns legacy connection metadata only and does not
2578
+ * include OAuth tokens or generated Authorization headers. Prefer
2579
+ * MultiSessionClient or explicit MCPClient instances so SDK transports can
2580
+ * own OAuth refresh and reauthorization.
2632
2581
  * @param userId - User ID to fetch sessions for
2633
- * @returns Object keyed by sanitized server labels containing transport, url, headers, etc.
2582
+ * @returns Object keyed by sanitized server labels containing transport and url.
2634
2583
  * @static
2635
2584
  */
2636
2585
  static async getMcpServerConfig(userId) {
@@ -2644,29 +2593,6 @@ var MCPClient = class _MCPClient {
2644
2593
  await sessions.delete(userId, sessionId);
2645
2594
  return;
2646
2595
  }
2647
- let headers;
2648
- try {
2649
- const client = new _MCPClient({
2650
- userId,
2651
- sessionId,
2652
- serverId: sessionData.serverId,
2653
- serverUrl: sessionData.serverUrl,
2654
- callbackUrl: sessionData.callbackUrl,
2655
- serverName: sessionData.serverName,
2656
- transportType: sessionData.transportType,
2657
- headers: sessionData.headers
2658
- });
2659
- await client.initialize();
2660
- const hasValidTokens = await client.getValidTokens();
2661
- if (hasValidTokens && client.oauthProvider) {
2662
- const tokens = await client.oauthProvider.tokens();
2663
- if (tokens?.access_token) {
2664
- headers = { Authorization: `Bearer ${tokens.access_token}` };
2665
- }
2666
- }
2667
- } catch (error) {
2668
- console.warn(`[MCP] Failed to get OAuth tokens for ${sessionId}:`, error);
2669
- }
2670
2596
  const label = sanitizeServerLabel(
2671
2597
  sessionData.serverName || sessionData.serverId || "server"
2672
2598
  );
@@ -2676,8 +2602,7 @@ var MCPClient = class _MCPClient {
2676
2602
  ...sessionData.serverName && {
2677
2603
  serverName: sessionData.serverName,
2678
2604
  serverLabel: label
2679
- },
2680
- ...headers && { headers }
2605
+ }
2681
2606
  };
2682
2607
  } catch (error) {
2683
2608
  await sessions.delete(userId, sessionId);