@rekog/mcp-nest 1.0.16 → 1.0.17

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 (50) hide show
  1. package/coverage/clover.xml +13 -14
  2. package/coverage/coverage-final.json +1 -1
  3. package/coverage/lcov-report/index.html +13 -13
  4. package/coverage/lcov.info +19 -22
  5. package/dist/services/mcp-tools.discovery.d.ts.map +1 -1
  6. package/dist/services/mcp-tools.discovery.js +3 -5
  7. package/dist/services/mcp-tools.discovery.js.map +1 -1
  8. package/package.json +1 -1
  9. package/tests/mcp.e2e.spec.ts +37 -15
  10. package/tsconfig.tsbuildinfo +1 -1
  11. package/dist/controllers/sse.controller.d.ts +0 -10
  12. package/dist/controllers/sse.controller.d.ts.map +0 -1
  13. package/dist/controllers/sse.controller.factory.d.ts +0 -12
  14. package/dist/controllers/sse.controller.factory.d.ts.map +0 -1
  15. package/dist/controllers/sse.controller.factory.js +0 -59
  16. package/dist/controllers/sse.controller.factory.js.map +0 -1
  17. package/dist/controllers/sse.controller.js +0 -57
  18. package/dist/controllers/sse.controller.js.map +0 -1
  19. package/dist/decorators/constants.d.ts +0 -2
  20. package/dist/decorators/constants.d.ts.map +0 -1
  21. package/dist/decorators/constants.js +0 -5
  22. package/dist/decorators/constants.js.map +0 -1
  23. package/dist/decorators/index.d.ts +0 -3
  24. package/dist/decorators/index.d.ts.map +0 -1
  25. package/dist/decorators/index.js +0 -19
  26. package/dist/decorators/index.js.map +0 -1
  27. package/dist/decorators/tool.decorator.d.ts +0 -7
  28. package/dist/decorators/tool.decorator.d.ts.map +0 -1
  29. package/dist/decorators/tool.decorator.js +0 -10
  30. package/dist/decorators/tool.decorator.js.map +0 -1
  31. package/dist/index.d.ts +0 -4
  32. package/dist/index.d.ts.map +0 -1
  33. package/dist/index.js +0 -20
  34. package/dist/index.js.map +0 -1
  35. package/dist/interfaces/index.d.ts +0 -2
  36. package/dist/interfaces/index.d.ts.map +0 -1
  37. package/dist/interfaces/index.js +0 -18
  38. package/dist/interfaces/index.js.map +0 -1
  39. package/dist/interfaces/mcp-options.interface.d.ts +0 -19
  40. package/dist/interfaces/mcp-options.interface.d.ts.map +0 -1
  41. package/dist/interfaces/mcp-options.interface.js +0 -3
  42. package/dist/interfaces/mcp-options.interface.js.map +0 -1
  43. package/dist/mcp.module.d.ts +0 -9
  44. package/dist/mcp.module.d.ts.map +0 -1
  45. package/dist/mcp.module.js +0 -105
  46. package/dist/mcp.module.js.map +0 -1
  47. package/dist/mcp.module.spec.d.ts +0 -13
  48. package/dist/mcp.module.spec.d.ts.map +0 -1
  49. package/dist/mcp.module.spec.js +0 -87
  50. package/dist/mcp.module.spec.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <coverage generated="1737945150175" clover="3.2.0">
3
- <project timestamp="1737945150175" name="All files">
4
- <metrics statements="80" coveredstatements="61" conditionals="27" coveredconditionals="10" methods="19" coveredmethods="14" elements="126" coveredelements="85" complexity="0" loc="80" ncloc="80" packages="5" files="8" classes="8"/>
2
+ <coverage generated="1737946443305" clover="3.2.0">
3
+ <project timestamp="1737946443305" name="All files">
4
+ <metrics statements="79" coveredstatements="60" conditionals="27" coveredconditionals="10" methods="18" coveredmethods="13" elements="124" coveredelements="83" complexity="0" loc="79" ncloc="79" packages="5" files="8" classes="8"/>
5
5
  <package name="src">
