@mcp-ts/sdk 2.4.5 → 2.5.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 (85) hide show
  1. package/dist/adapters/agui-adapter.d.mts +3 -3
  2. package/dist/adapters/agui-adapter.d.ts +3 -3
  3. package/dist/adapters/agui-adapter.js.map +1 -1
  4. package/dist/adapters/agui-adapter.mjs.map +1 -1
  5. package/dist/adapters/agui-middleware.d.mts +3 -3
  6. package/dist/adapters/agui-middleware.d.ts +3 -3
  7. package/dist/adapters/agui-middleware.js.map +1 -1
  8. package/dist/adapters/agui-middleware.mjs.map +1 -1
  9. package/dist/adapters/ai-adapter.d.mts +3 -3
  10. package/dist/adapters/ai-adapter.d.ts +3 -3
  11. package/dist/adapters/ai-adapter.js.map +1 -1
  12. package/dist/adapters/ai-adapter.mjs.map +1 -1
  13. package/dist/adapters/langchain-adapter.d.mts +3 -3
  14. package/dist/adapters/langchain-adapter.d.ts +3 -3
  15. package/dist/adapters/langchain-adapter.js +2 -2
  16. package/dist/adapters/langchain-adapter.js.map +1 -1
  17. package/dist/adapters/langchain-adapter.mjs +2 -2
  18. package/dist/adapters/langchain-adapter.mjs.map +1 -1
  19. package/dist/adapters/mastra-adapter.d.mts +2 -2
  20. package/dist/adapters/mastra-adapter.d.ts +2 -2
  21. package/dist/adapters/mastra-adapter.js +2 -2
  22. package/dist/adapters/mastra-adapter.js.map +1 -1
  23. package/dist/adapters/mastra-adapter.mjs +2 -2
  24. package/dist/adapters/mastra-adapter.mjs.map +1 -1
  25. package/dist/client/index.d.mts +2 -2
  26. package/dist/client/index.d.ts +2 -2
  27. package/dist/client/index.js +6 -0
  28. package/dist/client/index.js.map +1 -1
  29. package/dist/client/index.mjs +6 -0
  30. package/dist/client/index.mjs.map +1 -1
  31. package/dist/client/react.d.mts +15 -4
  32. package/dist/client/react.d.ts +15 -4
  33. package/dist/client/react.js +34 -0
  34. package/dist/client/react.js.map +1 -1
  35. package/dist/client/react.mjs +34 -0
  36. package/dist/client/react.mjs.map +1 -1
  37. package/dist/client/vue.d.mts +4 -4
  38. package/dist/client/vue.d.ts +4 -4
  39. package/dist/client/vue.js +6 -0
  40. package/dist/client/vue.js.map +1 -1
  41. package/dist/client/vue.mjs +6 -0
  42. package/dist/client/vue.mjs.map +1 -1
  43. package/dist/{index-CkM3p0eE.d.mts → index-CTURVnom.d.mts} +5 -1
  44. package/dist/{index-CZk2gu2E.d.ts → index-sVcqrhf7.d.ts} +5 -1
  45. package/dist/index.d.mts +4 -4
  46. package/dist/index.d.ts +4 -4
  47. package/dist/index.js +314 -82
  48. package/dist/index.js.map +1 -1
  49. package/dist/index.mjs +310 -82
  50. package/dist/index.mjs.map +1 -1
  51. package/dist/{multi-session-client-ChQrBZhF.d.mts → multi-session-client-CSPSHHla.d.ts} +14 -2
  52. package/dist/{multi-session-client-QOOPdEVp.d.ts → multi-session-client-DMZGVABI.d.mts} +14 -2
  53. package/dist/server/index.d.mts +13 -4
  54. package/dist/server/index.d.ts +13 -4
  55. package/dist/server/index.js +308 -82
  56. package/dist/server/index.js.map +1 -1
  57. package/dist/server/index.mjs +304 -82
  58. package/dist/server/index.mjs.map +1 -1
  59. package/dist/shared/index.d.mts +4 -4
  60. package/dist/shared/index.d.ts +4 -4
  61. package/dist/shared/index.js.map +1 -1
  62. package/dist/shared/index.mjs.map +1 -1
  63. package/dist/{tool-router-DQ-HrD7W.d.ts → tool-router-CS9l0w4a.d.ts} +1 -1
  64. package/dist/{tool-router-CGs3IDOJ.d.mts → tool-router-CVLBaCwH.d.mts} +1 -1
  65. package/dist/{types-Bf-7GOLW.d.mts → types-DK_NGWd4.d.mts} +37 -3
  66. package/dist/{types-Bf-7GOLW.d.ts → types-DK_NGWd4.d.ts} +37 -3
  67. package/migrations/neon/20260513010000_install_mcp_sessions.sql +1 -0
  68. package/migrations/supabase/20260330195700_install_mcp_sessions.sql +1 -0
  69. package/package.json +1 -1
  70. package/src/adapters/agui-adapter.ts +6 -2
  71. package/src/adapters/ai-adapter.ts +3 -1
  72. package/src/adapters/langchain-adapter.ts +5 -3
  73. package/src/adapters/mastra-adapter.ts +5 -3
  74. package/src/client/core/sse-client.ts +17 -0
  75. package/src/client/react/use-mcp.ts +63 -0
  76. package/src/server/handlers/sse-handler.ts +116 -9
  77. package/src/server/mcp/multi-session-client.ts +7 -3
  78. package/src/server/mcp/oauth-client.ts +25 -10
  79. package/src/server/mcp/tool-policy-gateway.ts +90 -0
  80. package/src/server/storage/neon-backend.ts +65 -60
  81. package/src/server/storage/session-lifecycle.ts +5 -0
  82. package/src/server/storage/supabase-backend.ts +27 -15
  83. package/src/server/storage/tool-policy.ts +89 -0
  84. package/src/server/storage/types.ts +11 -0
  85. package/src/shared/types.ts +48 -1
