@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,203 +0,0 @@
1
- import { ExceptionFilter, Logger, Type } from '@nestjs/common';
2
- import { ModuleRef, Reflector } from '@nestjs/core';
3
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
- import {
5
- CallToolResult,
6
- McpError,
7
- Progress,
8
- ErrorCode,
9
- } from '@modelcontextprotocol/sdk/types.js';
10
- import {
11
- Context,
12
- McpRequest,
13
- SerializableValue,
14
- HttpRequest,
15
- } from '../../interfaces';
16
- import { McpOptions } from '../../interfaces/mcp-options.interface';
17
- import {
18
- DiscoveredCapability,
19
- McpRegistryDiscoveryService,
20
- } from '../mcp-registry-discovery.service';
21
- import { createMcpLogger } from '../../utils/mcp-logger.factory';
22
- import {
23
- EXCEPTION_FILTERS_METADATA,
24
- FILTER_CATCH_EXCEPTIONS,
25
- } from '@nestjs/common/constants';
26
- import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host';
27
-
28
- export abstract class McpHandlerBase {
29
- protected logger: Logger;
30
-
31
- protected constructor(
32
- protected readonly moduleRef: ModuleRef,
33
- protected readonly registry: McpRegistryDiscoveryService,
34
- private readonly reflector: Reflector,
35
- loggerContext: string,
36
- options?: McpOptions,
37
- ) {
38
- this.logger = createMcpLogger(loggerContext, options);
39
- }
40
-
41
- protected createContext(
42
- mcpServer: McpServer,
43
- mcpRequest: McpRequest,
44
- ): Context {
45
- // handless stateless traffic where notifications and progress are not supported
46
- if ((mcpServer.server.transport as any).sessionId === undefined) {
47
- return this.createStatelessContext(mcpServer, mcpRequest);
48
- }
49
-
50
- const progressToken = mcpRequest.params?._meta?.progressToken;
51
- return {
52
- reportProgress: async (progress: Progress) => {
53
- if (progressToken) {
54
- await mcpServer.server.notification({
55
- method: 'notifications/progress',
56
- params: {
57
- ...progress,
58
- progressToken,
59
- } as Progress,
60
- });
61
- }
62
- },
63
- log: {
64
- debug: (message: string, context?: SerializableValue) => {
65
- void mcpServer.server.sendLoggingMessage({
66
- level: 'debug',
67
- data: { message, context },
68
- });
69
- },
70
- error: (message: string, context?: SerializableValue) => {
71
- void mcpServer.server.sendLoggingMessage({
72
- level: 'error',
73
- data: { message, context },
74
- });
75
- },
76
- info: (message: string, context?: SerializableValue) => {
77
- void mcpServer.server.sendLoggingMessage({
78
- level: 'info',
79
- data: { message, context },
80
- });
81
- },
82
- warn: (message: string, context?: SerializableValue) => {
83
- void mcpServer.server.sendLoggingMessage({
84
- level: 'warning',
85
- data: { message, context },
86
- });
87
- },
88
- },
89
- mcpServer,
90
- mcpRequest,
91
- };
92
- }
93
-
94
- protected createStatelessContext(
95
- mcpServer: McpServer,
96
- mcpRequest: McpRequest,
97
- ): Context {
98
- const warn = (fn: string) => {
99
- this.logger.warn(`Stateless context: '${fn}' is not supported.`);
100
- };
101
- return {
102
- // eslint-disable-next-line @typescript-eslint/require-await,@typescript-eslint/no-unused-vars
103
- reportProgress: async (_progress: Progress) => {
104
- warn('reportProgress not supported in stateless');
105
- },
106
- log: {
107
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
108
- debug: (_message: string, _data?: SerializableValue) => {
109
- warn('server report logging not supported in stateless');
110
- },
111
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
112
- error: (_message: string, _data?: SerializableValue) => {
113
- warn('server report logging not supported in stateless');
114
- },
115
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
116
- info: (_message: string, _data?: SerializableValue) => {
117
- warn('server report logging not supported in stateless');
118
- },
119
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
120
- warn: (_message: string, _data?: SerializableValue) => {
121
- warn('server report logging not supported in stateless');
122
- },
123
- },
124
- mcpServer,
125
- mcpRequest,
126
- };
127
- }
128
-
129
- protected createErrorResponse(errorText: string): CallToolResult | never {
130
- throw new McpError(ErrorCode.InternalError, errorText);
131
- }
132
-
133
- protected handleError(
134
- error: Error,
135
- capabilityInfo: DiscoveredCapability<object>,
136
- httpRequest: HttpRequest,
137
- ) {
138
- this.logger.error(error);
139
-
140
- // Re-throw McpErrors (like validation errors) so they are handled by the MCP protocol layer
141
- if (error instanceof McpError) {
142
- throw error;
143
- }
144
-
145
- const clazz = capabilityInfo.providerClass as new () => unknown;
146
- const method = clazz.prototype[capabilityInfo.methodName] as (
147
- ...args: unknown[]
148
- ) => unknown;
149
-
150
- const methodFilters =
151
- this.reflector.get<Type<ExceptionFilter>[]>(
152
- EXCEPTION_FILTERS_METADATA,
153
- method,
154
- ) ?? [];
155
-
156
- const classFilters =
157
- this.reflector.get<Type<ExceptionFilter>[]>(
158
- EXCEPTION_FILTERS_METADATA,
159
- clazz,
160
- ) ?? [];
161
-
162
- const allFilters = [...methodFilters, ...classFilters];
163
-
164
- for (const FilterClass of allFilters) {
165
- if (this.isExceptionFiltered(error, FilterClass)) {
166
- const filterInstance = new FilterClass();
167
- const host = new ExecutionContextHost(
168
- [httpRequest.raw],
169
- capabilityInfo.providerClass as Type,
170
- method,
171
- );
172
- host.setType('http');
173
- const result = filterInstance.catch(error, host);
174
-
175
- const text =
176
- typeof result === 'string' ? result : JSON.stringify(result);
177
-
178
- return this.createErrorResponse(text);
179
- }
180
- }
181
-
182
- return this.createErrorResponse(error.message);
183
- }
184
-
185
- private getExceptionTypes(filter: Type<ExceptionFilter>): Type<Error>[] {
186
- return (
187
- this.reflector.get<Type<Error>[]>(FILTER_CATCH_EXCEPTIONS, filter) ?? []
188
- );
189
- }
190
-
191
- private isExceptionFiltered(
192
- error: Error,
193
- filter: Type<ExceptionFilter>,
194
- ): boolean {
195
- const exceptionTypes = this.getExceptionTypes(filter);
196
-
197
- if (exceptionTypes.length === 0) {
198
- return true;
199
- }
200
-
201
- return exceptionTypes.some((type) => error instanceof type);
202
- }
203
- }
@@ -1,143 +0,0 @@
1
- import { Inject, Injectable, Optional, Scope } from '@nestjs/common';
2
- import { ContextIdFactory, ModuleRef, Reflector } from '@nestjs/core';
3
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
- import {
5
- ErrorCode,
6
- GetPromptRequestSchema,
7
- ListPromptsRequestSchema,
8
- McpError,
9
- PromptArgument,
10
- } from '@modelcontextprotocol/sdk/types.js';
11
- import {
12
- DiscoveredCapability,
13
- McpRegistryDiscoveryService,
14
- } from '../mcp-registry-discovery.service';
15
- import { McpHandlerBase } from './mcp-handler.base';
16
- import { HttpRequest } from '../../interfaces/http-adapter.interface';
17
- import type { McpOptions } from '../../interfaces/mcp-options.interface';
18
- import { PromptMetadata } from '../../decorators';
19
- import {
20
- McpRegistryService,
21
- DYNAMIC_PROMPT_HANDLER_TOKEN,
22
- } from '../mcp-dynamic-registry.service';
23
-
24
- @Injectable({ scope: Scope.REQUEST })
25
- export class McpPromptsHandler extends McpHandlerBase {
26
- constructor(
27
- moduleRef: ModuleRef,
28
- registry: McpRegistryDiscoveryService,
29
- reflector: Reflector,
30
- @Inject('MCP_MODULE_ID') private readonly mcpModuleId: string,
31
- @Optional() @Inject('MCP_OPTIONS') options?: McpOptions,
32
- ) {
33
- super(moduleRef, registry, reflector, McpPromptsHandler.name, options);
34
- }
35
-
36
- registerHandlers(mcpServer: McpServer, httpRequest: HttpRequest) {
37
- if (this.registry.getPrompts(this.mcpModuleId).length === 0) {
38
- this.logger.debug('No prompts registered, skipping prompt handlers');
39
- return;
40
- }
41
- mcpServer.server.setRequestHandler(ListPromptsRequestSchema, () => {
42
- this.logger.debug('ListPromptsRequestSchema is being called');
43
-
44
- const prompts = this.registry
45
- .getPrompts(this.mcpModuleId)
46
- .map((prompt) => ({
47
- name: prompt.metadata.name,
48
- description: prompt.metadata.description,
49
- arguments: prompt.metadata.parameters
50
- ? Object.entries(prompt.metadata.parameters.shape).map(
51
- ([name, field]): PromptArgument => ({
52
- name,
53
- description: field.description,
54
- required: !field.isOptional(),
55
- }),
56
- )
57
- : [],
58
- }));
59
-
60
- return {
61
- prompts,
62
- };
63
- });
64
-
65
- mcpServer.server.setRequestHandler(
66
- GetPromptRequestSchema,
67
- async (request) => {
68
- this.logger.debug('GetPromptRequestSchema is being called');
69
- let promptInfo: DiscoveredCapability<PromptMetadata> | undefined;
70
-
71
- try {
72
- const name = request.params.name;
73
- promptInfo = this.registry.findPrompt(this.mcpModuleId, name);
74
-
75
- if (!promptInfo) {
76
- throw new McpError(
77
- ErrorCode.MethodNotFound,
78
- `Unknown prompt: ${name}`,
79
- );
80
- }
81
-
82
- const context = this.createContext(mcpServer, request);
83
-
84
- if (promptInfo.providerClass === DYNAMIC_PROMPT_HANDLER_TOKEN) {
85
- const handler = McpRegistryService.getPromptHandlerByModuleId(
86
- this.mcpModuleId,
87
- name,
88
- );
89
-
90
- if (!handler) {
91
- throw new McpError(
92
- ErrorCode.MethodNotFound,
93
- `Handler not found for dynamic prompt: ${name}`,
94
- );
95
- }
96
-
97
- const result = await handler(
98
- request.params.arguments,
99
- context,
100
- httpRequest.raw,
101
- );
102
-
103
- this.logger.debug('GetPromptRequestSchema result', result);
104
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
105
- return result;
106
- }
107
-
108
- const contextId = ContextIdFactory.getByRequest(httpRequest);
109
- this.moduleRef.registerRequestByContextId(httpRequest, contextId);
110
-
111
- const promptInstance = await this.moduleRef.resolve(
112
- promptInfo.providerClass,
113
- contextId,
114
- { strict: false },
115
- );
116
-
117
- if (!promptInstance) {
118
- throw new McpError(
119
- ErrorCode.MethodNotFound,
120
- `Unknown prompt: ${name}`,
121
- );
122
- }
123
-
124
- const methodName = promptInfo.methodName;
125
-
126
- const result = await promptInstance[methodName].call(
127
- promptInstance,
128
- request.params.arguments,
129
- context,
130
- httpRequest.raw,
131
- );
132
-
133
- this.logger.debug('GetPromptRequestSchema result', result);
134
-
135
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
136
- return result;
137
- } catch (error) {
138
- this.handleError(error as Error, promptInfo!, httpRequest);
139
- }
140
- },
141
- );
142
- }
143
- }
@@ -1,183 +0,0 @@
1
- import {
2
- Inject,
3
- Injectable,
4
- InjectionToken,
5
- Optional,
6
- Scope,
7
- } from '@nestjs/common';
8
- import { ContextIdFactory, ModuleRef, Reflector } from '@nestjs/core';
9
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
10
- import {
11
- ErrorCode,
12
- ListResourcesRequestSchema,
13
- ListResourceTemplatesRequestSchema,
14
- McpError,
15
- ReadResourceRequestSchema,
16
- ReadResourceResult,
17
- } from '@modelcontextprotocol/sdk/types.js';
18
- import { McpRegistryDiscoveryService } from '../mcp-registry-discovery.service';
19
- import { McpHandlerBase } from './mcp-handler.base';
20
- import type { Context, McpOptions } from '../../interfaces';
21
- import { HttpRequest } from '../../interfaces/http-adapter.interface';
22
- import {
23
- McpRegistryService,
24
- DYNAMIC_RESOURCE_HANDLER_TOKEN,
25
- } from '../mcp-dynamic-registry.service';
26
-
27
- @Injectable({ scope: Scope.REQUEST })
28
- export class McpResourcesHandler extends McpHandlerBase {
29
- constructor(
30
- moduleRef: ModuleRef,
31
- registry: McpRegistryDiscoveryService,
32
- reflector: Reflector,
33
- @Inject('MCP_MODULE_ID') private readonly mcpModuleId: string,
34
- @Optional() @Inject('MCP_OPTIONS') options?: McpOptions,
35
- ) {
36
- super(moduleRef, registry, reflector, McpResourcesHandler.name, options);
37
- }
38
-
39
- registerHandlers(mcpServer: McpServer, httpRequest: HttpRequest) {
40
- const resources = this.registry.getResources(this.mcpModuleId);
41
- const resourceTemplates = this.registry.getResourceTemplates(
42
- this.mcpModuleId,
43
- );
44
- if (resources.length === 0 && resourceTemplates.length === 0) {
45
- this.logger.debug(
46
- 'No resources or resource templates registered, skipping resource handlers',
47
- );
48
- return;
49
- }
50
-
51
- mcpServer.server.setRequestHandler(ListResourcesRequestSchema, () => {
52
- this.logger.debug('ListResourcesRequestSchema is being called');
53
- return {
54
- resources: this.registry
55
- .getResources(this.mcpModuleId)
56
- .map((resources) => resources.metadata),
57
- };
58
- });
59
-
60
- mcpServer.server.setRequestHandler(
61
- ListResourceTemplatesRequestSchema,
62
- () => {
63
- this.logger.debug('ListResourceTemplatesRequestSchema is being called');
64
- return {
65
- resourceTemplates: this.registry
66
- .getResourceTemplates(this.mcpModuleId)
67
- .map((resourceTemplate) => resourceTemplate.metadata),
68
- };
69
- },
70
- );
71
-
72
- mcpServer.server.setRequestHandler(
73
- ReadResourceRequestSchema,
74
- async (request) => {
75
- this.logger.debug('ReadResourceRequestSchema is being called');
76
-
77
- const uri = request.params.uri;
78
- const resourceInfo = this.registry.findResourceByUri(
79
- this.mcpModuleId,
80
- uri,
81
- );
82
- const resourceTemplateInfo = this.registry.findResourceTemplateByUri(
83
- this.mcpModuleId,
84
- uri,
85
- );
86
-
87
- try {
88
- let providerClass: InjectionToken;
89
- let params: Record<string, unknown> = {};
90
- let methodName: string;
91
- if (resourceTemplateInfo) {
92
- providerClass = resourceTemplateInfo.resourceTemplate.providerClass;
93
- params = {
94
- ...resourceTemplateInfo.params,
95
- ...request.params,
96
- };
97
- methodName = resourceTemplateInfo.resourceTemplate.methodName;
98
- } else if (resourceInfo) {
99
- providerClass = resourceInfo.resource.providerClass;
100
-
101
- params = {
102
- ...resourceInfo.params,
103
- ...request.params,
104
- };
105
- methodName = resourceInfo.resource.methodName;
106
- } else {
107
- throw new McpError(
108
- ErrorCode.MethodNotFound,
109
- `Unknown resource: ${uri}`,
110
- );
111
- }
112
- return await this.handleRequest(
113
- httpRequest,
114
- providerClass,
115
- uri,
116
- this.createContext(mcpServer, request),
117
- params,
118
- methodName,
119
- );
120
- } catch (error) {
121
- return this.handleError(
122
- error as Error,
123
- (resourceInfo?.resource ?? resourceTemplateInfo?.resourceTemplate)!,
124
- httpRequest,
125
- );
126
- }
127
- },
128
- );
129
- }
130
-
131
- private async handleRequest(
132
- httpRequest: HttpRequest,
133
- providerClass: InjectionToken,
134
- uri: string,
135
- context: Context,
136
- requestParams: Record<string, unknown>,
137
- methodName: string,
138
- ) {
139
- if (providerClass === DYNAMIC_RESOURCE_HANDLER_TOKEN) {
140
- const handler = McpRegistryService.getResourceHandlerByModuleId(
141
- this.mcpModuleId,
142
- methodName,
143
- );
144
-
145
- if (!handler) {
146
- throw new McpError(
147
- ErrorCode.MethodNotFound,
148
- `Handler not found for dynamic resource: ${uri}`,
149
- );
150
- }
151
-
152
- const result = await handler(requestParams, context, httpRequest.raw);
153
- this.logger.debug('ReadResourceRequestSchema result', result);
154
- return result as ReadResourceResult;
155
- }
156
-
157
- const contextId = ContextIdFactory.getByRequest(httpRequest);
158
- this.moduleRef.registerRequestByContextId(httpRequest, contextId);
159
-
160
- const resourceInstance = await this.moduleRef.resolve(
161
- providerClass,
162
- contextId,
163
- { strict: false },
164
- );
165
-
166
- if (!resourceInstance) {
167
- throw new McpError(
168
- ErrorCode.MethodNotFound,
169
- `Unknown resource template: ${uri}`,
170
- );
171
- }
172
- const result = await resourceInstance[methodName].call(
173
- resourceInstance,
174
- requestParams,
175
- context,
176
- httpRequest,
177
- );
178
-
179
- this.logger.debug('ReadResourceRequestSchema result', result);
180
-
181
- return result as ReadResourceResult;
182
- }
183
- }
@@ -1,41 +0,0 @@
1
- import { McpError } from '@modelcontextprotocol/sdk/types.js';
2
- import { z } from 'zod';
3
- import { McpToolsHandler } from './mcp-tools.handler';
4
-
5
- const formatToolResult = McpToolsHandler.prototype['formatToolResult'].bind({
6
- buildDefaultContentBlock: McpToolsHandler.prototype['buildDefaultContentBlock'],
7
- });
8
-
9
- const schema = z.object({ name: z.string(), age: z.number() });
10
-
11
- describe('formatToolResult', () => {
12
- it('strips extra keys from structuredContent when outputSchema is set', () => {
13
- const result = formatToolResult({ name: 'Alice', age: 30, extra: true }, schema);
14
-
15
- expect(result.structuredContent).toEqual({ name: 'Alice', age: 30 });
16
- expect(result.structuredContent).not.toHaveProperty('extra');
17
- });
18
-
19
- it('keeps the original result (with extra keys) in the content text block', () => {
20
- const result = formatToolResult({ name: 'Alice', age: 30, extra: true }, schema);
21
- const text = JSON.parse(result.content[0].text);
22
-
23
- expect(text).toHaveProperty('extra', true);
24
- });
25
-
26
- it('throws McpError when result does not match outputSchema', () => {
27
- expect(() => formatToolResult({ name: 'Alice' }, schema)).toThrow(McpError);
28
- });
29
-
30
- it('wraps result in content block when no outputSchema is provided', () => {
31
- const result = formatToolResult({ anything: 42 });
32
-
33
- expect(result.structuredContent).toBeUndefined();
34
- expect(result.content[0].text).toBe('{"anything":42}');
35
- });
36
-
37
- it('returns as-is when result already has a content array', () => {
38
- const existing = { content: [{ type: 'text', text: 'hi' }] };
39
- expect(formatToolResult(existing, schema)).toBe(existing);
40
- });
41
- });