@rekog/mcp-nest 1.1.4 → 1.2.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.
Files changed (36) hide show
  1. package/.rinorism/index.d.ts +1 -0
  2. package/.vscode/settings.json +1 -0
  3. package/README.md +157 -15
  4. package/coverage/clover.xml +135 -121
  5. package/coverage/coverage-final.json +8 -8
  6. package/coverage/lcov-report/index.html +39 -39
  7. package/coverage/lcov.info +208 -207
  8. package/dist/controllers/sse.controller.factory.d.ts +13 -5
  9. package/dist/controllers/sse.controller.factory.d.ts.map +1 -1
  10. package/dist/controllers/sse.controller.factory.js +19 -6
  11. package/dist/controllers/sse.controller.factory.js.map +1 -1
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +2 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/interfaces/mcp-options.interface.d.ts +2 -0
  17. package/dist/interfaces/mcp-options.interface.d.ts.map +1 -1
  18. package/dist/mcp.module.d.ts.map +1 -1
  19. package/dist/mcp.module.js +10 -6
  20. package/dist/mcp.module.js.map +1 -1
  21. package/dist/services/mcp-tool-registry.service.d.ts +19 -0
  22. package/dist/services/mcp-tool-registry.service.d.ts.map +1 -0
  23. package/dist/services/mcp-tool-registry.service.js +66 -0
  24. package/dist/services/mcp-tool-registry.service.js.map +1 -0
  25. package/dist/services/mcp-tools-executor.service.d.ts +84 -0
  26. package/dist/services/mcp-tools-executor.service.d.ts.map +1 -0
  27. package/dist/services/mcp-tools-executor.service.js +154 -0
  28. package/dist/services/mcp-tools-executor.service.js.map +1 -0
  29. package/dist/services/mcp-tools.discovery.d.ts +19 -15
  30. package/dist/services/mcp-tools.discovery.d.ts.map +1 -1
  31. package/dist/services/mcp-tools.discovery.js +66 -127
  32. package/dist/services/mcp-tools.discovery.js.map +1 -1
  33. package/package.json +1 -1
  34. package/tests/mcp-auth.e2e.spec.ts +231 -0
  35. package/tests/mcp.e2e.spec.ts +30 -73
  36. package/tsconfig.tsbuildinfo +1 -1
@@ -12,125 +12,90 @@ BRH:0
12
12
  end_of_record
13
13
  TN:
14
14
  SF:src/mcp.module.ts
15
- FN:11,(anonymous_1)
16
- FN:29,(anonymous_2)
17
- FN:44,(anonymous_3)
18
- FN:55,(anonymous_4)
19
- FN:70,(anonymous_5)
20
- FN:88,(anonymous_6)
21
- FN:104,(anonymous_7)
22
- FNF:7
15
+ FN:17,(anonymous_1)
16
+ FN:47,(anonymous_2)
17
+ FNF:2
23
18
  FNH:2
24
19
  FNDA:1,(anonymous_1)
25
20
  FNDA:1,(anonymous_2)
26
- FNDA:0,(anonymous_3)
27
- FNDA:0,(anonymous_4)
28
- FNDA:0,(anonymous_5)
29
- FNDA:0,(anonymous_6)
30
- FNDA:0,(anonymous_7)
31
21
  DA:1,1
32
- DA:2,1
33
- DA:3,1
34
22
  DA:6,1
35
- DA:7,1
36
- DA:10,1
23
+ DA:11,1
37
24
  DA:12,1
38
25
  DA:13,1
39
- DA:14,1
40
26
  DA:16,1
41
27
  DA:18,1
