@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.
Files changed (113) hide show
  1. package/README.md +12 -6
  2. package/dist/adapters/agui-adapter.d.mts +3 -3
  3. package/dist/adapters/agui-adapter.d.ts +3 -3
  4. package/dist/adapters/agui-adapter.js +4 -5
  5. package/dist/adapters/agui-adapter.js.map +1 -1
  6. package/dist/adapters/agui-adapter.mjs +4 -5
  7. package/dist/adapters/agui-adapter.mjs.map +1 -1
  8. package/dist/adapters/agui-middleware.d.mts +3 -3
  9. package/dist/adapters/agui-middleware.d.ts +3 -3
  10. package/dist/adapters/ai-adapter.d.mts +9 -3
  11. package/dist/adapters/ai-adapter.d.ts +9 -3
  12. package/dist/adapters/ai-adapter.js +20 -6
  13. package/dist/adapters/ai-adapter.js.map +1 -1
  14. package/dist/adapters/ai-adapter.mjs +20 -6
  15. package/dist/adapters/ai-adapter.mjs.map +1 -1
  16. package/dist/adapters/langchain-adapter.d.mts +3 -3
  17. package/dist/adapters/langchain-adapter.d.ts +3 -3
  18. package/dist/adapters/langchain-adapter.js +9 -6
  19. package/dist/adapters/langchain-adapter.js.map +1 -1
  20. package/dist/adapters/langchain-adapter.mjs +9 -6
  21. package/dist/adapters/langchain-adapter.mjs.map +1 -1
  22. package/dist/adapters/mastra-adapter.d.mts +1 -1
  23. package/dist/adapters/mastra-adapter.d.ts +1 -1
  24. package/dist/adapters/mastra-adapter.js +5 -1
  25. package/dist/adapters/mastra-adapter.js.map +1 -1
  26. package/dist/adapters/mastra-adapter.mjs +5 -1
  27. package/dist/adapters/mastra-adapter.mjs.map +1 -1
  28. package/dist/bin/mcp-ts.js +7 -1
  29. package/dist/bin/mcp-ts.js.map +1 -1
  30. package/dist/bin/mcp-ts.mjs +7 -1
  31. package/dist/bin/mcp-ts.mjs.map +1 -1
  32. package/dist/client/index.d.mts +2 -2
  33. package/dist/client/index.d.ts +2 -2
  34. package/dist/client/index.js +9 -13
  35. package/dist/client/index.js.map +1 -1
  36. package/dist/client/index.mjs +9 -13
  37. package/dist/client/index.mjs.map +1 -1
  38. package/dist/client/react.d.mts +7 -7
  39. package/dist/client/react.d.ts +7 -7
  40. package/dist/client/react.js +15 -19
  41. package/dist/client/react.js.map +1 -1
  42. package/dist/client/react.mjs +15 -19
  43. package/dist/client/react.mjs.map +1 -1
  44. package/dist/client/vue.d.mts +7 -7
  45. package/dist/client/vue.d.ts +7 -7
  46. package/dist/client/vue.js +14 -18
  47. package/dist/client/vue.js.map +1 -1
  48. package/dist/client/vue.mjs +14 -18
  49. package/dist/client/vue.mjs.map +1 -1
  50. package/dist/{index-DhA-OEAe.d.ts → index-C9gvpxy5.d.ts} +5 -5
  51. package/dist/{index-bFL4ZF2N.d.mts → index-eaH14_5u.d.mts} +5 -5
  52. package/dist/index.d.mts +6 -6
  53. package/dist/index.d.ts +6 -6
  54. package/dist/index.js +616 -370
  55. package/dist/index.js.map +1 -1
  56. package/dist/index.mjs +615 -370
  57. package/dist/index.mjs.map +1 -1
  58. package/dist/{multi-session-client-CHE8QpVE.d.ts → multi-session-client-BYtguGJm.d.ts} +22 -22
  59. package/dist/{multi-session-client-CQsRbxYI.d.mts → multi-session-client-DYNe6az3.d.mts} +22 -22
  60. package/dist/server/index.d.mts +31 -34
  61. package/dist/server/index.d.ts +31 -34
  62. package/dist/server/index.js +531 -256
  63. package/dist/server/index.js.map +1 -1
  64. package/dist/server/index.mjs +530 -256
  65. package/dist/server/index.mjs.map +1 -1
  66. package/dist/shared/index.d.mts +5 -5
  67. package/dist/shared/index.d.ts +5 -5
  68. package/dist/shared/index.js +76 -101
  69. package/dist/shared/index.js.map +1 -1
  70. package/dist/shared/index.mjs +76 -101
  71. package/dist/shared/index.mjs.map +1 -1
  72. package/dist/{tool-router-Dh2804tM.d.ts → tool-router-Ddtybmr0.d.ts} +71 -73
  73. package/dist/{tool-router-BVaV1udm.d.mts → tool-router-Dnd6IOKC.d.mts} +71 -73
  74. package/dist/{types-rIuN1CQi.d.mts → types-BCAG20P6.d.mts} +4 -4
  75. package/dist/{types-rIuN1CQi.d.ts → types-BCAG20P6.d.ts} +4 -4
  76. package/dist/{utils-0qmYrqoa.d.mts → utils-DELRKQPU.d.mts} +1 -1
  77. package/dist/{utils-0qmYrqoa.d.ts → utils-DELRKQPU.d.ts} +1 -1
  78. package/migrations/neon/20260513010000_install_mcp_sessions.sql +69 -0
  79. package/migrations/neon/20260513020000_add_session_cleanup_cron.sql +35 -0
  80. package/{supabase/migrations → migrations/supabase}/20260330195700_install_mcp_sessions.sql +7 -9
  81. package/package.json +14 -5
  82. package/src/adapters/ai-adapter.ts +30 -1
  83. package/src/adapters/langchain-adapter.ts +6 -2
  84. package/src/adapters/mastra-adapter.ts +6 -2
  85. package/src/bin/mcp-ts.ts +8 -1
  86. package/src/client/core/app-host.ts +1 -1
  87. package/src/client/core/sse-client.ts +12 -14
  88. package/src/client/core/types.ts +1 -1
  89. package/src/client/react/use-mcp-apps.tsx +1 -1
  90. package/src/client/react/use-mcp.ts +11 -11
  91. package/src/client/vue/use-mcp.ts +10 -10
  92. package/src/server/handlers/nextjs-handler.ts +18 -15
  93. package/src/server/handlers/sse-handler.ts +29 -29
  94. package/src/server/index.ts +1 -1
  95. package/src/server/mcp/multi-session-client.ts +17 -17
  96. package/src/server/mcp/oauth-client.ts +37 -37
  97. package/src/server/mcp/storage-oauth-provider.ts +17 -17
  98. package/src/server/storage/file-backend.ts +25 -25
  99. package/src/server/storage/index.ts +67 -10
  100. package/src/server/storage/memory-backend.ts +34 -34
  101. package/src/server/storage/neon-backend.ts +281 -0
  102. package/src/server/storage/redis-backend.ts +64 -64
  103. package/src/server/storage/sqlite-backend.ts +33 -33
  104. package/src/server/storage/supabase-backend.ts +23 -24
  105. package/src/server/storage/types.ts +18 -21
  106. package/src/shared/errors.ts +1 -1
  107. package/src/shared/index.ts +1 -2
  108. package/src/shared/meta-tools.ts +4 -6
  109. package/src/shared/schema-compressor.ts +2 -42
  110. package/src/shared/tool-index.ts +89 -84
  111. package/src/shared/tool-router.ts +0 -24
  112. package/src/shared/types.ts +4 -4
  113. /package/{supabase/migrations → migrations/supabase}/20260421010000_add_session_cleanup_cron.sql +0 -0
@@ -28,8 +28,8 @@ var SSEClient = class {
28
28
  isConnected() {
29
29
  return this.connected;
30
30
  }
31
- async getSessions() {
32
- return this.sendRequest("getSessions");
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 restoreSession(sessionId) {
49
- return this.sendRequest("restoreSession", { sessionId });
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 === "restoreSession" || method === "finishAuth"
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
- const url = new URL(this.options.url, globalThis.location?.origin);
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
- identity,
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
- identity,
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, identity, authToken, autoConnect, autoInitialize]);
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.getSessions();
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.restoreSession(session.sessionId);
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.restoreSession(sessionId);
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.getSessions();
1393
+ const result = await this.client.listSessions();
1398
1394
  return result.sessions?.[0]?.sessionId;
1399
1395
  }
1400
1396
  isMcpUri(url) {