@karashiiro/mcp 0.5.0 → 0.7.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/README.md +37 -0
- package/dist/event-store.d.ts +20 -1
- package/dist/event-store.d.ts.map +1 -1
- package/dist/event-store.js +26 -0
- package/dist/event-store.js.map +1 -1
- package/dist/http.d.ts +35 -4
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +135 -13
- package/dist/http.js.map +1 -1
- package/dist/types.d.ts +39 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -134,6 +134,43 @@ const handle = await serveHttp(createServer, {
|
|
|
134
134
|
});
|
|
135
135
|
```
|
|
136
136
|
|
|
137
|
+
#### Custom Event Store Factory
|
|
138
|
+
|
|
139
|
+
By default, sessions use an in-memory event store that loses events on server restart. You can provide a custom event store factory for persistent storage:
|
|
140
|
+
|
|
141
|
+
```ts
|
|
142
|
+
import { serveHttp, InMemoryEventStore } from "@karashiiro/mcp/http";
|
|
143
|
+
|
|
144
|
+
const handle = await serveHttp(
|
|
145
|
+
(sessionId) => createServer(),
|
|
146
|
+
{
|
|
147
|
+
port: 8080,
|
|
148
|
+
sessions: {
|
|
149
|
+
// Custom factory with options
|
|
150
|
+
eventStoreFactory: (sessionId) => {
|
|
151
|
+
return new InMemoryEventStore({
|
|
152
|
+
maxEventsPerStream: 1000, // Limit events per stream
|
|
153
|
+
});
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
);
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
The factory can be async for implementations requiring initialization:
|
|
161
|
+
|
|
162
|
+
```ts
|
|
163
|
+
sessions: {
|
|
164
|
+
eventStoreFactory: async (sessionId) => {
|
|
165
|
+
// Example: Redis-backed event store
|
|
166
|
+
const store = await createRedisEventStore(sessionId);
|
|
167
|
+
return store;
|
|
168
|
+
},
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Custom event stores must implement the `EventStore` interface from `@karashiiro/mcp/http`, which includes the `clear()` method for cleanup.
|
|
173
|
+
|
|
137
174
|
#### Legacy SSE Support
|
|
138
175
|
|
|
139
176
|
For backwards compatibility with older MCP clients that use SSE transport:
|
package/dist/event-store.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { EventStore } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
|
|
2
1
|
import type { JSONRPCMessage } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import type { EventStore } from "./types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Options for configuring the in-memory event store.
|
|
5
5
|
*/
|
|
@@ -18,6 +18,7 @@ export interface InMemoryEventStoreOptions {
|
|
|
18
18
|
*/
|
|
19
19
|
export declare class InMemoryEventStore implements EventStore {
|
|
20
20
|
private events;
|
|
21
|
+
private initializeRequests;
|
|
21
22
|
private readonly maxEventsPerStream;
|
|
22
23
|
constructor(options?: InMemoryEventStoreOptions);
|
|
23
24
|
storeEvent(streamId: string, message: JSONRPCMessage): Promise<string>;
|
|
@@ -30,6 +31,24 @@ export declare class InMemoryEventStore implements EventStore {
|
|
|
30
31
|
* Call this when the session is being deleted.
|
|
31
32
|
*/
|
|
32
33
|
clear(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Check if the event store has data for the given session.
|
|
36
|
+
* @param sessionId - The ID of the session to check
|
|
37
|
+
* @returns true if an initialize request exists for the session
|
|
38
|
+
*/
|
|
39
|
+
hasSession(sessionId: string): Promise<boolean>;
|
|
40
|
+
/**
|
|
41
|
+
* Store the initialization request for session restoration.
|
|
42
|
+
* @param sessionId - The ID of the session
|
|
43
|
+
* @param request - The initialize request message to store
|
|
44
|
+
*/
|
|
45
|
+
storeInitializeRequest(sessionId: string, request: JSONRPCMessage): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Retrieve the stored initialization request.
|
|
48
|
+
* @param sessionId - The ID of the session
|
|
49
|
+
* @returns The stored initialize request, or undefined if not found
|
|
50
|
+
*/
|
|
51
|
+
getInitializeRequest(sessionId: string): Promise<JSONRPCMessage | undefined>;
|
|
33
52
|
/**
|
|
34
53
|
* Get the current number of events stored.
|
|
35
54
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-store.d.ts","sourceRoot":"","sources":["../src/event-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"event-store.d.ts","sourceRoot":"","sources":["../src/event-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,UAAU;IACnD,OAAO,CAAC,MAAM,CAGV;IACJ,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IAExD,YAAY,OAAO,GAAE,yBAA8B,EAElD;IAEK,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAU3E;IAED;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;;OAGG;IACH,KAAK,IAAI,IAAI,CAGZ;IAED;;;;OAIG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpD;IAED;;;;OAIG;IACG,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtF;IAED;;;;OAIG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAEjF;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,EACE,IAAI,EACL,EAAE;QAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,GACvE,OAAO,CAAC,MAAM,CAAC,CA2BjB;CACF"}
|
package/dist/event-store.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export class InMemoryEventStore {
|
|
7
7
|
events = new Map();
|
|
8
|
+
initializeRequests = new Map();
|
|
8
9
|
maxEventsPerStream;
|
|
9
10
|
constructor(options = {}) {
|
|
10
11
|
this.maxEventsPerStream = options.maxEventsPerStream;
|
|
@@ -40,6 +41,31 @@ export class InMemoryEventStore {
|
|
|
40
41
|
*/
|
|
41
42
|
clear() {
|
|
42
43
|
this.events.clear();
|
|
44
|
+
this.initializeRequests.clear();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check if the event store has data for the given session.
|
|
48
|
+
* @param sessionId - The ID of the session to check
|
|
49
|
+
* @returns true if an initialize request exists for the session
|
|
50
|
+
*/
|
|
51
|
+
async hasSession(sessionId) {
|
|
52
|
+
return this.initializeRequests.has(sessionId);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Store the initialization request for session restoration.
|
|
56
|
+
* @param sessionId - The ID of the session
|
|
57
|
+
* @param request - The initialize request message to store
|
|
58
|
+
*/
|
|
59
|
+
async storeInitializeRequest(sessionId, request) {
|
|
60
|
+
this.initializeRequests.set(sessionId, request);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Retrieve the stored initialization request.
|
|
64
|
+
* @param sessionId - The ID of the session
|
|
65
|
+
* @returns The stored initialize request, or undefined if not found
|
|
66
|
+
*/
|
|
67
|
+
async getInitializeRequest(sessionId) {
|
|
68
|
+
return this.initializeRequests.get(sessionId);
|
|
43
69
|
}
|
|
44
70
|
/**
|
|
45
71
|
* Get the current number of events stored.
|
package/dist/event-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-store.js","sourceRoot":"","sources":["../src/event-store.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IACrB,MAAM,GAAG,IAAI,GAAG,EAGrB,CAAC;
|
|
1
|
+
{"version":3,"file":"event-store.js","sourceRoot":"","sources":["../src/event-store.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { EventStoreFactory, ServerHandle, StatelessServerFactory, StatefulServerFactory } from "./types.js";
|
|
3
|
+
export type { EventStore, EventStoreFactory, ServerHandle, StatelessServerFactory, StatefulServerFactory, } from "./types.js";
|
|
3
4
|
export type { ServerFactory } from "./types.js";
|
|
4
5
|
/**
|
|
5
6
|
* Options for legacy SSE transport compatibility.
|
|
@@ -26,21 +27,51 @@ export interface HttpServerSessionOptions {
|
|
|
26
27
|
cleanupIntervalMs?: number;
|
|
27
28
|
/**
|
|
28
29
|
* Callback invoked when a session is closed.
|
|
29
|
-
* Called for
|
|
30
|
+
* Called for cleanup paths: TTL expiration, DELETE requests, transport close, and server shutdown.
|
|
30
31
|
* Useful for cleaning up session-scoped resources like database connections or client state.
|
|
31
32
|
*
|
|
32
|
-
* Note:
|
|
33
|
+
* Note: Event stores are only cleared on explicit DELETE requests to allow session restoration
|
|
34
|
+
* from persistent stores (Redis, DB) after server restarts or TTL expiration. If you need to
|
|
35
|
+
* clean up old event store data, implement a retention policy in your EventStore implementation.
|
|
36
|
+
*
|
|
37
|
+
* In TTL cleanup, the callback is invoked but not awaited to avoid blocking the cleanup interval.
|
|
33
38
|
* In all other paths (DELETE, transport close, shutdown), async callbacks are awaited.
|
|
34
39
|
*
|
|
35
40
|
* @param sessionId - The ID of the session being closed
|
|
36
41
|
*/
|
|
37
42
|
onSessionClosed?: (sessionId: string) => void | Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Factory function for creating event stores per session.
|
|
45
|
+
* Receives the session ID and returns an EventStore implementation.
|
|
46
|
+
* Defaults to creating InMemoryEventStore instances.
|
|
47
|
+
*
|
|
48
|
+
* Use this to provide custom event storage (e.g., Redis-backed) for
|
|
49
|
+
* persistent resumability across server restarts.
|
|
50
|
+
*
|
|
51
|
+
* @param sessionId - The ID of the session being created
|
|
52
|
+
* @returns EventStore instance (sync or async)
|
|
53
|
+
*/
|
|
54
|
+
eventStoreFactory?: EventStoreFactory;
|
|
38
55
|
/**
|
|
39
56
|
* Enable legacy SSE transport compatibility.
|
|
40
57
|
* When provided, adds /sse and /messages endpoints for older clients.
|
|
41
58
|
* @deprecated SSE transport is deprecated in favor of Streamable HTTP.
|
|
42
59
|
*/
|
|
43
60
|
legacySse?: LegacySseOptions;
|
|
61
|
+
/**
|
|
62
|
+
* Callback invoked after a session has been restored from persistent storage.
|
|
63
|
+
* This is called AFTER the initialized notification has been sent and processed,
|
|
64
|
+
* allowing the server's oninitialized callback to complete.
|
|
65
|
+
*
|
|
66
|
+
* Use this to wait for any async initialization that happens in your server's
|
|
67
|
+
* oninitialized callback (e.g., connecting upstream servers, loading resources).
|
|
68
|
+
*
|
|
69
|
+
* The restoration will not complete until this callback resolves.
|
|
70
|
+
*
|
|
71
|
+
* @param sessionId - The ID of the restored session
|
|
72
|
+
* @param server - The restored McpServer instance
|
|
73
|
+
*/
|
|
74
|
+
onSessionRestored?: (sessionId: string, server: McpServer) => Promise<void>;
|
|
44
75
|
}
|
|
45
76
|
/**
|
|
46
77
|
* Base HTTP server options without session configuration.
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,OAAO,KAAK,EAEV,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,kBAAkB,CAAC,EAAE,MAAM,MAAM,CAAC;IAClC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;;OAIG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,qBAAqB;IACvE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,qBAAqB;IACtE,QAAQ,EAAE,wBAAwB,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,0BAA0B,GAC1B,yBAAyB,CAAC;AAyD9B;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,aAAa,EAAE,sBAAsB,EACrC,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC,GAAG;IAC3D,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,GACA,OAAO,CAAC,YAAY,CAAC,CAAC;AAEzB;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,aAAa,EAAE,qBAAqB,EACpC,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG;IACxC,QAAQ,EAAE,wBAAwB,CAAC;CACpC,GACA,OAAO,CAAC,YAAY,CAAC,CAAC"}
|
package/dist/http.js
CHANGED
|
@@ -72,8 +72,12 @@ async function serveHttpStateless(serverFactory, options) {
|
|
|
72
72
|
*/
|
|
73
73
|
function serveHttpStateful(serverFactory, options) {
|
|
74
74
|
const sessions = new Map();
|
|
75
|
+
const restorationInProgress = new Map();
|
|
75
76
|
const sessionIdGenerator = options.sessions.sessionIdGenerator ?? uuidv4;
|
|
76
77
|
const onSessionClosed = options.sessions.onSessionClosed;
|
|
78
|
+
const onSessionRestored = options.sessions.onSessionRestored;
|
|
79
|
+
// Default event store factory creates in-memory instances
|
|
80
|
+
const eventStoreFactory = options.sessions.eventStoreFactory ?? (() => new InMemoryEventStore());
|
|
77
81
|
// Helper to safely invoke onSessionClosed callback
|
|
78
82
|
// Catches errors to prevent user code from breaking cleanup
|
|
79
83
|
const notifySessionClosed = (sessionId) => {
|
|
@@ -103,6 +107,106 @@ function serveHttpStateful(serverFactory, options) {
|
|
|
103
107
|
}
|
|
104
108
|
}
|
|
105
109
|
};
|
|
110
|
+
/**
|
|
111
|
+
* Attempt to restore a session from persistent storage.
|
|
112
|
+
* Only supported for Streamable HTTP sessions with event stores that implement
|
|
113
|
+
* the restoration methods (hasSession, getInitializeRequest).
|
|
114
|
+
*
|
|
115
|
+
* @param sessionId - The ID of the session to restore
|
|
116
|
+
* @returns The restored session state, or undefined if restoration is not possible
|
|
117
|
+
*/
|
|
118
|
+
const restoreSession = async (sessionId) => {
|
|
119
|
+
const eventStore = await eventStoreFactory(sessionId);
|
|
120
|
+
// Check if restoration is supported and session exists in the event store
|
|
121
|
+
if (!eventStore.hasSession || !eventStore.getInitializeRequest) {
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
const hasData = await eventStore.hasSession(sessionId);
|
|
125
|
+
if (!hasData) {
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
const initRequest = await eventStore.getInitializeRequest(sessionId);
|
|
129
|
+
if (!initRequest) {
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
// Recreate server and transport
|
|
133
|
+
const server = await serverFactory(sessionId);
|
|
134
|
+
let sessionState;
|
|
135
|
+
const transport = new WebStandardStreamableHTTPServerTransport({
|
|
136
|
+
sessionIdGenerator: () => sessionId,
|
|
137
|
+
eventStore,
|
|
138
|
+
onsessioninitialized: () => {
|
|
139
|
+
sessionState = {
|
|
140
|
+
type: "streamable-http",
|
|
141
|
+
transport,
|
|
142
|
+
server,
|
|
143
|
+
eventStore,
|
|
144
|
+
lastActivity: Date.now(),
|
|
145
|
+
activeStreams: 0,
|
|
146
|
+
};
|
|
147
|
+
sessions.set(sessionId, sessionState);
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
await server.connect(transport);
|
|
151
|
+
transport.onclose = () => {
|
|
152
|
+
// Don't clear event store on transport close - preserve data for potential
|
|
153
|
+
// session restoration. Event stores are only cleared on explicit DELETE.
|
|
154
|
+
sessions.delete(sessionId);
|
|
155
|
+
notifySessionClosed(sessionId);
|
|
156
|
+
};
|
|
157
|
+
// Create mock request to replay initialization
|
|
158
|
+
const mockInitRequest = new Request("http://localhost/mcp", {
|
|
159
|
+
method: "POST",
|
|
160
|
+
headers: {
|
|
161
|
+
"Content-Type": "application/json",
|
|
162
|
+
Accept: "application/json, text/event-stream",
|
|
163
|
+
},
|
|
164
|
+
body: JSON.stringify(initRequest),
|
|
165
|
+
});
|
|
166
|
+
// Process init request to restore session state
|
|
167
|
+
// Must consume response body to complete the request cycle
|
|
168
|
+
const initResponse = await transport.handleRequest(mockInitRequest);
|
|
169
|
+
if (initResponse.body) {
|
|
170
|
+
// Consume the response body (may be SSE stream)
|
|
171
|
+
const reader = initResponse.body.getReader();
|
|
172
|
+
while (true) {
|
|
173
|
+
const { done } = await reader.read();
|
|
174
|
+
if (done)
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// Send the "initialized" notification to complete the initialization flow
|
|
179
|
+
// This triggers the server's oninitialized callback which may initialize
|
|
180
|
+
// upstream connections or other session-scoped resources
|
|
181
|
+
const mockInitializedNotification = new Request("http://localhost/mcp", {
|
|
182
|
+
method: "POST",
|
|
183
|
+
headers: {
|
|
184
|
+
"Content-Type": "application/json",
|
|
185
|
+
Accept: "application/json, text/event-stream",
|
|
186
|
+
"mcp-session-id": sessionId,
|
|
187
|
+
},
|
|
188
|
+
body: JSON.stringify({
|
|
189
|
+
jsonrpc: "2.0",
|
|
190
|
+
method: "notifications/initialized",
|
|
191
|
+
params: {},
|
|
192
|
+
}),
|
|
193
|
+
});
|
|
194
|
+
const notifResponse = await transport.handleRequest(mockInitializedNotification);
|
|
195
|
+
if (notifResponse.body) {
|
|
196
|
+
const reader = notifResponse.body.getReader();
|
|
197
|
+
while (true) {
|
|
198
|
+
const { done } = await reader.read();
|
|
199
|
+
if (done)
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// Wait for full initialization if callback provided
|
|
204
|
+
// This allows the server's oninitialized callback to complete before returning
|
|
205
|
+
if (onSessionRestored) {
|
|
206
|
+
await onSessionRestored(sessionId, server);
|
|
207
|
+
}
|
|
208
|
+
return sessionState;
|
|
209
|
+
};
|
|
106
210
|
// Session TTL configuration
|
|
107
211
|
const sessionTtlMs = options.sessions.sessionTtlMs;
|
|
108
212
|
const cleanupIntervalMs = options.sessions.cleanupIntervalMs ?? 60000; // Default 1 minute
|
|
@@ -117,14 +221,12 @@ function serveHttpStateful(serverFactory, options) {
|
|
|
117
221
|
continue;
|
|
118
222
|
}
|
|
119
223
|
if (now - session.lastActivity > sessionTtlMs) {
|
|
120
|
-
// Session expired - close transport and remove
|
|
224
|
+
// Session expired - close transport and remove from memory
|
|
225
|
+
// Note: We do NOT clear the event store here to allow session restoration
|
|
226
|
+
// if the client reconnects. Event stores are only cleared on explicit DELETE.
|
|
121
227
|
session.transport.close().catch(() => {
|
|
122
228
|
// Ignore close errors for expired sessions
|
|
123
229
|
});
|
|
124
|
-
// Clear event store if this is a streamable HTTP session
|
|
125
|
-
if (session.type === "streamable-http") {
|
|
126
|
-
session.eventStore.clear();
|
|
127
|
-
}
|
|
128
230
|
sessions.delete(sessionId);
|
|
129
231
|
// Notify callback (fire and forget to avoid blocking interval)
|
|
130
232
|
notifySessionClosed(sessionId);
|
|
@@ -183,7 +285,13 @@ function serveHttpStateful(serverFactory, options) {
|
|
|
183
285
|
const sid = sessionIdGenerator();
|
|
184
286
|
// Create server with session ID (supports async factories)
|
|
185
287
|
const server = await serverFactory(sid);
|
|
186
|
-
|
|
288
|
+
// Call event store factory with session ID (supports async factories)
|
|
289
|
+
const eventStore = await eventStoreFactory(sid);
|
|
290
|
+
// Store the initialize request for potential session restoration
|
|
291
|
+
if (eventStore.storeInitializeRequest) {
|
|
292
|
+
// Cast through unknown because isInitializeRequest narrows to a type without jsonrpc
|
|
293
|
+
await eventStore.storeInitializeRequest(sid, body);
|
|
294
|
+
}
|
|
187
295
|
const transport = new WebStandardStreamableHTTPServerTransport({
|
|
188
296
|
// Use our pre-generated session ID
|
|
189
297
|
sessionIdGenerator: () => sid,
|
|
@@ -204,7 +312,8 @@ function serveHttpStateful(serverFactory, options) {
|
|
|
204
312
|
// Connect server to transport before handling the request
|
|
205
313
|
await server.connect(transport);
|
|
206
314
|
transport.onclose = () => {
|
|
207
|
-
|
|
315
|
+
// Don't clear event store on transport close - preserve data for potential
|
|
316
|
+
// session restoration. Event stores are only cleared on explicit DELETE.
|
|
208
317
|
sessions.delete(sid);
|
|
209
318
|
// Notify callback (fire and forget since onclose is sync)
|
|
210
319
|
notifySessionClosed(sid);
|
|
@@ -213,7 +322,22 @@ function serveHttpStateful(serverFactory, options) {
|
|
|
213
322
|
}
|
|
214
323
|
// Existing session
|
|
215
324
|
if (sessionId) {
|
|
216
|
-
|
|
325
|
+
let session = sessions.get(sessionId);
|
|
326
|
+
// Attempt restoration if session not in memory
|
|
327
|
+
if (!session) {
|
|
328
|
+
// Use restoration lock to prevent concurrent restoration attempts
|
|
329
|
+
let restorationPromise = restorationInProgress.get(sessionId);
|
|
330
|
+
if (!restorationPromise) {
|
|
331
|
+
restorationPromise = restoreSession(sessionId);
|
|
332
|
+
restorationInProgress.set(sessionId, restorationPromise);
|
|
333
|
+
}
|
|
334
|
+
try {
|
|
335
|
+
session = await restorationPromise;
|
|
336
|
+
}
|
|
337
|
+
finally {
|
|
338
|
+
restorationInProgress.delete(sessionId);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
217
341
|
if (!session) {
|
|
218
342
|
return c.text("Session not found", 404);
|
|
219
343
|
}
|
|
@@ -314,15 +438,13 @@ function serveHttpStateful(serverFactory, options) {
|
|
|
314
438
|
if (cleanupInterval) {
|
|
315
439
|
clearInterval(cleanupInterval);
|
|
316
440
|
}
|
|
317
|
-
// Close all active sessions
|
|
441
|
+
// Close all active sessions
|
|
442
|
+
// Event stores are NOT cleared - only explicit DELETE clears them
|
|
443
|
+
// This allows session restoration after server restart
|
|
318
444
|
for (const [sessionId, session] of sessions) {
|
|
319
445
|
await session.transport.close().catch(() => {
|
|
320
446
|
// Ignore close errors during shutdown
|
|
321
447
|
});
|
|
322
|
-
// Clear event store if this is a streamable HTTP session
|
|
323
|
-
if (session.type === "streamable-http") {
|
|
324
|
-
session.eventStore.clear();
|
|
325
|
-
}
|
|
326
448
|
// Notify callback (awaited since we're in async shutdown)
|
|
327
449
|
await notifySessionClosedAsync(sessionId);
|
|
328
450
|
}
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,38 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { EventStore as SdkEventStore } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
|
|
3
|
+
import type { JSONRPCMessage } from "@modelcontextprotocol/sdk/types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Extended EventStore interface that includes cleanup method and session restoration support.
|
|
6
|
+
* Custom event store implementations must implement this interface.
|
|
7
|
+
*/
|
|
8
|
+
export interface EventStore extends SdkEventStore {
|
|
9
|
+
/**
|
|
10
|
+
* Clear all events from the store.
|
|
11
|
+
* Called when the session is being closed/deleted.
|
|
12
|
+
*/
|
|
13
|
+
clear(): void;
|
|
14
|
+
/**
|
|
15
|
+
* Check if the event store has data for the given session.
|
|
16
|
+
* Used during session restoration to determine if a session can be restored.
|
|
17
|
+
* @param sessionId - The ID of the session to check
|
|
18
|
+
* @returns true if the session exists in the store, false otherwise
|
|
19
|
+
*/
|
|
20
|
+
hasSession?(sessionId: string): Promise<boolean>;
|
|
21
|
+
/**
|
|
22
|
+
* Store the initialization request for session restoration.
|
|
23
|
+
* Called when a new session is created so it can be replayed during restoration.
|
|
24
|
+
* @param sessionId - The ID of the session
|
|
25
|
+
* @param request - The initialize request message to store
|
|
26
|
+
*/
|
|
27
|
+
storeInitializeRequest?(sessionId: string, request: JSONRPCMessage): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Retrieve the stored initialization request.
|
|
30
|
+
* Used during session restoration to replay the original initialize request.
|
|
31
|
+
* @param sessionId - The ID of the session
|
|
32
|
+
* @returns The stored initialize request, or undefined if not found
|
|
33
|
+
*/
|
|
34
|
+
getInitializeRequest?(sessionId: string): Promise<JSONRPCMessage | undefined>;
|
|
35
|
+
}
|
|
2
36
|
/**
|
|
3
37
|
* Handle returned by serve functions for controlling the server lifecycle.
|
|
4
38
|
*/
|
|
@@ -16,6 +50,11 @@ export type StatelessServerFactory = () => McpServer | Promise<McpServer>;
|
|
|
16
50
|
* Used by serveHttp with sessions enabled.
|
|
17
51
|
*/
|
|
18
52
|
export type StatefulServerFactory = (sessionId: string) => McpServer | Promise<McpServer>;
|
|
53
|
+
/**
|
|
54
|
+
* Factory function for creating event stores (receives session ID).
|
|
55
|
+
* Used by serveHttp with sessions enabled to support custom event storage implementations.
|
|
56
|
+
*/
|
|
57
|
+
export type EventStoreFactory = (sessionId: string) => EventStore | Promise<EventStore>;
|
|
19
58
|
/**
|
|
20
59
|
* Union type for all server factory signatures.
|
|
21
60
|
* @deprecated Prefer using StatelessServerFactory or StatefulServerFactory directly.
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAE1E;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAClC,SAAS,EAAE,MAAM,KACd,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAEpC;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,SAAS,CAAC,EAAE,MAAM,KACf,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,IAAI,aAAa,EAAE,MAAM,+DAA+D,CAAC;AACjH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE;;;GAGG;AACH,MAAM,WAAW,UAAW,SAAQ,aAAa;IAC/C;;;OAGG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;;;;OAKG;IACH,UAAU,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjD;;;;;OAKG;IACH,sBAAsB,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnF;;;;;OAKG;IACH,oBAAoB,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;CAC/E;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAE1E;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAClC,SAAS,EAAE,MAAM,KACd,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAEpC;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,SAAS,EAAE,MAAM,KACd,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,SAAS,CAAC,EAAE,MAAM,KACf,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC"}
|