6
6
  <metrics statements="34" coveredstatements="17" conditionals="22" coveredconditionals="7" methods="7" coveredmethods="2"/>
7
7
  <file name="index.ts" path="/home/rinor/explore/nest-mcp/src/index.ts">
@@ -94,9 +94,9 @@
94
94
  </file>
95
95
  </package>
96
96
  <package name="src.services">
97
- <metrics statements="22" coveredstatements="21" conditionals="4" coveredconditionals="3" methods="7" coveredmethods="7"/>
97
+ <metrics statements="21" coveredstatements="20" conditionals="4" coveredconditionals="3" methods="6" coveredmethods="6"/>
98
98
  <file name="mcp-tools.discovery.ts" path="/home/rinor/explore/nest-mcp/src/services/mcp-tools.discovery.ts">
99
- <metrics statements="22" coveredstatements="21" conditionals="4" coveredconditionals="3" methods="7" coveredmethods="7"/>
99
+ <metrics statements="21" coveredstatements="20" conditionals="4" coveredconditionals="3" methods="6" coveredmethods="6"/>
100
100
  <line num="1" count="2" type="stmt"/>
101
101
  <line num="2" count="2" type="stmt"/>
102
102
  <line num="4" count="2" type="stmt"/>
@@ -106,19 +106,18 @@
106
106
  <line num="14" count="2" type="stmt"/>
107
107
  <line num="15" count="2" type="stmt"/>
108
108
  <line num="16" count="2" type="stmt"/>
109
- <line num="17" count="56" type="stmt"/>
110
- <line num="18" count="50" type="stmt"/>
109
+ <line num="17" count="57" type="stmt"/>
110
+ <line num="18" count="51" type="stmt"/>
111
111
  <line num="20" count="2" type="stmt"/>
112
- <line num="21" count="50" type="cond" truecount="2" falsecount="1"/>
112
+ <line num="21" count="51" type="cond" truecount="2" falsecount="1"/>
113
113
  <line num="22" count="0" type="stmt"/>
114
- <line num="24" count="50" type="stmt"/>
115
- <line num="25" count="392" type="stmt"/>
116
- <line num="26" count="392" type="stmt"/>
117
- <line num="27" count="392" type="cond" truecount="1" falsecount="0"/>
118
- <line num="28" count="390" type="stmt"/>
114
+ <line num="24" count="51" type="stmt"/>
115
+ <line num="25" count="393" type="stmt"/>
116
+ <line num="26" count="393" type="stmt"/>
117
+ <line num="27" count="393" type="cond" truecount="1" falsecount="0"/>
118
+ <line num="28" count="391" type="stmt"/>
119
119
  <line num="31" count="2" type="stmt"/>
120
120
  <line num="32" count="2" type="stmt"/>
121
- <line num="37" count="1" type="stmt"/>
122
121
  </file>
123
122
  </package>
124
123
  </project>
@@ -5,5 +5,5 @@
5
5
  ,"/home/rinor/explore/nest-mcp/src/decorators/index.ts": {"path":"/home/rinor/explore/nest-mcp/src/decorators/index.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":33}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":28}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":2},"f":{},"b":{}}
6
6
  ,"/home/rinor/explore/nest-mcp/src/decorators/tool.decorator.ts": {"path":"/home/rinor/explore/nest-mcp/src/decorators/tool.decorator.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":52}},"2":{"start":{"line":10,"column":20},"end":{"line":12,"column":1}},"3":{"start":{"line":11,"column":2},"end":{"line":11,"column":75}},"4":{"start":{"line":10,"column":13},"end":{"line":10,"column":20}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":10,"column":20},"end":{"line":10,"column":21}},"loc":{"start":{"line":10,"column":89},"end":{"line":12,"column":1}}}},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2},"f":{"0":2},"b":{}}
7
7
  ,"/home/rinor/explore/nest-mcp/src/interfaces/index.ts": {"path":"/home/rinor/explore/nest-mcp/src/interfaces/index.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":40}}},"fnMap":{},"branchMap":{},"s":{"0":1},"f":{},"b":{}}
