@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.
- package/dist/adapters/agui-adapter.d.mts +1 -1
- package/dist/adapters/agui-adapter.d.ts +1 -1
- package/dist/adapters/agui-middleware.d.mts +1 -1
- package/dist/adapters/agui-middleware.d.ts +1 -1
- package/dist/adapters/ai-adapter.d.mts +1 -1
- package/dist/adapters/ai-adapter.d.ts +1 -1
- package/dist/adapters/langchain-adapter.d.mts +1 -1
- package/dist/adapters/langchain-adapter.d.ts +1 -1
- package/dist/adapters/mastra-adapter.d.mts +1 -1
- package/dist/adapters/mastra-adapter.d.ts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +11 -86
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +12 -87
- package/dist/index.mjs.map +1 -1
- package/dist/{multi-session-client-DYNe6az3.d.mts → multi-session-client-C7hGqzgM.d.mts} +7 -15
- package/dist/{multi-session-client-BYtguGJm.d.ts → multi-session-client-C_kPHpD5.d.ts} +7 -15
- package/dist/server/index.d.mts +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +11 -86
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +12 -87
- package/dist/server/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/server/mcp/oauth-client.ts +7 -104
- package/src/server/storage/neon-backend.ts +1 -1
- package/src/server/storage/supabase-backend.ts +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
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
|
|
2631
|
-
*
|
|
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
|
|
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);
|