@rekog/mcp-nest 1.9.10 → 2.0.0-alpha.1

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 (364) hide show
  1. package/README.md +76 -29
  2. package/dist/index.d.ts +0 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +0 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/mcp/decorators/constants.d.ts +1 -0
  7. package/dist/mcp/decorators/constants.d.ts.map +1 -1
  8. package/dist/mcp/decorators/constants.js +2 -1
  9. package/dist/mcp/decorators/constants.js.map +1 -1
  10. package/dist/mcp/decorators/index.d.ts +3 -1
  11. package/dist/mcp/decorators/index.d.ts.map +1 -1
  12. package/dist/mcp/decorators/index.js +3 -1
  13. package/dist/mcp/decorators/index.js.map +1 -1
  14. package/dist/mcp/decorators/mcp-controller.decorator.d.ts +6 -0
  15. package/dist/mcp/decorators/mcp-controller.decorator.d.ts.map +1 -0
  16. package/dist/mcp/decorators/mcp-controller.decorator.js +43 -0
  17. package/dist/mcp/decorators/mcp-controller.decorator.js.map +1 -0
  18. package/dist/mcp/decorators/mcp-message-pattern.d.ts +3 -0
  19. package/dist/mcp/decorators/mcp-message-pattern.d.ts.map +1 -0
  20. package/dist/mcp/decorators/mcp-message-pattern.js +13 -0
  21. package/dist/mcp/decorators/mcp-message-pattern.js.map +1 -0
  22. package/dist/mcp/decorators/prompt.decorator.d.ts +4 -1
  23. package/dist/mcp/decorators/prompt.decorator.d.ts.map +1 -1
  24. package/dist/mcp/decorators/prompt.decorator.js +2 -1
  25. package/dist/mcp/decorators/prompt.decorator.js.map +1 -1
  26. package/dist/mcp/decorators/public.decorator.js.map +1 -1
  27. package/dist/mcp/decorators/raw-request.decorator.d.ts +2 -0
  28. package/dist/mcp/decorators/raw-request.decorator.d.ts.map +1 -0
  29. package/dist/mcp/decorators/raw-request.decorator.js +6 -0
  30. package/dist/mcp/decorators/raw-request.decorator.js.map +1 -0
  31. package/dist/mcp/decorators/resource-template.decorator.d.ts +1 -1
  32. package/dist/mcp/decorators/resource-template.decorator.d.ts.map +1 -1
  33. package/dist/mcp/decorators/resource-template.decorator.js +2 -1
  34. package/dist/mcp/decorators/resource-template.decorator.js.map +1 -1
  35. package/dist/mcp/decorators/resource.decorator.d.ts +1 -1
  36. package/dist/mcp/decorators/resource.decorator.d.ts.map +1 -1
  37. package/dist/mcp/decorators/resource.decorator.js +2 -1
  38. package/dist/mcp/decorators/resource.decorator.js.map +1 -1
  39. package/dist/mcp/decorators/tool.decorator.d.ts +1 -3
  40. package/dist/mcp/decorators/tool.decorator.d.ts.map +1 -1
  41. package/dist/mcp/decorators/tool.decorator.js +2 -1
  42. package/dist/mcp/decorators/tool.decorator.js.map +1 -1
  43. package/dist/mcp/filters/mcp-exception.filter.d.ts +6 -0
  44. package/dist/mcp/filters/mcp-exception.filter.d.ts.map +1 -0
  45. package/dist/mcp/filters/mcp-exception.filter.js +26 -0
  46. package/dist/mcp/filters/mcp-exception.filter.js.map +1 -0
  47. package/dist/mcp/index.d.ts +11 -7
  48. package/dist/mcp/index.d.ts.map +1 -1
  49. package/dist/mcp/index.js +11 -7
  50. package/dist/mcp/index.js.map +1 -1
  51. package/dist/mcp/interfaces/authenticated-user.interface.d.ts +9 -0
  52. package/dist/mcp/interfaces/authenticated-user.interface.d.ts.map +1 -0
  53. package/dist/{authz/interfaces/request-with-user.js → mcp/interfaces/authenticated-user.interface.js} +1 -1
  54. package/dist/mcp/interfaces/authenticated-user.interface.js.map +1 -0
  55. package/dist/mcp/interfaces/dynamic-prompt.interface.d.ts +1 -1
  56. package/dist/mcp/interfaces/dynamic-prompt.interface.d.ts.map +1 -1
  57. package/dist/mcp/interfaces/dynamic-prompt.interface.js.map +1 -1
  58. package/dist/mcp/interfaces/dynamic-resource.interface.d.ts +1 -1
  59. package/dist/mcp/interfaces/dynamic-resource.interface.d.ts.map +1 -1
  60. package/dist/mcp/interfaces/dynamic-resource.interface.js.map +1 -1
  61. package/dist/mcp/interfaces/dynamic-tool.interface.d.ts +1 -1
  62. package/dist/mcp/interfaces/dynamic-tool.interface.d.ts.map +1 -1
  63. package/dist/mcp/interfaces/dynamic-tool.interface.js.map +1 -1
  64. package/dist/mcp/interfaces/index.d.ts +2 -2
  65. package/dist/mcp/interfaces/index.d.ts.map +1 -1
  66. package/dist/mcp/interfaces/index.js +0 -3
  67. package/dist/mcp/interfaces/index.js.map +1 -1
  68. package/dist/mcp/services/tool-authorization.service.d.ts +7 -5
  69. package/dist/mcp/services/tool-authorization.service.d.ts.map +1 -1
  70. package/dist/mcp/services/tool-authorization.service.js +9 -6
  71. package/dist/mcp/services/tool-authorization.service.js.map +1 -1
  72. package/dist/mcp/transport/mcp-context.d.ts +34 -0
  73. package/dist/mcp/transport/mcp-context.d.ts.map +1 -0
  74. package/dist/mcp/transport/mcp-context.js +74 -0
  75. package/dist/mcp/transport/mcp-context.js.map +1 -0
  76. package/dist/mcp/transport/mcp-http-handler.d.ts +7 -0
  77. package/dist/mcp/transport/mcp-http-handler.d.ts.map +1 -0
  78. package/dist/mcp/transport/mcp-http-handler.js +5 -0
  79. package/dist/mcp/transport/mcp-http-handler.js.map +1 -0
  80. package/dist/mcp/transport/mcp-server-options.interface.d.ts +23 -0
  81. package/dist/mcp/transport/mcp-server-options.interface.d.ts.map +1 -0
  82. package/dist/{authz/providers/oauth-provider.interface.js → mcp/transport/mcp-server-options.interface.js} +1 -1
  83. package/dist/mcp/transport/mcp-server-options.interface.js.map +1 -0
  84. package/dist/mcp/transport/mcp-transport.constants.d.ts +19 -0
  85. package/dist/mcp/transport/mcp-transport.constants.d.ts.map +1 -0
  86. package/dist/mcp/transport/mcp-transport.constants.js +21 -0
  87. package/dist/mcp/transport/mcp-transport.constants.js.map +1 -0
  88. package/dist/mcp/transport/mcp-transport.interface.d.ts +17 -0
  89. package/dist/mcp/transport/mcp-transport.interface.d.ts.map +1 -0
  90. package/dist/{authz/interfaces/oauth-common.interface.js → mcp/transport/mcp-transport.interface.js} +1 -1
  91. package/dist/mcp/transport/mcp-transport.interface.js.map +1 -0
  92. package/dist/mcp/transport/mcp.strategy.d.ts +56 -0
  93. package/dist/mcp/transport/mcp.strategy.d.ts.map +1 -0
  94. package/dist/mcp/transport/mcp.strategy.js +446 -0
  95. package/dist/mcp/transport/mcp.strategy.js.map +1 -0
  96. package/dist/mcp/transport/resource-matcher.d.ts +13 -0
  97. package/dist/mcp/transport/resource-matcher.d.ts.map +1 -0
  98. package/dist/mcp/transport/resource-matcher.js +83 -0
  99. package/dist/mcp/transport/resource-matcher.js.map +1 -0
  100. package/dist/mcp/transport/streamable-http.controller.d.ts +16 -0
  101. package/dist/mcp/transport/streamable-http.controller.d.ts.map +1 -0
  102. package/dist/mcp/transport/streamable-http.controller.js +98 -0
  103. package/dist/mcp/transport/streamable-http.controller.js.map +1 -0
  104. package/dist/mcp/transport/transports/index.d.ts +3 -0
  105. package/dist/mcp/transport/transports/index.d.ts.map +1 -0
  106. package/dist/{authz → mcp/transport/transports}/index.js +2 -10
  107. package/dist/mcp/transport/transports/index.js.map +1 -0
  108. package/dist/mcp/transport/transports/read-body.d.ts +3 -0
  109. package/dist/mcp/transport/transports/read-body.d.ts.map +1 -0
  110. package/dist/mcp/transport/transports/read-body.js +32 -0
  111. package/dist/mcp/transport/transports/read-body.js.map +1 -0
  112. package/dist/mcp/transport/transports/stdio.transport.d.ts +9 -0
  113. package/dist/mcp/transport/transports/stdio.transport.d.ts.map +1 -0
  114. package/dist/mcp/transport/transports/stdio.transport.js +27 -0
  115. package/dist/mcp/transport/transports/stdio.transport.js.map +1 -0
  116. package/dist/mcp/transport/transports/streamable-http.transport.d.ts +33 -0
  117. package/dist/mcp/transport/transports/streamable-http.transport.d.ts.map +1 -0
  118. package/dist/mcp/transport/transports/streamable-http.transport.js +216 -0
  119. package/dist/mcp/transport/transports/streamable-http.transport.js.map +1 -0
  120. package/dist/mcp/utils/mcp-logger.factory.d.ts +6 -2
  121. package/dist/mcp/utils/mcp-logger.factory.d.ts.map +1 -1
  122. package/dist/mcp/utils/mcp-logger.factory.js.map +1 -1
  123. package/package.json +3 -66
  124. package/src/index.ts +0 -1
  125. package/src/mcp/decorators/constants.ts +1 -0
  126. package/src/mcp/decorators/index.ts +3 -1
  127. package/src/mcp/decorators/mcp-controller.decorator.ts +126 -0
  128. package/src/mcp/decorators/mcp-message-pattern.ts +38 -0
  129. package/src/mcp/decorators/prompt.decorator.ts +32 -2
  130. package/src/mcp/decorators/public.decorator.ts +3 -3
  131. package/src/mcp/decorators/raw-request.decorator.ts +32 -0
  132. package/src/mcp/decorators/resource-template.decorator.ts +6 -2
  133. package/src/mcp/decorators/resource.decorator.ts +6 -2
  134. package/src/mcp/decorators/tool.decorator.ts +6 -3
  135. package/src/mcp/filters/mcp-exception.filter.ts +47 -0
  136. package/src/mcp/index.ts +13 -7
  137. package/src/mcp/interfaces/authenticated-user.interface.ts +22 -0
  138. package/src/mcp/interfaces/dynamic-prompt.interface.ts +1 -1
  139. package/src/mcp/interfaces/dynamic-resource.interface.ts +1 -1
  140. package/src/mcp/interfaces/dynamic-tool.interface.ts +2 -2
  141. package/src/mcp/interfaces/index.ts +3 -7
  142. package/src/mcp/services/tool-authorization.service.ts +52 -72
  143. package/src/mcp/transport/mcp-context.ts +138 -0
  144. package/src/mcp/transport/mcp-http-handler.ts +32 -0
  145. package/src/mcp/transport/mcp-server-options.interface.ts +75 -0
  146. package/src/mcp/transport/mcp-transport.constants.ts +99 -0
  147. package/src/mcp/transport/mcp-transport.interface.ts +50 -0
  148. package/src/mcp/transport/mcp.strategy.ts +752 -0
  149. package/src/mcp/transport/resource-matcher.ts +107 -0
  150. package/src/mcp/transport/streamable-http.controller.ts +114 -0
  151. package/src/mcp/transport/transports/index.ts +2 -0
  152. package/src/mcp/transport/transports/read-body.ts +39 -0
  153. package/src/mcp/transport/transports/stdio.transport.ts +35 -0
  154. package/src/mcp/transport/transports/streamable-http.transport.ts +384 -0
  155. package/src/mcp/utils/mcp-logger.factory.spec.ts +8 -22
  156. package/src/mcp/utils/mcp-logger.factory.ts +13 -2
  157. package/dist/authz/guards/jwt-auth.guard.d.ts +0 -19
  158. package/dist/authz/guards/jwt-auth.guard.d.ts.map +0 -1
  159. package/dist/authz/guards/jwt-auth.guard.js +0 -108
  160. package/dist/authz/guards/jwt-auth.guard.js.map +0 -1
  161. package/dist/authz/index.d.ts +0 -11
  162. package/dist/authz/index.d.ts.map +0 -1
  163. package/dist/authz/index.js.map +0 -1
  164. package/dist/authz/interfaces/oauth-common.interface.d.ts +0 -21
  165. package/dist/authz/interfaces/oauth-common.interface.d.ts.map +0 -1
  166. package/dist/authz/interfaces/oauth-common.interface.js.map +0 -1
  167. package/dist/authz/interfaces/request-with-user.d.ts +0 -13
  168. package/dist/authz/interfaces/request-with-user.d.ts.map +0 -1
  169. package/dist/authz/interfaces/request-with-user.js.map +0 -1
  170. package/dist/authz/mcp-oauth.controller.d.ts +0 -81
  171. package/dist/authz/mcp-oauth.controller.d.ts.map +0 -1
  172. package/dist/authz/mcp-oauth.controller.js +0 -540
  173. package/dist/authz/mcp-oauth.controller.js.map +0 -1
  174. package/dist/authz/mcp-oauth.module.d.ts +0 -12
  175. package/dist/authz/mcp-oauth.module.d.ts.map +0 -1
  176. package/dist/authz/mcp-oauth.module.js +0 -271
  177. package/dist/authz/mcp-oauth.module.js.map +0 -1
  178. package/dist/authz/providers/azure-ad.provider.d.ts +0 -3
  179. package/dist/authz/providers/azure-ad.provider.d.ts.map +0 -1
  180. package/dist/authz/providers/azure-ad.provider.js +0 -37
  181. package/dist/authz/providers/azure-ad.provider.js.map +0 -1
  182. package/dist/authz/providers/github.provider.d.ts +0 -3
  183. package/dist/authz/providers/github.provider.d.ts.map +0 -1
  184. package/dist/authz/providers/github.provider.js +0 -24
  185. package/dist/authz/providers/github.provider.js.map +0 -1
  186. package/dist/authz/providers/google.provider.d.ts +0 -3
  187. package/dist/authz/providers/google.provider.d.ts.map +0 -1
  188. package/dist/authz/providers/google.provider.js +0 -25
  189. package/dist/authz/providers/google.provider.js.map +0 -1
  190. package/dist/authz/providers/oauth-provider.interface.d.ts +0 -107
  191. package/dist/authz/providers/oauth-provider.interface.d.ts.map +0 -1
  192. package/dist/authz/providers/oauth-provider.interface.js.map +0 -1
  193. package/dist/authz/services/client.service.d.ts +0 -12
  194. package/dist/authz/services/client.service.d.ts.map +0 -1
  195. package/dist/authz/services/client.service.js +0 -81
  196. package/dist/authz/services/client.service.js.map +0 -1
  197. package/dist/authz/services/jwt-token.service.d.ts +0 -37
  198. package/dist/authz/services/jwt-token.service.d.ts.map +0 -1
  199. package/dist/authz/services/jwt-token.service.js +0 -182
  200. package/dist/authz/services/jwt-token.service.js.map +0 -1
  201. package/dist/authz/services/oauth-strategy.service.d.ts +0 -13
  202. package/dist/authz/services/oauth-strategy.service.d.ts.map +0 -1
  203. package/dist/authz/services/oauth-strategy.service.js +0 -71
  204. package/dist/authz/services/oauth-strategy.service.js.map +0 -1
  205. package/dist/authz/stores/memory-store.service.d.ts +0 -27
  206. package/dist/authz/stores/memory-store.service.d.ts.map +0 -1
  207. package/dist/authz/stores/memory-store.service.js +0 -107
  208. package/dist/authz/stores/memory-store.service.js.map +0 -1
  209. package/dist/authz/stores/oauth-store.interface.d.ts +0 -61
  210. package/dist/authz/stores/oauth-store.interface.d.ts.map +0 -1
  211. package/dist/authz/stores/oauth-store.interface.js +0 -5
  212. package/dist/authz/stores/oauth-store.interface.js.map +0 -1
  213. package/dist/authz/stores/typeorm/constants.d.ts +0 -3
  214. package/dist/authz/stores/typeorm/constants.d.ts.map +0 -1
  215. package/dist/authz/stores/typeorm/constants.js +0 -6
  216. package/dist/authz/stores/typeorm/constants.js.map +0 -1
  217. package/dist/authz/stores/typeorm/entities/authorization-code.entity.d.ts +0 -15
  218. package/dist/authz/stores/typeorm/entities/authorization-code.entity.d.ts.map +0 -1
  219. package/dist/authz/stores/typeorm/entities/authorization-code.entity.js +0 -69
  220. package/dist/authz/stores/typeorm/entities/authorization-code.entity.js.map +0 -1
  221. package/dist/authz/stores/typeorm/entities/index.d.ts +0 -5
  222. package/dist/authz/stores/typeorm/entities/index.d.ts.map +0 -1
  223. package/dist/authz/stores/typeorm/entities/index.js +0 -12
  224. package/dist/authz/stores/typeorm/entities/index.js.map +0 -1
  225. package/dist/authz/stores/typeorm/entities/oauth-client.entity.d.ts +0 -17
  226. package/dist/authz/stores/typeorm/entities/oauth-client.entity.d.ts.map +0 -1
  227. package/dist/authz/stores/typeorm/entities/oauth-client.entity.js +0 -77
  228. package/dist/authz/stores/typeorm/entities/oauth-client.entity.js.map +0 -1
  229. package/dist/authz/stores/typeorm/entities/oauth-session.entity.d.ts +0 -14
  230. package/dist/authz/stores/typeorm/entities/oauth-session.entity.d.ts.map +0 -1
  231. package/dist/authz/stores/typeorm/entities/oauth-session.entity.js +0 -65
  232. package/dist/authz/stores/typeorm/entities/oauth-session.entity.js.map +0 -1
  233. package/dist/authz/stores/typeorm/entities/user-profile.entity.d.ts +0 -13
  234. package/dist/authz/stores/typeorm/entities/user-profile.entity.d.ts.map +0 -1
  235. package/dist/authz/stores/typeorm/entities/user-profile.entity.js +0 -62
  236. package/dist/authz/stores/typeorm/entities/user-profile.entity.js.map +0 -1
  237. package/dist/authz/stores/typeorm/typeorm-store.service.d.ts +0 -28
  238. package/dist/authz/stores/typeorm/typeorm-store.service.d.ts.map +0 -1
  239. package/dist/authz/stores/typeorm/typeorm-store.service.js +0 -138
  240. package/dist/authz/stores/typeorm/typeorm-store.service.js.map +0 -1
  241. package/dist/mcp/constants/feature-registration.constants.d.ts +0 -7
  242. package/dist/mcp/constants/feature-registration.constants.d.ts.map +0 -1
  243. package/dist/mcp/constants/feature-registration.constants.js +0 -5
  244. package/dist/mcp/constants/feature-registration.constants.js.map +0 -1
  245. package/dist/mcp/decorators/tool-guards.decorator.d.ts +0 -12
  246. package/dist/mcp/decorators/tool-guards.decorator.d.ts.map +0 -1
  247. package/dist/mcp/decorators/tool-guards.decorator.js +0 -13
  248. package/dist/mcp/decorators/tool-guards.decorator.js.map +0 -1
  249. package/dist/mcp/interfaces/mcp-options.interface.d.ts +0 -53
  250. package/dist/mcp/interfaces/mcp-options.interface.d.ts.map +0 -1
  251. package/dist/mcp/interfaces/mcp-options.interface.js +0 -10
  252. package/dist/mcp/interfaces/mcp-options.interface.js.map +0 -1
  253. package/dist/mcp/mcp.module.d.ts +0 -15
  254. package/dist/mcp/mcp.module.d.ts.map +0 -1
  255. package/dist/mcp/mcp.module.js +0 -248
  256. package/dist/mcp/mcp.module.js.map +0 -1
  257. package/dist/mcp/services/handlers/mcp-handler.base.d.ts +0 -117
  258. package/dist/mcp/services/handlers/mcp-handler.base.d.ts.map +0 -1
  259. package/dist/mcp/services/handlers/mcp-handler.base.js +0 -125
  260. package/dist/mcp/services/handlers/mcp-handler.base.js.map +0 -1
  261. package/dist/mcp/services/handlers/mcp-prompts.handler.d.ts +0 -12
  262. package/dist/mcp/services/handlers/mcp-prompts.handler.d.ts.map +0 -1
  263. package/dist/mcp/services/handlers/mcp-prompts.handler.js +0 -98
  264. package/dist/mcp/services/handlers/mcp-prompts.handler.js.map +0 -1
  265. package/dist/mcp/services/handlers/mcp-resources.handler.d.ts +0 -13
  266. package/dist/mcp/services/handlers/mcp-resources.handler.d.ts.map +0 -1
  267. package/dist/mcp/services/handlers/mcp-resources.handler.js +0 -117
  268. package/dist/mcp/services/handlers/mcp-resources.handler.js.map +0 -1
  269. package/dist/mcp/services/handlers/mcp-tools.handler.d.ts +0 -22
  270. package/dist/mcp/services/handlers/mcp-tools.handler.d.ts.map +0 -1
  271. package/dist/mcp/services/handlers/mcp-tools.handler.js +0 -258
  272. package/dist/mcp/services/handlers/mcp-tools.handler.js.map +0 -1
  273. package/dist/mcp/services/mcp-dynamic-registry.service.d.ts +0 -26
  274. package/dist/mcp/services/mcp-dynamic-registry.service.d.ts.map +0 -1
  275. package/dist/mcp/services/mcp-dynamic-registry.service.js +0 -133
  276. package/dist/mcp/services/mcp-dynamic-registry.service.js.map +0 -1
  277. package/dist/mcp/services/mcp-executor.service.d.ts +0 -15
  278. package/dist/mcp/services/mcp-executor.service.d.ts.map +0 -1
  279. package/dist/mcp/services/mcp-executor.service.js +0 -47
  280. package/dist/mcp/services/mcp-executor.service.js.map +0 -1
  281. package/dist/mcp/services/mcp-registry-discovery.service.d.ts +0 -63
  282. package/dist/mcp/services/mcp-registry-discovery.service.d.ts.map +0 -1
  283. package/dist/mcp/services/mcp-registry-discovery.service.js +0 -397
  284. package/dist/mcp/services/mcp-registry-discovery.service.js.map +0 -1
  285. package/dist/mcp/services/mcp-sse.service.d.ts +0 -20
  286. package/dist/mcp/services/mcp-sse.service.d.ts.map +0 -1
  287. package/dist/mcp/services/mcp-sse.service.js +0 -91
  288. package/dist/mcp/services/mcp-sse.service.js.map +0 -1
  289. package/dist/mcp/services/mcp-streamable-http.service.d.ts +0 -32
  290. package/dist/mcp/services/mcp-streamable-http.service.d.ts.map +0 -1
  291. package/dist/mcp/services/mcp-streamable-http.service.js +0 -327
  292. package/dist/mcp/services/mcp-streamable-http.service.js.map +0 -1
  293. package/dist/mcp/services/sse-ping.service.d.ts +0 -23
  294. package/dist/mcp/services/sse-ping.service.d.ts.map +0 -1
  295. package/dist/mcp/services/sse-ping.service.js +0 -99
  296. package/dist/mcp/services/sse-ping.service.js.map +0 -1
  297. package/dist/mcp/transport/sse.controller.factory.d.ts +0 -14
  298. package/dist/mcp/transport/sse.controller.factory.d.ts.map +0 -1
  299. package/dist/mcp/transport/sse.controller.factory.js +0 -67
  300. package/dist/mcp/transport/sse.controller.factory.js.map +0 -1
  301. package/dist/mcp/transport/stdio.service.d.ts +0 -14
  302. package/dist/mcp/transport/stdio.service.d.ts.map +0 -1
  303. package/dist/mcp/transport/stdio.service.js +0 -66
  304. package/dist/mcp/transport/stdio.service.js.map +0 -1
  305. package/dist/mcp/transport/streamable-http.controller.factory.d.ts +0 -14
  306. package/dist/mcp/transport/streamable-http.controller.factory.d.ts.map +0 -1
  307. package/dist/mcp/transport/streamable-http.controller.factory.js +0 -74
  308. package/dist/mcp/transport/streamable-http.controller.factory.js.map +0 -1
  309. package/dist/mcp/utils/capabilities-builder.d.ts +0 -5
  310. package/dist/mcp/utils/capabilities-builder.d.ts.map +0 -1
  311. package/dist/mcp/utils/capabilities-builder.js +0 -25
  312. package/dist/mcp/utils/capabilities-builder.js.map +0 -1
  313. package/dist/mcp/utils/mcp-server.factory.d.ts +0 -6
  314. package/dist/mcp/utils/mcp-server.factory.d.ts.map +0 -1
  315. package/dist/mcp/utils/mcp-server.factory.js +0 -22
  316. package/dist/mcp/utils/mcp-server.factory.js.map +0 -1
  317. package/src/authz/guards/jwt-auth.guard.ts +0 -127
  318. package/src/authz/index.ts +0 -10
  319. package/src/authz/interfaces/oauth-common.interface.ts +0 -21
  320. package/src/authz/interfaces/request-with-user.ts +0 -16
  321. package/src/authz/mcp-oauth.controller.ts +0 -860
  322. package/src/authz/mcp-oauth.module.ts +0 -384
  323. package/src/authz/providers/azure-ad.provider.ts +0 -40
  324. package/src/authz/providers/github.provider.ts +0 -22
  325. package/src/authz/providers/google.provider.ts +0 -23
  326. package/src/authz/providers/oauth-provider.interface.ts +0 -147
  327. package/src/authz/services/client.service.ts +0 -125
  328. package/src/authz/services/jwt-token.service.spec.ts +0 -67
  329. package/src/authz/services/jwt-token.service.ts +0 -188
  330. package/src/authz/services/oauth-strategy.service.ts +0 -64
  331. package/src/authz/stores/memory-store.service.spec.ts +0 -475
  332. package/src/authz/stores/memory-store.service.ts +0 -141
  333. package/src/authz/stores/oauth-store.interface.ts +0 -131
  334. package/src/authz/stores/typeorm/README.md +0 -140
  335. package/src/authz/stores/typeorm/constants.ts +0 -6
  336. package/src/authz/stores/typeorm/entities/authorization-code.entity.ts +0 -41
  337. package/src/authz/stores/typeorm/entities/index.ts +0 -4
  338. package/src/authz/stores/typeorm/entities/oauth-client.entity.ts +0 -53
  339. package/src/authz/stores/typeorm/entities/oauth-session.entity.ts +0 -38
  340. package/src/authz/stores/typeorm/entities/user-profile.entity.ts +0 -46
  341. package/src/authz/stores/typeorm/typeorm-store.service.spec.ts +0 -494
  342. package/src/authz/stores/typeorm/typeorm-store.service.ts +0 -165
  343. package/src/mcp/constants/feature-registration.constants.ts +0 -24
  344. package/src/mcp/decorators/tool-guards.decorator.ts +0 -82
  345. package/src/mcp/interfaces/mcp-options.interface.ts +0 -95
  346. package/src/mcp/mcp.module.ts +0 -349
  347. package/src/mcp/services/handlers/mcp-handler.base.ts +0 -203
  348. package/src/mcp/services/handlers/mcp-prompts.handler.ts +0 -143
  349. package/src/mcp/services/handlers/mcp-resources.handler.ts +0 -183
  350. package/src/mcp/services/handlers/mcp-tools.handler.spec.ts +0 -41
  351. package/src/mcp/services/handlers/mcp-tools.handler.ts +0 -436
  352. package/src/mcp/services/mcp-dynamic-registry.service.ts +0 -236
  353. package/src/mcp/services/mcp-executor.service.ts +0 -64
  354. package/src/mcp/services/mcp-registry-discovery.service.spec.ts +0 -306
  355. package/src/mcp/services/mcp-registry-discovery.service.ts +0 -849
  356. package/src/mcp/services/mcp-sse.service.ts +0 -124
  357. package/src/mcp/services/mcp-streamable-http.service.ts +0 -472
  358. package/src/mcp/services/sse-ping.service.ts +0 -144
  359. package/src/mcp/transport/custom-decorator.spec.ts +0 -75
  360. package/src/mcp/transport/sse.controller.factory.ts +0 -84
  361. package/src/mcp/transport/stdio.service.ts +0 -75
  362. package/src/mcp/transport/streamable-http.controller.factory.ts +0 -80
  363. package/src/mcp/utils/capabilities-builder.ts +0 -43
  364. package/src/mcp/utils/mcp-server.factory.ts +0 -33