8
- ,"/home/rinor/explore/nest-mcp/src/services/mcp-tools.discovery.ts": {"path":"/home/rinor/explore/nest-mcp/src/services/mcp-tools.discovery.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":65}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":44}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":54}},"3":{"start":{"line":7,"column":7},"end":{"line":43,"column":null}},"4":{"start":{"line":9,"column":21},"end":{"line":9,"column":32}},"5":{"start":{"line":10,"column":21},"end":{"line":10,"column":38}},"6":{"start":{"line":14,"column":22},"end":{"line":14,"column":51}},"7":{"start":{"line":15,"column":24},"end":{"line":15,"column":55}},"8":{"start":{"line":16,"column":25},"end":{"line":18,"column":41}},"9":{"start":{"line":17,"column":27},"end":{"line":17,"column":43}},"10":{"start":{"line":18,"column":24},"end":{"line":18,"column":40}},"11":{"start":{"line":20,"column":4},"end":{"line":41,"column":7}},"12":{"start":{"line":21,"column":6},"end":{"line":23,"column":7}},"13":{"start":{"line":22,"column":8},"end":{"line":22,"column":15}},"14":{"start":{"line":24,"column":6},"end":{"line":40,"column":9}},"15":{"start":{"line":25,"column":26},"end":{"line":25,"column":42}},"16":{"start":{"line":26,"column":31},"end":{"line":26,"column":68}},"17":{"start":{"line":27,"column":8},"end":{"line":29,"column":9}},"18":{"start":{"line":28,"column":10},"end":{"line":28,"column":17}},"19":{"start":{"line":31,"column":25},"end":{"line":31,"column":78}},"20":{"start":{"line":32,"column":8},"end":{"line":39,"column":10}},"21":{"start":{"line":37,"column":12},"end":{"line":37,"column":58}},"22":{"start":{"line":7,"column":13},"end":{"line":7,"column":30}},"23":{"start":{"line":7,"column":13},"end":{"line":43,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":null}},"loc":{"start":{"line":10,"column":53},"end":{"line":11,"column":6}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":15}},"loc":{"start":{"line":13,"column":36},"end":{"line":42,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":17,"column":14},"end":{"line":17,"column":15}},"loc":{"start":{"line":17,"column":27},"end":{"line":17,"column":43}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":18,"column":11},"end":{"line":18,"column":12}},"loc":{"start":{"line":18,"column":24},"end":{"line":18,"column":40}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":20,"column":25},"end":{"line":20,"column":26}},"loc":{"start":{"line":20,"column":38},"end":{"line":41,"column":5}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":24,"column":63},"end":{"line":24,"column":64}},"loc":{"start":{"line":24,"column":74},"end":{"line":40,"column":7}}},"6":{"name":"(anonymous_8)","decl":{"start":{"line":36,"column":10},"end":{"line":36,"column":20}},"loc":{"start":{"line":36,"column":27},"end":{"line":38,"column":11}}}},"branchMap":{"0":{"loc":{"start":{"line":21,"column":6},"end":{"line":23,"column":7}},"type":"if","locations":[{"start":{"line":21,"column":6},"end":{"line":23,"column":7}}]},"1":{"loc":{"start":{"line":21,"column":10},"end":{"line":21,"column":51}},"type":"binary-expr","locations":[{"start":{"line":21,"column":10},"end":{"line":21,"column":19}},{"start":{"line":21,"column":23},"end":{"line":21,"column":51}}]},"2":{"loc":{"start":{"line":27,"column":8},"end":{"line":29,"column":9}},"type":"if","locations":[{"start":{"line":27,"column":8},"end":{"line":29,"column":9}}]}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":56,"10":50,"11":2,"12":50,"13":0,"14":50,"15":392,"16":392,"17":392,"18":390,"19":2,"20":2,"21":1,"22":2,"23":2},"f":{"0":2,"1":2,"2":56,"3":50,"4":50,"5":392,"6":1},"b":{"0":[0],"1":[50,50],"2":[390]}}
8
+ ,"/home/rinor/explore/nest-mcp/src/services/mcp-tools.discovery.ts": {"path":"/home/rinor/explore/nest-mcp/src/services/mcp-tools.discovery.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":65}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":44}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":54}},"3":{"start":{"line":7,"column":7},"end":{"line":41,"column":null}},"4":{"start":{"line":9,"column":21},"end":{"line":9,"column":32}},"5":{"start":{"line":10,"column":21},"end":{"line":10,"column":38}},"6":{"start":{"line":14,"column":22},"end":{"line":14,"column":51}},"7":{"start":{"line":15,"column":24},"end":{"line":15,"column":55}},"8":{"start":{"line":16,"column":25},"end":{"line":18,"column":41}},"9":{"start":{"line":17,"column":27},"end":{"line":17,"column":43}},"10":{"start":{"line":18,"column":24},"end":{"line":18,"column":40}},"11":{"start":{"line":20,"column":4},"end":{"line":39,"column":7}},"12":{"start":{"line":21,"column":6},"end":{"line":23,"column":7}},"13":{"start":{"line":22,"column":8},"end":{"line":22,"column":15}},"14":{"start":{"line":24,"column":6},"end":{"line":38,"column":9}},"15":{"start":{"line":25,"column":26},"end":{"line":25,"column":42}},"16":{"start":{"line":26,"column":31},"end":{"line":26,"column":68}},"17":{"start":{"line":27,"column":8},"end":{"line":29,"column":9}},"18":{"start":{"line":28,"column":10},"end":{"line":28,"column":17}},"19":{"start":{"line":31,"column":25},"end":{"line":31,"column":78}},"20":{"start":{"line":32,"column":8},"end":{"line":37,"column":10}},"21":{"start":{"line":7,"column":13},"end":{"line":7,"column":30}},"22":{"start":{"line":7,"column":13},"end":{"line":41,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":null}},"loc":{"start":{"line":10,"column":53},"end":{"line":11,"column":6}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":15}},"loc":{"start":{"line":13,"column":36},"end":{"line":40,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":17,"column":14},"end":{"line":17,"column":15}},"loc":{"start":{"line":17,"column":27},"end":{"line":17,"column":43}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":18,"column":11},"end":{"line":18,"column":12}},"loc":{"start":{"line":18,"column":24},"end":{"line":18,"column":40}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":20,"column":25},"end":{"line":20,"column":26}},"loc":{"start":{"line":20,"column":38},"end":{"line":39,"column":5}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":24,"column":63},"end":{"line":24,"column":64}},"loc":{"start":{"line":24,"column":74},"end":{"line":38,"column":7}}}},"branchMap":{"0":{"loc":{"start":{"line":21,"column":6},"end":{"line":23,"column":7}},"type":"if","locations":[{"start":{"line":21,"column":6},"end":{"line":23,"column":7}}]},"1":{"loc":{"start":{"line":21,"column":10},"end":{"line":21,"column":51}},"type":"binary-expr","locations":[{"start":{"line":21,"column":10},"end":{"line":21,"column":19}},{"start":{"line":21,"column":23},"end":{"line":21,"column":51}}]},"2":{"loc":{"start":{"line":27,"column":8},"end":{"line":29,"column":9}},"type":"if","locations":[{"start":{"line":27,"column":8},"end":{"line":29,"column":9}}]}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":57,"10":51,"11":2,"12":51,"13":0,"14":51,"15":393,"16":393,"17":393,"18":391,"19":2,"20":2,"21":2,"22":2},"f":{"0":2,"1":2,"2":57,"3":51,"4":51,"5":393},"b":{"0":[0],"1":[51,51],"2":[391]}}
9
9
  }
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">77.64% </span>
26
+ <span class="strong">77.38% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>66/85</span>
28
+ <span class='fraction'>65/84</span>
29
29
  </div>
