@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,4 +1,4 @@
1
- import { m as Event, M as McpConnectionEvent, t as McpObservabilityEvent, s as McpConnectionState, A as ToolClientProvider } from './types-Bf-7GOLW.mjs';
1
+ import { m as Event, M as McpConnectionEvent, t as McpObservabilityEvent, s as McpConnectionState, A as ToolClientProvider, T as ToolClient } from './types-DK_NGWd4.js';
2
2
  import { ListToolsResult, CallToolResult, ListPromptsResult, GetPromptResult, ListResourcesResult, ReadResourceResult } from '@modelcontextprotocol/sdk/types.js';
3
3
  import { OAuthClientProvider } from '@modelcontextprotocol/sdk/client/auth.js';
4
4
  import { OAuthClientMetadata, OAuthClientInformationMixed, OAuthClientInformationFull, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js';
@@ -222,6 +222,11 @@ declare class MCPClient {
222
222
  * @param authCode - Authorization code received from OAuth callback
223
223
  */
224
224
  finishAuth(authCode: string, state?: string): Promise<void>;
225
+ /**
226
+ * Lists all available tools from the connected MCP server without emitting discovery events.
227
+ * Gateways use this to apply policy before publishing tools to agents or UI state.
228
+ */
229
+ fetchTools(): Promise<ListToolsResult>;
225
230
  /**
226
231
  * Lists all available tools from the connected MCP server
227
232
  * @returns List of tools with their schemas and descriptions
@@ -345,6 +350,12 @@ interface OAuthState {
345
350
  createdAt: number;
346
351
  }
347
352
  type SessionStatus = 'pending' | 'active';
353
+ type ToolPolicyMode = 'all' | 'allowlist' | 'denylist';
354
+ interface ToolPolicy {
355
+ mode: ToolPolicyMode;
356
+ toolIds: string[];
357
+ updatedAt: number;
358
+ }
348
359
  interface Session {
349
360
  sessionId: string;
350
361
  serverId?: string;
@@ -368,6 +379,7 @@ interface Session {
368
379
  * - active: restorable session after successful connection/auth completion
369
380
  */
370
381
  status?: SessionStatus;
382
+ toolPolicy?: ToolPolicy;
371
383
  }
372
384
  interface SessionCredentials {
373
385
  sessionId: string;
@@ -543,7 +555,7 @@ declare class MultiSessionClient implements ToolClientProvider {
543
555
  * Use this to enumerate available tools across all connected servers,
544
556
  * or to route a tool call to the right client by `serverId`.
545
557
  */
546
- getClients(): MCPClient[];
558
+ getClients(): ToolClient[];
547
559
  /**
548
560
  * Removes and disconnects a single session by ID.
549
561
  *
@@ -1,4 +1,4 @@
1
- import { m as Event, M as McpConnectionEvent, t as McpObservabilityEvent, s as McpConnectionState, A as ToolClientProvider } from './types-Bf-7GOLW.js';
1
+ import { m as Event, M as McpConnectionEvent, t as McpObservabilityEvent, s as McpConnectionState, A as ToolClientProvider, T as ToolClient } from './types-DK_NGWd4.mjs';
2
2
  import { ListToolsResult, CallToolResult, ListPromptsResult, GetPromptResult, ListResourcesResult, ReadResourceResult } from '@modelcontextprotocol/sdk/types.js';
3
3
  import { OAuthClientProvider } from '@modelcontextprotocol/sdk/client/auth.js';
4
4
  import { OAuthClientMetadata, OAuthClientInformationMixed, OAuthClientInformationFull, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js';
@@ -222,6 +222,11 @@ declare class MCPClient {
222
222
  * @param authCode - Authorization code received from OAuth callback
223
223
  */
224
224
  finishAuth(authCode: string, state?: string): Promise<void>;
225
+ /**
226
+ * Lists all available tools from the connected MCP server without emitting discovery events.
227
+ * Gateways use this to apply policy before publishing tools to agents or UI state.
228
+ */
229
+ fetchTools(): Promise<ListToolsResult>;
225
230
  /**
226
231
  * Lists all available tools from the connected MCP server
227
232
  * @returns List of tools with their schemas and descriptions
@@ -345,6 +350,12 @@ interface OAuthState {
345
350
  createdAt: number;
346
351
  }
347
352
  type SessionStatus = 'pending' | 'active';
353
+ type ToolPolicyMode = 'all' | 'allowlist' | 'denylist';
354
+ interface ToolPolicy {
355
+ mode: ToolPolicyMode;
356
+ toolIds: string[];
357
+ updatedAt: number;
358
+ }
348
359
  interface Session {
349
360
  sessionId: string;
350
361
  serverId?: string;
@@ -368,6 +379,7 @@ interface Session {
368
379
  * - active: restorable session after successful connection/auth completion
369
380
  */
370
381
  status?: SessionStatus;
382
+ toolPolicy?: ToolPolicy;
371
383
  }
372
384
  interface SessionCredentials {
373
385
  sessionId: string;
@@ -543,7 +555,7 @@ declare class MultiSessionClient implements ToolClientProvider {
543
555
  * Use this to enumerate available tools across all connected servers,
544
556
  * or to route a tool call to the right client by `serverId`.
545
557
  */
546
- getClients(): MCPClient[];
558
+ getClients(): ToolClient[];
547
559
  /**
548
560
  * Removes and disconnects a single session by ID.
549
561
  *
@@ -1,8 +1,8 @@
1
- import { c as SessionMutationListener, e as SessionStore } from '../multi-session-client-ChQrBZhF.mjs';
2
- export { M as MCPClient, a as MultiSessionClient, S as Session, b as SessionMutationEvent, d as SessionMutationType, f as StorageOAuthClientProvider } from '../multi-session-client-ChQrBZhF.mjs';
1
+ import { c as SessionMutationListener, e as SessionStore } from '../multi-session-client-DMZGVABI.mjs';
2
+ export { M as MCPClient, a as MultiSessionClient, S as Session, b as SessionMutationEvent, d as SessionMutationType, f as StorageOAuthClientProvider } from '../multi-session-client-DMZGVABI.mjs';
3
3
  export { U as UnauthorizedError, s as sanitizeServerLabel } from '../utils-DELRKQPU.mjs';
4
- import { M as McpConnectionEvent, t as McpObservabilityEvent, x as McpRpcResponse, w as McpRpcRequest } from '../types-Bf-7GOLW.mjs';
5
- export { a as CallToolRequest, b as CallToolResponse, f as ConnectRequest, g as ConnectResponse, k as Disposable, E as Emitter, m as Event, q as ListToolsResponse, s as McpConnectionState, T as ToolClient, A as ToolClientProvider, B as ToolInfo } from '../types-Bf-7GOLW.mjs';
4
+ import { M as McpConnectionEvent, t as McpObservabilityEvent, x as McpRpcResponse, w as McpRpcRequest } from '../types-DK_NGWd4.mjs';
5
+ export { a as CallToolRequest, b as CallToolResponse, f as ConnectRequest, g as ConnectResponse, k as Disposable, E as Emitter, m as Event, q as ListToolsResponse, s as McpConnectionState, T as ToolClient, A as ToolClientProvider, B as ToolInfo } from '../types-DK_NGWd4.mjs';
6
6
  export { OAuthClientInformation, OAuthClientInformationFull, OAuthClientMetadata, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js';
7
7
  export { CallToolResult, ListToolsResult, Tool } from '@modelcontextprotocol/sdk/types.js';
8
8
  import '@modelcontextprotocol/sdk/client/auth.js';
@@ -87,10 +87,19 @@ declare class SSEConnectionManager {
87
87
  * Get an existing client or create and connect a new one for the session.
88
88
  */
89
89
  private getOrCreateClient;
90
+ private listPolicyFilteredTools;
90
91
  /**
91
92
  * List tools from a session
92
93
  */
93
94
  private listTools;
95
+ /**
96
+ * Get all raw tools with effective access state for management UI.
97
+ */
98
+ private getToolPolicy;
99
+ /**
100
+ * Update per-session tool access policy.
101
+ */
102
+ private setToolPolicy;
94
103
  /**
95
104
  * Call a tool on the MCP server
96
105
  */
@@ -1,8 +1,8 @@
1
- import { c as SessionMutationListener, e as SessionStore } from '../multi-session-client-QOOPdEVp.js';
2
- export { M as MCPClient, a as MultiSessionClient, S as Session, b as SessionMutationEvent, d as SessionMutationType, f as StorageOAuthClientProvider } from '../multi-session-client-QOOPdEVp.js';
1
+ import { c as SessionMutationListener, e as SessionStore } from '../multi-session-client-CSPSHHla.js';
2
+ export { M as MCPClient, a as MultiSessionClient, S as Session, b as SessionMutationEvent, d as SessionMutationType, f as StorageOAuthClientProvider } from '../multi-session-client-CSPSHHla.js';
3
3
  export { U as UnauthorizedError, s as sanitizeServerLabel } from '../utils-DELRKQPU.js';
4
- import { M as McpConnectionEvent, t as McpObservabilityEvent, x as McpRpcResponse, w as McpRpcRequest } from '../types-Bf-7GOLW.js';
5
- export { a as CallToolRequest, b as CallToolResponse, f as ConnectRequest, g as ConnectResponse, k as Disposable, E as Emitter, m as Event, q as ListToolsResponse, s as McpConnectionState, T as ToolClient, A as ToolClientProvider, B as ToolInfo } from '../types-Bf-7GOLW.js';
4
+ import { M as McpConnectionEvent, t as McpObservabilityEvent, x as McpRpcResponse, w as McpRpcRequest } from '../types-DK_NGWd4.js';
5
+ export { a as CallToolRequest, b as CallToolResponse, f as ConnectRequest, g as ConnectResponse, k as Disposable, E as Emitter, m as Event, q as ListToolsResponse, s as McpConnectionState, T as ToolClient, A as ToolClientProvider, B as ToolInfo } from '../types-DK_NGWd4.js';
6
6
  export { OAuthClientInformation, OAuthClientInformationFull, OAuthClientMetadata, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js';
7
7
  export { CallToolResult, ListToolsResult, Tool } from '@modelcontextprotocol/sdk/types.js';
8
8
  import '@modelcontextprotocol/sdk/client/auth.js';
@@ -87,10 +87,19 @@ declare class SSEConnectionManager {
87
87
  * Get an existing client or create and connect a new one for the session.
88
88
  */
89
89
  private getOrCreateClient;
90
+ private listPolicyFilteredTools;
90
91
  /**
91
92
  * List tools from a session
92
93
  */
93
94
  private listTools;
95
+ /**
96
+ * Get all raw tools with effective access state for management UI.
97
+ */
98
+ private getToolPolicy;
99
+ /**
100
+ * Update per-session tool access policy.
101
+ */
102
+ private setToolPolicy;
94
103
  /**
95
104
  * Call a tool on the MCP server
96
105
  */