@mcp-ts/sdk 1.6.2 → 2.0.0
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/README.md +12 -6
- package/dist/adapters/agui-adapter.d.mts +3 -3
- package/dist/adapters/agui-adapter.d.ts +3 -3
- package/dist/adapters/agui-adapter.js +4 -5
- package/dist/adapters/agui-adapter.js.map +1 -1
- package/dist/adapters/agui-adapter.mjs +4 -5
- package/dist/adapters/agui-adapter.mjs.map +1 -1
- package/dist/adapters/agui-middleware.d.mts +3 -3
- package/dist/adapters/agui-middleware.d.ts +3 -3
- package/dist/adapters/ai-adapter.d.mts +9 -3
- package/dist/adapters/ai-adapter.d.ts +9 -3
- package/dist/adapters/ai-adapter.js +20 -6
- package/dist/adapters/ai-adapter.js.map +1 -1
- package/dist/adapters/ai-adapter.mjs +20 -6
- package/dist/adapters/ai-adapter.mjs.map +1 -1
- package/dist/adapters/langchain-adapter.d.mts +3 -3
- package/dist/adapters/langchain-adapter.d.ts +3 -3
- package/dist/adapters/langchain-adapter.js +9 -6
- package/dist/adapters/langchain-adapter.js.map +1 -1
- package/dist/adapters/langchain-adapter.mjs +9 -6
- package/dist/adapters/langchain-adapter.mjs.map +1 -1
- package/dist/adapters/mastra-adapter.d.mts +1 -1
- package/dist/adapters/mastra-adapter.d.ts +1 -1
- package/dist/adapters/mastra-adapter.js +5 -1
- package/dist/adapters/mastra-adapter.js.map +1 -1
- package/dist/adapters/mastra-adapter.mjs +5 -1
- package/dist/adapters/mastra-adapter.mjs.map +1 -1
- package/dist/bin/mcp-ts.js +7 -1
- package/dist/bin/mcp-ts.js.map +1 -1
- package/dist/bin/mcp-ts.mjs +7 -1
- package/dist/bin/mcp-ts.mjs.map +1 -1
- package/dist/client/index.d.mts +2 -2
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.js +9 -13
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +9 -13
- package/dist/client/index.mjs.map +1 -1
- package/dist/client/react.d.mts +7 -7
- package/dist/client/react.d.ts +7 -7
- package/dist/client/react.js +15 -19
- package/dist/client/react.js.map +1 -1
- package/dist/client/react.mjs +15 -19
- package/dist/client/react.mjs.map +1 -1
- package/dist/client/vue.d.mts +7 -7
- package/dist/client/vue.d.ts +7 -7
- package/dist/client/vue.js +14 -18
- package/dist/client/vue.js.map +1 -1
- package/dist/client/vue.mjs +14 -18
- package/dist/client/vue.mjs.map +1 -1
- package/dist/{index-DhA-OEAe.d.ts → index-C9gvpxy5.d.ts} +5 -5
- package/dist/{index-bFL4ZF2N.d.mts → index-eaH14_5u.d.mts} +5 -5
- package/dist/index.d.mts +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/index.js +616 -370
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +615 -370
- package/dist/index.mjs.map +1 -1
- package/dist/{multi-session-client-CHE8QpVE.d.ts → multi-session-client-BYtguGJm.d.ts} +22 -22
- package/dist/{multi-session-client-CQsRbxYI.d.mts → multi-session-client-DYNe6az3.d.mts} +22 -22
- package/dist/server/index.d.mts +31 -34
- package/dist/server/index.d.ts +31 -34
- package/dist/server/index.js +531 -256
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +530 -256
- package/dist/server/index.mjs.map +1 -1
- package/dist/shared/index.d.mts +5 -5
- package/dist/shared/index.d.ts +5 -5
- package/dist/shared/index.js +76 -101
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/index.mjs +76 -101
- package/dist/shared/index.mjs.map +1 -1
- package/dist/{tool-router-Dh2804tM.d.ts → tool-router-Ddtybmr0.d.ts} +71 -73
- package/dist/{tool-router-BVaV1udm.d.mts → tool-router-Dnd6IOKC.d.mts} +71 -73
- package/dist/{types-rIuN1CQi.d.mts → types-BCAG20P6.d.mts} +4 -4
- package/dist/{types-rIuN1CQi.d.ts → types-BCAG20P6.d.ts} +4 -4
- package/dist/{utils-0qmYrqoa.d.mts → utils-DELRKQPU.d.mts} +1 -1
- package/dist/{utils-0qmYrqoa.d.ts → utils-DELRKQPU.d.ts} +1 -1
- package/migrations/neon/20260513010000_install_mcp_sessions.sql +69 -0
- package/migrations/neon/20260513020000_add_session_cleanup_cron.sql +35 -0
- package/{supabase/migrations → migrations/supabase}/20260330195700_install_mcp_sessions.sql +7 -9
- package/package.json +14 -5
- package/src/adapters/ai-adapter.ts +30 -1
- package/src/adapters/langchain-adapter.ts +6 -2
- package/src/adapters/mastra-adapter.ts +6 -2
- package/src/bin/mcp-ts.ts +8 -1
- package/src/client/core/app-host.ts +1 -1
- package/src/client/core/sse-client.ts +12 -14
- package/src/client/core/types.ts +1 -1
- package/src/client/react/use-mcp-apps.tsx +1 -1
- package/src/client/react/use-mcp.ts +11 -11
- package/src/client/vue/use-mcp.ts +10 -10
- package/src/server/handlers/nextjs-handler.ts +18 -15
- package/src/server/handlers/sse-handler.ts +29 -29
- package/src/server/index.ts +1 -1
- package/src/server/mcp/multi-session-client.ts +17 -17
- package/src/server/mcp/oauth-client.ts +37 -37
- package/src/server/mcp/storage-oauth-provider.ts +17 -17
- package/src/server/storage/file-backend.ts +25 -25
- package/src/server/storage/index.ts +67 -10
- package/src/server/storage/memory-backend.ts +34 -34
- package/src/server/storage/neon-backend.ts +281 -0
- package/src/server/storage/redis-backend.ts +64 -64
- package/src/server/storage/sqlite-backend.ts +33 -33
- package/src/server/storage/supabase-backend.ts +23 -24
- package/src/server/storage/types.ts +18 -21
- package/src/shared/errors.ts +1 -1
- package/src/shared/index.ts +1 -2
- package/src/shared/meta-tools.ts +4 -6
- package/src/shared/schema-compressor.ts +2 -42
- package/src/shared/tool-index.ts +89 -84
- package/src/shared/tool-router.ts +0 -24
- package/src/shared/types.ts +4 -4
- /package/{supabase/migrations → migrations/supabase}/20260421010000_add_session_cleanup_cron.sql +0 -0
package/dist/client/react.mjs
CHANGED
|
@@ -28,8 +28,8 @@ var SSEClient = class {
|
|
|
28
28
|
isConnected() {
|
|
29
29
|
return this.connected;
|
|
30
30
|
}
|
|
31
|
-
async
|
|
32
|
-
return this.sendRequest("
|
|
31
|
+
async listSessions() {
|
|
32
|
+
return this.sendRequest("listSessions");
|
|
33
33
|
}
|
|
34
34
|
async connectToServer(params) {
|
|
35
35
|
return this.sendRequest("connect", params);
|
|
@@ -45,8 +45,8 @@ var SSEClient = class {
|
|
|
45
45
|
this.emitUiEventIfPresent(result, sessionId, toolName);
|
|
46
46
|
return result;
|
|
47
47
|
}
|
|
48
|
-
async
|
|
49
|
-
return this.sendRequest("
|
|
48
|
+
async getSession(sessionId) {
|
|
49
|
+
return this.sendRequest("getSession", { sessionId });
|
|
50
50
|
}
|
|
51
51
|
async finishAuth(sessionId, code) {
|
|
52
52
|
return this.sendRequest("finishAuth", { sessionId, code });
|
|
@@ -112,7 +112,7 @@ var SSEClient = class {
|
|
|
112
112
|
return this.parseRpcResponse(data2);
|
|
113
113
|
}
|
|
114
114
|
const data = await this.readRpcResponseFromStream(response, {
|
|
115
|
-
delayConnectionEvents: method === "connect" || method === "
|
|
115
|
+
delayConnectionEvents: method === "connect" || method === "getSession" || method === "finishAuth"
|
|
116
116
|
});
|
|
117
117
|
return this.parseRpcResponse(data);
|
|
118
118
|
}
|
|
@@ -202,17 +202,13 @@ var SSEClient = class {
|
|
|
202
202
|
throw new Error("Invalid RPC response format");
|
|
203
203
|
}
|
|
204
204
|
buildUrl() {
|
|
205
|
-
|
|
206
|
-
url.searchParams.set("identity", this.options.identity);
|
|
207
|
-
if (this.options.authToken) {
|
|
208
|
-
url.searchParams.set("token", this.options.authToken);
|
|
209
|
-
}
|
|
210
|
-
return url.toString();
|
|
205
|
+
return new URL(this.options.url, globalThis.location?.origin).toString();
|
|
211
206
|
}
|
|
212
207
|
buildHeaders() {
|
|
213
208
|
const headers = {
|
|
214
209
|
"Content-Type": "application/json",
|
|
215
|
-
"Accept": "text/event-stream"
|
|
210
|
+
"Accept": "text/event-stream",
|
|
211
|
+
"x-mcp-user-id": this.options.userId
|
|
216
212
|
};
|
|
217
213
|
if (this.options.authToken) {
|
|
218
214
|
headers["Authorization"] = `Bearer ${this.options.authToken}`;
|
|
@@ -259,7 +255,7 @@ var SSEClient = class {
|
|
|
259
255
|
function useMcp(options) {
|
|
260
256
|
const {
|
|
261
257
|
url,
|
|
262
|
-
|
|
258
|
+
userId,
|
|
263
259
|
authToken,
|
|
264
260
|
autoConnect = true,
|
|
265
261
|
autoInitialize = true,
|
|
@@ -280,7 +276,7 @@ function useMcp(options) {
|
|
|
280
276
|
isMountedRef.current = true;
|
|
281
277
|
const clientOptions = {
|
|
282
278
|
url,
|
|
283
|
-
|
|
279
|
+
userId,
|
|
284
280
|
authToken,
|
|
285
281
|
onConnectionEvent: (event) => {
|
|
286
282
|
updateConnectionsFromEvent(event);
|
|
@@ -309,7 +305,7 @@ function useMcp(options) {
|
|
|
309
305
|
isMountedRef.current = false;
|
|
310
306
|
client.disconnect();
|
|
311
307
|
};
|
|
312
|
-
}, [url,
|
|
308
|
+
}, [url, userId, authToken, autoConnect, autoInitialize]);
|
|
313
309
|
const updateConnectionsFromEvent = useCallback((event) => {
|
|
314
310
|
if (!isMountedRef.current) return;
|
|
315
311
|
const isTransientReconnectState = (state) => state === "INITIALIZING" || state === "VALIDATING" || state === "RECONNECTING" || state === "CONNECTING" || state === "CONNECTED" || state === "DISCOVERING";
|
|
@@ -404,7 +400,7 @@ function useMcp(options) {
|
|
|
404
400
|
if (!clientRef.current) return;
|
|
405
401
|
try {
|
|
406
402
|
setIsInitializing(true);
|
|
407
|
-
const result = await clientRef.current.
|
|
403
|
+
const result = await clientRef.current.listSessions();
|
|
408
404
|
const sessions = result.sessions || [];
|
|
409
405
|
if (isMountedRef.current) {
|
|
410
406
|
setConnections(
|
|
@@ -428,7 +424,7 @@ function useMcp(options) {
|
|
|
428
424
|
return;
|
|
429
425
|
}
|
|
430
426
|
suppressAuthRedirectSessionsRef.current.add(session.sessionId);
|
|
431
|
-
await clientRef.current.
|
|
427
|
+
await clientRef.current.getSession(session.sessionId);
|
|
432
428
|
} catch (error) {
|
|
433
429
|
console.error(`[useMcp] Failed to validate session ${session.sessionId}:`, error);
|
|
434
430
|
} finally {
|
|
@@ -506,7 +502,7 @@ function useMcp(options) {
|
|
|
506
502
|
throw new Error("SSE client not initialized");
|
|
507
503
|
}
|
|
508
504
|
suppressAuthRedirectSessionsRef.current.delete(sessionId);
|
|
509
|
-
await clientRef.current.
|
|
505
|
+
await clientRef.current.getSession(sessionId);
|
|
510
506
|
}, []);
|
|
511
507
|
const callTool = useCallback(
|
|
512
508
|
async (sessionId, toolName, toolArgs) => {
|
|
@@ -1394,7 +1390,7 @@ var AppHost = class {
|
|
|
1394
1390
|
async getSessionId() {
|
|
1395
1391
|
if (this.sessionId) return this.sessionId;
|
|
1396
1392
|
if (!this.client) return void 0;
|
|
1397
|
-
const result = await this.client.
|
|
1393
|
+
const result = await this.client.listSessions();
|
|
1398
1394
|
return result.sessions?.[0]?.sessionId;
|
|
1399
1395
|
}
|
|
1400
1396
|
isMcpUri(url) {
|