@suveren/gateway 0.11.2 → 0.13.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 +35 -1
- package/bin/suveren-gateway.js +137 -12
- package/content/integrations/calendar.json +1 -0
- package/content/integrations/crm.json +1 -67
- package/content/integrations/deploy-github.json +3 -5
- package/content/integrations/erp.json +1 -80
- package/content/integrations/gmail.json +1 -0
- package/content/integrations/linkedin.json +1 -0
- package/content/integrations/mail.json +1 -48
- package/content/integrations/mollie.json +1 -0
- package/content/integrations/records.json +1 -0
- package/dist/control-plane/index.mjs +555 -122
- package/dist/mcp-server/http.mjs +643 -168
- package/dist/ui/assets/{index-BzcgeHlq.js → index-CmLqzgqA.js} +21 -21
- package/dist/ui/assets/{index-BFOprnFZ.css → index-y1OFeYnS.css} +1 -1
- package/dist/ui/index.html +2 -2
- package/lib/autostart-templates.d.mts +6 -0
- package/lib/autostart-templates.mjs +21 -4
- package/lib/config.d.mts +10 -0
- package/lib/config.mjs +79 -18
- package/lib/node-version.d.mts +7 -0
- package/lib/node-version.mjs +28 -0
- package/lib/policy.d.mts +34 -0
- package/lib/policy.mjs +369 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.js +9 -7
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/sse.d.ts +13 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/sse.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/sse.js +17 -4
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/sse.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.d.ts +13 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.js +23 -10
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/elicitationFormExample.js +63 -20
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/elicitationFormExample.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/elicitationUrlExample.js +71 -29
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/elicitationUrlExample.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/jsonResponseStreamableHttp.js +45 -6
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/jsonResponseStreamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/simpleStreamableHttp.js +71 -31
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/simpleStreamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/simpleTaskInteractive.js +61 -18
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/simpleTaskInteractive.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js +57 -19
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/ssePollingExample.js +64 -17
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/ssePollingExample.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js +61 -13
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/interfaces.d.ts +4 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/interfaces.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/interfaces.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/stores/in-memory.d.ts +17 -8
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/stores/in-memory.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/stores/in-memory.js +31 -14
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/stores/in-memory.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/middleware/bearerAuth.d.ts +9 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/middleware/bearerAuth.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/middleware/bearerAuth.js +17 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/middleware/bearerAuth.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.d.ts +12 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js +46 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.d.ts +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.js +39 -9
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.d.ts +10 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.js +77 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.js +9 -7
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/sse.d.ts +13 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/sse.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/sse.js +18 -5
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/sse.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.d.ts +13 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.js +24 -11
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/elicitationFormExample.js +63 -20
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/elicitationFormExample.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/elicitationUrlExample.js +71 -29
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/elicitationUrlExample.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/jsonResponseStreamableHttp.js +45 -6
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/jsonResponseStreamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/simpleStreamableHttp.js +71 -31
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/simpleStreamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/simpleTaskInteractive.js +61 -18
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/simpleTaskInteractive.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js +57 -19
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/ssePollingExample.js +64 -17
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/ssePollingExample.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js +61 -13
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.d.ts +4 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/stores/in-memory.d.ts +17 -8
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/stores/in-memory.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/stores/in-memory.js +31 -14
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/stores/in-memory.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/middleware/bearerAuth.d.ts +9 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/middleware/bearerAuth.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/middleware/bearerAuth.js +17 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/middleware/bearerAuth.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.d.ts +12 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +46 -2
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts +1 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +39 -9
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts +10 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.js +72 -0
- package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.js.map +1 -1
- package/node_modules/@modelcontextprotocol/sdk/package.json +1 -1
- package/package.json +2 -2
- package/server.js +60 -8
package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/elicitationUrlExample.js
CHANGED
|
@@ -22,7 +22,6 @@ const bearerAuth_js_1 = require("../../server/auth/middleware/bearerAuth.js");
|
|
|
22
22
|
const types_js_1 = require("../../types.js");
|
|
23
23
|
const inMemoryEventStore_js_1 = require("../shared/inMemoryEventStore.js");
|
|
24
24
|
const demoInMemoryOAuthProvider_js_1 = require("./demoInMemoryOAuthProvider.js");
|
|
25
|
-
const auth_utils_js_1 = require("../../shared/auth-utils.js");
|
|
26
25
|
const cors_1 = __importDefault(require("cors"));
|
|
27
26
|
// Create an MCP server with implementation details
|
|
28
27
|
const getServer = () => {
|
|
@@ -196,18 +195,16 @@ const tokenVerifier = {
|
|
|
196
195
|
throw new Error(`Invalid or expired token: ${text}`);
|
|
197
196
|
}
|
|
198
197
|
const data = await response.json();
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
if (!(0, auth_utils_js_1.checkResourceAllowed)({ requestedResource: data.aud, configuredResource: mcpServerUrl })) {
|
|
203
|
-
throw new Error(`Expected resource indicator ${mcpServerUrl}, got: ${data.aud}`);
|
|
204
|
-
}
|
|
198
|
+
// `aud` is one value, a list, or absent: report the entry on this server's origin, if any
|
|
199
|
+
const audience = [data.aud ?? []].flat().find(aud => URL.canParse(aud) && new URL(aud).origin === mcpServerUrl.origin);
|
|
205
200
|
// Convert the response to AuthInfo format
|
|
206
201
|
return {
|
|
207
202
|
token,
|
|
208
203
|
clientId: data.client_id,
|
|
209
204
|
scopes: data.scope ? data.scope.split(' ') : [],
|
|
210
|
-
expiresAt: data.exp
|
|
205
|
+
expiresAt: data.exp,
|
|
206
|
+
// The resource the token was issued for (RFC 8707), compared with expectedResource below
|
|
207
|
+
resource: audience ? new URL(audience) : undefined
|
|
211
208
|
};
|
|
212
209
|
}
|
|
213
210
|
};
|
|
@@ -221,7 +218,9 @@ app.use((0, router_js_1.mcpAuthMetadataRouter)({
|
|
|
221
218
|
authMiddleware = (0, bearerAuth_js_1.requireBearerAuth)({
|
|
222
219
|
verifier: tokenVerifier,
|
|
223
220
|
requiredScopes: [],
|
|
224
|
-
resourceMetadataUrl: (0, router_js_1.getOAuthProtectedResourceMetadataUrl)(mcpServerUrl)
|
|
221
|
+
resourceMetadataUrl: (0, router_js_1.getOAuthProtectedResourceMetadataUrl)(mcpServerUrl),
|
|
222
|
+
// Accept only tokens issued for this server
|
|
223
|
+
expectedResource: mcpServerUrl
|
|
225
224
|
});
|
|
226
225
|
/**
|
|
227
226
|
* API Key Form Handling
|
|
@@ -495,20 +494,46 @@ app.post('/confirm-payment', express_1.default.urlencoded(), (req, res) => {
|
|
|
495
494
|
res.status(400).send('<h1>Error</h1><p>Invalid action</p>');
|
|
496
495
|
}
|
|
497
496
|
});
|
|
498
|
-
//
|
|
499
|
-
const
|
|
497
|
+
// Close sessions that have been idle for IDLE_MS, and keep at most MAX_SESSIONS open
|
|
498
|
+
const IDLE_MS = 30 * 60000;
|
|
499
|
+
const MAX_SESSIONS = 1000;
|
|
500
|
+
const sessions = new Map();
|
|
501
|
+
// Count open responses so a long-running request or a listening SSE stream is not treated as idle
|
|
502
|
+
const trackResponse = (session, res) => {
|
|
503
|
+
if (!res.socket || res.destroyed)
|
|
504
|
+
return;
|
|
505
|
+
session.open++;
|
|
506
|
+
res.on('close', () => {
|
|
507
|
+
session.open--;
|
|
508
|
+
session.lastActive = Date.now();
|
|
509
|
+
});
|
|
510
|
+
};
|
|
511
|
+
// Close sessions with nothing open and no activity for IDLE_MS
|
|
512
|
+
setInterval(() => {
|
|
513
|
+
const cutoff = Date.now() - IDLE_MS;
|
|
514
|
+
for (const { transport, open, lastActive } of sessions.values()) {
|
|
515
|
+
if (open === 0 && lastActive < cutoff)
|
|
516
|
+
transport.close().catch(console.error);
|
|
517
|
+
}
|
|
518
|
+
}, 60000).unref();
|
|
500
519
|
const sessionsNeedingElicitation = {};
|
|
501
520
|
// MCP POST endpoint
|
|
502
521
|
const mcpPostHandler = async (req, res) => {
|
|
503
522
|
const sessionId = req.headers['mcp-session-id'];
|
|
504
523
|
console.debug(`Received MCP POST for session: ${sessionId || 'unknown'}`);
|
|
505
524
|
try {
|
|
525
|
+
const session = sessionId ? sessions.get(sessionId) : undefined;
|
|
506
526
|
let transport;
|
|
507
|
-
if (
|
|
527
|
+
if (session) {
|
|
508
528
|
// Reuse existing transport
|
|
509
|
-
transport =
|
|
529
|
+
transport = session.transport;
|
|
530
|
+
trackResponse(session, res);
|
|
510
531
|
}
|
|
511
532
|
else if (!sessionId && (0, types_js_1.isInitializeRequest)(req.body)) {
|
|
533
|
+
if (sessions.size >= MAX_SESSIONS) {
|
|
534
|
+
res.status(503).json({ jsonrpc: '2.0', error: { code: -32000, message: 'Too many open sessions' }, id: null });
|
|
535
|
+
return;
|
|
536
|
+
}
|
|
512
537
|
const server = getServer();
|
|
513
538
|
// New initialization request
|
|
514
539
|
const eventStore = new inMemoryEventStore_js_1.InMemoryEventStore();
|
|
@@ -519,7 +544,7 @@ const mcpPostHandler = async (req, res) => {
|
|
|
519
544
|
// Store the transport by session ID when session is initialized
|
|
520
545
|
// This avoids race conditions where requests might come in before the session is stored
|
|
521
546
|
console.log(`Session initialized with ID: ${sessionId}`);
|
|
522
|
-
|
|
547
|
+
sessions.set(sessionId, { transport, open: 0, lastActive: Date.now() });
|
|
523
548
|
sessionsNeedingElicitation[sessionId] = {
|
|
524
549
|
elicitationSender: params => server.server.elicitInput(params),
|
|
525
550
|
createCompletionNotifier: elicitationId => server.server.createElicitationCompletionNotifier(elicitationId)
|
|
@@ -529,9 +554,9 @@ const mcpPostHandler = async (req, res) => {
|
|
|
529
554
|
// Set up onclose handler to clean up transport when closed
|
|
530
555
|
transport.onclose = () => {
|
|
531
556
|
const sid = transport.sessionId;
|
|
532
|
-
if (sid &&
|
|
533
|
-
console.log(`Transport closed for session ${sid}, removing from
|
|
534
|
-
delete
|
|
557
|
+
if (sid && sessions.has(sid)) {
|
|
558
|
+
console.log(`Transport closed for session ${sid}, removing from sessions map`);
|
|
559
|
+
sessions.delete(sid);
|
|
535
560
|
delete sessionsNeedingElicitation[sid];
|
|
536
561
|
}
|
|
537
562
|
};
|
|
@@ -541,8 +566,13 @@ const mcpPostHandler = async (req, res) => {
|
|
|
541
566
|
await transport.handleRequest(req, res, req.body);
|
|
542
567
|
return; // Already handled
|
|
543
568
|
}
|
|
569
|
+
else if (sessionId) {
|
|
570
|
+
// Unknown or expired session ID - the client should start a new session
|
|
571
|
+
res.status(404).json({ jsonrpc: '2.0', error: { code: -32001, message: 'Session not found' }, id: null });
|
|
572
|
+
return;
|
|
573
|
+
}
|
|
544
574
|
else {
|
|
545
|
-
// Invalid request - no session ID
|
|
575
|
+
// Invalid request - no session ID and not an initialization request
|
|
546
576
|
res.status(400).json({
|
|
547
577
|
jsonrpc: '2.0',
|
|
548
578
|
error: {
|
|
@@ -576,8 +606,14 @@ app.post('/mcp', authMiddleware, mcpPostHandler);
|
|
|
576
606
|
// Handle GET requests for SSE streams (using built-in support from StreamableHTTP)
|
|
577
607
|
const mcpGetHandler = async (req, res) => {
|
|
578
608
|
const sessionId = req.headers['mcp-session-id'];
|
|
579
|
-
if (!sessionId
|
|
580
|
-
res.status(400).send('
|
|
609
|
+
if (!sessionId) {
|
|
610
|
+
res.status(400).send('Missing session ID');
|
|
611
|
+
return;
|
|
612
|
+
}
|
|
613
|
+
const session = sessions.get(sessionId);
|
|
614
|
+
if (!session) {
|
|
615
|
+
// Unknown or expired session ID - the client should start a new session
|
|
616
|
+
res.status(404).json({ jsonrpc: '2.0', error: { code: -32001, message: 'Session not found' }, id: null });
|
|
581
617
|
return;
|
|
582
618
|
}
|
|
583
619
|
// Check for Last-Event-ID header for resumability
|
|
@@ -588,8 +624,8 @@ const mcpGetHandler = async (req, res) => {
|
|
|
588
624
|
else {
|
|
589
625
|
console.log(`Establishing new SSE stream for session ${sessionId}`);
|
|
590
626
|
}
|
|
591
|
-
|
|
592
|
-
await transport.handleRequest(req, res);
|
|
627
|
+
trackResponse(session, res);
|
|
628
|
+
await session.transport.handleRequest(req, res);
|
|
593
629
|
if (sessionsNeedingElicitation[sessionId]) {
|
|
594
630
|
const { elicitationSender, createCompletionNotifier } = sessionsNeedingElicitation[sessionId];
|
|
595
631
|
// Send an elicitation request to the client in the background
|
|
@@ -610,14 +646,20 @@ app.get('/mcp', authMiddleware, mcpGetHandler);
|
|
|
610
646
|
// Handle DELETE requests for session termination (according to MCP spec)
|
|
611
647
|
const mcpDeleteHandler = async (req, res) => {
|
|
612
648
|
const sessionId = req.headers['mcp-session-id'];
|
|
613
|
-
if (!sessionId
|
|
614
|
-
res.status(400).send('
|
|
649
|
+
if (!sessionId) {
|
|
650
|
+
res.status(400).send('Missing session ID');
|
|
651
|
+
return;
|
|
652
|
+
}
|
|
653
|
+
const session = sessions.get(sessionId);
|
|
654
|
+
if (!session) {
|
|
655
|
+
// Unknown or expired session ID - the client should start a new session
|
|
656
|
+
res.status(404).json({ jsonrpc: '2.0', error: { code: -32001, message: 'Session not found' }, id: null });
|
|
615
657
|
return;
|
|
616
658
|
}
|
|
617
659
|
console.log(`Received session termination request for session ${sessionId}`);
|
|
618
660
|
try {
|
|
619
|
-
|
|
620
|
-
await transport.handleRequest(req, res);
|
|
661
|
+
trackResponse(session, res);
|
|
662
|
+
await session.transport.handleRequest(req, res);
|
|
621
663
|
}
|
|
622
664
|
catch (error) {
|
|
623
665
|
console.error('Error handling session termination:', error);
|
|
@@ -639,11 +681,11 @@ app.listen(MCP_PORT, error => {
|
|
|
639
681
|
process.on('SIGINT', async () => {
|
|
640
682
|
console.log('Shutting down server...');
|
|
641
683
|
// Close all active transports to properly clean up resources
|
|
642
|
-
for (const sessionId
|
|
684
|
+
for (const [sessionId, { transport }] of sessions) {
|
|
643
685
|
try {
|
|
644
686
|
console.log(`Closing transport for session ${sessionId}`);
|
|
645
|
-
await
|
|
646
|
-
delete
|
|
687
|
+
await transport.close();
|
|
688
|
+
sessions.delete(sessionId);
|
|
647
689
|
delete sessionsNeedingElicitation[sessionId];
|
|
648
690
|
}
|
|
649
691
|
catch (error) {
|
package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/elicitationUrlExample.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elicitationUrlExample.js","sourceRoot":"","sources":["../../../../src/examples/server/elicitationUrlExample.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"elicitationUrlExample.js","sourceRoot":"","sources":["../../../../src/examples/server/elicitationUrlExample.ts"],"names":[],"mappings":"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"}
|
|
@@ -89,20 +89,46 @@ const getServer = () => {
|
|
|
89
89
|
return server;
|
|
90
90
|
};
|
|
91
91
|
const app = (0, express_js_1.createMcpExpressApp)();
|
|
92
|
-
//
|
|
93
|
-
const
|
|
92
|
+
// Close sessions that have been idle for IDLE_MS, and keep at most MAX_SESSIONS open
|
|
93
|
+
const IDLE_MS = 30 * 60000;
|
|
94
|
+
const MAX_SESSIONS = 1000;
|
|
95
|
+
const sessions = new Map();
|
|
96
|
+
// Count open responses so a long-running request is not treated as idle
|
|
97
|
+
const trackResponse = (session, res) => {
|
|
98
|
+
if (!res.socket || res.destroyed)
|
|
99
|
+
return;
|
|
100
|
+
session.open++;
|
|
101
|
+
res.on('close', () => {
|
|
102
|
+
session.open--;
|
|
103
|
+
session.lastActive = Date.now();
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
// Close sessions with nothing open and no activity for IDLE_MS
|
|
107
|
+
setInterval(() => {
|
|
108
|
+
const cutoff = Date.now() - IDLE_MS;
|
|
109
|
+
for (const { transport, open, lastActive } of sessions.values()) {
|
|
110
|
+
if (open === 0 && lastActive < cutoff)
|
|
111
|
+
transport.close().catch(console.error);
|
|
112
|
+
}
|
|
113
|
+
}, 60000).unref();
|
|
94
114
|
app.post('/mcp', async (req, res) => {
|
|
95
115
|
console.log('Received MCP request:', req.body);
|
|
96
116
|
try {
|
|
97
117
|
// Check for existing session ID
|
|
98
118
|
const sessionId = req.headers['mcp-session-id'];
|
|
119
|
+
const session = sessionId ? sessions.get(sessionId) : undefined;
|
|
99
120
|
let transport;
|
|
100
|
-
if (
|
|
121
|
+
if (session) {
|
|
101
122
|
// Reuse existing transport
|
|
102
|
-
transport =
|
|
123
|
+
transport = session.transport;
|
|
124
|
+
trackResponse(session, res);
|
|
103
125
|
}
|
|
104
126
|
else if (!sessionId && (0, types_js_1.isInitializeRequest)(req.body)) {
|
|
105
127
|
// New initialization request - use JSON response mode
|
|
128
|
+
if (sessions.size >= MAX_SESSIONS) {
|
|
129
|
+
res.status(503).json({ jsonrpc: '2.0', error: { code: -32000, message: 'Too many open sessions' }, id: null });
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
106
132
|
transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
|
|
107
133
|
sessionIdGenerator: () => (0, node_crypto_1.randomUUID)(),
|
|
108
134
|
enableJsonResponse: true, // Enable JSON response mode
|
|
@@ -110,17 +136,30 @@ app.post('/mcp', async (req, res) => {
|
|
|
110
136
|
// Store the transport by session ID when session is initialized
|
|
111
137
|
// This avoids race conditions where requests might come in before the session is stored
|
|
112
138
|
console.log(`Session initialized with ID: ${sessionId}`);
|
|
113
|
-
|
|
139
|
+
sessions.set(sessionId, { transport, open: 0, lastActive: Date.now() });
|
|
114
140
|
}
|
|
115
141
|
});
|
|
142
|
+
// Set up onclose handler to clean up transport when closed
|
|
143
|
+
transport.onclose = () => {
|
|
144
|
+
const sid = transport.sessionId;
|
|
145
|
+
if (sid && sessions.has(sid)) {
|
|
146
|
+
console.log(`Transport closed for session ${sid}, removing from sessions map`);
|
|
147
|
+
sessions.delete(sid);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
116
150
|
// Connect the transport to the MCP server BEFORE handling the request
|
|
117
151
|
const server = getServer();
|
|
118
152
|
await server.connect(transport);
|
|
119
153
|
await transport.handleRequest(req, res, req.body);
|
|
120
154
|
return; // Already handled
|
|
121
155
|
}
|
|
156
|
+
else if (sessionId) {
|
|
157
|
+
// Unknown or expired session ID - the client should start a new session
|
|
158
|
+
res.status(404).json({ jsonrpc: '2.0', error: { code: -32001, message: 'Session not found' }, id: null });
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
122
161
|
else {
|
|
123
|
-
// Invalid request - no session ID
|
|
162
|
+
// Invalid request - no session ID and not an initialization request
|
|
124
163
|
res.status(400).json({
|
|
125
164
|
jsonrpc: '2.0',
|
|
126
165
|
error: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonResponseStreamableHttp.js","sourceRoot":"","sources":["../../../../src/examples/server/jsonResponseStreamableHttp.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,6CAAyC;AACzC,gDAAgD;AAChD,sEAA+E;AAC/E,0CAA4B;AAC5B,6CAAqE;AACrE,wDAA8D;AAE9D,mDAAmD;AACnD,MAAM,SAAS,GAAG,GAAG,EAAE;IACnB,MAAM,MAAM,GAAG,IAAI,kBAAS,CACxB;QACI,IAAI,EAAE,sCAAsC;QAC5C,OAAO,EAAE,OAAO;KACnB,EACD;QACI,YAAY,EAAE;YACV,OAAO,EAAE,EAAE;SACd;KACJ,CACJ,CAAC;IAEF,iDAAiD;IACjD,MAAM,CAAC,YAAY,CACf,OAAO,EACP;QACI,WAAW,EAAE,wBAAwB;QACrC,WAAW,EAAE;YACT,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;SAC7C;KACJ,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAA2B,EAAE;QACxC,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU,IAAI,GAAG;iBAC1B;aACJ;SACJ,CAAC;IACN,CAAC,CACJ,CAAC;IAEF,mEAAmE;IACnE,MAAM,CAAC,YAAY,CACf,aAAa,EACb;QACI,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE;YACT,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;SAC7C;KACJ,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAA2B,EAAE;QAC/C,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAE9E,MAAM,MAAM,CAAC,kBAAkB,CAC3B;YACI,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,4BAA4B,IAAI,EAAE;SAC3C,EACD,KAAK,CAAC,SAAS,CAClB,CAAC;QAEF,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAsC;QAEzD,MAAM,MAAM,CAAC,kBAAkB,CAC3B;YACI,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,6BAA6B,IAAI,EAAE;SAC5C,EACD,KAAK,CAAC,SAAS,CAClB,CAAC;QAEF,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,6CAA6C;QAEhE,MAAM,MAAM,CAAC,kBAAkB,CAC3B;YACI,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,8BAA8B,IAAI,EAAE;SAC7C,EACD,KAAK,CAAC,SAAS,CAClB,CAAC;QAEF,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,iBAAiB,IAAI,GAAG;iBACjC;aACJ;SACJ,CAAC;IACN,CAAC,CACJ,CAAC;IACF,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,IAAA,gCAAmB,GAAE,CAAC;AAElC,
|
|
1
|
+
{"version":3,"file":"jsonResponseStreamableHttp.js","sourceRoot":"","sources":["../../../../src/examples/server/jsonResponseStreamableHttp.ts"],"names":[],"mappings":"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"}
|
package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/simpleStreamableHttp.js
CHANGED
|
@@ -34,7 +34,6 @@ const types_js_1 = require("../../types.js");
|
|
|
34
34
|
const inMemoryEventStore_js_1 = require("../shared/inMemoryEventStore.js");
|
|
35
35
|
const in_memory_js_1 = require("../../experimental/tasks/stores/in-memory.js");
|
|
36
36
|
const demoInMemoryOAuthProvider_js_1 = require("./demoInMemoryOAuthProvider.js");
|
|
37
|
-
const auth_utils_js_1 = require("../../shared/auth-utils.js");
|
|
38
37
|
// Check for OAuth flag
|
|
39
38
|
const useOAuth = process.argv.includes('--oauth');
|
|
40
39
|
const strictOAuth = process.argv.includes('--oauth-strict');
|
|
@@ -554,20 +553,16 @@ if (useOAuth) {
|
|
|
554
553
|
throw new Error(`Invalid or expired token: ${text}`);
|
|
555
554
|
}
|
|
556
555
|
const data = await response.json();
|
|
557
|
-
if
|
|
558
|
-
|
|
559
|
-
throw new Error(`Resource Indicator (RFC8707) missing`);
|
|
560
|
-
}
|
|
561
|
-
if (!(0, auth_utils_js_1.checkResourceAllowed)({ requestedResource: data.aud, configuredResource: mcpServerUrl })) {
|
|
562
|
-
throw new Error(`Expected resource indicator ${mcpServerUrl}, got: ${data.aud}`);
|
|
563
|
-
}
|
|
564
|
-
}
|
|
556
|
+
// `aud` is one value, a list, or absent: report the entry on this server's origin, if any
|
|
557
|
+
const audience = [data.aud ?? []].flat().find(aud => URL.canParse(aud) && new URL(aud).origin === mcpServerUrl.origin);
|
|
565
558
|
// Convert the response to AuthInfo format
|
|
566
559
|
return {
|
|
567
560
|
token,
|
|
568
561
|
clientId: data.client_id,
|
|
569
562
|
scopes: data.scope ? data.scope.split(' ') : [],
|
|
570
|
-
expiresAt: data.exp
|
|
563
|
+
expiresAt: data.exp,
|
|
564
|
+
// The resource the token was issued for (RFC 8707), compared with expectedResource below
|
|
565
|
+
resource: audience ? new URL(audience) : undefined
|
|
571
566
|
};
|
|
572
567
|
}
|
|
573
568
|
};
|
|
@@ -581,11 +576,33 @@ if (useOAuth) {
|
|
|
581
576
|
authMiddleware = (0, bearerAuth_js_1.requireBearerAuth)({
|
|
582
577
|
verifier: tokenVerifier,
|
|
583
578
|
requiredScopes: [],
|
|
584
|
-
resourceMetadataUrl: (0, router_js_1.getOAuthProtectedResourceMetadataUrl)(mcpServerUrl)
|
|
579
|
+
resourceMetadataUrl: (0, router_js_1.getOAuthProtectedResourceMetadataUrl)(mcpServerUrl),
|
|
580
|
+
// With --oauth-strict, accept only tokens issued for this server
|
|
581
|
+
expectedResource: strictOAuth ? mcpServerUrl : undefined
|
|
585
582
|
});
|
|
586
583
|
}
|
|
587
|
-
//
|
|
588
|
-
const
|
|
584
|
+
// Close sessions that have been idle for IDLE_MS, and keep at most MAX_SESSIONS open
|
|
585
|
+
const IDLE_MS = 30 * 60000;
|
|
586
|
+
const MAX_SESSIONS = 1000;
|
|
587
|
+
const sessions = new Map();
|
|
588
|
+
// Count open responses so a long-running request or a listening SSE stream is not treated as idle
|
|
589
|
+
const trackResponse = (session, res) => {
|
|
590
|
+
if (!res.socket || res.destroyed)
|
|
591
|
+
return;
|
|
592
|
+
session.open++;
|
|
593
|
+
res.on('close', () => {
|
|
594
|
+
session.open--;
|
|
595
|
+
session.lastActive = Date.now();
|
|
596
|
+
});
|
|
597
|
+
};
|
|
598
|
+
// Close sessions with nothing open and no activity for IDLE_MS
|
|
599
|
+
setInterval(() => {
|
|
600
|
+
const cutoff = Date.now() - IDLE_MS;
|
|
601
|
+
for (const { transport, open, lastActive } of sessions.values()) {
|
|
602
|
+
if (open === 0 && lastActive < cutoff)
|
|
603
|
+
transport.close().catch(console.error);
|
|
604
|
+
}
|
|
605
|
+
}, 60000).unref();
|
|
589
606
|
// MCP POST endpoint with optional auth
|
|
590
607
|
const mcpPostHandler = async (req, res) => {
|
|
591
608
|
const sessionId = req.headers['mcp-session-id'];
|
|
@@ -599,13 +616,19 @@ const mcpPostHandler = async (req, res) => {
|
|
|
599
616
|
console.log('Authenticated user:', req.auth);
|
|
600
617
|
}
|
|
601
618
|
try {
|
|
619
|
+
const session = sessionId ? sessions.get(sessionId) : undefined;
|
|
602
620
|
let transport;
|
|
603
|
-
if (
|
|
621
|
+
if (session) {
|
|
604
622
|
// Reuse existing transport
|
|
605
|
-
transport =
|
|
623
|
+
transport = session.transport;
|
|
624
|
+
trackResponse(session, res);
|
|
606
625
|
}
|
|
607
626
|
else if (!sessionId && (0, types_js_1.isInitializeRequest)(req.body)) {
|
|
608
627
|
// New initialization request
|
|
628
|
+
if (sessions.size >= MAX_SESSIONS) {
|
|
629
|
+
res.status(503).json({ jsonrpc: '2.0', error: { code: -32000, message: 'Too many open sessions' }, id: null });
|
|
630
|
+
return;
|
|
631
|
+
}
|
|
609
632
|
const eventStore = new inMemoryEventStore_js_1.InMemoryEventStore();
|
|
610
633
|
transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
|
|
611
634
|
sessionIdGenerator: () => (0, node_crypto_1.randomUUID)(),
|
|
@@ -614,15 +637,15 @@ const mcpPostHandler = async (req, res) => {
|
|
|
614
637
|
// Store the transport by session ID when session is initialized
|
|
615
638
|
// This avoids race conditions where requests might come in before the session is stored
|
|
616
639
|
console.log(`Session initialized with ID: ${sessionId}`);
|
|
617
|
-
|
|
640
|
+
sessions.set(sessionId, { transport, open: 0, lastActive: Date.now() });
|
|
618
641
|
}
|
|
619
642
|
});
|
|
620
643
|
// Set up onclose handler to clean up transport when closed
|
|
621
644
|
transport.onclose = () => {
|
|
622
645
|
const sid = transport.sessionId;
|
|
623
|
-
if (sid &&
|
|
624
|
-
console.log(`Transport closed for session ${sid}, removing from
|
|
625
|
-
delete
|
|
646
|
+
if (sid && sessions.has(sid)) {
|
|
647
|
+
console.log(`Transport closed for session ${sid}, removing from sessions map`);
|
|
648
|
+
sessions.delete(sid);
|
|
626
649
|
}
|
|
627
650
|
};
|
|
628
651
|
// Connect the transport to the MCP server BEFORE handling the request
|
|
@@ -632,8 +655,13 @@ const mcpPostHandler = async (req, res) => {
|
|
|
632
655
|
await transport.handleRequest(req, res, req.body);
|
|
633
656
|
return; // Already handled
|
|
634
657
|
}
|
|
658
|
+
else if (sessionId) {
|
|
659
|
+
// Unknown or expired session ID - the client should start a new session
|
|
660
|
+
res.status(404).json({ jsonrpc: '2.0', error: { code: -32001, message: 'Session not found' }, id: null });
|
|
661
|
+
return;
|
|
662
|
+
}
|
|
635
663
|
else {
|
|
636
|
-
// Invalid request - no session ID
|
|
664
|
+
// Invalid request - no session ID and not an initialization request
|
|
637
665
|
res.status(400).json({
|
|
638
666
|
jsonrpc: '2.0',
|
|
639
667
|
error: {
|
|
@@ -672,8 +700,14 @@ else {
|
|
|
672
700
|
// Handle GET requests for SSE streams (using built-in support from StreamableHTTP)
|
|
673
701
|
const mcpGetHandler = async (req, res) => {
|
|
674
702
|
const sessionId = req.headers['mcp-session-id'];
|
|
675
|
-
if (!sessionId
|
|
676
|
-
res.status(400).send('
|
|
703
|
+
if (!sessionId) {
|
|
704
|
+
res.status(400).send('Missing session ID');
|
|
705
|
+
return;
|
|
706
|
+
}
|
|
707
|
+
const session = sessions.get(sessionId);
|
|
708
|
+
if (!session) {
|
|
709
|
+
// Unknown or expired session ID - the client should start a new session
|
|
710
|
+
res.status(404).json({ jsonrpc: '2.0', error: { code: -32001, message: 'Session not found' }, id: null });
|
|
677
711
|
return;
|
|
678
712
|
}
|
|
679
713
|
if (useOAuth && req.auth) {
|
|
@@ -687,8 +721,8 @@ const mcpGetHandler = async (req, res) => {
|
|
|
687
721
|
else {
|
|
688
722
|
console.log(`Establishing new SSE stream for session ${sessionId}`);
|
|
689
723
|
}
|
|
690
|
-
|
|
691
|
-
await transport.handleRequest(req, res);
|
|
724
|
+
trackResponse(session, res);
|
|
725
|
+
await session.transport.handleRequest(req, res);
|
|
692
726
|
};
|
|
693
727
|
// Set up GET route with conditional auth middleware
|
|
694
728
|
if (useOAuth && authMiddleware) {
|
|
@@ -700,14 +734,20 @@ else {
|
|
|
700
734
|
// Handle DELETE requests for session termination (according to MCP spec)
|
|
701
735
|
const mcpDeleteHandler = async (req, res) => {
|
|
702
736
|
const sessionId = req.headers['mcp-session-id'];
|
|
703
|
-
if (!sessionId
|
|
704
|
-
res.status(400).send('
|
|
737
|
+
if (!sessionId) {
|
|
738
|
+
res.status(400).send('Missing session ID');
|
|
739
|
+
return;
|
|
740
|
+
}
|
|
741
|
+
const session = sessions.get(sessionId);
|
|
742
|
+
if (!session) {
|
|
743
|
+
// Unknown or expired session ID - the client should start a new session
|
|
744
|
+
res.status(404).json({ jsonrpc: '2.0', error: { code: -32001, message: 'Session not found' }, id: null });
|
|
705
745
|
return;
|
|
706
746
|
}
|
|
707
747
|
console.log(`Received session termination request for session ${sessionId}`);
|
|
708
748
|
try {
|
|
709
|
-
|
|
710
|
-
await transport.handleRequest(req, res);
|
|
749
|
+
trackResponse(session, res);
|
|
750
|
+
await session.transport.handleRequest(req, res);
|
|
711
751
|
}
|
|
712
752
|
catch (error) {
|
|
713
753
|
console.error('Error handling session termination:', error);
|
|
@@ -734,11 +774,11 @@ app.listen(MCP_PORT, error => {
|
|
|
734
774
|
process.on('SIGINT', async () => {
|
|
735
775
|
console.log('Shutting down server...');
|
|
736
776
|
// Close all active transports to properly clean up resources
|
|
737
|
-
for (const sessionId
|
|
777
|
+
for (const [sessionId, { transport }] of sessions) {
|
|
738
778
|
try {
|
|
739
779
|
console.log(`Closing transport for session ${sessionId}`);
|
|
740
|
-
await
|
|
741
|
-
delete
|
|
780
|
+
await transport.close();
|
|
781
|
+
sessions.delete(sessionId);
|
|
742
782
|
}
|
|
743
783
|
catch (error) {
|
|
744
784
|
console.error(`Error closing transport for session ${sessionId}:`, error);
|