@mcp-ts/sdk 1.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/LICENSE +21 -0
- package/README.md +297 -0
- package/dist/adapters/agui-adapter.d.mts +119 -0
- package/dist/adapters/agui-adapter.d.ts +119 -0
- package/dist/adapters/agui-adapter.js +109 -0
- package/dist/adapters/agui-adapter.js.map +1 -0
- package/dist/adapters/agui-adapter.mjs +107 -0
- package/dist/adapters/agui-adapter.mjs.map +1 -0
- package/dist/adapters/agui-middleware.d.mts +171 -0
- package/dist/adapters/agui-middleware.d.ts +171 -0
- package/dist/adapters/agui-middleware.js +429 -0
- package/dist/adapters/agui-middleware.js.map +1 -0
- package/dist/adapters/agui-middleware.mjs +417 -0
- package/dist/adapters/agui-middleware.mjs.map +1 -0
- package/dist/adapters/ai-adapter.d.mts +38 -0
- package/dist/adapters/ai-adapter.d.ts +38 -0
- package/dist/adapters/ai-adapter.js +82 -0
- package/dist/adapters/ai-adapter.js.map +1 -0
- package/dist/adapters/ai-adapter.mjs +80 -0
- package/dist/adapters/ai-adapter.mjs.map +1 -0
- package/dist/adapters/langchain-adapter.d.mts +46 -0
- package/dist/adapters/langchain-adapter.d.ts +46 -0
- package/dist/adapters/langchain-adapter.js +102 -0
- package/dist/adapters/langchain-adapter.js.map +1 -0
- package/dist/adapters/langchain-adapter.mjs +100 -0
- package/dist/adapters/langchain-adapter.mjs.map +1 -0
- package/dist/adapters/mastra-adapter.d.mts +49 -0
- package/dist/adapters/mastra-adapter.d.ts +49 -0
- package/dist/adapters/mastra-adapter.js +95 -0
- package/dist/adapters/mastra-adapter.js.map +1 -0
- package/dist/adapters/mastra-adapter.mjs +93 -0
- package/dist/adapters/mastra-adapter.mjs.map +1 -0
- package/dist/client/index.d.mts +119 -0
- package/dist/client/index.d.ts +119 -0
- package/dist/client/index.js +225 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/index.mjs +223 -0
- package/dist/client/index.mjs.map +1 -0
- package/dist/client/react.d.mts +151 -0
- package/dist/client/react.d.ts +151 -0
- package/dist/client/react.js +492 -0
- package/dist/client/react.js.map +1 -0
- package/dist/client/react.mjs +489 -0
- package/dist/client/react.mjs.map +1 -0
- package/dist/client/vue.d.mts +157 -0
- package/dist/client/vue.d.ts +157 -0
- package/dist/client/vue.js +474 -0
- package/dist/client/vue.js.map +1 -0
- package/dist/client/vue.mjs +471 -0
- package/dist/client/vue.mjs.map +1 -0
- package/dist/events-BP6WyRNh.d.mts +110 -0
- package/dist/events-BP6WyRNh.d.ts +110 -0
- package/dist/index.d.mts +10 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +2784 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2723 -0
- package/dist/index.mjs.map +1 -0
- package/dist/multi-session-client-BOFgPypS.d.ts +389 -0
- package/dist/multi-session-client-DMF3ED2O.d.mts +389 -0
- package/dist/server/index.d.mts +269 -0
- package/dist/server/index.d.ts +269 -0
- package/dist/server/index.js +2444 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/index.mjs +2414 -0
- package/dist/server/index.mjs.map +1 -0
- package/dist/shared/index.d.mts +24 -0
- package/dist/shared/index.d.ts +24 -0
- package/dist/shared/index.js +223 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/index.mjs +190 -0
- package/dist/shared/index.mjs.map +1 -0
- package/dist/types-SbDlA2VX.d.mts +153 -0
- package/dist/types-SbDlA2VX.d.ts +153 -0
- package/dist/utils-0qmYrqoa.d.mts +92 -0
- package/dist/utils-0qmYrqoa.d.ts +92 -0
- package/package.json +165 -0
- package/src/adapters/agui-adapter.ts +210 -0
- package/src/adapters/agui-middleware.ts +512 -0
- package/src/adapters/ai-adapter.ts +115 -0
- package/src/adapters/langchain-adapter.ts +127 -0
- package/src/adapters/mastra-adapter.ts +126 -0
- package/src/client/core/sse-client.ts +340 -0
- package/src/client/index.ts +26 -0
- package/src/client/react/index.ts +10 -0
- package/src/client/react/useMcp.ts +558 -0
- package/src/client/vue/index.ts +10 -0
- package/src/client/vue/useMcp.ts +542 -0
- package/src/index.ts +11 -0
- package/src/server/handlers/nextjs-handler.ts +216 -0
- package/src/server/handlers/sse-handler.ts +699 -0
- package/src/server/index.ts +57 -0
- package/src/server/mcp/multi-session-client.ts +132 -0
- package/src/server/mcp/oauth-client.ts +1168 -0
- package/src/server/mcp/storage-oauth-provider.ts +239 -0
- package/src/server/storage/file-backend.ts +169 -0
- package/src/server/storage/index.ts +115 -0
- package/src/server/storage/memory-backend.ts +132 -0
- package/src/server/storage/redis-backend.ts +210 -0
- package/src/server/storage/redis.ts +160 -0
- package/src/server/storage/types.ts +109 -0
- package/src/shared/constants.ts +29 -0
- package/src/shared/errors.ts +133 -0
- package/src/shared/events.ts +166 -0
- package/src/shared/index.ts +70 -0
- package/src/shared/types.ts +274 -0
- package/src/shared/utils.ts +16 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
export { M as MCPClient, a as MultiSessionClient, S as StorageOAuthClientProvider } from '../multi-session-client-BOFgPypS.js';
|
|
2
|
+
export { U as UnauthorizedError, s as sanitizeServerLabel } from '../utils-0qmYrqoa.js';
|
|
3
|
+
import { OAuthClientInformationMixed, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js';
|
|
4
|
+
export { OAuthClientInformation, OAuthClientInformationFull, OAuthClientMetadata, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js';
|
|
5
|
+
import { M as McpConnectionEvent, d as McpObservabilityEvent } from '../events-BP6WyRNh.js';
|
|
6
|
+
export { D as Disposable, E as Emitter, b as Event, c as McpConnectionState } from '../events-BP6WyRNh.js';
|
|
7
|
+
import { q as McpRpcResponse, p as McpRpcRequest } from '../types-SbDlA2VX.js';
|
|
8
|
+
export { a as CallToolRequest, b as CallToolResponse, f as ConnectRequest, g as ConnectResponse, m as ListToolsResponse, T as ToolInfo } from '../types-SbDlA2VX.js';
|
|
9
|
+
export { CallToolResult, ListToolsResult, Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
10
|
+
import '@modelcontextprotocol/sdk/client/auth.js';
|
|
11
|
+
|
|
12
|
+
interface SessionData {
|
|
13
|
+
sessionId: string;
|
|
14
|
+
serverId?: string;
|
|
15
|
+
serverName?: string;
|
|
16
|
+
serverUrl: string;
|
|
17
|
+
transportType: 'sse' | 'streamable_http';
|
|
18
|
+
callbackUrl: string;
|
|
19
|
+
createdAt: number;
|
|
20
|
+
identity?: string;
|
|
21
|
+
headers?: Record<string, string>;
|
|
22
|
+
clientInformation?: OAuthClientInformationMixed;
|
|
23
|
+
tokens?: OAuthTokens;
|
|
24
|
+
codeVerifier?: string;
|
|
25
|
+
clientId?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Interface for MCP Session Storage Backends
|
|
29
|
+
*/
|
|
30
|
+
interface StorageBackend {
|
|
31
|
+
/**
|
|
32
|
+
* Optional initialization (e.g., database connection)
|
|
33
|
+
*/
|
|
34
|
+
init?(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Generates a unique session ID
|
|
37
|
+
*/
|
|
38
|
+
generateSessionId(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Stores or updates a session
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* Creates a new session. Throws if session already exists.
|
|
44
|
+
* @param session - Session data to create
|
|
45
|
+
* @param ttl - Optional TTL in seconds (defaults to backend's default)
|
|
46
|
+
*/
|
|
47
|
+
createSession(session: SessionData, ttl?: number): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Updates an existing session with partial data. Throws if session does not exist.
|
|
50
|
+
* @param identity - User identity
|
|
51
|
+
* @param sessionId - Session identifier
|
|
52
|
+
* @param data - Partial session data to update
|
|
53
|
+
* @param ttl - Optional TTL in seconds (defaults to backend's default)
|
|
54
|
+
*/
|
|
55
|
+
updateSession(identity: string, sessionId: string, data: Partial<SessionData>, ttl?: number): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Retrieves a session
|
|
58
|
+
*/
|
|
59
|
+
getSession(identity: string, sessionId: string): Promise<SessionData | null>;
|
|
60
|
+
/**
|
|
61
|
+
* Gets full session data for all of an identity's sessions
|
|
62
|
+
*/
|
|
63
|
+
getIdentitySessionsData(identity: string): Promise<SessionData[]>;
|
|
64
|
+
/**
|
|
65
|
+
* Removes a session
|
|
66
|
+
*/
|
|
67
|
+
removeSession(identity: string, sessionId: string): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Gets all sessions IDs of an identity
|
|
70
|
+
*/
|
|
71
|
+
getIdentityMcpSessions(identity: string): Promise<string[]>;
|
|
72
|
+
/**
|
|
73
|
+
* Gets all session IDs across all users (Admin)
|
|
74
|
+
*/
|
|
75
|
+
getAllSessionIds(): Promise<string[]>;
|
|
76
|
+
/**
|
|
77
|
+
* Clears all sessions (Admin)
|
|
78
|
+
*/
|
|
79
|
+
clearAll(): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Clean up expired sessions
|
|
82
|
+
*/
|
|
83
|
+
cleanupExpiredSessions(): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Disconnect from storage backend
|
|
86
|
+
*/
|
|
87
|
+
disconnect(): Promise<void>;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Global session store instance
|
|
92
|
+
* Uses lazy initialization with a Proxy to handle async setup transparently
|
|
93
|
+
*/
|
|
94
|
+
declare const storage: StorageBackend;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* SSE (Server-Sent Events) Handler for MCP Connections
|
|
98
|
+
* Provides real-time connection state updates to clients
|
|
99
|
+
* Based on Cloudflare's agents pattern but adapted for HTTP/SSE
|
|
100
|
+
*/
|
|
101
|
+
|
|
102
|
+
interface ClientMetadata {
|
|
103
|
+
clientName?: string;
|
|
104
|
+
clientUri?: string;
|
|
105
|
+
logoUri?: string;
|
|
106
|
+
policyUri?: string;
|
|
107
|
+
}
|
|
108
|
+
interface SSEHandlerOptions {
|
|
109
|
+
/**
|
|
110
|
+
* User/Client identifier
|
|
111
|
+
*/
|
|
112
|
+
identity: string;
|
|
113
|
+
/**
|
|
114
|
+
* Optional callback for authentication/authorization
|
|
115
|
+
*/
|
|
116
|
+
onAuth?: (identity: string) => Promise<boolean>;
|
|
117
|
+
/**
|
|
118
|
+
* Heartbeat interval in ms (default: 30000)
|
|
119
|
+
*/
|
|
120
|
+
heartbeatInterval?: number;
|
|
121
|
+
/**
|
|
122
|
+
* Static OAuth client metadata defaults (for all connections)
|
|
123
|
+
*/
|
|
124
|
+
clientDefaults?: ClientMetadata;
|
|
125
|
+
/**
|
|
126
|
+
* Dynamic OAuth client metadata getter (per-request, useful for multi-tenant)
|
|
127
|
+
* Takes precedence over clientDefaults
|
|
128
|
+
*/
|
|
129
|
+
getClientMetadata?: (request?: any) => ClientMetadata | Promise<ClientMetadata>;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* SSE Connection Manager
|
|
133
|
+
* Handles a single SSE connection and manages MCP operations
|
|
134
|
+
*/
|
|
135
|
+
declare class SSEConnectionManager {
|
|
136
|
+
private options;
|
|
137
|
+
private sendEvent;
|
|
138
|
+
private identity;
|
|
139
|
+
private clients;
|
|
140
|
+
private heartbeatTimer?;
|
|
141
|
+
private isActive;
|
|
142
|
+
constructor(options: SSEHandlerOptions, sendEvent: (event: McpConnectionEvent | McpObservabilityEvent | McpRpcResponse) => void);
|
|
143
|
+
/**
|
|
144
|
+
* Get resolved client metadata (dynamic > static > defaults)
|
|
145
|
+
*/
|
|
146
|
+
private getResolvedClientMetadata;
|
|
147
|
+
/**
|
|
148
|
+
* Start heartbeat to keep connection alive
|
|
149
|
+
*/
|
|
150
|
+
private startHeartbeat;
|
|
151
|
+
/**
|
|
152
|
+
* Handle incoming RPC requests
|
|
153
|
+
*/
|
|
154
|
+
handleRequest(request: McpRpcRequest): Promise<void>;
|
|
155
|
+
/**
|
|
156
|
+
* Get all user sessions
|
|
157
|
+
*/
|
|
158
|
+
private getSessions;
|
|
159
|
+
/**
|
|
160
|
+
* Connect to an MCP server
|
|
161
|
+
*/
|
|
162
|
+
private connect;
|
|
163
|
+
/**
|
|
164
|
+
* Disconnect from an MCP server
|
|
165
|
+
*/
|
|
166
|
+
private disconnect;
|
|
167
|
+
/**
|
|
168
|
+
* Helper to get or restore a client
|
|
169
|
+
*/
|
|
170
|
+
private getOrCreateClient;
|
|
171
|
+
/**
|
|
172
|
+
* List tools from a session
|
|
173
|
+
*/
|
|
174
|
+
private listTools;
|
|
175
|
+
/**
|
|
176
|
+
* Call a tool
|
|
177
|
+
*/
|
|
178
|
+
private callTool;
|
|
179
|
+
/**
|
|
180
|
+
* Refresh/validate a session
|
|
181
|
+
*/
|
|
182
|
+
private restoreSession;
|
|
183
|
+
/**
|
|
184
|
+
* Complete OAuth authorization
|
|
185
|
+
*/
|
|
186
|
+
private finishAuth;
|
|
187
|
+
/**
|
|
188
|
+
* List prompts from a session
|
|
189
|
+
*/
|
|
190
|
+
private listPrompts;
|
|
191
|
+
/**
|
|
192
|
+
* Get a specific prompt
|
|
193
|
+
*/
|
|
194
|
+
private getPrompt;
|
|
195
|
+
/**
|
|
196
|
+
* List resources from a session
|
|
197
|
+
*/
|
|
198
|
+
private listResources;
|
|
199
|
+
/**
|
|
200
|
+
* Read a specific resource
|
|
201
|
+
*/
|
|
202
|
+
private readResource;
|
|
203
|
+
/**
|
|
204
|
+
* Emit connection event
|
|
205
|
+
*/
|
|
206
|
+
private emitConnectionEvent;
|
|
207
|
+
/**
|
|
208
|
+
* Cleanup and close all connections
|
|
209
|
+
*/
|
|
210
|
+
dispose(): void;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Create SSE endpoint handler
|
|
214
|
+
* Compatible with various Node.js frameworks
|
|
215
|
+
*/
|
|
216
|
+
declare function createSSEHandler(options: SSEHandlerOptions): (req: any, res: any) => Promise<void>;
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Next.js App Router Handler for MCP SSE
|
|
220
|
+
* Provides a clean, zero-boilerplate API for Next.js applications
|
|
221
|
+
*/
|
|
222
|
+
|
|
223
|
+
interface NextMcpHandlerOptions {
|
|
224
|
+
/**
|
|
225
|
+
* Extract identity from request (default: from 'identity' query param)
|
|
226
|
+
*/
|
|
227
|
+
getIdentity?: (request: Request) => string | null;
|
|
228
|
+
/**
|
|
229
|
+
* Extract auth token from request (default: from 'token' query param or Authorization header)
|
|
230
|
+
*/
|
|
231
|
+
getAuthToken?: (request: Request) => string | null;
|
|
232
|
+
/**
|
|
233
|
+
* Authenticate user and verify access (optional)
|
|
234
|
+
* Return true if user is authenticated, false otherwise
|
|
235
|
+
*/
|
|
236
|
+
authenticate?: (identity: string, token: string | null) => Promise<boolean> | boolean;
|
|
237
|
+
/**
|
|
238
|
+
* Heartbeat interval in milliseconds (default: 30000)
|
|
239
|
+
*/
|
|
240
|
+
heartbeatInterval?: number;
|
|
241
|
+
/**
|
|
242
|
+
* Static OAuth client metadata defaults (for all connections)
|
|
243
|
+
* Use this for single-tenant applications with fixed branding
|
|
244
|
+
*/
|
|
245
|
+
clientDefaults?: ClientMetadata;
|
|
246
|
+
/**
|
|
247
|
+
* Dynamic OAuth client metadata getter (per-request, useful for multi-tenant)
|
|
248
|
+
* Use this when you need different branding based on request (tenant, domain, etc.)
|
|
249
|
+
* Takes precedence over clientDefaults
|
|
250
|
+
*/
|
|
251
|
+
getClientMetadata?: (request: Request) => ClientMetadata | Promise<ClientMetadata>;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Creates Next.js App Router handlers (GET and POST) for MCP SSE endpoint
|
|
255
|
+
*
|
|
256
|
+
* @example
|
|
257
|
+
* ```typescript
|
|
258
|
+
* // app/api/mcp/route.ts
|
|
259
|
+
* import { createNextMcpHandler } from '@mcp-ts/core/server';
|
|
260
|
+
*
|
|
261
|
+
* export const { GET, POST } = createNextMcpHandler();
|
|
262
|
+
* ```
|
|
263
|
+
*/
|
|
264
|
+
declare function createNextMcpHandler(options?: NextMcpHandlerOptions): {
|
|
265
|
+
GET: (request: Request) => Promise<Response>;
|
|
266
|
+
POST: (request: Request) => Promise<Response>;
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
export { type ClientMetadata, McpConnectionEvent, McpObservabilityEvent, McpRpcRequest, McpRpcResponse, type NextMcpHandlerOptions, SSEConnectionManager, type SSEHandlerOptions, type StorageBackend, createNextMcpHandler, createSSEHandler, storage };
|