@nestjs-mcp/server 0.4.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/context.interface.d.ts +10 -5
- package/dist/mcp-core.module.js +27 -8
- package/dist/mcp-core.module.js.map +1 -1
- package/dist/mcp.constants.d.ts +5 -3
- package/dist/mcp.constants.js +6 -4
- package/dist/mcp.constants.js.map +1 -1
- package/dist/mcp.types.d.ts +8 -1
- package/dist/services/logger.service.js +2 -1
- package/dist/services/logger.service.js.map +1 -1
- package/dist/services/registry.service.js +32 -20
- package/dist/services/registry.service.js.map +1 -1
- package/dist/services/session.manager.d.ts +5 -1
- package/dist/services/session.manager.js +21 -2
- package/dist/services/session.manager.js.map +1 -1
- package/dist/transports/sse/sse.service.d.ts +14 -3
- package/dist/transports/sse/sse.service.js +87 -9
- package/dist/transports/sse/sse.service.js.map +1 -1
- package/dist/transports/streamable/streamable.service.d.ts +13 -3
- package/dist/transports/streamable/streamable.service.js +101 -8
- package/dist/transports/streamable/streamable.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/handler-args.types.d.ts +23 -0
- package/dist/types/handler-args.types.js +3 -0
- package/dist/types/handler-args.types.js.map +1 -0
- package/package.json +19 -19
- package/dist/classes/index.d.ts +0 -4
- package/dist/classes/index.js +0 -21
- package/dist/classes/index.js.map +0 -1
- package/dist/classes/prompt.args.d.ts +0 -8
- package/dist/classes/prompt.args.js +0 -16
- package/dist/classes/prompt.args.js.map +0 -1
- package/dist/classes/resource-template.args.d.ts +0 -8
- package/dist/classes/resource-template.args.js +0 -18
- package/dist/classes/resource-template.args.js.map +0 -1
- package/dist/classes/resource-uri.args.d.ts +0 -7
- package/dist/classes/resource-uri.args.js +0 -16
- package/dist/classes/resource-uri.args.js.map +0 -1
- package/dist/classes/tool.args.d.ts +0 -8
- package/dist/classes/tool.args.js +0 -16
- package/dist/classes/tool.args.js.map +0 -1
package/README.md
CHANGED
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
- [MCP Execution Context](#mcp-execution-context)
|
|
52
52
|
- [Guards with Dependency Injection](#guards-with-dependency-injection)
|
|
53
53
|
- [Session Management](#session-management)
|
|
54
|
+
- [Session Management Options](#session-management-options)
|
|
54
55
|
- [Transport Options](#transport-options)
|
|
55
56
|
- [Inspector Playground](#inspector-playground)
|
|
56
57
|
- [Examples](#examples)
|
|
@@ -943,6 +944,82 @@ Disabling unused transports can slightly reduce the application's surface area a
|
|
|
943
944
|
|
|
944
945
|
---
|
|
945
946
|
|
|
947
|
+
## Session Management Options
|
|
948
|
+
|
|
949
|
+
Configure session timeouts, cleanup intervals, and resource limits to optimize your server for production workloads.
|
|
950
|
+
|
|
951
|
+
**Configuration:**
|
|
952
|
+
|
|
953
|
+
```typescript
|
|
954
|
+
import { Module } from '@nestjs/common';
|
|
955
|
+
import { McpModule } from '@nestjs-mcp/server';
|
|
956
|
+
|
|
957
|
+
@Module({
|
|
958
|
+
imports: [
|
|
959
|
+
McpModule.forRoot({
|
|
960
|
+
name: 'My Server',
|
|
961
|
+
version: '1.0.0',
|
|
962
|
+
session: {
|
|
963
|
+
sessionTimeoutMs: 1800000, // 30 minutes (default)
|
|
964
|
+
cleanupIntervalMs: 300000, // 5 minutes (default)
|
|
965
|
+
maxConcurrentSessions: 1000, // Max sessions (default)
|
|
966
|
+
},
|
|
967
|
+
}),
|
|
968
|
+
],
|
|
969
|
+
})
|
|
970
|
+
export class AppModule {}
|
|
971
|
+
```
|
|
972
|
+
|
|
973
|
+
**Configuration Options:**
|
|
974
|
+
|
|
975
|
+
| Option | Type | Default | Description |
|
|
976
|
+
| ------------------------- | -------- | --------------------- | ---------------------------------------------------- |
|
|
977
|
+
| `sessionTimeoutMs` | `number` | `1800000` (30 min) | Maximum inactivity time before session cleanup |
|
|
978
|
+
| `cleanupIntervalMs` | `number` | `300000` (5 min) | Frequency of cleanup job execution |
|
|
979
|
+
| `maxConcurrentSessions` | `number` | `1000` | Maximum concurrent sessions allowed |
|
|
980
|
+
|
|
981
|
+
**How It Works:**
|
|
982
|
+
|
|
983
|
+
- **Activity Tracking**: Each session's `lastActivity` timestamp updates on every request
|
|
984
|
+
- **Cleanup Job**: Runs every `cleanupIntervalMs` to close and remove inactive sessions
|
|
985
|
+
- **Session Limit**: New connections are rejected (503) when `maxConcurrentSessions` is reached
|
|
986
|
+
|
|
987
|
+
**Production Recommendations:**
|
|
988
|
+
|
|
989
|
+
- **High-traffic servers**: Increase `maxConcurrentSessions` (2000-5000) and decrease `cleanupIntervalMs` (2-3 min)
|
|
990
|
+
- **Low-memory environments**: Decrease `maxConcurrentSessions` (100-500) and `sessionTimeoutMs` (10-15 min)
|
|
991
|
+
- **Long-running workflows**: Increase `sessionTimeoutMs` (60-90 min)
|
|
992
|
+
|
|
993
|
+
**Example with Environment Variables:**
|
|
994
|
+
|
|
995
|
+
```typescript
|
|
996
|
+
import { Module } from '@nestjs/common';
|
|
997
|
+
import { ConfigModule, ConfigService } from '@nestjs/config';
|
|
998
|
+
import { McpModule } from '@nestjs-mcp/server';
|
|
999
|
+
|
|
1000
|
+
@Module({
|
|
1001
|
+
imports: [
|
|
1002
|
+
ConfigModule.forRoot(),
|
|
1003
|
+
McpModule.forRootAsync({
|
|
1004
|
+
imports: [ConfigModule],
|
|
1005
|
+
inject: [ConfigService],
|
|
1006
|
+
useFactory: (config: ConfigService) => ({
|
|
1007
|
+
name: 'My Server',
|
|
1008
|
+
version: '1.0.0',
|
|
1009
|
+
session: {
|
|
1010
|
+
sessionTimeoutMs: config.get('MCP_SESSION_TIMEOUT', 1800000),
|
|
1011
|
+
cleanupIntervalMs: config.get('MCP_CLEANUP_INTERVAL', 300000),
|
|
1012
|
+
maxConcurrentSessions: config.get('MCP_MAX_SESSIONS', 1000),
|
|
1013
|
+
},
|
|
1014
|
+
}),
|
|
1015
|
+
}),
|
|
1016
|
+
],
|
|
1017
|
+
})
|
|
1018
|
+
export class AppModule {}
|
|
1019
|
+
```
|
|
1020
|
+
|
|
1021
|
+
---
|
|
1022
|
+
|
|
946
1023
|
## Inspector Playground
|
|
947
1024
|
|
|
948
1025
|
Use the Inspector Playground to interactively test and debug your MCP server endpoints in a browser UI. This tool, powered by [`@modelcontextprotocol/inspector`](https://www.npmjs.com/package/@modelcontextprotocol/inspector), allows you to:
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -17,7 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./mcp.module"), exports);
|
|
18
18
|
__exportStar(require("./mcp.types"), exports);
|
|
19
19
|
__exportStar(require("./interfaces"), exports);
|
|
20
|
-
__exportStar(require("./
|
|
20
|
+
__exportStar(require("./types/handler-args.types"), exports);
|
|
21
21
|
__exportStar(require("./services"), exports);
|
|
22
22
|
__exportStar(require("./decorators"), exports);
|
|
23
23
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,+CAA6B;AAC7B,8CAA4B;AAG5B,+CAA6B;AAG7B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,+CAA6B;AAC7B,8CAA4B;AAG5B,+CAA6B;AAG7B,6DAA2C;AAG3C,6CAA2B;AAG3B,+CAA6B"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import type { Type } from '@nestjs/common';
|
|
2
|
+
import type { Request } from 'express';
|
|
3
|
+
import type { McpHandlerArgs } from '../types/handler-args.types';
|
|
4
|
+
export interface McpExecutionContext {
|
|
5
|
+
getType(): 'mcp';
|
|
6
|
+
getHandler(): (...args: any[]) => any;
|
|
7
|
+
getClass(): Type<any>;
|
|
8
|
+
getSessionId(): string;
|
|
9
|
+
getArgs<T = McpHandlerArgs>(): T;
|
|
10
|
+
getRequest<R = Request>(): R;
|
|
6
11
|
}
|
package/dist/mcp-core.module.js
CHANGED
|
@@ -97,7 +97,16 @@ let McpCoreModule = McpCoreModule_1 = class McpCoreModule {
|
|
|
97
97
|
inject: [mcp_constants_1.MCP_MODULE_OPTIONS],
|
|
98
98
|
},
|
|
99
99
|
{
|
|
100
|
-
provide:
|
|
100
|
+
provide: mcp_constants_1.MCP_SESSION_OPTIONS,
|
|
101
|
+
useFactory: (mcpOptions) => ({
|
|
102
|
+
sessionTimeoutMs: mcpOptions.session?.sessionTimeoutMs ?? 1800000,
|
|
103
|
+
cleanupIntervalMs: mcpOptions.session?.cleanupIntervalMs ?? 300000,
|
|
104
|
+
maxConcurrentSessions: mcpOptions.session?.maxConcurrentSessions ?? 1000,
|
|
105
|
+
}),
|
|
106
|
+
inject: [mcp_constants_1.MCP_MODULE_OPTIONS],
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
provide: mcp_constants_1.MCP_SERVER_OPTIONS,
|
|
101
110
|
useFactory: (mcpOptions) => {
|
|
102
111
|
const { serverInfo, serverOptions, loggingOptions } = McpCoreModule_1.buildServerConfig(mcpOptions);
|
|
103
112
|
return {
|
|
@@ -122,7 +131,7 @@ let McpCoreModule = McpCoreModule_1 = class McpCoreModule {
|
|
|
122
131
|
providers: [
|
|
123
132
|
...allProviders,
|
|
124
133
|
{
|
|
125
|
-
provide:
|
|
134
|
+
provide: mcp_constants_1.MCP_SERVER_OPTIONS,
|
|
126
135
|
useValue: {
|
|
127
136
|
serverInfo,
|
|
128
137
|
options: serverOptions,
|
|
@@ -130,13 +139,21 @@ let McpCoreModule = McpCoreModule_1 = class McpCoreModule {
|
|
|
130
139
|
},
|
|
131
140
|
},
|
|
132
141
|
{
|
|
133
|
-
provide:
|
|
142
|
+
provide: mcp_constants_1.MCP_LOGGING_OPTIONS,
|
|
134
143
|
useValue: loggingOptions,
|
|
135
144
|
},
|
|
136
145
|
{
|
|
137
|
-
provide:
|
|
146
|
+
provide: mcp_constants_1.MCP_TRANSPORT_OPTIONS,
|
|
138
147
|
useValue: options.transports,
|
|
139
148
|
},
|
|
149
|
+
{
|
|
150
|
+
provide: mcp_constants_1.MCP_SESSION_OPTIONS,
|
|
151
|
+
useValue: {
|
|
152
|
+
sessionTimeoutMs: options.session?.sessionTimeoutMs ?? 1800000,
|
|
153
|
+
cleanupIntervalMs: options.session?.cleanupIntervalMs ?? 300000,
|
|
154
|
+
maxConcurrentSessions: options.session?.maxConcurrentSessions ?? 1000,
|
|
155
|
+
},
|
|
156
|
+
},
|
|
140
157
|
],
|
|
141
158
|
global: true,
|
|
142
159
|
};
|
|
@@ -144,14 +161,17 @@ let McpCoreModule = McpCoreModule_1 = class McpCoreModule {
|
|
|
144
161
|
static forRootAsync(options) {
|
|
145
162
|
const { imports = [] } = options;
|
|
146
163
|
const asyncProviders = this.createAsyncProviders(options);
|
|
147
|
-
const
|
|
148
|
-
|
|
164
|
+
const { controllers, providers } = McpCoreModule_1.getActiveTransportControllersAndProviders({
|
|
165
|
+
sse: { enabled: true },
|
|
166
|
+
streamable: { enabled: true },
|
|
167
|
+
});
|
|
149
168
|
return {
|
|
150
169
|
module: McpCoreModule_1,
|
|
151
170
|
imports,
|
|
152
|
-
controllers
|
|
171
|
+
controllers,
|
|
153
172
|
providers: [
|
|
154
173
|
...asyncProviders,
|
|
174
|
+
...providers,
|
|
155
175
|
registry_service_1.RegistryService,
|
|
156
176
|
discovery_service_1.DiscoveryService,
|
|
157
177
|
logger_service_1.McpLoggerService,
|
|
@@ -160,7 +180,6 @@ let McpCoreModule = McpCoreModule_1 = class McpCoreModule {
|
|
|
160
180
|
provide: async_hooks_1.AsyncLocalStorage,
|
|
161
181
|
useValue: new async_hooks_1.AsyncLocalStorage(),
|
|
162
182
|
},
|
|
163
|
-
...defaultProviders,
|
|
164
183
|
],
|
|
165
184
|
global: true,
|
|
166
185
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-core.module.js","sourceRoot":"","sources":["../src/mcp-core.module.ts"],"names":[],"mappings":";;;;;;;;;;AACA,2CAAuE;AACvE,uCAA+C;AAC/C,6CAAgD;AAEhD,
|
|
1
|
+
{"version":3,"file":"mcp-core.module.js","sourceRoot":"","sources":["../src/mcp-core.module.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.constants.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export declare const MCP_MODULE_OPTIONS
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
1
|
+
export declare const MCP_MODULE_OPTIONS: unique symbol;
|
|
2
|
+
export declare const MCP_SERVER_OPTIONS: unique symbol;
|
|
3
|
+
export declare const MCP_LOGGING_OPTIONS: unique symbol;
|
|
4
|
+
export declare const MCP_TRANSPORT_OPTIONS: unique symbol;
|
|
5
|
+
export declare const MCP_SESSION_OPTIONS: unique symbol;
|
package/dist/mcp.constants.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MCP_TRANSPORT_OPTIONS = exports.MCP_LOGGING_OPTIONS = exports.MCP_MODULE_OPTIONS = void 0;
|
|
4
|
-
exports.MCP_MODULE_OPTIONS = 'MCP_MODULE_OPTIONS';
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
3
|
+
exports.MCP_SESSION_OPTIONS = exports.MCP_TRANSPORT_OPTIONS = exports.MCP_LOGGING_OPTIONS = exports.MCP_SERVER_OPTIONS = exports.MCP_MODULE_OPTIONS = void 0;
|
|
4
|
+
exports.MCP_MODULE_OPTIONS = Symbol('MCP_MODULE_OPTIONS');
|
|
5
|
+
exports.MCP_SERVER_OPTIONS = Symbol('MCP_SERVER_OPTIONS');
|
|
6
|
+
exports.MCP_LOGGING_OPTIONS = Symbol('MCP_LOGGING_OPTIONS');
|
|
7
|
+
exports.MCP_TRANSPORT_OPTIONS = Symbol('MCP_TRANSPORT_OPTIONS');
|
|
8
|
+
exports.MCP_SESSION_OPTIONS = Symbol('MCP_SESSION_OPTIONS');
|
|
7
9
|
//# sourceMappingURL=mcp.constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.constants.js","sourceRoot":"","sources":["../src/mcp.constants.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"mcp.constants.js","sourceRoot":"","sources":["../src/mcp.constants.ts"],"names":[],"mappings":";;;AAMa,QAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAGlD,QAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAGlD,QAAA,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAGpD,QAAA,qBAAqB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAGxD,QAAA,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC"}
|
package/dist/mcp.types.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { StreamableHTTPServerTransportOptions } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
2
|
-
import { ZodRawShapeCompat } from '@modelcontextprotocol/sdk/server/zod-compat.js';
|
|
2
|
+
import { ZodRawShapeCompat as SdkZodRawShapeCompat } from '@modelcontextprotocol/sdk/server/zod-compat.js';
|
|
3
3
|
import { ProtocolOptions, RequestHandlerExtra as SdkRequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
|
|
4
4
|
import { Implementation, ServerCapabilities, ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
5
5
|
import { Provider, Type } from '@nestjs/common';
|
|
6
|
+
export type ZodRawShapeCompat = SdkZodRawShapeCompat;
|
|
6
7
|
export type PromptArgsRawShape = ZodRawShapeCompat;
|
|
7
8
|
export type RequestHandlerExtra = SdkRequestHandlerExtra<ServerRequest, ServerNotification> & {
|
|
8
9
|
headers: Record<string, string>;
|
|
@@ -21,6 +22,11 @@ export type McpLoggingOptions = {
|
|
|
21
22
|
enabled?: boolean;
|
|
22
23
|
level?: 'debug' | 'verbose' | 'log' | 'warn' | 'error';
|
|
23
24
|
};
|
|
25
|
+
export type McpSessionOptions = {
|
|
26
|
+
sessionTimeoutMs?: number;
|
|
27
|
+
cleanupIntervalMs?: number;
|
|
28
|
+
maxConcurrentSessions?: number;
|
|
29
|
+
};
|
|
24
30
|
export type McpModuleOptions = {
|
|
25
31
|
imports?: Type<any>[];
|
|
26
32
|
providers?: Provider[];
|
|
@@ -30,6 +36,7 @@ export type McpModuleOptions = {
|
|
|
30
36
|
capabilities?: ServerCapabilities;
|
|
31
37
|
protocolOptions?: ProtocolOptions;
|
|
32
38
|
logging?: McpLoggingOptions;
|
|
39
|
+
session?: McpSessionOptions;
|
|
33
40
|
transports?: McpModuleTransportOptions;
|
|
34
41
|
};
|
|
35
42
|
export type McpModuleTransportOptions = {
|
|
@@ -14,6 +14,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.McpLoggerService = void 0;
|
|
16
16
|
const common_1 = require("@nestjs/common");
|
|
17
|
+
const mcp_constants_1 = require("../mcp.constants");
|
|
17
18
|
let McpLoggerService = class McpLoggerService {
|
|
18
19
|
logger;
|
|
19
20
|
options;
|
|
@@ -91,7 +92,7 @@ exports.McpLoggerService = McpLoggerService;
|
|
|
91
92
|
exports.McpLoggerService = McpLoggerService = __decorate([
|
|
92
93
|
(0, common_1.Injectable)(),
|
|
93
94
|
__param(0, (0, common_1.Optional)()),
|
|
94
|
-
__param(0, (0, common_1.Inject)(
|
|
95
|
+
__param(0, (0, common_1.Inject)(mcp_constants_1.MCP_LOGGING_OPTIONS)),
|
|
95
96
|
__metadata("design:paramtypes", [Object])
|
|
96
97
|
], McpLoggerService);
|
|
97
98
|
//# sourceMappingURL=logger.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../src/services/logger.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAMwB;
|
|
1
|
+
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../src/services/logger.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,6 @@ exports.RegistryService = void 0;
|
|
|
13
13
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
14
14
|
const common_1 = require("@nestjs/common");
|
|
15
15
|
const core_1 = require("@nestjs/core");
|
|
16
|
-
const classes_1 = require("../classes");
|
|
17
16
|
const decorators_1 = require("../decorators");
|
|
18
17
|
const discovery_service_1 = require("./discovery.service");
|
|
19
18
|
const logger_service_1 = require("./logger.service");
|
|
@@ -54,16 +53,39 @@ let RegistryService = class RegistryService {
|
|
|
54
53
|
switch (this.getDecoratorType(method)) {
|
|
55
54
|
case 'RESOURCE':
|
|
56
55
|
return args[0] instanceof URL
|
|
57
|
-
?
|
|
58
|
-
|
|
56
|
+
? {
|
|
57
|
+
type: 'resource:uri',
|
|
58
|
+
uri: args[0],
|
|
59
|
+
extra: args[1],
|
|
60
|
+
}
|
|
61
|
+
: {
|
|
62
|
+
type: 'resource:template',
|
|
63
|
+
uri: args[0],
|
|
64
|
+
variables: args[1],
|
|
65
|
+
extra: args[2],
|
|
66
|
+
};
|
|
59
67
|
case 'PROMPT':
|
|
60
68
|
return args.length === 1
|
|
61
|
-
?
|
|
62
|
-
|
|
69
|
+
? {
|
|
70
|
+
type: 'prompt',
|
|
71
|
+
extra: args[0],
|
|
72
|
+
}
|
|
73
|
+
: {
|
|
74
|
+
type: 'prompt',
|
|
75
|
+
args: args[0],
|
|
76
|
+
extra: args[1],
|
|
77
|
+
};
|
|
63
78
|
case 'TOOL':
|
|
64
79
|
return args.length === 1
|
|
65
|
-
?
|
|
66
|
-
|
|
80
|
+
? {
|
|
81
|
+
type: 'tool',
|
|
82
|
+
extra: args[0],
|
|
83
|
+
}
|
|
84
|
+
: {
|
|
85
|
+
type: 'tool',
|
|
86
|
+
params: args[0],
|
|
87
|
+
extra: args[1],
|
|
88
|
+
};
|
|
67
89
|
default:
|
|
68
90
|
throw new Error(`Unknown decorator type for method ${method.name}`);
|
|
69
91
|
}
|
|
@@ -97,22 +119,12 @@ let RegistryService = class RegistryService {
|
|
|
97
119
|
return Promise.resolve();
|
|
98
120
|
const handlerArgs = this.getHandlerArgs(methodKey, args);
|
|
99
121
|
const context = {
|
|
100
|
-
args: handlerArgs,
|
|
101
122
|
getType: () => 'mcp',
|
|
102
123
|
getClass: () => instance.constructor,
|
|
103
|
-
getArgs: () => args,
|
|
104
|
-
getArgByIndex: (index) => args[index],
|
|
105
|
-
getSessionId: () => sessionId,
|
|
106
124
|
getHandler: () => methodKey,
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
throw new Error('Response not available in MCP context');
|
|
111
|
-
},
|
|
112
|
-
getNext: () => {
|
|
113
|
-
throw new Error('Next not available in MCP context');
|
|
114
|
-
},
|
|
115
|
-
}),
|
|
125
|
+
getSessionId: () => sessionId,
|
|
126
|
+
getArgs: () => handlerArgs,
|
|
127
|
+
getRequest: () => request,
|
|
116
128
|
};
|
|
117
129
|
return (async () => {
|
|
118
130
|
for (const Guard of allGuards) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.service.js","sourceRoot":"","sources":["../../src/services/registry.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oEAGiD;AAEjD,2CAIwB;AACxB,uCAAoD;AAGpD,
|
|
1
|
+
{"version":3,"file":"registry.service.js","sourceRoot":"","sources":["../../src/services/registry.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,15 @@ import { Request } from 'express';
|
|
|
4
4
|
type Session = {
|
|
5
5
|
transport: StreamableHTTPServerTransport | SSEServerTransport;
|
|
6
6
|
request: Request;
|
|
7
|
+
lastActivity: number;
|
|
7
8
|
};
|
|
8
9
|
export declare class SessionManager {
|
|
9
10
|
private sessions;
|
|
10
11
|
getSession(sessionId: string): Session | undefined;
|
|
11
|
-
setSession(sessionId: string, session: Session): void;
|
|
12
|
+
setSession(sessionId: string, session: Omit<Session, 'lastActivity'>): void;
|
|
12
13
|
deleteSession(sessionId: string): void;
|
|
14
|
+
getActiveSessionCount(): number;
|
|
15
|
+
getInactiveSessions(timeoutMs: number): string[];
|
|
16
|
+
getAllSessionIds(): string[];
|
|
13
17
|
}
|
|
14
18
|
export {};
|
|
@@ -11,14 +11,33 @@ const common_1 = require("@nestjs/common");
|
|
|
11
11
|
let SessionManager = class SessionManager {
|
|
12
12
|
sessions = new Map();
|
|
13
13
|
getSession(sessionId) {
|
|
14
|
-
|
|
14
|
+
const session = this.sessions.get(sessionId);
|
|
15
|
+
if (session) {
|
|
16
|
+
session.lastActivity = Date.now();
|
|
17
|
+
}
|
|
18
|
+
return session;
|
|
15
19
|
}
|
|
16
20
|
setSession(sessionId, session) {
|
|
17
|
-
this.sessions.set(sessionId,
|
|
21
|
+
this.sessions.set(sessionId, {
|
|
22
|
+
...session,
|
|
23
|
+
lastActivity: Date.now(),
|
|
24
|
+
});
|
|
18
25
|
}
|
|
19
26
|
deleteSession(sessionId) {
|
|
20
27
|
this.sessions.delete(sessionId);
|
|
21
28
|
}
|
|
29
|
+
getActiveSessionCount() {
|
|
30
|
+
return this.sessions.size;
|
|
31
|
+
}
|
|
32
|
+
getInactiveSessions(timeoutMs) {
|
|
33
|
+
const now = Date.now();
|
|
34
|
+
return Array.from(this.sessions.entries())
|
|
35
|
+
.filter(([_, session]) => now - session.lastActivity > timeoutMs)
|
|
36
|
+
.map(([sessionId]) => sessionId);
|
|
37
|
+
}
|
|
38
|
+
getAllSessionIds() {
|
|
39
|
+
return Array.from(this.sessions.keys());
|
|
40
|
+
}
|
|
22
41
|
};
|
|
23
42
|
exports.SessionManager = SessionManager;
|
|
24
43
|
exports.SessionManager = SessionManager = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.manager.js","sourceRoot":"","sources":["../../src/services/session.manager.ts"],"names":[],"mappings":";;;;;;;;;AAEA,2CAA4C;
|
|
1
|
+
{"version":3,"file":"session.manager.js","sourceRoot":"","sources":["../../src/services/session.manager.ts"],"names":[],"mappings":";;;;;;;;;AAEA,2CAA4C;AAUrC,IAAM,cAAc,GAApB,MAAM,cAAc;IACjB,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAEvC,UAAU,CAAC,SAAiB;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,OAAO,EAAE,CAAC;YAEZ,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,UAAU,CACf,SAAiB,EACjB,OAAsC;QAEtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE;YAC3B,GAAG,OAAO;YACV,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;SACzB,CAAC,CAAC;IACL,CAAC;IAEM,aAAa,CAAC,SAAiB;QACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAEM,qBAAqB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;IAEM,mBAAmB,CAAC,SAAiB;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;aACvC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;aAChE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAEM,gBAAgB;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF,CAAA;AAxCY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;GACA,cAAc,CAwC1B"}
|
|
@@ -1,17 +1,28 @@
|
|
|
1
1
|
import { OnModuleInit } from '@nestjs/common';
|
|
2
2
|
import { Request, Response } from 'express';
|
|
3
|
-
import { McpServerOptions } from '../../mcp.types';
|
|
3
|
+
import { McpModuleTransportOptions, McpServerOptions, McpSessionOptions } from '../../mcp.types';
|
|
4
4
|
import { McpLoggerService } from '../../services/logger.service';
|
|
5
5
|
import { RegistryService } from '../../services/registry.service';
|
|
6
6
|
import { SessionManager } from '../../services/session.manager';
|
|
7
7
|
export declare class SseService implements OnModuleInit {
|
|
8
8
|
private readonly options;
|
|
9
|
+
private readonly sessionOptions;
|
|
10
|
+
private readonly transportOptions;
|
|
9
11
|
private readonly registry;
|
|
10
12
|
private readonly logger;
|
|
11
13
|
private readonly sessionManager;
|
|
12
|
-
private
|
|
13
|
-
|
|
14
|
+
private readonly sessionTimeoutMs;
|
|
15
|
+
private readonly maxConcurrentSessions;
|
|
16
|
+
private readonly cleanupIntervalMs;
|
|
17
|
+
private readonly enabled;
|
|
18
|
+
private cleanupTimer?;
|
|
19
|
+
constructor(options: McpServerOptions, sessionOptions: McpSessionOptions, transportOptions: McpModuleTransportOptions, registry: RegistryService, logger: McpLoggerService, sessionManager: SessionManager);
|
|
14
20
|
onModuleInit(): void;
|
|
21
|
+
onModuleDestroy(): void;
|
|
22
|
+
private startCleanupJob;
|
|
23
|
+
private stopCleanupJob;
|
|
24
|
+
private cleanupInactiveSessions;
|
|
25
|
+
private createServer;
|
|
15
26
|
handleSse(req: Request, res: Response): Promise<void>;
|
|
16
27
|
handleMessage(req: Request, res: Response): Promise<void>;
|
|
17
28
|
}
|