@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,82 +0,0 @@
1
- import { CanActivate, SetMetadata, Type } from '@nestjs/common';
2
-
3
- /**
4
- * Metadata key for storing tool-level NestJS guards
5
- */
6
- export const MCP_GUARDS_METADATA_KEY = 'mcp:guards';
7
-
8
- /**
9
- * The execution context available to guards used with @ToolGuards().
10
- *
11
- * MCP tools don't run inside NestJS's request pipeline (all tools share a single
12
- * HTTP endpoint), so the full ExecutionContext is not available. This type
13
- * describes exactly what IS available.
14
- *
15
- * Available:
16
- * - `switchToHttp().getRequest()` - the HTTP request object, enriched with:
17
- * - `body` - during `tools/call`, contains the validated tool arguments;
18
- * during `tools/list`, contains the raw HTTP request body (if any)
19
- * - `params` - parsed route params from the HTTP adapter
20
- * - `user` - if set by a transport-level auth guard
21
- * - `headers` - original request headers
22
- * - `getClass()` - the tool's provider class (works with Reflector)
23
- * - `getHandler()` - the tool's method reference (works with Reflector)
24
- * - `getType()` - always returns `'http'`
25
- *
26
- * Not available (will throw if called):
27
- * - `switchToHttp().getResponse()` - MCP handles responses via protocol layer
28
- * - `switchToHttp().getNext()` - no middleware chain
29
- * - `switchToRpc()` / `switchToWs()` - not an RPC/WS context
30
- * - `getArgs()` / `getArgByIndex()` - no NestJS argument array
31
- */
32
- export interface ToolGuardExecutionContext {
33
- switchToHttp(): {
34
- getRequest<T = unknown>(): T;
35
- };
36
- getClass<T = unknown>(): Type<T>;
37
- getHandler(): Function;
38
- getType<TContext extends string = string>(): TContext;
39
- }
40
-
41
- /**
42
- * Decorator to specify NestJS guards that control access to a tool.
43
- *
44
- * When applied, each guard's `canActivate()` is evaluated before listing or executing the tool.
45
- * If any guard rejects, the tool is hidden from `tools/list` and blocked from execution.
46
- * ALL guards must pass (AND logic).
47
- *
48
- * Guards receive an execution context with the fields described by {@link ToolGuardExecutionContext}.
49
- * Standard NestJS guards that only use `switchToHttp().getRequest()` will work. Guards that
50
- * access the response object, RPC context, or WebSocket context will throw at runtime.
51
- *
52
- * Note: Guards require an HTTP context and are not supported with STDIO transport.
53
- * Tools with guards will be hidden when using STDIO.
54
- *
55
- * @param guards - Array of NestJS guard classes implementing CanActivate
56
- *
57
- * @example
58
- * ```typescript
59
- * @Injectable()
60
- * export class MyTools {
61
- * @Tool({ name: 'admin-action', description: 'Admin only' })
62
- * @ToolGuards([AdminGuard])
63
- * async adminAction() {
64
- * return { content: [{ type: 'text', text: 'Done' }] };
65
- * }
66
- *
67
- * @Tool({ name: 'secure-action', description: 'Requires both guards' })
68
- * @ToolGuards([AuthGuard, RoleGuard])
69
- * async secureAction() {
70
- * return { content: [{ type: 'text', text: 'Done' }] };
71
- * }
72
- * }
73
- * ```
74
- */
75
- export const ToolGuards = (guards: Type<CanActivate>[]) => {
76
- if (!Array.isArray(guards) || guards.length === 0) {
77
- throw new Error(
78
- '@ToolGuards() requires a non-empty array of guard classes',
79
- );
80
- }
81
- return SetMetadata(MCP_GUARDS_METADATA_KEY, guards);
82
- };
@@ -1,95 +0,0 @@
1
- import { Icon, ServerCapabilities } from '@modelcontextprotocol/sdk/types.js';
2
- import { CanActivate, ModuleMetadata, Type } from '@nestjs/common';
3
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
-
5
- export type { Icon };
6
-
7
- export enum McpTransportType {
8
- SSE = 'sse',
9
- STREAMABLE_HTTP = 'streamable-http',
10
- STDIO = 'stdio',
11
- }
12
-
13
- export interface McpOptions {
14
- // When and if, additional properties are introduced in ServerOptions or ServerInfo,
15
- // consider deprecating these fields in favor of using ServerOptions and ServerInfo directly.
16
- name: string;
17
- /** Human-readable display name for the server (passed to MCP Implementation). */
18
- title?: string;
19
- version: string;
20
- /** Short description of what this MCP server does. */
21
- description?: string;
22
- /** URL of the website associated with this server. */
23
- websiteUrl?: string;
24
- /** Icons representing this server. Use `Icon` exported from `@rekog/mcp-nest`. */
25
- icons?: Icon[];
26
- capabilities?: ServerCapabilities;
27
- instructions?: string;
28
-
29
- transport?: McpTransportType | McpTransportType[];
30
- serverMutator?: (server: McpServer) => McpServer;
31
- sseEndpoint?: string;
32
- messagesEndpoint?: string;
33
- mcpEndpoint?: string;
34
- /**
35
- * @deprecated Use `app.setGlobalPrefix()` for global api prefix. Use apiPrefix to attach a prefix to the handshake.
36
- */
37
- globalApiPrefix?: never;
38
- apiPrefix?: string;
39
- guards?: Type<CanActivate>[];
40
- /**
41
- * Allow unauthenticated sessions to connect and access @PublicTool() tools.
42
- *
43
- * When true (freemium mode):
44
- * - Unauthenticated requests are allowed through guards
45
- * - Can access tools marked with @PublicTool()
46
- * - Must authenticate to access protected tools (based on scopes/roles)
47
- *
48
- * When false or undefined (standard OAuth flow - default):
49
- * - Unauthenticated requests receive 401 response
50
- * - Triggers MCP OAuth authorization flow
51
- * - All tools require authentication
52
- *
53
- * @default false
54
- */
55
- allowUnauthenticatedAccess?: boolean;
56
- decorators?: ClassDecorator[];
57
- sse?: {
58
- pingEnabled?: boolean;
59
- pingIntervalMs?: number;
60
- };
61
- streamableHttp?: {
62
- enableJsonResponse?: boolean;
63
- sessionIdGenerator?: () => string;
64
- /**
65
- * @experimental: The current implementation does not fully comply with the MCP Specification.
66
- */
67
- statelessMode?: boolean;
68
- };
69
- /**
70
- * Configure logging for the MCP module.
71
- * - `false` to disable all MCP logging
72
- * - `{ level: LogLevel[] }` to specify which log levels to show
73
- * - `undefined` (default) to use standard NestJS logging
74
- */
75
- logging?:
76
- | false
77
- | {
78
- level: ('log' | 'error' | 'warn' | 'debug' | 'verbose')[];
79
- };
80
- }
81
-
82
- // Async variant omits transport since controllers are not auto-registered in forRootAsync
83
- export type McpAsyncOptions = Omit<McpOptions, 'transport'>;
84
-
85
- export interface McpOptionsFactory {
86
- createMcpOptions(): Promise<McpAsyncOptions> | McpAsyncOptions;
87
- }
88
-
89
- export interface McpModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
90
- useExisting?: Type<McpOptionsFactory>;
91
- useClass?: Type<McpOptionsFactory>;
92
- useFactory?: (...args: any[]) => Promise<McpAsyncOptions> | McpAsyncOptions;
93
- inject?: any[];
94
- extraProviders?: any[]; // allow user to provide additional providers in async mode
95
- }
@@ -1,349 +0,0 @@
1
- import {
2
- DynamicModule,
3
- InjectionToken,
4
- Module,
5
- Provider,
6
- Type,
7
- } from '@nestjs/common';
8
- import { DiscoveryModule } from '@nestjs/core';
9
- import { McpTransportType } from './interfaces';
10
- import type {
11
- McpOptions,
12
- McpModuleAsyncOptions,
13
- McpOptionsFactory,
14
- McpAsyncOptions,
15
- } from './interfaces';
16
- import { McpExecutorService } from './services/mcp-executor.service';
17
- import { McpRegistryDiscoveryService } from './services/mcp-registry-discovery.service';
18
- import { McpSseService } from './services/mcp-sse.service';
19
- import { McpStreamableHttpService } from './services/mcp-streamable-http.service';
20
- import { SsePingService } from './services/sse-ping.service';
21
- import { ToolAuthorizationService } from './services/tool-authorization.service';
22
- import { McpRegistryService } from './services/mcp-dynamic-registry.service';
23
- import { createSseController } from './transport/sse.controller.factory';
24
- import { StdioService } from './transport/stdio.service';
25
- import { createStreamableHttpController } from './transport/streamable-http.controller.factory';
26
- import { normalizeEndpoint } from './utils/normalize-endpoint';
27
- import {
28
- MCP_FEATURE_REGISTRATION,
29
- McpFeatureRegistration,
30
- } from './constants/feature-registration.constants';
31
-
32
- let instanceIdCounter = 0;
33
- let featureIdCounter = 0;
34
-
35
- /**
36
- * Lightweight module class used by McpModule.forFeature().
37
- * This is separate from McpModule to avoid circular dependency issues.
38
- */
39
- @Module({})
40
- export class McpFeatureModule {}
41
-
42
- @Module({
43
- imports: [DiscoveryModule],
44
- providers: [
45
- McpRegistryDiscoveryService,
46
- McpExecutorService,
47
- ToolAuthorizationService,
48
- ],
49
- })
50
- export class McpModule {
51
- /**
52
- * To avoid import circular dependency issues, we use a marker property.
53
- */
54
- readonly __isMcpModule = true;
55
-
56
- /**
57
- * Registers tool providers to be associated with a specific MCP server.
58
- *
59
- * Use this method to organize tools into separate feature modules while
60
- * associating them with a specific MCP server created by forRoot().
61
- *
62
- * @param providers - Array of provider classes that contain @Tool, @Resource, @ResourceTemplate, or @Prompt decorated methods
63
- * @param serverName - The name of the MCP server (as specified in forRoot options) to register these tools with
64
- * @returns A DynamicModule that can be imported into any module
65
- *
66
- * @example
67
- * ```typescript
68
- * // In feature.module.ts
69
- * @Module({
70
- * imports: [McpModule.forFeature([UserTools, OrderTools], 'my-server')],
71
- * providers: [UserTools, OrderTools, UserService, OrderService],
72
- * exports: [UserTools, OrderTools],
73
- * })
74
- * export class FeatureModule {}
75
- *
76
- * // In app.module.ts
77
- * @Module({
78
- * imports: [
79
- * McpModule.forRoot({ name: 'my-server', version: '1.0.0' }),
80
- * FeatureModule,
81
- * ],
82
- * })
83
- * export class AppModule {}
84
- * ```
85
- */
86
- static forFeature(
87
- providers: InjectionToken[],
88
- serverName: string,
89
- ): DynamicModule {
90
- const registration: McpFeatureRegistration = {
91
- serverName,
92
- providerTokens: providers,
93
- };
94
-
95
- // Use a unique token for each forFeature call to allow multiple registrations
96
- const registrationToken = `${MCP_FEATURE_REGISTRATION}_${featureIdCounter++}`;
97
-
98
- return {
99
- module: McpFeatureModule,
100
- providers: [
101
- {
102
- provide: registrationToken,
103
- useValue: registration,
104
- },
105
- ],
106
- exports: [registrationToken],
107
- global: true, // Make it global so the registration can be discovered from any module
108
- };
109
- }
110
-
111
- static forRoot(options: McpOptions): DynamicModule {
112
- const defaultOptions: Partial<McpOptions> = {
113
- transport: [
114
- McpTransportType.SSE,
115
- McpTransportType.STREAMABLE_HTTP,
116
- McpTransportType.STDIO,
117
- ],
118
- sseEndpoint: 'sse',
119
- messagesEndpoint: 'messages',
120
- mcpEndpoint: 'mcp',
121
- guards: [],
122
- decorators: [],
123
- streamableHttp: {
124
- enableJsonResponse: true,
125
- sessionIdGenerator: undefined,
126
- statelessMode: true,
127
- },
128
- sse: {
129
- pingEnabled: true,
130
- pingIntervalMs: 30000,
131
- },
132
- };
133
- const mergedOptions = { ...defaultOptions, ...options } as McpOptions;
134
- mergedOptions.sseEndpoint = normalizeEndpoint(mergedOptions.sseEndpoint);
135
- mergedOptions.messagesEndpoint = normalizeEndpoint(
136
- mergedOptions.messagesEndpoint,
137
- );
138
- mergedOptions.mcpEndpoint = normalizeEndpoint(mergedOptions.mcpEndpoint);
139
-
140
- const moduleId = `mcp-module-${instanceIdCounter++}`;
141
- const providers = this.createProvidersFromOptions(mergedOptions, moduleId);
142
- const controllers = this.createControllersFromOptions(mergedOptions);
143
- return {
144
- module: McpModule,
145
- controllers,
146
- providers,
147
- exports: [
148
- McpRegistryDiscoveryService,
149
- McpSseService,
150
- McpStreamableHttpService,
151
- McpRegistryService,
152
- ],
153
- };
154
- }
155
-
156
- /**
157
- * Asynchronous variant of forRoot. Controllers are NOT auto-registered here because
158
- * they must be declared synchronously at module definition time. This keeps the
159
- * API explicit: when using forRootAsync, you are responsible for creating and
160
- * registering any transport controllers (e.g. via createSseController / createStreamableHttpController).
161
- *
162
- * The exposed async options intentionally omit the `transport` property. Transport
163
- * selection only influences automatic controller creation (which does not occur here)
164
- * and STDIO auto-start. If you need STDIO with forRootAsync, manually instantiate
165
- * and bootstrap it (e.g. by importing a module that injects StdioService) or add
166
- * an explicit provider that sets options.transport before use.
167
- */
168
- static forRootAsync(options: McpModuleAsyncOptions): DynamicModule {
169
- const moduleId = `mcp-module-${instanceIdCounter++}`;
170
- const asyncProviders = this.createAsyncProviders(options);
171
- const baseProviders: Provider[] = [
172
- {
173
- provide: 'MCP_MODULE_ID',
174
- useValue: moduleId,
175
- },
176
- McpRegistryDiscoveryService,
177
- McpExecutorService,
178
- ToolAuthorizationService,
179
- SsePingService,
180
- McpSseService,
181
- McpStreamableHttpService,
182
- McpRegistryService,
183
- StdioService,
184
- ];
185
-
186
- return {
187
- module: McpModule,
188
- imports: options.imports ?? [],
189
- // No automatic controllers in async mode
190
- controllers: [],
191
- providers: [
192
- ...asyncProviders,
193
- ...baseProviders,
194
- ...(options.extraProviders ?? []),
195
- ],
196
- exports: [
197
- McpRegistryDiscoveryService,
198
- McpSseService,
199
- McpStreamableHttpService,
200
- McpRegistryService,
201
- ],
202
- };
203
- }
204
-
205
- private static createAsyncProviders(
206
- options: McpModuleAsyncOptions,
207
- ): Provider[] {
208
- if (options.useFactory) {
209
- return [
210
- {
211
- provide: 'MCP_OPTIONS',
212
- useFactory: async (...args: unknown[]) => {
213
- const resolved: McpAsyncOptions = await options.useFactory!(
214
- ...args,
215
- );
216
- return this.mergeAndNormalizeAsyncOptions(resolved);
217
- },
218
- inject: options.inject ?? [],
219
- },
220
- ];
221
- }
222
-
223
- // useClass / useExisting path
224
- const inject: any[] = [];
225
- let optionsFactoryProvider: Provider | undefined;
226
-
227
- if (options.useExisting || options.useClass) {
228
- const useExisting = options.useExisting || options.useClass!;
229
- inject.push(useExisting);
230
- if (options.useClass) {
231
- optionsFactoryProvider = {
232
- provide: options.useClass,
233
- useClass: options.useClass,
234
- } as Provider;
235
- }
236
-
237
- return [
238
- ...(optionsFactoryProvider ? [optionsFactoryProvider] : []),
239
- {
240
- provide: 'MCP_OPTIONS',
241
- useFactory: async (factory: McpOptionsFactory) => {
242
- const resolved = await factory.createMcpOptions();
243
- return this.mergeAndNormalizeAsyncOptions(resolved);
244
- },
245
- inject,
246
- },
247
- ];
248
- }
249
-
250
- throw new Error('Invalid McpModuleAsyncOptions configuration.');
251
- }
252
-
253
- private static mergeAndNormalizeAsyncOptions(
254
- resolved: McpAsyncOptions,
255
- ): McpOptions {
256
- const defaultOptions: Partial<McpOptions> = {
257
- sseEndpoint: 'sse',
258
- messagesEndpoint: 'messages',
259
- mcpEndpoint: 'mcp',
260
- guards: [],
261
- decorators: [],
262
- streamableHttp: {
263
- enableJsonResponse: true,
264
- sessionIdGenerator: undefined,
265
- statelessMode: true,
266
- },
267
- sse: {
268
- pingEnabled: true,
269
- pingIntervalMs: 30000,
270
- },
271
- };
272
- // Note: transport intentionally omitted
273
- const merged = { ...defaultOptions, ...resolved } as McpOptions;
274
- merged.sseEndpoint = normalizeEndpoint(merged.sseEndpoint);
275
- merged.messagesEndpoint = normalizeEndpoint(merged.messagesEndpoint);
276
- merged.mcpEndpoint = normalizeEndpoint(merged.mcpEndpoint);
277
- return merged;
278
- }
279
-
280
- private static createControllersFromOptions(
281
- options: McpOptions,
282
- ): Type<any>[] {
283
- const sseEndpoint = options.sseEndpoint ?? 'sse';
284
- const messagesEndpoint = options.messagesEndpoint ?? 'messages';
285
- const mcpEndpoint = options.mcpEndpoint ?? 'mcp';
286
- const guards = options.guards ?? [];
287
- const transports = Array.isArray(options.transport)
288
- ? options.transport
289
- : [options.transport ?? McpTransportType.SSE];
290
- const controllers: Type<any>[] = [];
291
- const decorators = options.decorators ?? [];
292
- const apiPrefix = options.apiPrefix ?? '';
293
-
294
- if (transports.includes(McpTransportType.SSE)) {
295
- const sseController = createSseController(
296
- sseEndpoint,
297
- messagesEndpoint,
298
- apiPrefix,
299
- guards,
300
- decorators,
301
- options,
302
- );
303
- controllers.push(sseController);
304
- }
305
-
306
- if (transports.includes(McpTransportType.STREAMABLE_HTTP)) {
307
- const streamableHttpController = createStreamableHttpController(
308
- mcpEndpoint,
309
- apiPrefix,
310
- guards,
311
- decorators,
312
- options,
313
- );
314
- controllers.push(streamableHttpController);
315
- }
316
-
317
- if (transports.includes(McpTransportType.STDIO)) {
318
- // STDIO transport is handled by injectable StdioService, no controller
319
- }
320
-
321
- return controllers;
322
- }
323
-
324
- private static createProvidersFromOptions(
325
- options: McpOptions,
326
- moduleId: string,
327
- ): Provider[] {
328
- const providers: Provider[] = [
329
- {
330
- provide: 'MCP_OPTIONS',
331
- useValue: options,
332
- },
333
- {
334
- provide: 'MCP_MODULE_ID',
335
- useValue: moduleId,
336
- },
337
- McpRegistryDiscoveryService,
338
- McpExecutorService,
339
- ToolAuthorizationService,
340
- SsePingService,
341
- McpSseService,
342
- McpStreamableHttpService,
343
- McpRegistryService,
344
- StdioService,
345
- ];
346
-
347
- return providers;
348
- }
349
- }