@@ -1,7 +1,7 @@
1
- import { c as SSEClient, e as AppHostOptions, f as AppHostClient, a as AppHost } from '../index-CkM3p0eE.mjs';
2
- export { A as APP_HOST_DEFAULTS, D as DEFAULT_MCP_APP_CSP, S as SANDBOX_PROXY_READY_METHOD, b as SANDBOX_RESOURCE_READY_METHOD, d as SSEClientOptions } from '../index-CkM3p0eE.mjs';
3
- import { s as McpConnectionState, B as ToolInfo, n as FinishAuthResult, r as ListToolsRpcResult, L as ListPromptsResult, p as ListResourcesResult, M as McpConnectionEvent } from '../types-Bf-7GOLW.mjs';
4
- export { k as Disposable, l as DisposableStore, E as Emitter, m as Event, t as McpObservabilityEvent, w as McpRpcRequest, x as McpRpcResponse } from '../types-Bf-7GOLW.mjs';
1
+ import { c as SSEClient, e as AppHostOptions, f as AppHostClient, a as AppHost } from '../index-CTURVnom.mjs';
2
+ export { A as APP_HOST_DEFAULTS, D as DEFAULT_MCP_APP_CSP, S as SANDBOX_PROXY_READY_METHOD, b as SANDBOX_RESOURCE_READY_METHOD, d as SSEClientOptions } from '../index-CTURVnom.mjs';
3
+ import { s as McpConnectionState, B as ToolInfo, P as ToolPolicy, n as FinishAuthResult, r as ListToolsRpcResult, Q as SetToolPolicyResult, U as GetToolPolicyResult, L as ListPromptsResult, p as ListResourcesResult, M as McpConnectionEvent } from '../types-DK_NGWd4.mjs';
4
+ export { k as Disposable, l as DisposableStore, E as Emitter, m as Event, t as McpObservabilityEvent, w as McpRpcRequest, x as McpRpcResponse } from '../types-DK_NGWd4.mjs';
5
5
  import React$1, { ReactNode, CSSProperties } from 'react';
6
6
  import '@modelcontextprotocol/ext-apps/app-bridge';
7
7
  import '@modelcontextprotocol/sdk/types.js';
@@ -70,6 +70,7 @@ interface McpConnection {
70
70
  error?: string;
71
71
  createdAt?: Date;
72
72
  updatedAt?: Date;
73
+ toolPolicy?: ToolPolicy;
73
74
  }