42
- DA:30,1
43
- DA:34,1
44
- DA:45,0
45
- DA:47,0
46
- DA:56,0
47
- DA:60,0
48
- DA:71,0
49
- DA:72,0
50
- DA:75,0
51
- DA:76,0
52
- DA:79,0
53
- DA:89,0
54
- DA:90,0
55
- DA:97,0
56
- DA:98,0
57
- DA:99,0
58
- DA:102,0
59
- DA:105,0
60
- LF:29
61
- LH:13
62
- BRDA:12,0,0,1
63
- BRDA:12,0,1,1
64
- BRDA:13,1,0,1
65
- BRDA:13,1,1,1
66
- BRDA:14,2,0,1
67
- BRDA:14,2,1,1
68
- BRDA:32,3,0,1
69
- BRDA:32,3,1,0
70
- BRDA:49,4,0,0
71
- BRDA:49,4,1,0
72
- BRDA:58,5,0,0
73
- BRDA:58,5,1,0
74
- BRDA:71,6,0,0
75
- BRDA:71,7,0,0
76
- BRDA:71,7,1,0
77
- BRDA:75,8,0,0
78
- BRDA:89,9,0,0
79
- BRDA:93,10,0,0
80
- BRDA:93,10,1,0
81
- BRDA:97,11,0,0
82
- BRDA:97,11,1,0
83
- BRDA:98,12,0,0
84
- BRF:22
85
- BRH:7
28
+ DA:19,1
29
+ DA:20,1
30
+ DA:21,1
31
+ DA:24,1
32
+ DA:31,1
33
+ DA:48,1
34
+ DA:52,1
35
+ LF:14
36
+ LH:14
37
+ BRDA:18,0,0,1
38
+ BRDA:18,0,1,1
39
+ BRDA:19,1,0,1
40
+ BRDA:19,1,1,1
41
+ BRDA:20,2,0,1
42
+ BRDA:20,2,1,1
43
+ BRDA:21,3,0,1
44
+ BRDA:21,3,1,0
45
+ BRDA:50,4,0,1
46
+ BRDA:50,4,1,0
47
+ BRF:10
48
+ BRH:8
86
49
  end_of_record
87
50
  TN:
88
51
  SF:src/controllers/sse.controller.factory.ts
89
- FN:10,createSseController
90
- FN:19,(anonymous_5)
91
- FN:25,(anonymous_6)
92
- FN:39,(anonymous_7)
93
- FN:47,(anonymous_8)
52
+ FN:20,createSseController
53
+ FN:30,(anonymous_5)
54
+ FN:36,(anonymous_6)
55
+ FN:55,(anonymous_7)
56
+ FN:65,(anonymous_8)
94
57
  FNF:5
95
58
  FNH:4
96
59
  FNDA:1,createSseController
97
- FNDA:1,(anonymous_5)
60
+ FNDA:4,(anonymous_5)
98
61
  FNDA:2,(anonymous_6)
99
62
  FNDA:0,(anonymous_7)
100
- FNDA:7,(anonymous_8)
63
+ FNDA:2,(anonymous_8)
101
64
  DA:1,1
102
- DA:4,1
103
- DA:5,1
104
- DA:7,1
105
- DA:10,1
106
65
  DA:15,1
107
66
  DA:16,1
108
- DA:17,1
67
+ DA:18,1
109
68
  DA:20,1
110
- DA:21,1
111
- DA:25,1
112
- DA:26,2
113
- DA:27,2
114
- DA:29,2
115
- DA:35,2
69
+ DA:26,1
70
+ DA:27,1
71
+ DA:28,4
72
+ DA:31,4
73
+ DA:32,4
74
+ DA:36,1
116
75
  DA:37,2
117
- DA:39,2
118
- DA:40,0
76
+ DA:41,2
119
77
  DA:43,2
120
- DA:47,1
121
- DA:48,7
122
- DA:50,7
123
- DA:52,7
124
- DA:53,0
125
- DA:55,7
126
- DA:59,1
127
- LF:26
78
+ DA:51,2
79
+ DA:53,2
80
+ DA:55,2
81
+ DA:56,0
82
+ DA:57,0
83
+ DA:60,2
84
+ DA:65,1
85
+ DA:70,2
86
+ DA:71,2
87
+ DA:73,2
88
+ DA:74,2
89
+ DA:77,0
90
+ DA:81,1
91
+ LF:27
128
92
  LH:24
129
- BRDA:31,0,0,2
130
- BRDA:31,0,1,0
131
- BRDA:52,1,0,0
132
- BRF:3
133
- BRH:1
93
+ BRDA:24,0,0,0
94
+ BRDA:45,1,0,2
95
+ BRDA:45,1,1,0
96
+ BRDA:73,2,0,2
97
+ BRF:4
98
+ BRH:2
134
99
  end_of_record
135
100
  TN:
136
101
  SF:src/decorators/constants.ts
@@ -180,132 +145,168 @@ BRH:0
180
145
  end_of_record
181
146
  TN:
