@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.
- package/coverage/clover.xml +13 -14
- package/coverage/coverage-final.json +1 -1
- package/coverage/lcov-report/index.html +13 -13
- package/coverage/lcov.info +19 -22
- package/dist/services/mcp-tools.discovery.d.ts.map +1 -1
- package/dist/services/mcp-tools.discovery.js +3 -5
- package/dist/services/mcp-tools.discovery.js.map +1 -1
- package/package.json +1 -1
- package/tests/mcp.e2e.spec.ts +37 -15
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/controllers/sse.controller.d.ts +0 -10
- package/dist/controllers/sse.controller.d.ts.map +0 -1
- package/dist/controllers/sse.controller.factory.d.ts +0 -12
- package/dist/controllers/sse.controller.factory.d.ts.map +0 -1
- package/dist/controllers/sse.controller.factory.js +0 -59
- package/dist/controllers/sse.controller.factory.js.map +0 -1
- package/dist/controllers/sse.controller.js +0 -57
- package/dist/controllers/sse.controller.js.map +0 -1
- package/dist/decorators/constants.d.ts +0 -2
- package/dist/decorators/constants.d.ts.map +0 -1
- package/dist/decorators/constants.js +0 -5
- package/dist/decorators/constants.js.map +0 -1
- package/dist/decorators/index.d.ts +0 -3
- package/dist/decorators/index.d.ts.map +0 -1
- package/dist/decorators/index.js +0 -19
- package/dist/decorators/index.js.map +0 -1
- package/dist/decorators/tool.decorator.d.ts +0 -7
- package/dist/decorators/tool.decorator.d.ts.map +0 -1
- package/dist/decorators/tool.decorator.js +0 -10
- package/dist/decorators/tool.decorator.js.map +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -20
- package/dist/index.js.map +0 -1
- package/dist/interfaces/index.d.ts +0 -2
- package/dist/interfaces/index.d.ts.map +0 -1
- package/dist/interfaces/index.js +0 -18
- package/dist/interfaces/index.js.map +0 -1
- package/dist/interfaces/mcp-options.interface.d.ts +0 -19
- package/dist/interfaces/mcp-options.interface.d.ts.map +0 -1
- package/dist/interfaces/mcp-options.interface.js +0 -3
- package/dist/interfaces/mcp-options.interface.js.map +0 -1
- package/dist/mcp.module.d.ts +0 -9
- package/dist/mcp.module.d.ts.map +0 -1
- package/dist/mcp.module.js +0 -105
- package/dist/mcp.module.js.map +0 -1
- package/dist/mcp.module.spec.d.ts +0 -13
- package/dist/mcp.module.spec.d.ts.map +0 -1
- package/dist/mcp.module.spec.js +0 -87
- package/dist/mcp.module.spec.js.map +0 -1
package/coverage/clover.xml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<coverage generated="
|
|
3
|
-
<project timestamp="
|
|
4
|
-
<metrics statements="
|
|
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="
|
|
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="
|
|
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="
|
|
110
|
-
<line num="18" count="
|
|
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="
|
|
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="
|
|
115
|
-
<line num="25" count="
|
|
116
|
-
<line num="26" count="
|
|
117
|
-
<line num="27" count="
|
|
118
|
-
<line num="28" count="
|
|
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":
|
|
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.
|
|
26
|
+
<span class="strong">77.38% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
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">
|
|
40
|
+
<span class="strong">72.22% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
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">
|
|
47
|
+
<span class="strong">75.94% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
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.
|
|
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.
|
|
147
|
-
<td data-value="
|
|
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="
|
|
152
|
-
<td data-value="95.
|
|
153
|
-
<td data-value="
|
|
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:
|
|
164
|
+
at 2025-01-27T02:54:03.297Z
|
|
165
165
|
</div>
|
|
166
166
|
<script src="prettify.js"></script>
|
|
167
167
|
<script>
|
package/coverage/lcov.info
CHANGED
|
@@ -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
|
-
|
|
178
|
-
|
|
179
|
-
FNH:7
|
|
177
|
+
FNF:6
|
|
178
|
+
FNH:6
|
|
180
179
|
FNDA:2,(anonymous_2)
|
|
181
180
|
FNDA:2,(anonymous_3)
|
|
182
|
-
FNDA:
|
|
183
|
-
FNDA:
|
|
184
|
-
FNDA:
|
|
185
|
-
FNDA:
|
|
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,
|
|
197
|
-
DA:18,
|
|
194
|
+
DA:17,57
|
|
195
|
+
DA:18,51
|
|
198
196
|
DA:20,2
|
|
199
|
-
DA:21,
|
|
197
|
+
DA:21,51
|
|
200
198
|
DA:22,0
|
|
201
|
-
DA:24,
|
|
202
|
-
DA:25,
|
|
203
|
-
DA:26,
|
|
204
|
-
DA:27,
|
|
205
|
-
DA:28,
|
|
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
|
-
|
|
209
|
-
|
|
210
|
-
LH:21
|
|
206
|
+
LF:21
|
|
207
|
+
LH:20
|
|
211
208
|
BRDA:21,0,0,0
|
|
212
|
-
BRDA:21,1,0,
|
|
213
|
-
BRDA:21,1,1,
|
|
214
|
-
BRDA:27,2,0,
|
|
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;
|
|
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, (
|
|
39
|
-
return
|
|
40
|
-
|
|
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,
|
|
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
package/tests/mcp.e2e.spec.ts
CHANGED
|
@@ -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
|
|
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
|
|
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(
|
|
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
|
-
{
|
|
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
|
+
});
|