@@ -1,64 +0,0 @@
1
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { Inject, Injectable, Logger, Optional, Scope } from '@nestjs/common';
3
- import { ModuleRef, Reflector } from '@nestjs/core';
4
- import { McpRegistryDiscoveryService } from './mcp-registry-discovery.service';
5
- import { McpToolsHandler } from './handlers/mcp-tools.handler';
6
- import { McpResourcesHandler } from './handlers/mcp-resources.handler';
7
- import { McpPromptsHandler } from './handlers/mcp-prompts.handler';
8
- import { HttpRequest } from '../interfaces/http-adapter.interface';
9
- import { ToolAuthorizationService } from './tool-authorization.service';
10
- import type { McpOptions } from '../interfaces/mcp-options.interface';
11
- import { createMcpLogger } from '../utils/mcp-logger.factory';
12
-
13
- /**
14
- * Request-scoped service for executing MCP tools
15
- */
16
- @Injectable({ scope: Scope.REQUEST })
17
- export class McpExecutorService {
18
- private logger: Logger;
19
- private toolsHandler: McpToolsHandler;
20
- private resourcesHandler: McpResourcesHandler;
21
- private promptsHandler: McpPromptsHandler;
22
-
23
- constructor(
24
- moduleRef: ModuleRef,
25
- registry: McpRegistryDiscoveryService,
26
- @Inject('MCP_MODULE_ID') mcpModuleId: string,
27
- @Inject('MCP_OPTIONS') options: McpOptions,
28
- authService: ToolAuthorizationService,
29
- reflector: Reflector,
30
- ) {
31
- this.logger = createMcpLogger(McpExecutorService.name, options);
32
- this.toolsHandler = new McpToolsHandler(
33
- moduleRef,
34
- registry,
35
- reflector,
36
- mcpModuleId,
37
- options,
38
- authService,
39
- );
40
- this.resourcesHandler = new McpResourcesHandler(
41
- moduleRef,
42
- registry,
43
- reflector,
44
- mcpModuleId,
45
- );
46
- this.promptsHandler = new McpPromptsHandler(
47
- moduleRef,
48
- registry,
49
- reflector,
50
- mcpModuleId,
51
- );
52
- }
53
-
54
- /**
55
- * Register tool-related request handlers with the MCP server
56
- * @param mcpServer - The MCP server instance
57
- * @param request - The current HTTP request object
58
- */
59
- registerRequestHandlers(mcpServer: McpServer, httpRequest: HttpRequest) {
60
- this.toolsHandler.registerHandlers(mcpServer, httpRequest);
61
- this.resourcesHandler.registerHandlers(mcpServer, httpRequest);
62
- this.promptsHandler.registerHandlers(mcpServer, httpRequest);
63
- }
64
- }
@@ -1,306 +0,0 @@
1
- import {
2
- DynamicModule,
3
- Injectable,
4
- Module,
5
- ValueProvider,
6
- } from '@nestjs/common';
7
- import { Test, TestingModule } from '@nestjs/testing';
8
- import { McpRegistryDiscoveryService } from './mcp-registry-discovery.service';
9
- import { DiscoveryService, MetadataScanner } from '@nestjs/core';
10
- import { Tool } from '../decorators/tool.decorator';
11
- import { McpModule } from '../mcp.module';
12
-
13
- describe('McpRegistryDiscoveryService', () => {
14
- let service: McpRegistryDiscoveryService;
15
- const mockMcpModuleId = 'test-mcp-module-id';
16
-
17
- const mockResource = (name: string, uri: string) => ({
18
- type: 'resource',
19
- metadata: { name, uri },
20
- providerClass: Symbol(name),
21
- methodName: 'someMethod',
22
- });
23
-
24
- const mockResourceTemplate = (name: string, uriTemplate: string) => ({
25
- type: 'resource-template',
26
- metadata: { name, uriTemplate },
27
- providerClass: Symbol(name),
28
- methodName: 'someMethod',
29
- });
30
-
31
- beforeEach(async () => {
32
- const module: TestingModule = await Test.createTestingModule({
33
- providers: [
34
- McpRegistryDiscoveryService,
35
- {
36
- provide: DiscoveryService,
37
- useValue: {
38
- getProviders: jest.fn(() => []),
39
- getControllers: jest.fn(() => []),
40
- },
41
- },
42
- MetadataScanner,
43
- ],
44
- }).compile();
45
-
46
- service = module.get<McpRegistryDiscoveryService>(
47
- McpRegistryDiscoveryService,
48
- );
49
-
50
- const mockResources = [
51
- mockResource('res0', '/posts/comments'),
52
- mockResource('res1', '/users/{id}'),
53
- mockResource('res2', '/posts/:postId/comments'),
54
- mockResource('res3', 'mcp://hello-world'),
55
- ];
56
-
57
- const mockResourceTemplates = [
58
- mockResourceTemplate('resTemplate1', '/templates/{id}'),
59
- mockResourceTemplate('resTemplate2', '/templates/{type}/{id}'),
60
- ];
61
-
62
- (service as any).discoveredCapabilitiesByMcpModuleId = new Map([
63
- [mockMcpModuleId, [...mockResources, ...mockResourceTemplates]],
64
- ]);
65
- });
66
-
67
- it('should return the correct resource by URI', () => {
68
- const result = service.findResourceByUri(mockMcpModuleId, '/users/123');
69
- expect(result?.resource.metadata.name).toBe('res1');
70
- expect(result?.params).toEqual({ id: '123' });
71
- });
72
-
73
- it('should return the correct resource by URI', () => {
74
- const result = service.findResourceByUri(mockMcpModuleId, '/users/123');
75
- expect(result?.resource.metadata.name).toBe('res1');
76
- expect(result?.params).toEqual({ id: '123' });
77
- });
78
-
79
- it('should return undefined for unknown URI', () => {
80
- const result = service.findResourceByUri(mockMcpModuleId, '/unknown/path');
81
- expect(result).toBeUndefined();
82
- });
83
-
84
- it('should match complex URI template', () => {
85
- const result = service.findResourceByUri(
86
- mockMcpModuleId,
87
- '/posts/456/comments',
88
- );
89
- expect(result?.resource.metadata.name).toBe('res2');
90
- expect(result?.params).toEqual({ postId: '456' });
91
- });
92
-
93
- it('should match simple URI template', () => {
94
- const result = service.findResourceByUri(
95
- mockMcpModuleId,
96
- '/posts/comments',
97
- );
98
- expect(result?.resource.metadata.name).toBe('res0');
99
- expect(result?.params).toEqual({});
100
- });
101
-
102
- it('should match mcp URI', () => {
103
- const result = service.findResourceByUri(
104
- mockMcpModuleId,
105
- 'mcp://hello-world',
106
- );
107
- expect(result?.resource.metadata.name).toBe('res3');
108
- expect(result?.params).toEqual({});
109
- });
110
-
111
- it('should return the correct resource template by URI', () => {
112
- const result = service.findResourceTemplateByUri(
113
- mockMcpModuleId,
114
- '/templates/123',
115
- );
116
- expect(result?.resourceTemplate.metadata.name).toBe('resTemplate1');
117
- expect(result?.params).toEqual({ id: '123' });
118
- });
119
- });
120
-
121
- /**
122
- * In the case of multiple MCP servers in different modules, the discovery should be scoped to each MCP root.
123
- * The structure of test modules is the following:
124
- *
125
- * TestModule
126
- * / \
127
- * / \
128
- * / \
129
- * ModuleA (server-a) ModuleB (server-b)
130
- * | |
131
- * | |
132
- * ToolsA ToolsB
133
- */
134
- describe('McpRegistryDiscoveryService - Multiple discovery roots', () => {
135
- const mcpModuleA = McpModule.forRoot({ name: 'server-a', version: '0.0.1' });
136
- const mcpModuleB = McpModule.forRoot({ name: 'server-b', version: '0.0.1' });
137
-
138
- @Injectable()
139
- class ToolsA {
140
- @Tool({
141
- name: 'toolA',
142
- description: 'Tool A from ModuleA',
143
- })
144
- toolA() {
145
- return 'Tool A result';
146
- }
147
- }
148
-
149
- @Injectable()
150
- class ToolsB {
151
- @Tool({
152
- name: 'toolB',
153
- description: 'Tool B from ModuleB',
154
- })
155
- toolB() {
156
- return 'Tool B result';
157
- }
158
- }
159
-
160
- @Module({
161
- imports: [mcpModuleA],
162
- providers: [ToolsA],
163
- exports: [ToolsA],
164
- })
165
- class ModuleA {}
166
-
167
- @Module({
168
- imports: [mcpModuleB],
169
- providers: [ToolsB],
170
- exports: [ToolsB],
171
- })
172
- class ModuleB {}
173
-
174
- let service: McpRegistryDiscoveryService;
175
- const idModuleA = getMcpModuleId(mcpModuleA);
176
- const idModuleB = getMcpModuleId(mcpModuleB);
177
-
178
- beforeAll(async () => {
179
- const module: TestingModule = await Test.createTestingModule({
180
- imports: [ModuleA, ModuleB],
181
- }).compile();
182
-
183
- service = module.get<McpRegistryDiscoveryService>(
184
- McpRegistryDiscoveryService,
185
- );
186
- service.onApplicationBootstrap();
187
- });
188
-
189
- it('server-a discovered toolA only', () => {
190
- const tools = service.getTools(idModuleA);
191
-
192
- expect(tools.length).toBe(1);
193
-
194
- const tool = tools.find((tool) => tool.metadata.name === 'toolA');
195
- expect(tool).toBeDefined();
196
- });
197
-
198
- it('server-b discovered toolB only', () => {
199
- const tools = service.getTools(idModuleB);
200
-
201
- expect(tools.length).toBe(1);
202
-
203
- const tool = tools.find((tool) => tool.metadata.name === 'toolB');
204
- expect(tool).toBeDefined();
205
- });
206
- });
207
-
208
- /**
209
- * In the case of multiple MCP servers in a single module, the discovery should discover the same tools for all MCP servers.
210
- * The structure of test modules is the following:
211
- *
212
- * TestModule
213
- * |
214
- * |
215
- * AppModule (server-a, server-b)
216
- * |
217
- * |
218
- * ToolsModule
219
- * |
220
- * Tools (forFeature to both)
221
- */
222
- describe('McpRegistryDiscoveryService - Single discovery root with multiple MCP servers', () => {
223
- const mcpModuleA = McpModule.forRoot({ name: 'server-a', version: '0.0.1' });
224
- const mcpModuleB = McpModule.forRoot({ name: 'server-b', version: '0.0.1' });
225
-
226
- const idModuleA = getMcpModuleId(mcpModuleA);
227
- const idModuleB = getMcpModuleId(mcpModuleB);
228
-
229
- @Injectable()
230
- class Tools {
231
- @Tool({
232
- name: 'tool',
233
- description: 'Tool from AppModule',
234
- })
235
- tool() {
236
- return 'Tool result';
237
- }
238
- }
239
-
240
- @Module({
241
- imports: [
242
- McpModule.forFeature([Tools], 'server-a'),
243
- McpModule.forFeature([Tools], 'server-b'),
244
- ],
245
- providers: [Tools],
246
- exports: [Tools],
247
- })
248
- class ToolsModule {}
249
-
250
- @Module({
251
- imports: [mcpModuleA, mcpModuleB, ToolsModule],
252
- })
253
- class AppModule {}
254
-
255
- let service: McpRegistryDiscoveryService;
256
-
257
- beforeAll(async () => {
258
- const module: TestingModule = await Test.createTestingModule({
259
- imports: [AppModule],
260
- }).compile();
261
-
262
- service = module.get<McpRegistryDiscoveryService>(
263
- McpRegistryDiscoveryService,
264
- );
265
- service.onApplicationBootstrap();
266
- });
267
-
268
- it('server-a discovered the tool', () => {
269
- const tools = service.getTools(idModuleA);
270
-
271
- expect(tools.length).toBe(1);
272
-
273
- const tool = tools.find((tool) => tool.metadata.name === 'tool');
274
- expect(tool).toBeDefined();
275
- });
276
-
277
- it('server-b discovered the tool', () => {
278
- const tools = service.getTools(idModuleB);
279
-
280
- expect(tools.length).toBe(1);
281
-
282
- const tool = tools.find((tool) => tool.metadata.name === 'tool');
283
- expect(tool).toBeDefined();
284
- });
285
- });
286
-
287
- /**
288
- * Helper function to get the MCP module ID from a DynamicModule.
289
- * Pulling the IDs from the compiled TestingModule doesn't work as expected.
290
- * It returns the same ID for both modules, which is the ID of the module registered last.
291
- */
292
- function getMcpModuleId(module: DynamicModule): string {
293
- const valueProvider = module?.providers?.find(
294
- (provider) =>
295
- typeof provider === 'object' &&
296
- (provider as ValueProvider).provide === 'MCP_MODULE_ID',
297
- ) as ValueProvider<string> | undefined;
298
-
299
- if (!valueProvider) {
300
- throw new Error(
301
- 'MCP_MODULE_ID provider not found in module. This should not happen.',
302
- );
303
- }
304
-
305
- return valueProvider.useValue;
306
- }