74
75
  interface McpClient$1 {
75
76
  /**
@@ -152,6 +153,16 @@ interface McpClient$1 {
152
153
  * List available tools for a session
153
154
  */
154
155
  listTools: (sessionId: string) => Promise<ListToolsRpcResult>;
156
+ /**
157
+ * Update per-session tool access policy
158
+ */
159
+ updateToolPolicy: (sessionId: string, toolPolicy: Pick<ToolPolicy, 'mode'> & {
160
+ toolIds?: string[];
161
+ }) => Promise<SetToolPolicyResult>;
162
+ /**
163
+ * Get all tools and effective policy state for access management
164
+ */
165
+ getToolAccess: (sessionId: string) => Promise<GetToolPolicyResult>;
155
166
  /**
156
167
  * List available prompts for a session
157
168
  */
@@ -1,7 +1,7 @@
1
- import { c as SSEClient, e as AppHostOptions, f as AppHostClient, a as AppHost } from '../index-CZk2gu2E.js';
2
- export { A as APP_HOST_DEFAULTS, D as DEFAULT_MCP_APP_CSP, S as SANDBOX_PROXY_READY_METHOD, b as SANDBOX_RESOURCE_READY_METHOD, d as SSEClientOptions } from '../index-CZk2gu2E.js';
3
- import { s as McpConnectionState, B as ToolInfo, n as FinishAuthResult, r as ListToolsRpcResult, L as ListPromptsResult, p as ListResourcesResult, M as McpConnectionEvent } from '../types-Bf-7GOLW.js';
4
- export { k as Disposable, l as DisposableStore, E as Emitter, m as Event, t as McpObservabilityEvent, w as McpRpcRequest, x as McpRpcResponse } from '../types-Bf-7GOLW.js';
1
+ import { c as SSEClient, e as AppHostOptions, f as AppHostClient, a as AppHost } from '../index-sVcqrhf7.js';
2
+ export { A as APP_HOST_DEFAULTS, D as DEFAULT_MCP_APP_CSP, S as SANDBOX_PROXY_READY_METHOD, b as SANDBOX_RESOURCE_READY_METHOD, d as SSEClientOptions } from '../index-sVcqrhf7.js';
3
+ import { s as McpConnectionState, B as ToolInfo, P as ToolPolicy, n as FinishAuthResult, r as ListToolsRpcResult, Q as SetToolPolicyResult, U as GetToolPolicyResult, L as ListPromptsResult, p as ListResourcesResult, M as McpConnectionEvent } from '../types-DK_NGWd4.js';
4
+ export { k as Disposable, l as DisposableStore, E as Emitter, m as Event, t as McpObservabilityEvent, w as McpRpcRequest, x as McpRpcResponse } from '../types-DK_NGWd4.js';
5
5
  import React$1, { ReactNode, CSSProperties } from 'react';
6
6
  import '@modelcontextprotocol/ext-apps/app-bridge';
7
7
  import '@modelcontextprotocol/sdk/types.js';
@@ -70,6 +70,7 @@ interface McpConnection {
70
70
  error?: string;
71
71
  createdAt?: Date;
72
72
  updatedAt?: Date;
73
+ toolPolicy?: ToolPolicy;
73
74
  }
74
75
  interface McpClient$1 {
75
76
  /**
@@ -152,6 +153,16 @@ interface McpClient$1 {
152
153
  * List available tools for a session
153
154
  */
154
155
  listTools: (sessionId: string) => Promise<ListToolsRpcResult>;
156
+ /**
157
+ * Update per-session tool access policy
158
+ */
159
+ updateToolPolicy: (sessionId: string, toolPolicy: Pick<ToolPolicy, 'mode'> & {
160
+ toolIds?: string[];
161
+ }) => Promise<SetToolPolicyResult>;
162
+ /**
163
+ * Get all tools and effective policy state for access management
164
+ */
165
+ getToolAccess: (sessionId: string) => Promise<GetToolPolicyResult>;
155
166
  /**
156
167
  * List available prompts for a session
157
168
  */
@@ -39,6 +39,12 @@ var SSEClient = class {
39
39
  async disconnectFromServer(sessionId) {
40
40
  return this.sendRequest("disconnect", { sessionId });
41
41
  }
42
+ async setToolPolicy(sessionId, toolPolicy) {
43
+ return this.sendRequest("setToolPolicy", { sessionId, toolPolicy });
44
+ }
45
+ async getToolPolicy(sessionId) {
46
+ return this.sendRequest("getToolPolicy", { sessionId });
47
+ }
42
48
  async listTools(sessionId) {
43
49
  return this.sendRequest("listTools", { sessionId });
44
50
  }
@@ -425,6 +431,7 @@ function useMcp(options) {
425
431
  state: getInitialConnectionState(s.status),
426
432
  createdAt: new Date(s.createdAt),
427
433
  updatedAt: new Date(s.updatedAt ?? s.createdAt),
434
+ toolPolicy: s.toolPolicy,
428
435
  tools: []
429
436
  }))
430
437
  );
@@ -532,6 +539,29 @@ function useMcp(options) {
532
539
  }
533
540
  return await clientRef.current.listTools(sessionId);
534
541
  }, []);
542
+ const updateToolPolicy = react.useCallback(async (sessionId, toolPolicy) => {
543
+ if (!clientRef.current) {
544
+ throw new Error("SSE client not initialized");
545
+ }
546
+ const result = await clientRef.current.setToolPolicy(sessionId, toolPolicy);
547
+ if (isMountedRef.current) {
548
+ setConnections((prev) => prev.map(
549
+ (connection) => connection.sessionId === sessionId ? {
550
+ ...connection,
551
+ toolPolicy: result.toolPolicy,
552
+ tools: result.tools,
553
+ updatedAt: /* @__PURE__ */ new Date()
554
+ } : connection
555
+ ));
556
+ }
557
+ return result;
558
+ }, []);
559
+ const getToolAccess = react.useCallback(async (sessionId) => {
560
+ if (!clientRef.current) {
561
+ throw new Error("SSE client not initialized");
562
+ }
563
+ return await clientRef.current.getToolPolicy(sessionId);
564
+ }, []);
535
565
  const listPrompts = react.useCallback(async (sessionId) => {
536
566
  if (!clientRef.current) {
537
567
  throw new Error("SSE client not initialized");
@@ -600,6 +630,8 @@ function useMcp(options) {
600
630
  resumeAuth,
601
631
  callTool,
602
632
  listTools,
633
+ updateToolPolicy,
634
+ getToolAccess,
603
635
  listPrompts,
604
636
  getPrompt,
605
637
  listResources,
@@ -624,6 +656,8 @@ function useMcp(options) {
624
656
  resumeAuth,
625
657
  callTool,
626
658
  listTools,
659
+ updateToolPolicy,
660
+ getToolAccess,
627
661
  listPrompts,
628
662
  getPrompt,
629
663
  listResources,