30
30
 
31
31
 
@@ -37,16 +37,16 @@
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">73.68% </span>
40
+ <span class="strong">72.22% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>14/19</span>
42
+ <span class='fraction'>13/18</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">76.25% </span>
47
+ <span class="strong">75.94% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>61/80</span>
49
+ <span class='fraction'>60/79</span>
50
50
  </div>
51
51
 
52
52
 
@@ -140,17 +140,17 @@
140
140
 
141
141
  <tr>
142
142
  <td class="file high" data-value="src/services"><a href="src/services/index.html">src/services</a></td>
143
- <td data-value="95.83" class="pic high">
143
+ <td data-value="95.65" class="pic high">
144
144
  <div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
145
145
  </td>
146
- <td data-value="95.83" class="pct high">95.83%</td>
147
- <td data-value="24" class="abs high">23/24</td>
146
+ <td data-value="95.65" class="pct high">95.65%</td>
147
+ <td data-value="23" class="abs high">22/23</td>
148
148
  <td data-value="75" class="pct medium">75%</td>
149
149
  <td data-value="4" class="abs medium">3/4</td>
150
150
  <td data-value="100" class="pct high">100%</td>
151
- <td data-value="7" class="abs high">7/7</td>
152
- <td data-value="95.45" class="pct high">95.45%</td>
153
- <td data-value="22" class="abs high">21/22</td>
151
+ <td data-value="6" class="abs high">6/6</td>
152
+ <td data-value="95.23" class="pct high">95.23%</td>
153
+ <td data-value="21" class="abs high">20/21</td>
154
154
  </tr>