182
147
  SF:src/services/mcp-tools.discovery.ts
183
- FN:59,(anonymous_2)
184
- FN:73,(anonymous_3)
185
- FN:78,(anonymous_4)
186
- FN:82,(anonymous_5)
187
- FN:86,(anonymous_6)
188
- FN:87,(anonymous_7)
189
- FN:89,(anonymous_8)
190
- FN:93,(anonymous_9)
191
- FN:112,(anonymous_10)
192
- FN:114,(anonymous_11)
193
- FN:115,(anonymous_12)
194
- FN:128,(anonymous_13)
195
- FN:129,(anonymous_14)
196
- FN:189,(anonymous_15)
197
- FN:191,(anonymous_16)
198
- FN:203,(anonymous_17)
199
- FN:209,(anonymous_18)
200
- FN:215,(anonymous_19)
201
- FN:221,(anonymous_20)
148
+ FN:127,(anonymous_4)
149
+ FN:143,(anonymous_5)
150
+ FN:149,(anonymous_6)
151
+ FN:158,(anonymous_7)
152
+ FN:163,(anonymous_8)
153
+ FN:164,(anonymous_9)
154
+ FN:166,(anonymous_10)
155
+ FN:170,(anonymous_11)
156
+ FN:182,(anonymous_12)
157
+ FN:190,(anonymous_13)
158
+ FN:192,(anonymous_14)
159
+ FN:205,(anonymous_15)
160
+ FN:207,(anonymous_16)
161
+ FN:284,(anonymous_17)
162
+ FN:292,(anonymous_18)
163
+ FN:304,(anonymous_19)
164
+ FN:305,(anonymous_20)
165
+ FN:306,(anonymous_21)
166
+ FN:307,(anonymous_22)
202
167
  FNF:19
203
- FNH:14
204
- FNDA:0,(anonymous_2)
205
- FNDA:1,(anonymous_3)
206
- FNDA:1,(anonymous_4)
207
- FNDA:1,(anonymous_5)
208
- FNDA:29,(anonymous_6)
209
- FNDA:27,(anonymous_7)
210
- FNDA:27,(anonymous_8)
211
- FNDA:211,(anonymous_9)
212
- FNDA:2,(anonymous_10)
213
- FNDA:2,(anonymous_11)
168
+ FNH:2
169
+ FNDA:0,(anonymous_4)
170
+ FNDA:4,(anonymous_5)
171
+ FNDA:0,(anonymous_6)
172
+ FNDA:0,(anonymous_7)
173
+ FNDA:0,(anonymous_8)
174
+ FNDA:0,(anonymous_9)
175
+ FNDA:0,(anonymous_10)
176
+ FNDA:0,(anonymous_11)
214
177
  FNDA:2,(anonymous_12)
215
- FNDA:1,(anonymous_13)
216
- FNDA:1,(anonymous_14)
217
- FNDA:1,(anonymous_15)
218
- FNDA:5,(anonymous_16)
178
+ FNDA:0,(anonymous_13)
179
+ FNDA:0,(anonymous_14)
180
+ FNDA:0,(anonymous_15)
181
+ FNDA:0,(anonymous_16)
219
182
  FNDA:0,(anonymous_17)
220
183
  FNDA:0,(anonymous_18)
221
184
  FNDA:0,(anonymous_19)
222
185
  FNDA:0,(anonymous_20)
186
+ FNDA:0,(anonymous_21)
187
+ FNDA:0,(anonymous_22)
223
188
  DA:2,1
224
- DA:3,1
225
- DA:4,1
226
- DA:5,1
227
- DA:6,1
228
- DA:7,1
229
- DA:31,1
230
- DA:42,1
231
- DA:51,1
232
- DA:60,0
233
- DA:61,0
189
+ DA:8,1
190
+ DA:9,1
191
+ DA:10,1
192
+ DA:11,1
193
+ DA:12,1
194
+ DA:49,1
195
+ DA:57,1
234
196
  DA:66,1
235
- DA:67,1
236
- DA:74,1
237
- DA:75,1
238
- DA:79,1
197
+ DA:77,1
239
198
  DA:83,1
240
- DA:84,1
241
- DA:85,1
242
- DA:86,29
243
- DA:87,27
244
199
  DA:89,1
