@mongodb-js/mcp-http-runners 3.0.0-prerelease.2 → 3.0.0-prerelease.3
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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/legacyMcpHttpHandler.d.ts +88 -0
- package/dist/legacyMcpHttpHandler.d.ts.map +1 -0
- package/dist/legacyMcpHttpHandler.js +294 -0
- package/dist/legacyMcpHttpHandler.js.map +1 -0
- package/dist/mcpHttpServer.d.ts +47 -48
- package/dist/mcpHttpServer.d.ts.map +1 -1
- package/dist/mcpHttpServer.js +101 -364
- package/dist/mcpHttpServer.js.map +1 -1
- package/dist/monitoringServer.js +1 -1
- package/dist/monitoringServer.js.map +1 -1
- package/dist/streamableHttpRunner.d.ts +3 -3
- package/dist/streamableHttpRunner.d.ts.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +4 -0
- package/dist/utils.js.map +1 -1
- package/package.json +9 -7
package/dist/mcpHttpServer.js
CHANGED
|
@@ -1,12 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { createMcpHandler, isLegacyRequest, } from "@modelcontextprotocol/server";
|
|
2
|
+
import { toNodeHandler, toWebRequest } from "@modelcontextprotocol/node";
|
|
3
3
|
import express from "express";
|
|
4
|
-
import { LogId,
|
|
4
|
+
import { LogId, JSON_RPC_ERROR_CODE_PROCESSING_REQUEST_FAILED, UserFacingError, requestIdAttr, SessionStore, } from "@mongodb-js/mcp-core";
|
|
5
5
|
import { ExpressBasedHttpServer } from "./expressBasedHttpServer.js";
|
|
6
|
-
import {
|
|
6
|
+
import { LegacyMcpHttpHandler } from "./legacyMcpHttpHandler.js";
|
|
7
7
|
/**
|
|
8
|
-
* HTTP server that
|
|
8
|
+
* HTTP server that serves MCP requests over HTTP.
|
|
9
9
|
*
|
|
10
|
+
* The 2026-07-28 protocol is served **statelessly** through the SDK's
|
|
11
|
+
* `createMcpHandler` (`legacy: 'reject'`): each request builds a fresh
|
|
12
|
+
* request-scoped server and carries client identity per request in the `_meta`
|
|
13
|
+
* envelope. No per-client sessions, no `mcp-session-id` routing on that path.
|
|
14
|
+
*
|
|
15
|
+
* 2025-era (legacy) requests are delegated to a sessionful
|
|
16
|
+
* {@link LegacyMcpHttpHandler} (see its docs for why): the 2025 protocol needs
|
|
17
|
+
* a live, correlated transport for its `initialize`-declared capabilities and
|
|
18
|
+
* server→client elicitation, which the SDK's `legacy: 'stateless'` mode cannot
|
|
19
|
+
* provide. The modern/legacy split is isolated from this class so each path
|
|
20
|
+
* stays clean.
|
|
10
21
|
*
|
|
11
22
|
* @example
|
|
12
23
|
* ```typescript
|
|
@@ -18,7 +29,7 @@ import { sleep } from "./utils.js";
|
|
|
18
29
|
* ```
|
|
19
30
|
*/
|
|
20
31
|
export class MCPHttpServer extends ExpressBasedHttpServer {
|
|
21
|
-
constructor({ options, logger, metrics,
|
|
32
|
+
constructor({ options, logger, metrics, sessionOptions }) {
|
|
22
33
|
super({
|
|
23
34
|
options: {
|
|
24
35
|
logContext: "mcpHttpServer",
|
|
@@ -26,293 +37,90 @@ export class MCPHttpServer extends ExpressBasedHttpServer {
|
|
|
26
37
|
},
|
|
27
38
|
logger,
|
|
28
39
|
});
|
|
29
|
-
this.pendingInitializations = new Map();
|
|
30
|
-
this.sessionOptions = options.session;
|
|
31
40
|
this.metrics = metrics;
|
|
32
|
-
this.
|
|
41
|
+
this.modernHandler = this.createModernHandler();
|
|
42
|
+
this.legacyHandler = this.createLegacyHandler({ logger, http: options.http, sessionOptions });
|
|
33
43
|
}
|
|
34
44
|
async stop() {
|
|
35
|
-
await Promise.
|
|
45
|
+
await Promise.allSettled([this.modernHandler.close(), this.legacyHandler.close()]);
|
|
46
|
+
await super.stop();
|
|
36
47
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
message = "server has reached the maximum number of concurrent sessions, try again later";
|
|
59
|
-
statusCode = 503;
|
|
60
|
-
break;
|
|
61
|
-
default:
|
|
62
|
-
message = "unknown error";
|
|
63
|
-
statusCode = 500;
|
|
64
|
-
}
|
|
65
|
-
res.status(statusCode).json({
|
|
66
|
-
jsonrpc: "2.0",
|
|
67
|
-
error: {
|
|
68
|
-
code: errorCode,
|
|
69
|
-
message,
|
|
70
|
-
},
|
|
48
|
+
/**
|
|
49
|
+
* Builds the handler that serves 2025-era (legacy) traffic. Subclasses may
|
|
50
|
+
* override this to plug in an alternative legacy transport/session
|
|
51
|
+
* implementation; the default returns a {@link LegacyMcpHttpHandler} built
|
|
52
|
+
* from {@link MCPHttpServer.createServerForRequest}.
|
|
53
|
+
*/
|
|
54
|
+
createLegacyHandler({ logger, http, sessionOptions, }) {
|
|
55
|
+
return new LegacyMcpHttpHandler({
|
|
56
|
+
createServer: async (request) => this.createServerForRequest(request),
|
|
57
|
+
logger,
|
|
58
|
+
http,
|
|
59
|
+
sessionStore: new SessionStore({
|
|
60
|
+
options: {
|
|
61
|
+
idleTimeoutMS: sessionOptions?.idleTimeoutMS ?? 600000,
|
|
62
|
+
notificationTimeoutMS: sessionOptions?.notificationTimeoutMS ?? 540000,
|
|
63
|
+
maxSessions: sessionOptions?.maxSessions ?? 1000,
|
|
64
|
+
evictionIdleGraceMS: sessionOptions?.evictionIdleGraceMS ?? 120000,
|
|
65
|
+
},
|
|
66
|
+
logger,
|
|
67
|
+
metrics: this.metrics,
|
|
68
|
+
}),
|
|
71
69
|
});
|
|
72
70
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
// Don't start the ping loop for JSON response type since the connection is short-lived and pings aren't needed
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
let failedPings = 0;
|
|
79
|
-
while (!signal.aborted) {
|
|
80
|
-
try {
|
|
81
|
-
logger.debug({
|
|
82
|
-
id: LogId.streamableHttpTransportKeepAlive,
|
|
83
|
-
context: "streamableHttpTransport",
|
|
84
|
-
message: "Sending ping",
|
|
85
|
-
});
|
|
86
|
-
await transport.send({
|
|
87
|
-
jsonrpc: "2.0",
|
|
88
|
-
method: "ping",
|
|
89
|
-
});
|
|
90
|
-
failedPings = 0;
|
|
91
|
-
}
|
|
92
|
-
catch (err) {
|
|
93
|
-
try {
|
|
94
|
-
failedPings++;
|
|
95
|
-
logger.warning({
|
|
96
|
-
id: LogId.streamableHttpTransportKeepAliveFailure,
|
|
97
|
-
context: "streamableHttpTransport",
|
|
98
|
-
message: `Error sending ping (attempt #${failedPings}): ${err instanceof Error ? err.message : String(err)}`,
|
|
99
|
-
});
|
|
100
|
-
if (failedPings > 3) {
|
|
101
|
-
await transport.close();
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
catch {
|
|
106
|
-
// Ignore the error of the transport close
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
await sleep(30000, { signal });
|
|
110
|
-
}
|
|
111
|
-
}
|
|
71
|
+
/** Request middleware hook for `/mcp`, called after body parse + header validation, before routing. */
|
|
72
|
+
registerMiddlewares() { }
|
|
112
73
|
/**
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
* Otherwise, this call performs the initialization.
|
|
120
|
-
*
|
|
121
|
-
* After this method resolves, the caller should look up the transport from
|
|
122
|
-
* the session store via `sessionStore.getSession()`.
|
|
123
|
-
*
|
|
124
|
-
* When `isImplicitInitialization` is true, the transport is pre-configured as
|
|
125
|
-
* initialized (bypassing the MCP initialize handshake) so that it can handle
|
|
126
|
-
* non-initialize requests immediately. When false, the transport is left in
|
|
127
|
-
* its default state so it can process the initialize request normally.
|
|
74
|
+
* Builds the 2026-07-28 serving entry. One factory backs every modern
|
|
75
|
+
* request: it constructs a fresh request-scoped server, registers it, and
|
|
76
|
+
* hands the underlying {@link McpServer} to `createMcpHandler`.
|
|
77
|
+
* `legacy: 'reject'` means this entry serves ONLY the 2026-07-28 era;
|
|
78
|
+
* 2025-era traffic is routed to the sessionful legacy handler (see
|
|
79
|
+
* {@link LegacyMcpHttpHandler}).
|
|
128
80
|
*/
|
|
129
|
-
|
|
130
|
-
const
|
|
131
|
-
const requestIdAttrs = requestIdAttr(req.headers);
|
|
132
|
-
// Check if session already exists
|
|
133
|
-
if (await this.sessionStore.getSession(sessionId, req.headers)) {
|
|
134
|
-
return sessionId;
|
|
135
|
-
}
|
|
136
|
-
// Serialize initializations: if another request is initializing, wait for it
|
|
137
|
-
const pendingInit = this.pendingInitializations.get(sessionId);
|
|
138
|
-
if (pendingInit) {
|
|
139
|
-
this.logger.debug({
|
|
140
|
-
id: LogId.streamableHttpTransportSessionNotFound,
|
|
141
|
-
context: "streamableHttpTransport",
|
|
142
|
-
message: `Session with ID ${sessionId} is already being initialized, waiting`,
|
|
143
|
-
attributes: { ...requestIdAttrs },
|
|
144
|
-
});
|
|
145
|
-
try {
|
|
146
|
-
await pendingInit;
|
|
147
|
-
}
|
|
148
|
-
catch {
|
|
149
|
-
// The initializer handles its own error
|
|
150
|
-
}
|
|
151
|
-
return sessionId;
|
|
152
|
-
}
|
|
153
|
-
this.logger.debug({
|
|
154
|
-
id: LogId.streamableHttpTransportSessionNotFound,
|
|
155
|
-
context: "streamableHttpTransport",
|
|
156
|
-
message: `Session with ID ${sessionId} not found, initializing new session`,
|
|
157
|
-
attributes: {
|
|
158
|
-
...requestIdAttrs,
|
|
159
|
-
},
|
|
160
|
-
});
|
|
161
|
-
const initPromise = (async () => {
|
|
81
|
+
createModernHandler() {
|
|
82
|
+
const handler = createMcpHandler(async (ctx) => {
|
|
162
83
|
const request = {
|
|
163
|
-
headers:
|
|
164
|
-
query:
|
|
84
|
+
headers: Object.fromEntries(ctx.requestInfo?.headers ?? []),
|
|
85
|
+
query: ctx.requestInfo?.url
|
|
86
|
+
? Object.fromEntries(new URL(ctx.requestInfo.url).searchParams)
|
|
87
|
+
: undefined,
|
|
88
|
+
// The explicit auth state of this request, normalized from the
|
|
89
|
+
// SDK's pass-through authInfo (hosts supply it via `req.auth`
|
|
90
|
+
// through the node adapter, or directly). "Unauthenticated" when
|
|
91
|
+
// no identity was injected.
|
|
92
|
+
authInfo: ctx.authInfo
|
|
93
|
+
? { mode: "authenticated", state: ctx.authInfo }
|
|
94
|
+
: { mode: "unauthenticated" },
|
|
165
95
|
};
|
|
166
96
|
const server = await this.createServerForRequest(request);
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
await this.sessionStore.closeSession({ sessionId, reason: "transport_closed" });
|
|
173
|
-
}
|
|
174
|
-
catch (error) {
|
|
175
|
-
this.logger.error({
|
|
176
|
-
id: LogId.sessionCloseFailure,
|
|
177
|
-
context: "streamableHttpTransport",
|
|
178
|
-
message: `Error closing session ${sessionId}: ${error instanceof Error ? error.message : String(error)}`,
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
},
|
|
182
|
-
});
|
|
183
|
-
// HACK: When we're implicitly initializing the session, we want to configure the session id and _initialized flag on the transport
|
|
184
|
-
// so that it believes it actually went through the initialization flow. Without it, we'd get errors like "transport not initialized"
|
|
185
|
-
// when we try to use it without initialize request
|
|
186
|
-
if (isImplicitInitialization) {
|
|
187
|
-
const internalTransport = transport["_webStandardTransport"];
|
|
188
|
-
internalTransport._initialized = true;
|
|
189
|
-
internalTransport.sessionId = sessionId;
|
|
190
|
-
}
|
|
191
|
-
server.session?.logger.setAttribute("sessionId", sessionId);
|
|
192
|
-
const keepAliveController = new AbortController();
|
|
193
|
-
void this.startKeepAliveLoop({
|
|
194
|
-
transport,
|
|
195
|
-
logger: server.session?.logger ?? this.logger,
|
|
196
|
-
signal: keepAliveController.signal,
|
|
197
|
-
});
|
|
198
|
-
transport.onclose = () => {
|
|
199
|
-
keepAliveController.abort();
|
|
200
|
-
server.close().catch((error) => {
|
|
201
|
-
this.logger.error({
|
|
202
|
-
id: LogId.streamableHttpTransportCloseFailure,
|
|
203
|
-
context: "streamableHttpTransport",
|
|
204
|
-
message: `Error closing server: ${error instanceof Error ? error.message : String(error)}`,
|
|
205
|
-
});
|
|
206
|
-
});
|
|
207
|
-
};
|
|
208
|
-
await server.connect(transport);
|
|
209
|
-
if (isImplicitInitialization) {
|
|
210
|
-
await this.restoreNegotiatedClientState(server, sessionId, req.headers);
|
|
211
|
-
}
|
|
212
|
-
else {
|
|
213
|
-
this.captureNegotiatedClientStateOnInitialize(server, sessionId, req.headers);
|
|
214
|
-
}
|
|
215
|
-
await this.sessionStore.addSession({
|
|
216
|
-
sessionId,
|
|
217
|
-
transport,
|
|
218
|
-
logger: server.session?.logger ?? this.logger,
|
|
219
|
-
session: server.session,
|
|
220
|
-
// Pass the incoming request headers to the session store so
|
|
221
|
-
// that we can trace the x-request-id and other headers in the
|
|
222
|
-
// resulting logs and downstream requests.
|
|
223
|
-
headers: req.headers,
|
|
224
|
-
});
|
|
225
|
-
})();
|
|
226
|
-
this.pendingInitializations.set(sessionId, initPromise);
|
|
227
|
-
try {
|
|
228
|
-
await initPromise;
|
|
229
|
-
}
|
|
230
|
-
catch (error) {
|
|
231
|
-
this.logger.error({
|
|
232
|
-
id: LogId.streamableHttpTransportRequestFailure,
|
|
233
|
-
context: "streamableHttpTransport",
|
|
234
|
-
message: `Failed to initialize session ${sessionId}: ${error instanceof Error ? error.message : String(error)}`,
|
|
235
|
-
attributes: { ...requestIdAttrs },
|
|
236
|
-
});
|
|
237
|
-
// Remove the partially initialized session on failure so that
|
|
238
|
-
// subsequent requests don't see a broken session and can retry
|
|
239
|
-
try {
|
|
240
|
-
await this.sessionStore.closeSession({ sessionId, reason: "unknown" });
|
|
241
|
-
}
|
|
242
|
-
catch {
|
|
243
|
-
// Session might not be in the store, that's fine
|
|
244
|
-
}
|
|
245
|
-
throw error;
|
|
97
|
+
await server.register();
|
|
98
|
+
return server.mcpServer;
|
|
99
|
+
}, { legacy: "reject" });
|
|
100
|
+
if (this.httpOptions.authMode !== "authenticated") {
|
|
101
|
+
return handler;
|
|
246
102
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
return
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
}
|
|
265
|
-
catch (error) {
|
|
266
|
-
// The restored session stays usable; it just behaves as if the
|
|
267
|
-
// client had no optional capabilities.
|
|
268
|
-
this.logger.warning({
|
|
269
|
-
id: LogId.streamableHttpTransportClientStateRestoreFailure,
|
|
270
|
-
context: "streamableHttpTransport",
|
|
271
|
-
message: `Failed to restore negotiated client state for session ${sessionId}: ${error instanceof Error ? error.message : String(error)}`,
|
|
272
|
-
attributes: { ...requestIdAttr(headers) },
|
|
273
|
-
});
|
|
274
|
-
return;
|
|
275
|
-
}
|
|
276
|
-
if (!state) {
|
|
277
|
-
return;
|
|
278
|
-
}
|
|
279
|
-
// HACK: like the transport `_initialized` flag above, the SDK offers
|
|
280
|
-
// no supported way to seed a Server with a previously negotiated
|
|
281
|
-
// initialization, so we write the private fields the initialize
|
|
282
|
-
// handler would have populated.
|
|
283
|
-
const mcpServer = server.mcpServer;
|
|
284
|
-
const protocolServer = mcpServer.server;
|
|
285
|
-
protocolServer._clientCapabilities = state.clientCapabilities;
|
|
286
|
-
protocolServer._clientVersion = state.clientInfo;
|
|
287
|
-
server.session.setMcpClient(state.clientInfo);
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Arranges for the client state negotiated by a real `initialize`
|
|
291
|
-
* exchange to be persisted through the session store, so implicit
|
|
292
|
-
* re-initializations of this session can restore it. Wraps the
|
|
293
|
-
* `oninitialized` callback installed by `server.connect`, hence must run
|
|
294
|
-
* after it.
|
|
295
|
-
*/
|
|
296
|
-
captureNegotiatedClientStateOnInitialize(server, sessionId, headers) {
|
|
297
|
-
const protocolServer = server.mcpServer.server;
|
|
298
|
-
const originalOnInitialized = protocolServer.oninitialized;
|
|
299
|
-
protocolServer.oninitialized = () => {
|
|
300
|
-
originalOnInitialized?.();
|
|
301
|
-
const state = {
|
|
302
|
-
clientCapabilities: protocolServer.getClientCapabilities(),
|
|
303
|
-
clientInfo: protocolServer.getClientVersion(),
|
|
304
|
-
};
|
|
305
|
-
this.sessionStore.saveNegotiatedClientState(sessionId, state, headers).catch((error) => {
|
|
306
|
-
this.logger.warning({
|
|
307
|
-
id: LogId.streamableHttpTransportClientStateSaveFailure,
|
|
308
|
-
context: "streamableHttpTransport",
|
|
309
|
-
message: `Failed to save negotiated client state for session ${sessionId}: ${error instanceof Error ? error.message : String(error)}`,
|
|
310
|
-
attributes: { ...requestIdAttr(headers) },
|
|
311
|
-
});
|
|
312
|
-
});
|
|
103
|
+
// Authenticated mode, enforced at handler creation: every request must
|
|
104
|
+
// carry verified identity (host-supplied authInfo). Requests without it
|
|
105
|
+
// are rejected with 401 before the SDK sees them.
|
|
106
|
+
return {
|
|
107
|
+
...handler,
|
|
108
|
+
fetch: async (request, options) => {
|
|
109
|
+
if (!options?.authInfo) {
|
|
110
|
+
return new Response(JSON.stringify({ error: "Unauthorized: authenticated request required" }), {
|
|
111
|
+
status: 401,
|
|
112
|
+
headers: {
|
|
113
|
+
"content-type": "application/json",
|
|
114
|
+
"www-authenticate": "Bearer",
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
return handler.fetch(request, options);
|
|
119
|
+
},
|
|
313
120
|
};
|
|
314
121
|
}
|
|
315
|
-
|
|
122
|
+
// eslint-disable-next-line @typescript-eslint/require-await -- Required for override signature
|
|
123
|
+
async setupRoutes() {
|
|
316
124
|
this.app.use(express.json({ limit: this.httpOptions.bodyLimit ?? 1024 * 1024 }));
|
|
317
125
|
const headers = this.httpOptions.headers;
|
|
318
126
|
if (headers && Object.keys(headers).length > 0) {
|
|
@@ -327,83 +135,21 @@ export class MCPHttpServer extends ExpressBasedHttpServer {
|
|
|
327
135
|
next();
|
|
328
136
|
});
|
|
329
137
|
}
|
|
330
|
-
|
|
331
|
-
// eslint-disable-next-line @typescript-eslint/require-await -- Required for override signature
|
|
332
|
-
async setupRoutes() {
|
|
333
|
-
this.setupMiddlewares();
|
|
334
|
-
const handleSessionRequest = async (req, res) => {
|
|
335
|
-
const sessionId = req.headers["mcp-session-id"];
|
|
336
|
-
if (!sessionId) {
|
|
337
|
-
return this.reportSessionError(res, JSON_RPC_ERROR_CODE_SESSION_ID_REQUIRED);
|
|
338
|
-
}
|
|
339
|
-
if (typeof sessionId !== "string") {
|
|
340
|
-
return this.reportSessionError(res, JSON_RPC_ERROR_CODE_SESSION_ID_INVALID);
|
|
341
|
-
}
|
|
342
|
-
const requestIdAttrs = requestIdAttr(req.headers);
|
|
343
|
-
let transport = await this.sessionStore.getSession(sessionId, req.headers);
|
|
344
|
-
if (!transport) {
|
|
345
|
-
if (!this.sessionOptions.externallyManagedSessions) {
|
|
346
|
-
this.logger.debug({
|
|
347
|
-
id: LogId.streamableHttpTransportSessionNotFound,
|
|
348
|
-
context: "streamableHttpTransport",
|
|
349
|
-
message: `Session with ID ${sessionId} not found`,
|
|
350
|
-
attributes: { ...requestIdAttrs },
|
|
351
|
-
});
|
|
352
|
-
return this.reportSessionError(res, JSON_RPC_ERROR_CODE_SESSION_NOT_FOUND);
|
|
353
|
-
}
|
|
354
|
-
const resolvedSessionId = await this.ensureSessionInitialized({
|
|
355
|
-
req,
|
|
356
|
-
sessionId,
|
|
357
|
-
isImplicitInitialization: true,
|
|
358
|
-
});
|
|
359
|
-
transport = await this.sessionStore.getSession(resolvedSessionId, req.headers);
|
|
360
|
-
if (!transport) {
|
|
361
|
-
return this.reportSessionError(res, JSON_RPC_ERROR_CODE_SESSION_NOT_FOUND);
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
await transport.handleRequest(req, res, req.body);
|
|
365
|
-
};
|
|
138
|
+
this.registerMiddlewares();
|
|
366
139
|
this.app.post("/mcp", this.withErrorHandling(async (req, res) => {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
if (
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
context: "streamableHttpTransport",
|
|
376
|
-
message: `Client provided session ID ${sessionId}, but externallyManagedSessions is disabled`,
|
|
377
|
-
attributes: requestIdAttr(req.headers),
|
|
378
|
-
});
|
|
379
|
-
return this.reportSessionError(res, JSON_RPC_ERROR_CODE_DISALLOWED_EXTERNAL_SESSION);
|
|
380
|
-
}
|
|
381
|
-
const resolvedSessionId = await this.ensureSessionInitialized({
|
|
382
|
-
req,
|
|
383
|
-
sessionId,
|
|
384
|
-
isImplicitInitialization: false,
|
|
385
|
-
});
|
|
386
|
-
const transport = await this.sessionStore.getSession(resolvedSessionId, req.headers);
|
|
387
|
-
if (!transport) {
|
|
388
|
-
return this.reportSessionError(res, JSON_RPC_ERROR_CODE_SESSION_NOT_FOUND);
|
|
389
|
-
}
|
|
390
|
-
await transport.handleRequest(req, res, req.body);
|
|
391
|
-
return;
|
|
392
|
-
}
|
|
393
|
-
if (sessionId) {
|
|
394
|
-
return await handleSessionRequest(req, res);
|
|
395
|
-
}
|
|
396
|
-
return this.reportSessionError(res, JSON_RPC_ERROR_CODE_INVALID_REQUEST);
|
|
140
|
+
// 2025-era (no envelope claim) requests are served sessionfully so
|
|
141
|
+
// the legacy elicitation shim has a live return channel. Everything
|
|
142
|
+
// else (modern-enveloped) goes to the stateless modern handler.
|
|
143
|
+
const webRequest = await toWebRequest(req, req.body);
|
|
144
|
+
if (await isLegacyRequest(webRequest)) {
|
|
145
|
+
return await this.legacyHandler.handle(req, res);
|
|
146
|
+
}
|
|
147
|
+
return await toNodeHandler({ fetch: (request, opts) => this.modernHandler.fetch(request, opts) })(req, res, req.body);
|
|
397
148
|
}));
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
else {
|
|
403
|
-
res.status(405).set("Allow", ["POST", "DELETE"]).send("Method Not Allowed");
|
|
404
|
-
}
|
|
405
|
-
}));
|
|
406
|
-
this.app.delete("/mcp", this.withErrorHandling(handleSessionRequest));
|
|
149
|
+
// 2025-era session operations (SSE idle stream via GET, session close via
|
|
150
|
+
// DELETE) only exist on the sessionful legacy path.
|
|
151
|
+
this.app.get("/mcp", this.withErrorHandling((req, res) => this.legacyHandler.handle(req, res)));
|
|
152
|
+
this.app.delete("/mcp", this.withErrorHandling((req, res) => this.legacyHandler.handle(req, res)));
|
|
407
153
|
}
|
|
408
154
|
withErrorHandling(fn) {
|
|
409
155
|
return (req, res, next) => {
|
|
@@ -413,17 +159,8 @@ export class MCPHttpServer extends ExpressBasedHttpServer {
|
|
|
413
159
|
id: LogId.streamableHttpTransportRequestFailure,
|
|
414
160
|
context: "streamableHttpTransport",
|
|
415
161
|
message: `Error handling request: ${errorMessage}`,
|
|
416
|
-
attributes: requestIdAttr(req.headers),
|
|
162
|
+
attributes: { ...requestIdAttr(req.headers) },
|
|
417
163
|
});
|
|
418
|
-
if (error instanceof SessionRejectedError) {
|
|
419
|
-
// Respond exactly as if the session doesn't exist so that
|
|
420
|
-
// callers can't probe whether a session id is valid; the
|
|
421
|
-
// rejection reason is only visible in the log above.
|
|
422
|
-
return this.reportSessionError(res, JSON_RPC_ERROR_CODE_SESSION_NOT_FOUND);
|
|
423
|
-
}
|
|
424
|
-
if (error instanceof SessionLimitExceededError) {
|
|
425
|
-
return this.reportSessionError(res, JSON_RPC_ERROR_CODE_SESSION_LIMIT_EXCEEDED);
|
|
426
|
-
}
|
|
427
164
|
// Only propagate error messages for user-facing errors
|
|
428
165
|
const message = error instanceof UserFacingError ? error.message : `failed to handle request`;
|
|
429
166
|
res.status(400).json({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpHttpServer.js","sourceRoot":"","sources":["../src/mcpHttpServer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcpHttpServer.js","sourceRoot":"","sources":["../src/mcpHttpServer.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,eAAe,GAGlB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAEzE,OAAO,OAAO,MAAM,SAAS,CAAC;AAS9B,OAAO,EACH,KAAK,EACL,6CAA6C,EAC7C,eAAe,EACf,aAAa,EACb,YAAY,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAoD,MAAM,2BAA2B,CAAC;AAsBnH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAgB,aAGpB,SAAQ,sBAAsB;IAO5B,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAkC;QACpF,KAAK,CAAC;YACF,OAAO,EAAE;gBACL,UAAU,EAAE,eAAe;gBAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;aACrB;YACD,MAAM;SACT,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IAClG,CAAC;IAEM,KAAK,CAAC,IAAI;QACb,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACO,mBAAmB,CAAC,EAC1B,MAAM,EACN,IAAI,EACJ,cAAc,GAKjB;QACG,OAAO,IAAI,oBAAoB,CAAC;YAC5B,YAAY,EAAE,KAAK,EAAE,OAAO,EAAoB,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;YACvF,MAAM;YACN,IAAI;YACJ,YAAY,EAAE,IAAI,YAAY,CAAoC;gBAC9D,OAAO,EAAE;oBACL,aAAa,EAAE,cAAc,EAAE,aAAa,IAAI,MAAO;oBACvD,qBAAqB,EAAE,cAAc,EAAE,qBAAqB,IAAI,MAAO;oBACvE,WAAW,EAAE,cAAc,EAAE,WAAW,IAAI,IAAI;oBAChD,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,IAAI,MAAO;iBACtE;gBACD,MAAM;gBACN,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC;SACL,CAAC,CAAC;IACP,CAAC;IAQD,uGAAuG;IAC7F,mBAAmB,KAAU,CAAC;IAExC;;;;;;;OAOG;IACO,mBAAmB;QACzB,MAAM,OAAO,GAAG,gBAAgB,CAC5B,KAAK,EAAE,GAAsB,EAAE,EAAE;YAC7B,MAAM,OAAO,GAA4B;gBACrC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,IAAI,EAAE,CAAC;gBAC3D,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG;oBACvB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;oBAC/D,CAAC,CAAC,SAAS;gBACf,+DAA+D;gBAC/D,8DAA8D;gBAC9D,iEAAiE;gBACjE,4BAA4B;gBAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBAClB,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE;oBAChD,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE;aACpC,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAC1D,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,SAAS,CAAC;QAC5B,CAAC,EACD,EAAE,MAAM,EAAE,QAAQ,EAAE,CACvB,CAAC;QAEF,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;YAChD,OAAO,OAAO,CAAC;QACnB,CAAC;QAED,uEAAuE;QACvE,wEAAwE;QACxE,kDAAkD;QAClD,OAAO;YACH,GAAG,OAAO;YACV,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAqB,EAAE;gBACjD,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;oBACrB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,8CAA8C,EAAE,CAAC,EAAE;wBAC3F,MAAM,EAAE,GAAG;wBACX,OAAO,EAAE;4BACL,cAAc,EAAE,kBAAkB;4BAClC,kBAAkB,EAAE,QAAQ;yBAC/B;qBACJ,CAAC,CAAC;gBACP,CAAC;gBACD,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC;SACJ,CAAC;IACN,CAAC;IAED,+FAA+F;IAC5E,KAAK,CAAC,WAAW;QAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QAEjF,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;QACzC,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBACjD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC9C,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;wBAC9B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,6BAA6B,GAAG,GAAG,EAAE,CAAC,CAAC;wBACrE,OAAO;oBACX,CAAC;gBACL,CAAC;gBACD,IAAI,EAAE,CAAC;YACX,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,CAAC,GAAG,CAAC,IAAI,CACT,MAAM,EACN,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAoB,EAAE,GAAqB,EAAE,EAAE;YACzE,mEAAmE;YACnE,oEAAoE;YACpE,gEAAgE;YAChE,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,MAAM,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,MAAM,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAC7F,GAAG,EACH,GAAG,EACH,GAAG,CAAC,IAAI,CACX,CAAC;QACN,CAAC,CAAC,CACL,CAAC;QAEF,0EAA0E;QAC1E,oDAAoD;QACpD,IAAI,CAAC,GAAG,CAAC,GAAG,CACR,MAAM,EACN,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAC5E,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,MAAM,CACX,MAAM,EACN,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAC5E,CAAC;IACN,CAAC;IAEO,iBAAiB,CACrB,EAA8F;QAE9F,OAAO,CAAC,GAAoB,EAAE,GAAqB,EAAE,IAA0B,EAAQ,EAAE;YACrF,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC/B,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;oBACd,EAAE,EAAE,KAAK,CAAC,qCAAqC;oBAC/C,OAAO,EAAE,yBAAyB;oBAClC,OAAO,EAAE,2BAA2B,YAAY,EAAE;oBAClD,UAAU,EAAE,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;iBAChD,CAAC,CAAC;gBAEH,uDAAuD;gBACvD,MAAM,OAAO,GAAG,KAAK,YAAY,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;gBAE9F,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACH,IAAI,EAAE,6CAA6C;wBACnD,OAAO;qBACV;iBACJ,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;IACN,CAAC;CACJ"}
|
package/dist/monitoringServer.js
CHANGED
|
@@ -22,7 +22,7 @@ export class MonitoringServer extends ExpressBasedHttpServer {
|
|
|
22
22
|
super({
|
|
23
23
|
options: {
|
|
24
24
|
logContext: "monitoringServer",
|
|
25
|
-
http: { port: options.http.port, host: options.http.host },
|
|
25
|
+
http: { port: options.http.port, host: options.http.host, authMode: "unauthenticated" },
|
|
26
26
|
},
|
|
27
27
|
logger,
|
|
28
28
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monitoringServer.js","sourceRoot":"","sources":["../src/monitoringServer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEhE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,gBAEX,SAAQ,sBAAsB;IAK5B,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAqC;QACvE,KAAK,CAAC;YACF,OAAO,EAAE;gBACL,UAAU,EAAE,kBAAkB;gBAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"monitoringServer.js","sourceRoot":"","sources":["../src/monitoringServer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEhE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,gBAEX,SAAQ,sBAAsB;IAK5B,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAqC;QACvE,KAAK,CAAC;YACF,OAAO,EAAE;gBACL,UAAU,EAAE,kBAAkB;gBAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE;aAC1F;YACD,MAAM;SACT,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;IAC1D,CAAC;IAEkB,WAAW;QAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAqB,EAAE,GAAqB,EAAE,EAAE;gBACrE,wEAAwE;gBACxE,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;gBACrC,GAAG,CAAC,IAAI,CAAC;oBACL,MAAM,EAAE,IAAI;oBACZ,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBAC3C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACtC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;YAChE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,IAAqB,EAAE,GAAqB,EAAE,EAAE;gBAC5E,IAAI,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;oBAClC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;oBACtC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;wBACd,EAAE,EAAE,KAAK,CAAC,8BAA8B;wBACxC,OAAO,EAAE,kBAAkB;wBAC3B,OAAO,EAAE,+BAA+B,MAAM,CAAC,KAAK,CAAC,EAAE;qBAC1D,CAAC,CAAC;oBACH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC;gBAClE,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;CACJ"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { DefaultMetricDefinitions, ITransportRunner } from "@mongodb-js/mcp-types";
|
|
2
2
|
import type { CompositeLogger } from "@mongodb-js/mcp-core";
|
|
3
3
|
import type { MCPHttpServer } from "./mcpHttpServer.js";
|
|
4
|
-
import type {
|
|
4
|
+
import type { BaseServer } from "@mongodb-js/mcp-types";
|
|
5
5
|
import type { MonitoringServer } from "./monitoringServer.js";
|
|
6
6
|
/**
|
|
7
7
|
* Options for StreamableHttpRunner.
|
|
8
8
|
*/
|
|
9
|
-
export type StreamableHttpRunnerOptions<TServer extends
|
|
9
|
+
export type StreamableHttpRunnerOptions<TServer extends BaseServer = BaseServer, TMetrics extends DefaultMetricDefinitions = DefaultMetricDefinitions> = {
|
|
10
10
|
/** Logger instance */
|
|
11
11
|
logger: CompositeLogger;
|
|
12
12
|
mcpHttpServer: MCPHttpServer<TServer, TMetrics>;
|
|
@@ -20,7 +20,7 @@ export type StreamableHttpRunnerOptions<TServer extends SessionServer = SessionS
|
|
|
20
20
|
* To customize per-request server creation, extend `MCPHttpServer` and override
|
|
21
21
|
* the `createServerForRequest()` method.
|
|
22
22
|
*/
|
|
23
|
-
export declare class StreamableHttpRunner<TServer extends
|
|
23
|
+
export declare class StreamableHttpRunner<TServer extends BaseServer = BaseServer, TMetrics extends DefaultMetricDefinitions = DefaultMetricDefinitions> implements ITransportRunner {
|
|
24
24
|
protected readonly mcpHttpServer: MCPHttpServer<TServer, TMetrics>;
|
|
25
25
|
protected readonly monitoringServer: MonitoringServer<TMetrics> | undefined;
|
|
26
26
|
protected readonly logger: CompositeLogger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamableHttpRunner.d.ts","sourceRoot":"","sources":["../src/streamableHttpRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"streamableHttpRunner.d.ts","sourceRoot":"","sources":["../src/streamableHttpRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,2BAA2B,CACnC,OAAO,SAAS,UAAU,GAAG,UAAU,EACvC,QAAQ,SAAS,wBAAwB,GAAG,wBAAwB,IACpE;IACA,sBAAsB;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChD,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;CACjD,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,oBAAoB,CAC7B,OAAO,SAAS,UAAU,GAAG,UAAU,EACvC,QAAQ,SAAS,wBAAwB,GAAG,wBAAwB,CACtE,YAAW,gBAAgB;IACzB,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAC5E,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;gBAE/B,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,2BAA2B,CAAC,OAAO,EAAE,QAAQ,CAAC;IAMvG,mCAAmC;IAC7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB1F"}
|
package/dist/utils.js
CHANGED
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,EAAU,EAAE,EAAE,MAAM,EAA2B;IACvE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,IAAI,QAAQ,GAA6B,SAAS,CAAC;QACnD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,QAAQ,EAAE,CAAC;gBACX,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,EAAE,CAAC;QACd,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,QAAQ,GAAG,GAAS,EAAE;YAClB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,EAAE,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,EAAU,EAAE,EAAE,MAAM,EAA2B;IACvE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QACD,IAAI,QAAQ,GAA6B,SAAS,CAAC;QACnD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,QAAQ,EAAE,CAAC;gBACX,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,EAAE,CAAC;QACd,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,QAAQ,GAAG,GAAS,EAAE;YAClB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,EAAE,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACP,CAAC"}
|