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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +1 -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 +6 -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,144 +0,0 @@
1
- import {
2
- Injectable,
3
- OnModuleInit,
4
- OnModuleDestroy,
5
- Logger,
6
- Inject,
7
- Optional,
8
- } from '@nestjs/common';
9
- import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
10
- import { HttpResponse } from '../interfaces/http-adapter.interface';
11
- import type { McpOptions } from '../interfaces';
12
- import { createMcpLogger } from '../utils/mcp-logger.factory';
13
-
14
- /**
15
- * Service that implements automatic ping for SSE connections
16
- * This prevents browser/client timeouts for long-lived connections
17
- */
18
- @Injectable()
19
- export class SsePingService implements OnModuleInit, OnModuleDestroy {
20
- private pingInterval: NodeJS.Timeout | null = null;
21
- private readonly logger: Logger;
22
- private readonly activeConnections = new Map<
23
- string,
24
- {
25
- transport: SSEServerTransport;
26
- res: HttpResponse;
27
- }
28
- >();
29
-
30
- // Default to 30 seconds - this is a reasonable interval for most clients
31
- private pingIntervalMs = 30000;
32
-
33
- constructor(@Optional() @Inject('MCP_OPTIONS') options?: McpOptions) {
34
- this.logger = createMcpLogger(SsePingService.name, options);
35
- }
36
-
37
- onModuleInit() {
38
- this.logger.log('Initializing SSE ping service');
39
- }
40
-
41
- onModuleDestroy() {
42
- this.stopPingInterval();
43
- this.logger.log('SSE ping service stopped');
44
- }
45
-
46
- /**
47
- * Configure the ping service
48
- */
49
- configure(options: { pingEnabled?: boolean; pingIntervalMs?: number }) {
50
- if (options.pingIntervalMs !== undefined) {
51
- this.pingIntervalMs = options.pingIntervalMs;
52
- }
53
-
54
- if (options.pingEnabled !== false) {
55
- this.startPingInterval();
56
- } else {
57
- this.stopPingInterval();
58
- }
59
- }
60
-
61
- /**
62
- * Register a new SSE connection to receive pings
63
- */
64
- registerConnection(
65
- sessionId: string,
66
- transport: SSEServerTransport,
67
- res: HttpResponse,
68
- ) {
69
- this.activeConnections.set(sessionId, { transport, res });
70
- this.logger.debug(`SSE connection registered: ${sessionId}`);
71
- }
72
-
73
- /**
74
- * Remove an SSE connection
75
- */
76
- removeConnection(sessionId: string) {
77
- this.activeConnections.delete(sessionId);
78
- this.logger.debug(`SSE connection removed: ${sessionId}`);
79
- }
80
-
81
- /**
82
- * Start the ping interval timer
83
- */
84
- private startPingInterval() {
85
- if (this.pingInterval) {
86
- this.stopPingInterval();
87
- }
88
-
89
- this.logger.log(
90
- `Starting SSE ping service (interval: ${this.pingIntervalMs}ms)`,
91
- );
92
- this.pingInterval = setInterval(() => {
93
- this.sendPingToAllConnections();
94
- }, this.pingIntervalMs);
95
- }
96
-
97
- /**
98
- * Stop the ping interval timer
99
- */
100
- private stopPingInterval() {
101
- if (this.pingInterval) {
102
- clearInterval(this.pingInterval);
103
- this.pingInterval = null;
104
- this.logger.log('SSE ping interval stopped');
105
- }
106
- }
107
-
108
- /**
109
- * Send a ping to all active connections
110
- */
111
- private sendPingToAllConnections() {
112
- const timestamp = Date.now();
113
- const connectionCount = this.activeConnections.size;
114
-
115
- if (connectionCount === 0) {
116
- return;
117
- }
118
-
119
- this.logger.debug(`Sending SSE ping to ${connectionCount} connections`);
120
-
121
- for (const [sessionId, { res }] of this.activeConnections.entries()) {
122
- try {
123
- // Send a comment-type SSE message (line starting with ':')
124
- // This keeps the connection alive without triggering an event in the client
125
- if (!res.closed && res.writable) {
126
- res.write(`: ping - ${new Date(timestamp).toISOString()}\n\n`);
127
- } else {
128
- this.logger.debug(
129
- `Connection ${sessionId} is no longer writable, removing`,
130
- );
131
- // TODO: After non writable connections are discovered it'd be useful to cleanup transports/mcp servers
132
- // for that connection in sse.controller.factory.ts
133
- this.removeConnection(sessionId);
134
- }
135
- } catch (error) {
136
- this.logger.error(
137
- `Error sending ping to connection ${sessionId}`,
138
- error,
139
- );
140
- this.removeConnection(sessionId);
141
- }
142
- }
143
- }
144
- }
@@ -1,75 +0,0 @@
1
- import { SetMetadata } from '@nestjs/common';
2
- import { createSseController } from './sse.controller.factory';
3
- import { createStreamableHttpController } from './streamable-http.controller.factory';
4
-
5
- describe('Custom Decorators', () => {
6
- // Custom decorator for testing
7
- const testCustomDecorator = SetMetadata('test:decorator', true);
8
-
9
- describe('SSE Controller Factory', () => {
10
- it('should apply custom decorators to the SSE controller', () => {
11
- // Arrange
12
- const decorators = [testCustomDecorator];
13
-
14
- // Act
15
- const sseController = createSseController(
16
- 'test-sse-endpoint',
17
- 'test-messages-endpoint',
18
- '/api',
19
- [],
20
- decorators,
21
- );
22
-
23
- // Assert
24
- expect(sseController).toBeDefined();
25
- expect(Reflect.getMetadata('test:decorator', sseController)).toBeTruthy();
26
- });
27
-
28
- it('should work without custom decorators', () => {
29
- // Act
30
- const sseController = createSseController(
31
- 'test-sse-endpoint',
32
- 'test-messages-endpoint',
33
- '/api',
34
- );
35
-
36
- // Assert
37
- expect(sseController).toBeDefined();
38
- expect(
39
- Reflect.getMetadata('test:decorator', sseController),
40
- ).toBeUndefined();
41
- });
42
- });
43
-
44
- describe('Streamable HTTP Controller Factory', () => {
45
- it('should apply custom decorators to the Streamable HTTP controller', () => {
46
- // Arrange
47
- const decorators = [testCustomDecorator];
48
-
49
- // Act
50
- const streamableController = createStreamableHttpController(
51
- 'test-http-endpoint',
52
- '/api',
53
- [],
54
- decorators,
55
- );
56
-
57
- // Assert
58
- expect(streamableController).toBeDefined();
59
- expect(
60
- Reflect.getMetadata('test:decorator', streamableController),
61
- ).toBeTruthy();
62
- });
63
-
64
- it('should work without custom decorators', () => {
65
- // Act
66
- const StreamableController = createStreamableHttpController(
67
- 'test-http-endpoint',
68
- '/api',
69
- );
70
-
71
- // Assert
72
- expect(StreamableController).toBeDefined();
73
- });
74
- });
75
- });
@@ -1,84 +0,0 @@
1
- import {
2
- Body,
3
- CanActivate,
4
- Controller,
5
- Get,
6
- Inject,
7
- Logger,
8
- OnModuleInit,
9
- Post,
10
- Req,
11
- Res,
12
- Type,
13
- UseGuards,
14
- VERSION_NEUTRAL,
15
- applyDecorators,
16
- } from '@nestjs/common';
17
-
18
- import type { McpOptions } from '../interfaces';
19
- import { McpSseService } from '../services/mcp-sse.service';
20
- import { normalizeEndpoint } from '../utils/normalize-endpoint';
21
- import { createMcpLogger } from '../utils/mcp-logger.factory';
22
-
23
- /**
24
- * Creates a controller for handling SSE connections and tool executions
25
- */
26
- export function createSseController(
27
- sseEndpoint: string,
28
- messagesEndpoint: string,
29
- apiPrefix: string,
30
- guards: Type<CanActivate>[] = [],
31
- decorators: ClassDecorator[] = [],
32
- options?: McpOptions,
33
- ) {
34
- @Controller({
35
- version: VERSION_NEUTRAL,
36
- })
37
- @applyDecorators(...decorators)
38
- class SseController implements OnModuleInit {
39
- readonly logger: Logger;
40
-
41
- constructor(
42
- @Inject('MCP_OPTIONS') public readonly mcpOptions: McpOptions,
43
- public readonly mcpSseService: McpSseService,
44
- ) {
45
- this.logger = createMcpLogger(SseController.name, options || mcpOptions);
46
- }
47
-
48
- /**
49
- * Initialize the controller and configure SSE service
50
- */
51
- onModuleInit() {
52
- this.mcpSseService.initialize();
53
- }
54
-
55
- /**
56
- * SSE connection endpoint
57
- */
58
- @Get(normalizeEndpoint(`${apiPrefix}/${sseEndpoint}`))
59
- @UseGuards(...guards)
60
- async sse(@Req() rawReq: any, @Res() rawRes: any) {
61
- return this.mcpSseService.createSseConnection(
62
- rawReq,
63
- rawRes,
64
- messagesEndpoint,
65
- apiPrefix,
66
- );
67
- }
68
-
69
- /**
70
- * Tool execution endpoint - protected by the provided guards
71
- */
72
- @Post(normalizeEndpoint(`${apiPrefix}/${messagesEndpoint}`))
73
- @UseGuards(...guards)
74
- async messages(
75
- @Req() rawReq: any,
76
- @Res() rawRes: any,
77
- @Body() body: unknown,
78
- ): Promise<void> {
79
- await this.mcpSseService.handleMessage(rawReq, rawRes, body);
80
- }
81
- }
82
-
83
- return SseController;
84
- }
@@ -1,75 +0,0 @@
1
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
2
- import {
3
- Inject,
4
- Injectable,
5
- Logger,
6
- OnApplicationBootstrap,
7
- } from '@nestjs/common';
8
- import { ContextIdFactory, ModuleRef } from '@nestjs/core';
9
- import { McpTransportType } from '../interfaces';
10
- import type { McpOptions } from '../interfaces';
11
- import { McpExecutorService } from '../services/mcp-executor.service';
12
- import { McpRegistryDiscoveryService } from '../services/mcp-registry-discovery.service';
13
- import { createMcpLogger } from '../utils/mcp-logger.factory';
14
- import { createMcpServer } from '../utils/mcp-server.factory';
15
-
16
- @Injectable()
17
- export class StdioService implements OnApplicationBootstrap {
18
- private readonly logger: Logger;
19
-
20
- constructor(
21
- @Inject('MCP_OPTIONS') private readonly options: McpOptions,
22
- @Inject('MCP_MODULE_ID') private readonly mcpModuleId: string,
23
- private readonly moduleRef: ModuleRef,
24
- private readonly toolRegistry: McpRegistryDiscoveryService,
25
- ) {
26
- this.logger = createMcpLogger(StdioService.name, this.options);
27
- }
28
-
29
- async onApplicationBootstrap() {
30
- const transports = Array.isArray(this.options.transport)
31
- ? this.options.transport
32
- : [this.options.transport];
33
- if (!transports.includes(McpTransportType.STDIO)) return;
34
-
35
- this.logger.log('Bootstrapping MCP STDIO...');
36
-
37
- // Warn about tools with @ToolGuards() - they require HTTP context
38
- const toolsWithGuards = this.toolRegistry
39
- .getTools(this.mcpModuleId)
40
- .filter(
41
- (tool) => tool.metadata.guards && tool.metadata.guards.length > 0,
42
- );
43
-
44
- if (toolsWithGuards.length > 0) {
45
- const toolNames = toolsWithGuards.map((t) => t.metadata.name).join(', ');
46
- this.logger.warn(
47
- `@ToolGuards() are not supported with STDIO transport. ` +
48
- `The following tools have guards configured and will be hidden: ${toolNames}. ` +
49
- `Consider using HTTP transport.`,
50
- );
51
- }
52
-
53
- const mcpServer = createMcpServer(
54
- this.mcpModuleId,
55
- this.toolRegistry,
56
- this.options,
57
- this.logger,
58
- );
59
-
60
- const contextId = ContextIdFactory.create();
61
- const executor = await this.moduleRef.resolve(
62
- McpExecutorService,
63
- contextId,
64
- { strict: false },
65
- );
66
-
67
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
68
- executor.registerRequestHandlers(mcpServer, {} as any);
69
-
70
- const transport = new StdioServerTransport();
71
- await mcpServer.connect(transport);
72
-
73
- this.logger.log('MCP STDIO ready');
74
- }
75
- }
@@ -1,80 +0,0 @@
1
- import {
2
- Body,
3
- CanActivate,
4
- Controller,
5
- Delete,
6
- Get,
7
- Inject,
8
- Logger,
9
- Post,
10
- Req,
11
- Res,
12
- Type,
13
- UseGuards,
14
- applyDecorators,
15
- } from '@nestjs/common';
16
-
17
- import type { McpOptions } from '../interfaces';
18
- import { McpStreamableHttpService } from '../services/mcp-streamable-http.service';
19
- import { normalizeEndpoint } from '../utils/normalize-endpoint';
20
- import { createMcpLogger } from '../utils/mcp-logger.factory';
21
-
22
- /**
23
- * Creates a controller for handling Streamable HTTP connections and tool executions
24
- */
25
- export function createStreamableHttpController(
26
- endpoint: string,
27
- apiPrefix: string,
28
- guards: Type<CanActivate>[] = [],
29
- decorators: ClassDecorator[] = [],
30
- options?: McpOptions,
31
- ) {
32
- @Controller()
33
- @applyDecorators(...decorators)
34
- class StreamableHttpController {
35
- public readonly logger: Logger;
36
-
37
- constructor(
38
- @Inject('MCP_OPTIONS') public readonly mcpOptions: McpOptions,
39
- public readonly mcpStreamableHttpService: McpStreamableHttpService,
40
- ) {
41
- this.logger = createMcpLogger(
42
- StreamableHttpController.name,
43
- options || mcpOptions,
44
- );
45
- }
46
-
47
- /**
48
- * Main HTTP endpoint for both initialization and subsequent requests
49
- */
50
- @Post(`${normalizeEndpoint(`${apiPrefix}/${endpoint}`)}`)
51
- @UseGuards(...guards)
52
- async handlePostRequest(
53
- @Req() req: any,
54
- @Res() res: any,
55
- @Body() body: unknown,
56
- ): Promise<void> {
57
- await this.mcpStreamableHttpService.handlePostRequest(req, res, body);
58
- }
59
-
60
- /**
61
- * GET endpoint for SSE streams - not supported in stateless mode
62
- */
63
- @Get(`${normalizeEndpoint(`${apiPrefix}/${endpoint}`)}`)
64
- @UseGuards(...guards)
65
- async handleGetRequest(@Req() req: any, @Res() res: any): Promise<void> {
66
- await this.mcpStreamableHttpService.handleGetRequest(req, res);
67
- }
68
-
69
- /**
70
- * DELETE endpoint for terminating sessions - not supported in stateless mode
71
- */
72
- @Delete(`${normalizeEndpoint(`${apiPrefix}/${endpoint}`)}`)
73
- @UseGuards(...guards)
74
- async handleDeleteRequest(@Req() req: any, @Res() res: any): Promise<void> {
75
- await this.mcpStreamableHttpService.handleDeleteRequest(req, res);
76
- }
77
- }
78
-
79
- return StreamableHttpController;
80
- }
@@ -1,43 +0,0 @@
1
- import { ServerCapabilities } from '@modelcontextprotocol/sdk/types.js';
2
- import { McpRegistryDiscoveryService } from '../services/mcp-registry-discovery.service';
3
- import type { McpOptions } from '../interfaces';
4
-
5
- /**
6
- * Utility function to build MCP server capabilities dynamically based on
7
- * discovered tools, resources, and prompts
8
- */
9
- export function buildMcpCapabilities(
10
- mcpModuleId: string,
11
- registry: McpRegistryDiscoveryService,
12
- options: McpOptions,
13
- ): ServerCapabilities {
14
- // Start with user-provided capabilities or empty object
15
- const baseCapabilities = options.capabilities || {};
16
-
17
- const capabilities: ServerCapabilities = { ...baseCapabilities };
18
-
19
- // Add tools capability if tools are discovered
20
- if (registry.getTools(mcpModuleId).length > 0) {
21
- capabilities.tools = capabilities.tools || {
22
- listChanged: true,
23
- };
24
- }
25
-
26
- if (
27
- registry.getResources(mcpModuleId).length > 0 ||
28
- registry.getResourceTemplates(mcpModuleId).length > 0
29
- ) {
30
- capabilities.resources = capabilities.resources || {
31
- listChanged: true,
32
- };
33
- }
34
-
35
- // Add prompts capability if prompts are discovered
36
- if (registry.getPrompts(mcpModuleId).length > 0) {
37
- capabilities.prompts = capabilities.prompts || {
38
- listChanged: true,
39
- };
40
- }
41
-
42
- return capabilities;
43
- }
@@ -1,33 +0,0 @@
1
- import { McpOptions } from '../interfaces';
2
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
- import { buildMcpCapabilities } from './capabilities-builder';
4
- import { McpRegistryDiscoveryService } from '../services/mcp-registry-discovery.service';
5
- import { Logger } from '@nestjs/common';
6
-
7
- export function createMcpServer(
8
- mcpModuleId: string,
9
- registry: McpRegistryDiscoveryService,
10
- options: McpOptions,
11
- logger: Logger,
12
- ): McpServer {
13
- const capabilities = buildMcpCapabilities(mcpModuleId, registry, options);
14
-
15
- logger.debug(`Built MCP capabilities: ${JSON.stringify(capabilities)}`);
16
-
17
- const mcpServer = new McpServer(
18
- {
19
- name: options.name,
20
- version: options.version,
21
- ...(options.title && { title: options.title }),
22
- ...(options.description && { description: options.description }),
23
- ...(options.websiteUrl && { websiteUrl: options.websiteUrl }),
24
- ...(options.icons && { icons: options.icons }),
25
- },
26
- {
27
- capabilities,
28
- instructions: options.instructions || '',
29
- },
30
- );
31
-
32
- return options.serverMutator ? options.serverMutator(mcpServer) : mcpServer;
33
- }