245
- DA:90,27
246
- DA:91,0
247
- DA:93,27
248
- DA:94,211
249
- DA:95,211
250
- DA:97,211
251
- DA:98,210
252
- DA:101,1
253
- DA:103,1
254
- DA:114,2
255
- DA:115,2
256
- DA:122,2
257
- DA:128,2
258
- DA:129,1
259
- DA:131,1
260
- DA:132,0
261
- DA:138,1
262
- DA:139,1
200
+ DA:98,1
201
+ DA:105,1
202
+ DA:128,0
203
+ DA:129,0
204
+ DA:135,1
205
+ DA:136,1
263
206
  DA:141,1
264
- DA:142,1
265
- DA:143,1
266
- DA:144,0
267
- DA:149,1
268
- DA:152,1
269
- DA:154,1
270
- DA:155,1
271
- DA:156,1
272
- DA:163,1
207
+ DA:144,4
208
+ DA:145,4
209
+ DA:146,4
210
+ DA:150,0
211
+ DA:151,0
212
+ DA:152,0
213
+ DA:153,0
214
+ DA:154,0
215
+ DA:159,0
216
+ DA:160,0
217
+ DA:161,0
218
+ DA:162,0
219
+ DA:163,0
273
220
  DA:164,0
274
- DA:167,1
221
+ DA:166,0
222
+ DA:167,0
275
223
  DA:168,0
276
- DA:172,1
224
+ DA:169,0
225
+ DA:170,0
226
+ DA:171,0
227
+ DA:172,0
228
+ DA:173,0
229
+ DA:174,0
277
230
  DA:175,0
278
- DA:176,0
279
- DA:181,0
280
- DA:190,1
281
- DA:192,5
282
- DA:193,5
283
- DA:204,0
231
+ DA:179,0
232
+ DA:183,2
233
+ DA:184,2
234
+ DA:185,2
235
+ DA:187,0
236
+ DA:190,0
237
+ DA:192,0
238
+ DA:199,0
239
+ DA:203,0
240
+ DA:206,0
241
+ DA:207,0
284
242
  DA:210,0
285
- DA:216,0
243
+ DA:211,0
244
+ DA:218,0
245
+ DA:219,0
246
+ DA:220,0
247
+ DA:221,0
286
248
  DA:222,0
287
- LF:64
288
- LH:50
289
- BRDA:90,0,0,0
290
- BRDA:90,1,0,27
291
- BRDA:90,1,1,27
292
- BRDA:97,2,0,210
293
- BRDA:118,3,0,2
294
- BRDA:118,3,1,0
295
- BRDA:131,4,0,0
296
- BRDA:141,5,0,1
297
- BRDA:141,6,0,1
298
- BRDA:141,6,1,1
299
- BRDA:143,7,0,0
300
- BRDA:163,8,0,0
301
- BRDA:163,8,1,1
302
- BRDA:167,9,0,0
303
- BRDA:167,9,1,1
304
- BRDA:167,10,0,1
305
- BRDA:167,10,1,1
306
- BRDA:167,10,2,1
307
- BRDA:175,11,0,0
308
- BRDA:192,12,0,5
309
- BRF:20
310
- BRH:13
249
+ DA:223,0
250
+ DA:228,0
251
+ DA:231,0
252
+ DA:235,0
253
+ DA:236,0
254
+ DA:237,0
255
+ DA:244,0
256
+ DA:246,0
257
+ DA:249,0
258
+ DA:250,0
259
+ DA:251,0
260
+ DA:252,0
261
+ DA:253,0
262
+ DA:255,0
263
+ DA:259,0
264
+ DA:260,0
265
+ DA:261,0
266
+ DA:263,0
267
+ DA:264,0
268
+ DA:270,0
269
+ DA:279,0
270
+ DA:289,0
271
+ DA:290,0
272
+ DA:293,0
273
+ DA:294,0
274
+ DA:295,0
275
+ DA:300,0
276
+ DA:304,0
277
+ DA:305,0
278
+ DA:306,0
279
+ DA:307,0
280
+ LF:92
281
+ LH:23
282
+ BRDA:150,0,0,0
283
+ BRDA:154,1,0,0
284
+ BRDA:154,1,1,0
285
+ BRDA:163,2,0,0
286
+ BRDA:163,2,1,0
287
+ BRDA:163,2,2,0
288
+ BRDA:167,3,0,0
289
+ BRDA:167,4,0,0
290
+ BRDA:167,4,1,0
291
+ BRDA:169,5,0,0
292
+ BRDA:171,6,0,0
293
+ BRDA:174,7,0,0
294
+ BRDA:183,8,0,2
295
+ BRDA:195,9,0,0
296
+ BRDA:195,9,1,0
297
+ BRDA:210,10,0,0
298
+ BRDA:220,11,0,0
299
+ BRDA:220,12,0,0
300
+ BRDA:220,12,1,0
301
+ BRDA:222,13,0,0
302
+ BRDA:244,14,0,0
303
+ BRDA:244,14,1,0
304
+ BRDA:250,15,0,0
305
+ BRDA:263,16,0,0
306
+ BRDA:263,16,1,0
307
+ BRDA:263,17,0,0
308
+ BRDA:263,17,1,0
309
+ BRDA:293,18,0,0
310
+ BRF:28
311
+ BRH:1
311
312
  end_of_record