155
155
 
156
156
  </tbody>
@@ -161,7 +161,7 @@
161
161
  <div class='footer quiet pad2 space-top1 center small'>
162
162
  Code coverage generated by
163
163
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
164
- at 2025-01-27T02:32:30.168Z
164
+ at 2025-01-27T02:54:03.297Z
165
165
  </div>
166
166
  <script src="prettify.js"></script>
167
167
  <script>
@@ -174,16 +174,14 @@ FN:17,(anonymous_4)
174
174
  FN:18,(anonymous_5)
175
175
  FN:20,(anonymous_6)
176
176
  FN:24,(anonymous_7)
177
- FN:36,(anonymous_8)
178
- FNF:7
179
- FNH:7
177
+ FNF:6
178
+ FNH:6
180
179
  FNDA:2,(anonymous_2)
181
180
  FNDA:2,(anonymous_3)
182
- FNDA:56,(anonymous_4)
183
- FNDA:50,(anonymous_5)
184
- FNDA:50,(anonymous_6)
185
- FNDA:392,(anonymous_7)
186
- FNDA:1,(anonymous_8)
181
+ FNDA:57,(anonymous_4)
182
+ FNDA:51,(anonymous_5)
183
+ FNDA:51,(anonymous_6)
184
+ FNDA:393,(anonymous_7)
187
185
  DA:1,2
188
186
  DA:2,2
189
187
  DA:4,2
@@ -193,25 +191,24 @@ DA:10,2
193
191
  DA:14,2
194
192
  DA:15,2
195
193
  DA:16,2
196
- DA:17,56
197
- DA:18,50
194
+ DA:17,57
195
+ DA:18,51
198
196
  DA:20,2
199
- DA:21,50
197
+ DA:21,51
200
198
  DA:22,0
201
- DA:24,50
202
- DA:25,392
203
- DA:26,392
204
- DA:27,392
205
- DA:28,390
199
+ DA:24,51
200
+ DA:25,393
201
+ DA:26,393
202
+ DA:27,393
203
+ DA:28,391
206
204
  DA:31,2
207
205
  DA:32,2
208
- DA:37,1
209
- LF:22
210
- LH:21
206
+ LF:21
207
+ LH:20
211
208
  BRDA:21,0,0,0
212
- BRDA:21,1,0,50
213
- BRDA:21,1,1,50
214
- BRDA:27,2,0,390
209
+ BRDA:21,1,0,51
210
+ BRDA:21,1,1,51
211
+ BRDA:27,2,0,391
215
212
  BRF:4
216
213
  BRH:3
