@mcp-ts/sdk 2.4.4 → 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.
- package/dist/adapters/agui-adapter.d.mts +3 -3
- package/dist/adapters/agui-adapter.d.ts +3 -3
- package/dist/adapters/agui-adapter.js.map +1 -1
- 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/agui-middleware.js.map +1 -1
- package/dist/adapters/agui-middleware.mjs.map +1 -1
- package/dist/adapters/ai-adapter.d.mts +3 -3
- package/dist/adapters/ai-adapter.d.ts +3 -3
- package/dist/adapters/ai-adapter.js.map +1 -1
- 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 +2 -2
- package/dist/adapters/langchain-adapter.js.map +1 -1
- package/dist/adapters/langchain-adapter.mjs +2 -2
- package/dist/adapters/langchain-adapter.mjs.map +1 -1
- package/dist/adapters/mastra-adapter.d.mts +2 -2
- package/dist/adapters/mastra-adapter.d.ts +2 -2
- package/dist/adapters/mastra-adapter.js +2 -2
- package/dist/adapters/mastra-adapter.js.map +1 -1
- package/dist/adapters/mastra-adapter.mjs +2 -2
- package/dist/adapters/mastra-adapter.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 +6 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +6 -0
- package/dist/client/index.mjs.map +1 -1
- package/dist/client/react.d.mts +15 -4
- package/dist/client/react.d.ts +15 -4
- package/dist/client/react.js +36 -6
- package/dist/client/react.js.map +1 -1
- package/dist/client/react.mjs +36 -6
- package/dist/client/react.mjs.map +1 -1
- package/dist/client/vue.d.mts +4 -4
- package/dist/client/vue.d.ts +4 -4
- package/dist/client/vue.js +6 -0
- package/dist/client/vue.js.map +1 -1
- package/dist/client/vue.mjs +6 -0
- package/dist/client/vue.mjs.map +1 -1
- package/dist/{index-CkM3p0eE.d.mts → index-CTURVnom.d.mts} +5 -1
- package/dist/{index-CZk2gu2E.d.ts → index-sVcqrhf7.d.ts} +5 -1
- package/dist/index.d.mts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +374 -130
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +370 -130
- package/dist/index.mjs.map +1 -1
- package/dist/{multi-session-client-ChQrBZhF.d.mts → multi-session-client-CSPSHHla.d.ts} +14 -2
- package/dist/{multi-session-client-QOOPdEVp.d.ts → multi-session-client-DMZGVABI.d.mts} +14 -2
- package/dist/server/index.d.mts +13 -4
- package/dist/server/index.d.ts +13 -4
- package/dist/server/index.js +368 -130
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +364 -130
- package/dist/server/index.mjs.map +1 -1
- package/dist/shared/index.d.mts +4 -4
- package/dist/shared/index.d.ts +4 -4
- package/dist/shared/index.js +2 -6
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/index.mjs +2 -6
- package/dist/shared/index.mjs.map +1 -1
- package/dist/{tool-router-DQ-HrD7W.d.ts → tool-router-CS9l0w4a.d.ts} +1 -1
- package/dist/{tool-router-CGs3IDOJ.d.mts → tool-router-CVLBaCwH.d.mts} +1 -1
- package/dist/{types-Bf-7GOLW.d.mts → types-DK_NGWd4.d.mts} +37 -3
- package/dist/{types-Bf-7GOLW.d.ts → types-DK_NGWd4.d.ts} +37 -3
- package/migrations/neon/20260513010000_install_mcp_sessions.sql +1 -0
- package/migrations/supabase/20260330195700_install_mcp_sessions.sql +1 -0
- package/package.json +1 -1
- package/src/adapters/agui-adapter.ts +6 -2
- package/src/adapters/ai-adapter.ts +3 -1
- package/src/adapters/langchain-adapter.ts +5 -3
- package/src/adapters/mastra-adapter.ts +5 -3
- package/src/client/core/sse-client.ts +17 -0
- package/src/client/react/use-mcp.ts +63 -0
- package/src/server/handlers/sse-handler.ts +117 -10
- package/src/server/mcp/multi-session-client.ts +7 -3
- package/src/server/mcp/oauth-client.ts +78 -55
- package/src/server/mcp/tool-policy-gateway.ts +90 -0
- package/src/server/storage/index.ts +1 -1
- package/src/server/storage/neon-backend.ts +65 -60
- package/src/server/storage/session-lifecycle.ts +5 -0
- package/src/server/storage/supabase-backend.ts +27 -15
- package/src/server/storage/tool-policy.ts +89 -0
- package/src/server/storage/types.ts +11 -0
- package/src/shared/types.ts +48 -1
- package/src/shared/utils.ts +16 -14
package/dist/client/react.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { c as SSEClient, e as AppHostOptions, f as AppHostClient, a as AppHost } from '../index-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
*/
|
package/dist/client/react.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { c as SSEClient, e as AppHostOptions, f as AppHostClient, a as AppHost } from '../index-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
*/
|
package/dist/client/react.js
CHANGED
|
@@ -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,
|
|
@@ -634,12 +668,8 @@ function useMcp(options) {
|
|
|
634
668
|
}
|
|
635
669
|
var OAUTH_STATE_SEPARATOR = ".";
|
|
636
670
|
nanoid.customAlphabet(
|
|
637
|
-
"
|
|
638
|
-
|
|
639
|
-
);
|
|
640
|
-
nanoid.customAlphabet(
|
|
641
|
-
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
|
|
642
|
-
11
|
|
671
|
+
"abcdefghijklmnopqrstuvwxyz0123456789",
|
|
672
|
+
12
|
|
643
673
|
);
|
|
644
674
|
function parseOAuthState(state) {
|
|
645
675
|
const separatorIndex = state.indexOf(OAUTH_STATE_SEPARATOR);
|