@@ -1,14 +1,22 @@
1
+ import { Type } from '@nestjs/common';
1
2
  import type { Request, Response } from 'express';
3
+ import { CanActivate } from '@nestjs/common';
4
+ import { ModuleRef } from '@nestjs/core';
5
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
6
  import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
3
7
  import { McpOptions } from '../interfaces';
4
- import { McpToolsDiscovery } from '../services/mcp-tools.discovery';
5
- export declare function createSseController(sseEndpoint: string, messagesEndpoint: string, globalApiPrefix: string): {
6
- new (options: McpOptions, mcpToolsDiscovery: McpToolsDiscovery): {
8
+ import { McpToolRegistryService } from '../services/mcp-tool-registry.service';
9
+ export declare function createSseController(sseEndpoint: string, messagesEndpoint: string, globalApiPrefix: string, guards?: Type<CanActivate>[]): {
10
+ new (options: McpOptions, moduleRef: ModuleRef, toolRegistry: McpToolRegistryService): {
7
11
  transports: Map<string, SSEServerTransport>;
12
+ mcpServers: Map<string, McpServer>;
8
13
  readonly options: McpOptions;
9
- readonly mcpToolsDiscovery: McpToolsDiscovery;
14
+ readonly moduleRef: ModuleRef;
15
+ readonly toolRegistry: McpToolRegistryService;
10
16
  sse(res: Response): Promise<void>;
11
- messages(req: Request, res: Response, body: unknown): Promise<Response<any, Record<string, any>> | undefined>;
17
+ messages(req: Request & {
18
+ user: any;
19
+ }, res: Response, body: unknown): Promise<Response<any, Record<string, any>> | undefined>;
12
20
  };
13
21
  };
14
22
  //# sourceMappingURL=sse.controller.factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sse.controller.factory.d.ts","sourceRoot":"","sources":["../../src/controllers/sse.controller.factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM;kBAO6B,UAAU,qBACvB,iBAAiB;;0BADJ,UAAU;oCACvB,iBAAiB;iBAIhC,QAAQ;sBAsBH,OAAO,OAAc,QAAQ,QAAgB,OAAO;;EAalF"}
1
+ {"version":3,"file":"sse.controller.factory.d.ts","sourceRoot":"","sources":["../../src/controllers/sse.controller.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiD,IAAI,EAAa,MAAM,gBAAgB,CAAC;AAChG,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAM/E,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,EACvB,MAAM,GAAE,IAAI,CAAC,WAAW,CAAC,EAAO;kBAcoB,UAAU,aAC/B,SAAS,gBACN,sBAAsB;;;0BAFJ,UAAU;4BAC/B,SAAS;+BACN,sBAAsB;iBAOhC,QAAQ;sBA4BH,OAAO,GAAG;YAAE,IAAI,EAAE,GAAG,CAAA;SAAE,OAAc,QAAQ,QAAgB,OAAO;;EA6BlG"}
@@ -14,24 +14,29 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.createSseController = createSseController;
16
16
  const common_1 = require("@nestjs/common");
17
+ const core_1 = require("@nestjs/core");
17
18
  const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
18
19
  const sse_js_1 = require("@modelcontextprotocol/sdk/server/sse.js");
19
- const mcp_tools_discovery_1 = require("../services/mcp-tools.discovery");
20
- function createSseController(sseEndpoint, messagesEndpoint, globalApiPrefix) {
20
+ const mcp_tool_registry_service_1 = require("../services/mcp-tool-registry.service");
21
+ const mcp_tools_executor_service_1 = require("../services/mcp-tools-executor.service");
22
+ function createSseController(sseEndpoint, messagesEndpoint, globalApiPrefix, guards = []) {
21
23
  let SseController = class SseController {
22
- constructor(options, mcpToolsDiscovery) {
24
+ constructor(options, moduleRef, toolRegistry) {
23
25
  this.options = options;
24
- this.mcpToolsDiscovery = mcpToolsDiscovery;
26
+ this.moduleRef = moduleRef;
27
+ this.toolRegistry = toolRegistry;
25
28
  this.transports = new Map();
29
+ this.mcpServers = new Map();
26
30
  }
27
31
  async sse(res) {
28
32
  const transport = new sse_js_1.SSEServerTransport(`${globalApiPrefix}/${messagesEndpoint}`, res);
29
33
  const sessionId = transport.sessionId;
30
34
  const mcpServer = new mcp_js_1.McpServer({ name: this.options.name, version: this.options.version }, { capabilities: this.options.capabilities || { tools: {} } });
31
- this.mcpToolsDiscovery.registerTools(mcpServer);
32
35
  this.transports.set(sessionId, transport);
36
+ this.mcpServers.set(sessionId, mcpServer);
33
37
  transport.onclose = () => {
34
38
  this.transports.delete(sessionId);
39
+ this.mcpServers.delete(sessionId);
35
40
  };
36
41
  await mcpServer.connect(transport);
37
42
  }
@@ -41,6 +46,12 @@ function createSseController(sseEndpoint, messagesEndpoint, globalApiPrefix) {
41
46
  if (!transport) {
42
47
  return res.status(404).send('Session not found');
43
48
  }
49
+ const mcpServer = this.mcpServers.get(sessionId);
50
+ if (!mcpServer) {
51
+ return res.status(404).send('MCP server not found for session');
52
+ }
53
+ const toolExecutor = await this.moduleRef.resolve(mcp_tools_executor_service_1.McpToolsExecutorService, undefined, { strict: false });
54
+ toolExecutor.registerRequestHandlers(mcpServer, req);
44
55
  await transport.handlePostMessage(req, res, body);
45
56
  }
46
57
  };
@@ -53,6 +64,7 @@ function createSseController(sseEndpoint, messagesEndpoint, globalApiPrefix) {
53
64
  ], SseController.prototype, "sse", null);
54
65
  __decorate([
55
66
  (0, common_1.Post)(messagesEndpoint),
67
+ (0, common_1.UseGuards)(...guards),
56
68
  __param(0, (0, common_1.Req)()),
57
69
  __param(1, (0, common_1.Res)()),
58
70
  __param(2, (0, common_1.Body)()),
@@ -63,7 +75,8 @@ function createSseController(sseEndpoint, messagesEndpoint, globalApiPrefix) {
63
75
  SseController = __decorate([
64
76
  (0, common_1.Controller)(),
65
77
  __param(0, (0, common_1.Inject)('MCP_OPTIONS')),
66
- __metadata("design:paramtypes", [Object, mcp_tools_discovery_1.McpToolsDiscovery])
78
+ __metadata("design:paramtypes", [Object, core_1.ModuleRef,
79
+ mcp_tool_registry_service_1.McpToolRegistryService])
67
80
  ], SseController);
68
81
  return SseController;
69
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sse.controller.factory.js","sourceRoot":"","sources":["../../src/controllers/sse.controller.factory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AASA,kDAkDC;AA3DD,2CAA+E;AAG/E,oEAAoE;AACpE,oEAA6E;AAE7E,yEAAoE;AAGpE,SAAgB,mBAAmB,CACjC,WAAmB,EACnB,gBAAwB,EACxB,eAAuB;IAEvB,IACM,aAAa,GADnB,MACM,aAAa;QAGjB,YACyB,OAAmC,EAC1C,iBAAoC;YADb,YAAO,GAAP,OAAO,CAAY;YAC1C,sBAAiB,GAAjB,iBAAiB,CAAmB;YAJ/C,eAAU,GAAG,IAAI,GAAG,EAA8B,CAAC;QAKvD,CAAC;QAGE,AAAN,KAAK,CAAC,GAAG,CAAQ,GAAa;YAC5B,MAAM,SAAS,GAAG,IAAI,2BAAkB,CAAC,GAAG,eAAe,IAAI,gBAAgB,EAAE,EAAE,GAAG,CAAC,CAAC;YACxF,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;YAEtC,MAAM,SAAS,GAAG,IAAI,kBAAS,CAC7B,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAC1D,EAAE,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAC7D,CAAC;YAGF,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAEhD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAE1C,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;gBACvB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC,CAAC;YAEF,MAAM,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;QAGK,AAAN,KAAK,CAAC,QAAQ,CAAQ,GAAY,EAAS,GAAa,EAAU,IAAa;YAC7E,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,SAAmB,CAAC;YAEhD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEjD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;KACF,CAAA;IAhCO;QADL,IAAA,YAAG,EAAC,WAAW,CAAC;QACN,WAAA,IAAA,YAAG,GAAE,CAAA;;;;4CAmBf;IAGK;QADL,IAAA,aAAI,EAAC,gBAAgB,CAAC;QACP,WAAA,IAAA,YAAG,GAAE,CAAA;QAAgB,WAAA,IAAA,YAAG,GAAE,CAAA;QAAiB,WAAA,IAAA,aAAI,GAAE,CAAA;;;;iDAShE;IAxCG,aAAa;QADlB,IAAA,mBAAU,GAAE;QAKR,WAAA,IAAA,eAAM,EAAC,aAAa,CAAC,CAAA;iDACa,uCAAiB;OALlD,aAAa,CAyClB;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"sse.controller.factory.js","sourceRoot":"","sources":["../../src/controllers/sse.controller.factory.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export * from './decorators';
2
2
  export * from './interfaces';
3
3
  export * from './mcp.module';
4
+ export * from './services/mcp-tool-registry.service';
5
+ export * from './services/mcp-tools-executor.service';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC"}
package/dist/index.js CHANGED
@@ -17,4 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./decorators"), exports);
18
18
  __exportStar(require("./interfaces"), exports);
19
19
  __exportStar(require("./mcp.module"), exports);
20
+ __exportStar(require("./services/mcp-tool-registry.service"), exports);
21
+ __exportStar(require("./services/mcp-tools-executor.service"), exports);
20
22
  //# 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":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,+CAA6B;AAC7B,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,+CAA6B;AAC7B,+CAA6B;AAC7B,uEAAqD;AACrD,wEAAsD"}
@@ -1,4 +1,5 @@
1
1
  import { ModuleMetadata, Type } from '@nestjs/common';
2
+ import { CanActivate } from '@nestjs/common';
2
3
  export interface McpOptions {
3
4
  name: string;
4
5
  version: string;
@@ -6,6 +7,7 @@ export interface McpOptions {
6
7
  messagesEndpoint?: string;
7
8
  globalApiPrefix?: string;
8
9
  capabilities?: Record<string, any>;
10
+ guards?: Type<CanActivate>[];
9
11
  }
10
12
  export interface McpOptionsFactory {
11
13
  createMcpOptions(): Promise<McpOptions> | McpOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-options.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/mcp-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;CACtD;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;IACtE,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;IAClE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;CAChB"}
1
+ {"version":3,"file":"mcp-options.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/mcp-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;CACtD;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;IACtE,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;IAClE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;CAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.module.d.ts","sourceRoot":"","sources":["../src/mcp.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,gBAAgB,CAAC;AAGjE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAqB,MAAM,oCAAoC,CAAC;AAKpG,qBACa,SAAS;IACpB,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,aAAa;IAiClD,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa;IA0B5D,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAkBnC,OAAO,CAAC,MAAM,CAAC,0BAA0B;CAsB1C"}
1
+ {"version":3,"file":"mcp.module.d.ts","sourceRoot":"","sources":["../src/mcp.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,gBAAgB,CAAC;AAGjE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAqB,MAAM,oCAAoC,CAAC;AAMpG,qBACa,SAAS;IACpB,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,aAAa;IA0ClD,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa;IA+B5D,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAqBnC,OAAO,CAAC,MAAM,CAAC,0BAA0B;CAqB1C"}