217
214
  end_of_record
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tools.discovery.d.ts","sourceRoot":"","sources":["../../src/services/mcp-tools.discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,qBACa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBADf,SAAS,EAAE,gBAAgB,EAC3B,eAAe,EAAE,eAAe;IAGnD,aAAa,CAAC,SAAS,EAAE,SAAS;CAgCnC"}
1
+ {"version":3,"file":"mcp-tools.discovery.d.ts","sourceRoot":"","sources":["../../src/services/mcp-tools.discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,qBACa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBADf,SAAS,EAAE,gBAAgB,EAC3B,eAAe,EAAE,eAAe;IAGnD,aAAa,CAAC,SAAS,EAAE,SAAS;CA8BnC"}
@@ -35,11 +35,9 @@ let McpToolsDiscovery = class McpToolsDiscovery {
35
35
  return;
36
36
  }
37
37
  const methodFn = Reflect.getMetadata(decorators_1.MCP_TOOL_METADATA_KEY, methodRef);
38
- mcpServer.tool(methodFn.name, methodFn.description, methodFn.schema, (function (boundInstance, boundMethod) {
39
- return function (...args) {
40
- return boundMethod.apply(boundInstance, args);
41
- };
42
- })(instance, methodRef));
38
+ mcpServer.tool(methodFn.name, methodFn.description, methodFn.schema, (...args) => {
39
+ return instance[method].call(instance, ...args);
40
+ });
43
41
  });
44
42
  });
45
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tools.discovery.js","sourceRoot":"","sources":["../../src/services/mcp-tools.discovery.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAAiE;AACjE,2CAA4C;AAE5C,8CAAsD;AAG/C,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,YACmB,SAA2B,EAC3B,eAAgC;QADhC,cAAS,GAAT,SAAS,CAAkB;QAC3B,oBAAe,GAAf,eAAe,CAAiB;IAChD,CAAC;IAEJ,aAAa,CAAC,SAAoB;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;QACpD,MAAM,YAAY,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC;aAChD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;aACrC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEtC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC9C,OAAO;YACT,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAClE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBAC7D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,kCAAqB,CAAC,EAAE,CAAC;oBACpD,OAAO;gBACT,CAAC;gBAED,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,kCAAqB,EAAE,SAAS,CAAC,CAAC;gBACvE,SAAS,CAAC,IAAI,CACZ,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,MAAM,EACf,CAAC,UAAU,aAAa,EAAE,WAAW;oBACnC,OAAO,UAAU,GAAG,IAAI;wBACtB,OAAO,WAAW,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;oBAChD,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CACxB,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAtCY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAGmB,uBAAgB;QACV,sBAAe;GAHxC,iBAAiB,CAsC7B"}
1
+ {"version":3,"file":"mcp-tools.discovery.js","sourceRoot":"","sources":["../../src/services/mcp-tools.discovery.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAAiE;AACjE,2CAA4C;AAE5C,8CAAsD;AAG/C,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,YACmB,SAA2B,EAC3B,eAAgC;QADhC,cAAS,GAAT,SAAS,CAAkB;QAC3B,oBAAe,GAAf,eAAe,CAAiB;IAChD,CAAC;IAEJ,aAAa,CAAC,SAAoB;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;QACpD,MAAM,YAAY,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC;aAChD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;aACrC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEtC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC9C,OAAO;YACT,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAClE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBAC7D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,kCAAqB,CAAC,EAAE,CAAC;oBACpD,OAAO;gBACT,CAAC;gBAED,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,kCAAqB,EAAE,SAAS,CAAC,CAAC;gBACvE,SAAS,CAAC,IAAI,CACZ,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,MAAM,EACf,CAAC,GAAG,IAAI,EAAE,EAAE;oBACV,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;gBAClD,CAAC,CACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AApCY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAGmB,uBAAgB;QACV,sBAAe;GAHxC,iBAAiB,CAoC7B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rekog/mcp-nest",
3
- "version": "1.0.16",
3
+ "version": "1.0.17",
4
4
  "description": "NestJS module for creating Model Context Protocol (MCP) servers and exposing tools using SSE",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,21 +1,41 @@
1
- import { Test, TestingModule } from '@nestjs/testing';
2
- import { INestApplication, Injectable } from '@nestjs/common';
3
- import { McpModule } from '../src/mcp.module';
4
- import { McpOptions } from '../src/interfaces';
5
- import { z } from 'zod';
6
1
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
7
2
  import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
3
+ import { INestApplication, Injectable } from '@nestjs/common';
4
+ import { Test, TestingModule } from '@nestjs/testing';
5
+ import { z } from 'zod';
8
6
  import { Tool } from '../src';
7
+ import { McpOptions } from '../src/interfaces';
8
+ import { McpModule } from '../src/mcp.module';
9
+
10
+ // Mock UserRepository for testing
11
+ @Injectable()
12
+ class MockUserRepository {
13
+ async findOne() {
14
+ return {
15
+ id: 'user123',
16
+ name: 'Test User',
17
+ orgMemberships: [
18
+ {
19
+ orgId: 'org123',
20
+ organization: {
21
+ name: 'Test Org',
22
+ },
23
+ },
24
+ ],
25
+ };
26
+ }
27
+ }
9
28
 
10
29
  @Injectable()
11
30
  export class GreetingTool {
12
- constructor() {}
31
+ constructor(private readonly userRepository: MockUserRepository) {}
13
32
 
14
33
  @Tool('hello-world', 'A sample tool that returns a greeting', {
15
34
  name: z.string().default('World'),
16
35
  })
17
- sayHello({ name }) {
18
- const greeting = `Hello, ${name}!`;
36
+ async sayHello({ name }) {
37
+ const user = await this.userRepository.findOne();
38
+ const greeting = `Hello, ${name}! I'm ${user.name} from ${user.orgMemberships[0].organization.name}.`;
19
39
 
20
40
  return {
21
41
  content: [
@@ -28,7 +48,6 @@ export class GreetingTool {
28
48
  }
29
49
  }
30
50
 
31
-
32
51
  describe('E2E: MCP Server via SSE', () => {
33
52
  let app: INestApplication;
34
53
  let testPort: number;
@@ -54,7 +73,7 @@ describe('E2E: MCP Server via SSE', () => {
54
73
 
55
74
  const moduleFixture: TestingModule = await Test.createTestingModule({
56
75
  imports: [McpModule.forRoot(testOptions)],
57
- providers: [GreetingTool],
76
+ providers: [GreetingTool, MockUserRepository], // Include MockUserRepository
58
77
  }).compile();
59
78
 
60
79
  app = moduleFixture.createNestApplication();
@@ -68,7 +87,7 @@ describe('E2E: MCP Server via SSE', () => {
68
87
  await app.close();
69
88
  });
70
89
 
71
- it('should list tools and call the "hello-world" tool via SSE', async () => {
90
+ it('should inject dependencies into the tool and call the "hello-world" tool via SSE', async () => {
72
91
  const client = new Client(
73
92
  { name: 'example-client', version: '1.0.0' },
74
93
  { capabilities: {} },
@@ -78,8 +97,8 @@ describe('E2E: MCP Server via SSE', () => {
78
97
  const transport = new SSEClientTransport(sseUrl);
79
98
  await client.connect(transport);
80
99
 
81
- const tools = await client.listTools() ;
82
- expect((tools.tools[0] as any).name).toBe('hello-world');
100
+ const tools = await client.listTools();
101
+ expect(tools.tools[0].name).toBe('hello-world');
83
102
 
84
103
  const result = await client.callTool({
85
104
  name: 'hello-world',
@@ -88,9 +107,12 @@ describe('E2E: MCP Server via SSE', () => {
88
107
 
89
108
  expect(result).toEqual({
90
109
  content: [
91
- { type: 'text', text: 'Hello, World!' },
110
+ {
111
+ type: 'text',
112
+ text: "Hello, World! I'm Test User from Test Org.",
113
+ },
92
114
  ],
93
115
  });
94
116
  await client.close();
95
117
  });
96
- });
118
+ });