@ibm/ibmi-mcp-server 0.1.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 (482) hide show
  1. package/README.md +88 -0
  2. package/dist/config/index.d.ts +100 -0
  3. package/dist/config/index.d.ts.map +1 -0
  4. package/dist/config/index.js +463 -0
  5. package/dist/config/index.js.map +1 -0
  6. package/dist/config/resolver.d.ts +32 -0
  7. package/dist/config/resolver.d.ts.map +1 -0
  8. package/dist/config/resolver.js +60 -0
  9. package/dist/config/resolver.js.map +1 -0
  10. package/dist/ibmi-mcp-server/auth/crypto.d.ts +11 -0
  11. package/dist/ibmi-mcp-server/auth/crypto.d.ts.map +1 -0
  12. package/dist/ibmi-mcp-server/auth/crypto.js +100 -0
  13. package/dist/ibmi-mcp-server/auth/crypto.js.map +1 -0
  14. package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.d.ts +28 -0
  15. package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.d.ts.map +1 -0
  16. package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.js +243 -0
  17. package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.js.map +1 -0
  18. package/dist/ibmi-mcp-server/auth/index.d.ts +9 -0
  19. package/dist/ibmi-mcp-server/auth/index.d.ts.map +1 -0
  20. package/dist/ibmi-mcp-server/auth/index.js +8 -0
  21. package/dist/ibmi-mcp-server/auth/index.js.map +1 -0
  22. package/dist/ibmi-mcp-server/auth/tokenManager.d.ts +86 -0
  23. package/dist/ibmi-mcp-server/auth/tokenManager.d.ts.map +1 -0
  24. package/dist/ibmi-mcp-server/auth/tokenManager.js +214 -0
  25. package/dist/ibmi-mcp-server/auth/tokenManager.js.map +1 -0
  26. package/dist/ibmi-mcp-server/auth/types.d.ts +31 -0
  27. package/dist/ibmi-mcp-server/auth/types.d.ts.map +1 -0
  28. package/dist/ibmi-mcp-server/auth/types.js +5 -0
  29. package/dist/ibmi-mcp-server/auth/types.js.map +1 -0
  30. package/dist/ibmi-mcp-server/index.d.ts +8 -0
  31. package/dist/ibmi-mcp-server/index.d.ts.map +1 -0
  32. package/dist/ibmi-mcp-server/index.js +126 -0
  33. package/dist/ibmi-mcp-server/index.js.map +1 -0
  34. package/dist/ibmi-mcp-server/resources/toolsetsResource/index.d.ts +7 -0
  35. package/dist/ibmi-mcp-server/resources/toolsetsResource/index.d.ts.map +1 -0
  36. package/dist/ibmi-mcp-server/resources/toolsetsResource/index.js +7 -0
  37. package/dist/ibmi-mcp-server/resources/toolsetsResource/index.js.map +1 -0
  38. package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.d.ts +106 -0
  39. package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.d.ts.map +1 -0
  40. package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.js +145 -0
  41. package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.js.map +1 -0
  42. package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.d.ts +16 -0
  43. package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.d.ts.map +1 -0
  44. package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.js +110 -0
  45. package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.js.map +1 -0
  46. package/dist/ibmi-mcp-server/schemas/common.d.ts +174 -0
  47. package/dist/ibmi-mcp-server/schemas/common.d.ts.map +1 -0
  48. package/dist/ibmi-mcp-server/schemas/common.js +119 -0
  49. package/dist/ibmi-mcp-server/schemas/common.js.map +1 -0
  50. package/dist/ibmi-mcp-server/schemas/config.d.ts +858 -0
  51. package/dist/ibmi-mcp-server/schemas/config.d.ts.map +1 -0
  52. package/dist/ibmi-mcp-server/schemas/config.js +248 -0
  53. package/dist/ibmi-mcp-server/schemas/config.js.map +1 -0
  54. package/dist/ibmi-mcp-server/schemas/index.d.ts +12 -0
  55. package/dist/ibmi-mcp-server/schemas/index.d.ts.map +1 -0
  56. package/dist/ibmi-mcp-server/schemas/index.js +20 -0
  57. package/dist/ibmi-mcp-server/schemas/index.js.map +1 -0
  58. package/dist/ibmi-mcp-server/schemas/tools.d.ts +287 -0
  59. package/dist/ibmi-mcp-server/schemas/tools.d.ts.map +1 -0
  60. package/dist/ibmi-mcp-server/schemas/tools.js +167 -0
  61. package/dist/ibmi-mcp-server/schemas/tools.js.map +1 -0
  62. package/dist/ibmi-mcp-server/services/authenticatedPoolManager.d.ts +82 -0
  63. package/dist/ibmi-mcp-server/services/authenticatedPoolManager.d.ts.map +1 -0
  64. package/dist/ibmi-mcp-server/services/authenticatedPoolManager.js +262 -0
  65. package/dist/ibmi-mcp-server/services/authenticatedPoolManager.js.map +1 -0
  66. package/dist/ibmi-mcp-server/services/baseConnectionPool.d.ts +130 -0
  67. package/dist/ibmi-mcp-server/services/baseConnectionPool.d.ts.map +1 -0
  68. package/dist/ibmi-mcp-server/services/baseConnectionPool.js +431 -0
  69. package/dist/ibmi-mcp-server/services/baseConnectionPool.js.map +1 -0
  70. package/dist/ibmi-mcp-server/services/connectionPool.d.ts +60 -0
  71. package/dist/ibmi-mcp-server/services/connectionPool.d.ts.map +1 -0
  72. package/dist/ibmi-mcp-server/services/connectionPool.js +153 -0
  73. package/dist/ibmi-mcp-server/services/connectionPool.js.map +1 -0
  74. package/dist/ibmi-mcp-server/services/securityValidation.d.ts +35 -0
  75. package/dist/ibmi-mcp-server/services/securityValidation.d.ts.map +1 -0
  76. package/dist/ibmi-mcp-server/services/securityValidation.js +93 -0
  77. package/dist/ibmi-mcp-server/services/securityValidation.js.map +1 -0
  78. package/dist/ibmi-mcp-server/services/sourceManager.d.ts +82 -0
  79. package/dist/ibmi-mcp-server/services/sourceManager.d.ts.map +1 -0
  80. package/dist/ibmi-mcp-server/services/sourceManager.js +151 -0
  81. package/dist/ibmi-mcp-server/services/sourceManager.js.map +1 -0
  82. package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts +9 -0
  83. package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts.map +1 -0
  84. package/dist/ibmi-mcp-server/tools/executeSql/index.js +9 -0
  85. package/dist/ibmi-mcp-server/tools/executeSql/index.js.map +1 -0
  86. package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts +51 -0
  87. package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts.map +1 -0
  88. package/dist/ibmi-mcp-server/tools/executeSql/logic.js +179 -0
  89. package/dist/ibmi-mcp-server/tools/executeSql/logic.js.map +1 -0
  90. package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts +52 -0
  91. package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts.map +1 -0
  92. package/dist/ibmi-mcp-server/tools/executeSql/registration.js +161 -0
  93. package/dist/ibmi-mcp-server/tools/executeSql/registration.js.map +1 -0
  94. package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts +13 -0
  95. package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts.map +1 -0
  96. package/dist/ibmi-mcp-server/tools/generateSql/index.js +13 -0
  97. package/dist/ibmi-mcp-server/tools/generateSql/index.js.map +1 -0
  98. package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts +64 -0
  99. package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts.map +1 -0
  100. package/dist/ibmi-mcp-server/tools/generateSql/logic.js +190 -0
  101. package/dist/ibmi-mcp-server/tools/generateSql/logic.js.map +1 -0
  102. package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts +18 -0
  103. package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts.map +1 -0
  104. package/dist/ibmi-mcp-server/tools/generateSql/registration.js +64 -0
  105. package/dist/ibmi-mcp-server/tools/generateSql/registration.js.map +1 -0
  106. package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts +42 -0
  107. package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts.map +1 -0
  108. package/dist/ibmi-mcp-server/utils/cli/argumentParser.js +156 -0
  109. package/dist/ibmi-mcp-server/utils/cli/argumentParser.js.map +1 -0
  110. package/dist/ibmi-mcp-server/utils/cli/index.d.ts +6 -0
  111. package/dist/ibmi-mcp-server/utils/cli/index.d.ts.map +1 -0
  112. package/dist/ibmi-mcp-server/utils/cli/index.js +6 -0
  113. package/dist/ibmi-mcp-server/utils/cli/index.js.map +1 -0
  114. package/dist/ibmi-mcp-server/utils/config/configParser.d.ts +77 -0
  115. package/dist/ibmi-mcp-server/utils/config/configParser.d.ts.map +1 -0
  116. package/dist/ibmi-mcp-server/utils/config/configParser.js +309 -0
  117. package/dist/ibmi-mcp-server/utils/config/configParser.js.map +1 -0
  118. package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.d.ts +143 -0
  119. package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.d.ts.map +1 -0
  120. package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js +665 -0
  121. package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js.map +1 -0
  122. package/dist/ibmi-mcp-server/utils/config/toolConfigCache.d.ts +71 -0
  123. package/dist/ibmi-mcp-server/utils/config/toolConfigCache.d.ts.map +1 -0
  124. package/dist/ibmi-mcp-server/utils/config/toolConfigCache.js +158 -0
  125. package/dist/ibmi-mcp-server/utils/config/toolConfigCache.js.map +1 -0
  126. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts +206 -0
  127. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts.map +1 -0
  128. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js +236 -0
  129. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js.map +1 -0
  130. package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts +65 -0
  131. package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts.map +1 -0
  132. package/dist/ibmi-mcp-server/utils/config/toolFactory.js +236 -0
  133. package/dist/ibmi-mcp-server/utils/config/toolFactory.js.map +1 -0
  134. package/dist/ibmi-mcp-server/utils/config/toolProcessor.d.ts +175 -0
  135. package/dist/ibmi-mcp-server/utils/config/toolProcessor.d.ts.map +1 -0
  136. package/dist/ibmi-mcp-server/utils/config/toolProcessor.js +460 -0
  137. package/dist/ibmi-mcp-server/utils/config/toolProcessor.js.map +1 -0
  138. package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts +126 -0
  139. package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts.map +1 -0
  140. package/dist/ibmi-mcp-server/utils/config/toolsetManager.js +240 -0
  141. package/dist/ibmi-mcp-server/utils/config/toolsetManager.js.map +1 -0
  142. package/dist/ibmi-mcp-server/utils/config/types.d.ts +74 -0
  143. package/dist/ibmi-mcp-server/utils/config/types.d.ts.map +1 -0
  144. package/dist/ibmi-mcp-server/utils/config/types.js +8 -0
  145. package/dist/ibmi-mcp-server/utils/config/types.js.map +1 -0
  146. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts +116 -0
  147. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts.map +1 -0
  148. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js +426 -0
  149. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js.map +1 -0
  150. package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.d.ts +182 -0
  151. package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.d.ts.map +1 -0
  152. package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.js +726 -0
  153. package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.js.map +1 -0
  154. package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.d.ts +90 -0
  155. package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.d.ts.map +1 -0
  156. package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.js +187 -0
  157. package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.js.map +1 -0
  158. package/dist/index.d.ts +10 -0
  159. package/dist/index.d.ts.map +1 -0
  160. package/dist/index.js +270 -0
  161. package/dist/index.js.map +1 -0
  162. package/dist/mcp-server/constants.d.ts +13 -0
  163. package/dist/mcp-server/constants.d.ts.map +1 -0
  164. package/dist/mcp-server/constants.js +13 -0
  165. package/dist/mcp-server/constants.js.map +1 -0
  166. package/dist/mcp-server/logging/index.d.ts +8 -0
  167. package/dist/mcp-server/logging/index.d.ts.map +1 -0
  168. package/dist/mcp-server/logging/index.js +8 -0
  169. package/dist/mcp-server/logging/index.js.map +1 -0
  170. package/dist/mcp-server/logging/setLevelHandler.d.ts +38 -0
  171. package/dist/mcp-server/logging/setLevelHandler.d.ts.map +1 -0
  172. package/dist/mcp-server/logging/setLevelHandler.js +83 -0
  173. package/dist/mcp-server/logging/setLevelHandler.js.map +1 -0
  174. package/dist/mcp-server/resources/echoResource/index.d.ts +14 -0
  175. package/dist/mcp-server/resources/echoResource/index.d.ts.map +1 -0
  176. package/dist/mcp-server/resources/echoResource/index.js +14 -0
  177. package/dist/mcp-server/resources/echoResource/index.js.map +1 -0
  178. package/dist/mcp-server/resources/echoResource/logic.d.ts +37 -0
  179. package/dist/mcp-server/resources/echoResource/logic.d.ts.map +1 -0
  180. package/dist/mcp-server/resources/echoResource/logic.js +46 -0
  181. package/dist/mcp-server/resources/echoResource/logic.js.map +1 -0
  182. package/dist/mcp-server/resources/echoResource/registration.d.ts +7 -0
  183. package/dist/mcp-server/resources/echoResource/registration.d.ts.map +1 -0
  184. package/dist/mcp-server/resources/echoResource/registration.js +51 -0
  185. package/dist/mcp-server/resources/echoResource/registration.js.map +1 -0
  186. package/dist/mcp-server/resources/index.d.ts +10 -0
  187. package/dist/mcp-server/resources/index.d.ts.map +1 -0
  188. package/dist/mcp-server/resources/index.js +19 -0
  189. package/dist/mcp-server/resources/index.js.map +1 -0
  190. package/dist/mcp-server/resources/utils/resource-utils.d.ts +43 -0
  191. package/dist/mcp-server/resources/utils/resource-utils.d.ts.map +1 -0
  192. package/dist/mcp-server/resources/utils/resource-utils.js +44 -0
  193. package/dist/mcp-server/resources/utils/resource-utils.js.map +1 -0
  194. package/dist/mcp-server/server.d.ts +23 -0
  195. package/dist/mcp-server/server.d.ts.map +1 -0
  196. package/dist/mcp-server/server.js +114 -0
  197. package/dist/mcp-server/server.js.map +1 -0
  198. package/dist/mcp-server/tools/catFactFetcher/index.d.ts +8 -0
  199. package/dist/mcp-server/tools/catFactFetcher/index.d.ts.map +1 -0
  200. package/dist/mcp-server/tools/catFactFetcher/index.js +8 -0
  201. package/dist/mcp-server/tools/catFactFetcher/index.js.map +1 -0
  202. package/dist/mcp-server/tools/catFactFetcher/logic.d.ts +52 -0
  203. package/dist/mcp-server/tools/catFactFetcher/logic.d.ts.map +1 -0
  204. package/dist/mcp-server/tools/catFactFetcher/logic.js +95 -0
  205. package/dist/mcp-server/tools/catFactFetcher/logic.js.map +1 -0
  206. package/dist/mcp-server/tools/catFactFetcher/registration.d.ts +9 -0
  207. package/dist/mcp-server/tools/catFactFetcher/registration.d.ts.map +1 -0
  208. package/dist/mcp-server/tools/catFactFetcher/registration.js +43 -0
  209. package/dist/mcp-server/tools/catFactFetcher/registration.js.map +1 -0
  210. package/dist/mcp-server/tools/echoTool/index.d.ts +13 -0
  211. package/dist/mcp-server/tools/echoTool/index.d.ts.map +1 -0
  212. package/dist/mcp-server/tools/echoTool/index.js +13 -0
  213. package/dist/mcp-server/tools/echoTool/index.js.map +1 -0
  214. package/dist/mcp-server/tools/echoTool/logic.d.ts +69 -0
  215. package/dist/mcp-server/tools/echoTool/logic.d.ts.map +1 -0
  216. package/dist/mcp-server/tools/echoTool/logic.js +119 -0
  217. package/dist/mcp-server/tools/echoTool/logic.js.map +1 -0
  218. package/dist/mcp-server/tools/echoTool/registration.d.ts +9 -0
  219. package/dist/mcp-server/tools/echoTool/registration.d.ts.map +1 -0
  220. package/dist/mcp-server/tools/echoTool/registration.js +45 -0
  221. package/dist/mcp-server/tools/echoTool/registration.js.map +1 -0
  222. package/dist/mcp-server/tools/imageTest/index.d.ts +7 -0
  223. package/dist/mcp-server/tools/imageTest/index.d.ts.map +1 -0
  224. package/dist/mcp-server/tools/imageTest/index.js +7 -0
  225. package/dist/mcp-server/tools/imageTest/index.js.map +1 -0
  226. package/dist/mcp-server/tools/imageTest/logic.d.ts +27 -0
  227. package/dist/mcp-server/tools/imageTest/logic.d.ts.map +1 -0
  228. package/dist/mcp-server/tools/imageTest/logic.js +44 -0
  229. package/dist/mcp-server/tools/imageTest/logic.js.map +1 -0
  230. package/dist/mcp-server/tools/imageTest/registration.d.ts +9 -0
  231. package/dist/mcp-server/tools/imageTest/registration.d.ts.map +1 -0
  232. package/dist/mcp-server/tools/imageTest/registration.js +49 -0
  233. package/dist/mcp-server/tools/imageTest/registration.js.map +1 -0
  234. package/dist/mcp-server/tools/index.d.ts +4 -0
  235. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  236. package/dist/mcp-server/tools/index.js +13 -0
  237. package/dist/mcp-server/tools/index.js.map +1 -0
  238. package/dist/mcp-server/tools/utils/tool-utils.d.ts +43 -0
  239. package/dist/mcp-server/tools/utils/tool-utils.d.ts.map +1 -0
  240. package/dist/mcp-server/tools/utils/tool-utils.js +44 -0
  241. package/dist/mcp-server/tools/utils/tool-utils.js.map +1 -0
  242. package/dist/mcp-server/transports/auth/authFactory.d.ts +11 -0
  243. package/dist/mcp-server/transports/auth/authFactory.d.ts.map +1 -0
  244. package/dist/mcp-server/transports/auth/authFactory.js +46 -0
  245. package/dist/mcp-server/transports/auth/authFactory.js.map +1 -0
  246. package/dist/mcp-server/transports/auth/authMiddleware.d.ts +20 -0
  247. package/dist/mcp-server/transports/auth/authMiddleware.d.ts.map +1 -0
  248. package/dist/mcp-server/transports/auth/authMiddleware.js +58 -0
  249. package/dist/mcp-server/transports/auth/authMiddleware.js.map +1 -0
  250. package/dist/mcp-server/transports/auth/index.d.ts +14 -0
  251. package/dist/mcp-server/transports/auth/index.d.ts.map +1 -0
  252. package/dist/mcp-server/transports/auth/index.js +12 -0
  253. package/dist/mcp-server/transports/auth/index.js.map +1 -0
  254. package/dist/mcp-server/transports/auth/lib/authContext.d.ts +34 -0
  255. package/dist/mcp-server/transports/auth/lib/authContext.d.ts.map +1 -0
  256. package/dist/mcp-server/transports/auth/lib/authContext.js +25 -0
  257. package/dist/mcp-server/transports/auth/lib/authContext.js.map +1 -0
  258. package/dist/mcp-server/transports/auth/lib/authTypes.d.ts +15 -0
  259. package/dist/mcp-server/transports/auth/lib/authTypes.d.ts.map +1 -0
  260. package/dist/mcp-server/transports/auth/lib/authTypes.js +9 -0
  261. package/dist/mcp-server/transports/auth/lib/authTypes.js.map +1 -0
  262. package/dist/mcp-server/transports/auth/lib/authUtils.d.ts +19 -0
  263. package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -0
  264. package/dist/mcp-server/transports/auth/lib/authUtils.js +53 -0
  265. package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -0
  266. package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts +18 -0
  267. package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts.map +1 -0
  268. package/dist/mcp-server/transports/auth/strategies/authStrategy.js +2 -0
  269. package/dist/mcp-server/transports/auth/strategies/authStrategy.js.map +1 -0
  270. package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.d.ts +21 -0
  271. package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.d.ts.map +1 -0
  272. package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.js +64 -0
  273. package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.js.map +1 -0
  274. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts +8 -0
  275. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts.map +1 -0
  276. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +118 -0
  277. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js.map +1 -0
  278. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts +8 -0
  279. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts.map +1 -0
  280. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +118 -0
  281. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js.map +1 -0
  282. package/dist/mcp-server/transports/core/autoTransportManager.d.ts +48 -0
  283. package/dist/mcp-server/transports/core/autoTransportManager.d.ts.map +1 -0
  284. package/dist/mcp-server/transports/core/autoTransportManager.js +57 -0
  285. package/dist/mcp-server/transports/core/autoTransportManager.js.map +1 -0
  286. package/dist/mcp-server/transports/core/baseTransportManager.d.ts +17 -0
  287. package/dist/mcp-server/transports/core/baseTransportManager.d.ts.map +1 -0
  288. package/dist/mcp-server/transports/core/baseTransportManager.js +20 -0
  289. package/dist/mcp-server/transports/core/baseTransportManager.js.map +1 -0
  290. package/dist/mcp-server/transports/core/headerUtils.d.ts +27 -0
  291. package/dist/mcp-server/transports/core/headerUtils.d.ts.map +1 -0
  292. package/dist/mcp-server/transports/core/headerUtils.js +53 -0
  293. package/dist/mcp-server/transports/core/headerUtils.js.map +1 -0
  294. package/dist/mcp-server/transports/core/honoNodeBridge.d.ts +77 -0
  295. package/dist/mcp-server/transports/core/honoNodeBridge.d.ts.map +1 -0
  296. package/dist/mcp-server/transports/core/honoNodeBridge.js +150 -0
  297. package/dist/mcp-server/transports/core/honoNodeBridge.js.map +1 -0
  298. package/dist/mcp-server/transports/core/statefulTransportManager.d.ts +81 -0
  299. package/dist/mcp-server/transports/core/statefulTransportManager.d.ts.map +1 -0
  300. package/dist/mcp-server/transports/core/statefulTransportManager.js +326 -0
  301. package/dist/mcp-server/transports/core/statefulTransportManager.js.map +1 -0
  302. package/dist/mcp-server/transports/core/statelessTransportManager.d.ts +57 -0
  303. package/dist/mcp-server/transports/core/statelessTransportManager.d.ts.map +1 -0
  304. package/dist/mcp-server/transports/core/statelessTransportManager.js +151 -0
  305. package/dist/mcp-server/transports/core/statelessTransportManager.js.map +1 -0
  306. package/dist/mcp-server/transports/core/transportRequest.d.ts +9 -0
  307. package/dist/mcp-server/transports/core/transportRequest.d.ts.map +1 -0
  308. package/dist/mcp-server/transports/core/transportRequest.js +2 -0
  309. package/dist/mcp-server/transports/core/transportRequest.js.map +1 -0
  310. package/dist/mcp-server/transports/core/transportTypes.d.ts +112 -0
  311. package/dist/mcp-server/transports/core/transportTypes.d.ts.map +1 -0
  312. package/dist/mcp-server/transports/core/transportTypes.js +15 -0
  313. package/dist/mcp-server/transports/core/transportTypes.js.map +1 -0
  314. package/dist/mcp-server/transports/http/httpErrorHandler.d.ts +25 -0
  315. package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -0
  316. package/dist/mcp-server/transports/http/httpErrorHandler.js +86 -0
  317. package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -0
  318. package/dist/mcp-server/transports/http/httpTransport.d.ts +27 -0
  319. package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -0
  320. package/dist/mcp-server/transports/http/httpTransport.js +407 -0
  321. package/dist/mcp-server/transports/http/httpTransport.js.map +1 -0
  322. package/dist/mcp-server/transports/http/httpTypes.d.ts +17 -0
  323. package/dist/mcp-server/transports/http/httpTypes.d.ts.map +1 -0
  324. package/dist/mcp-server/transports/http/httpTypes.js +6 -0
  325. package/dist/mcp-server/transports/http/httpTypes.js.map +1 -0
  326. package/dist/mcp-server/transports/http/index.d.ts +8 -0
  327. package/dist/mcp-server/transports/http/index.d.ts.map +1 -0
  328. package/dist/mcp-server/transports/http/index.js +7 -0
  329. package/dist/mcp-server/transports/http/index.js.map +1 -0
  330. package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts +21 -0
  331. package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts.map +1 -0
  332. package/dist/mcp-server/transports/http/mcpTransportMiddleware.js +54 -0
  333. package/dist/mcp-server/transports/http/mcpTransportMiddleware.js.map +1 -0
  334. package/dist/mcp-server/transports/stdio/index.d.ts +6 -0
  335. package/dist/mcp-server/transports/stdio/index.d.ts.map +1 -0
  336. package/dist/mcp-server/transports/stdio/index.js +6 -0
  337. package/dist/mcp-server/transports/stdio/index.js.map +1 -0
  338. package/dist/mcp-server/transports/stdio/stdioTransport.d.ts +43 -0
  339. package/dist/mcp-server/transports/stdio/stdioTransport.d.ts.map +1 -0
  340. package/dist/mcp-server/transports/stdio/stdioTransport.js +71 -0
  341. package/dist/mcp-server/transports/stdio/stdioTransport.js.map +1 -0
  342. package/dist/services/duck-db/duckDBConnectionManager.d.ts +55 -0
  343. package/dist/services/duck-db/duckDBConnectionManager.d.ts.map +1 -0
  344. package/dist/services/duck-db/duckDBConnectionManager.js +184 -0
  345. package/dist/services/duck-db/duckDBConnectionManager.js.map +1 -0
  346. package/dist/services/duck-db/duckDBQueryExecutor.d.ts +18 -0
  347. package/dist/services/duck-db/duckDBQueryExecutor.d.ts.map +1 -0
  348. package/dist/services/duck-db/duckDBQueryExecutor.js +115 -0
  349. package/dist/services/duck-db/duckDBQueryExecutor.js.map +1 -0
  350. package/dist/services/duck-db/duckDBService.d.ts +27 -0
  351. package/dist/services/duck-db/duckDBService.d.ts.map +1 -0
  352. package/dist/services/duck-db/duckDBService.js +151 -0
  353. package/dist/services/duck-db/duckDBService.js.map +1 -0
  354. package/dist/services/duck-db/types.d.ts +135 -0
  355. package/dist/services/duck-db/types.d.ts.map +1 -0
  356. package/dist/services/duck-db/types.js +6 -0
  357. package/dist/services/duck-db/types.js.map +1 -0
  358. package/dist/services/llm-providers/openRouterProvider.d.ts +36 -0
  359. package/dist/services/llm-providers/openRouterProvider.d.ts.map +1 -0
  360. package/dist/services/llm-providers/openRouterProvider.js +235 -0
  361. package/dist/services/llm-providers/openRouterProvider.js.map +1 -0
  362. package/dist/services/supabase/supabaseClient.d.ts +25 -0
  363. package/dist/services/supabase/supabaseClient.d.ts.map +1 -0
  364. package/dist/services/supabase/supabaseClient.js +68 -0
  365. package/dist/services/supabase/supabaseClient.js.map +1 -0
  366. package/dist/storage/duckdbExample.d.ts +8 -0
  367. package/dist/storage/duckdbExample.d.ts.map +1 -0
  368. package/dist/storage/duckdbExample.js +197 -0
  369. package/dist/storage/duckdbExample.js.map +1 -0
  370. package/dist/types-global/errors.d.ts +101 -0
  371. package/dist/types-global/errors.d.ts.map +1 -0
  372. package/dist/types-global/errors.js +109 -0
  373. package/dist/types-global/errors.js.map +1 -0
  374. package/dist/utils/formatting/index.d.ts +10 -0
  375. package/dist/utils/formatting/index.d.ts.map +1 -0
  376. package/dist/utils/formatting/index.js +10 -0
  377. package/dist/utils/formatting/index.js.map +1 -0
  378. package/dist/utils/formatting/markdownBuilder.d.ts +348 -0
  379. package/dist/utils/formatting/markdownBuilder.d.ts.map +1 -0
  380. package/dist/utils/formatting/markdownBuilder.js +501 -0
  381. package/dist/utils/formatting/markdownBuilder.js.map +1 -0
  382. package/dist/utils/formatting/sqlFormattingUtils.d.ts +69 -0
  383. package/dist/utils/formatting/sqlFormattingUtils.d.ts.map +1 -0
  384. package/dist/utils/formatting/sqlFormattingUtils.js +131 -0
  385. package/dist/utils/formatting/sqlFormattingUtils.js.map +1 -0
  386. package/dist/utils/formatting/tableFormatter.d.ts +268 -0
  387. package/dist/utils/formatting/tableFormatter.d.ts.map +1 -0
  388. package/dist/utils/formatting/tableFormatter.js +550 -0
  389. package/dist/utils/formatting/tableFormatter.js.map +1 -0
  390. package/dist/utils/index.d.ts +13 -0
  391. package/dist/utils/index.d.ts.map +1 -0
  392. package/dist/utils/index.js +21 -0
  393. package/dist/utils/index.js.map +1 -0
  394. package/dist/utils/internal/asyncContext.d.ts +35 -0
  395. package/dist/utils/internal/asyncContext.d.ts.map +1 -0
  396. package/dist/utils/internal/asyncContext.js +38 -0
  397. package/dist/utils/internal/asyncContext.js.map +1 -0
  398. package/dist/utils/internal/errorHandler.d.ts +95 -0
  399. package/dist/utils/internal/errorHandler.d.ts.map +1 -0
  400. package/dist/utils/internal/errorHandler.js +210 -0
  401. package/dist/utils/internal/errorHandler.js.map +1 -0
  402. package/dist/utils/internal/index.d.ts +12 -0
  403. package/dist/utils/internal/index.d.ts.map +1 -0
  404. package/dist/utils/internal/index.js +12 -0
  405. package/dist/utils/internal/index.js.map +1 -0
  406. package/dist/utils/internal/logger.d.ts +30 -0
  407. package/dist/utils/internal/logger.d.ts.map +1 -0
  408. package/dist/utils/internal/logger.js +228 -0
  409. package/dist/utils/internal/logger.js.map +1 -0
  410. package/dist/utils/internal/logging-helpers.d.ts +49 -0
  411. package/dist/utils/internal/logging-helpers.d.ts.map +1 -0
  412. package/dist/utils/internal/logging-helpers.js +60 -0
  413. package/dist/utils/internal/logging-helpers.js.map +1 -0
  414. package/dist/utils/internal/performance.d.ts +19 -0
  415. package/dist/utils/internal/performance.d.ts.map +1 -0
  416. package/dist/utils/internal/performance.js +110 -0
  417. package/dist/utils/internal/performance.js.map +1 -0
  418. package/dist/utils/internal/requestContext.d.ts +41 -0
  419. package/dist/utils/internal/requestContext.d.ts.map +1 -0
  420. package/dist/utils/internal/requestContext.js +47 -0
  421. package/dist/utils/internal/requestContext.js.map +1 -0
  422. package/dist/utils/metrics/index.d.ts +8 -0
  423. package/dist/utils/metrics/index.d.ts.map +1 -0
  424. package/dist/utils/metrics/index.js +8 -0
  425. package/dist/utils/metrics/index.js.map +1 -0
  426. package/dist/utils/metrics/tokenCounter.d.ts +36 -0
  427. package/dist/utils/metrics/tokenCounter.d.ts.map +1 -0
  428. package/dist/utils/metrics/tokenCounter.js +115 -0
  429. package/dist/utils/metrics/tokenCounter.js.map +1 -0
  430. package/dist/utils/network/fetchWithTimeout.d.ts +22 -0
  431. package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -0
  432. package/dist/utils/network/fetchWithTimeout.js +78 -0
  433. package/dist/utils/network/fetchWithTimeout.js.map +1 -0
  434. package/dist/utils/network/index.d.ts +7 -0
  435. package/dist/utils/network/index.d.ts.map +1 -0
  436. package/dist/utils/network/index.js +6 -0
  437. package/dist/utils/network/index.js.map +1 -0
  438. package/dist/utils/parsing/dateParser.d.ts +73 -0
  439. package/dist/utils/parsing/dateParser.d.ts.map +1 -0
  440. package/dist/utils/parsing/dateParser.js +108 -0
  441. package/dist/utils/parsing/dateParser.js.map +1 -0
  442. package/dist/utils/parsing/index.d.ts +9 -0
  443. package/dist/utils/parsing/index.d.ts.map +1 -0
  444. package/dist/utils/parsing/index.js +9 -0
  445. package/dist/utils/parsing/index.js.map +1 -0
  446. package/dist/utils/parsing/jsonParser.d.ts +83 -0
  447. package/dist/utils/parsing/jsonParser.d.ts.map +1 -0
  448. package/dist/utils/parsing/jsonParser.js +128 -0
  449. package/dist/utils/parsing/jsonParser.js.map +1 -0
  450. package/dist/utils/scheduling/index.d.ts +7 -0
  451. package/dist/utils/scheduling/index.d.ts.map +1 -0
  452. package/dist/utils/scheduling/index.js +7 -0
  453. package/dist/utils/scheduling/index.js.map +1 -0
  454. package/dist/utils/scheduling/scheduler.d.ts +73 -0
  455. package/dist/utils/scheduling/scheduler.d.ts.map +1 -0
  456. package/dist/utils/scheduling/scheduler.js +155 -0
  457. package/dist/utils/scheduling/scheduler.js.map +1 -0
  458. package/dist/utils/security/idGenerator.d.ts +144 -0
  459. package/dist/utils/security/idGenerator.d.ts.map +1 -0
  460. package/dist/utils/security/idGenerator.js +232 -0
  461. package/dist/utils/security/idGenerator.js.map +1 -0
  462. package/dist/utils/security/index.d.ts +10 -0
  463. package/dist/utils/security/index.d.ts.map +1 -0
  464. package/dist/utils/security/index.js +10 -0
  465. package/dist/utils/security/index.js.map +1 -0
  466. package/dist/utils/security/rateLimiter.d.ts +109 -0
  467. package/dist/utils/security/rateLimiter.d.ts.map +1 -0
  468. package/dist/utils/security/rateLimiter.js +202 -0
  469. package/dist/utils/security/rateLimiter.js.map +1 -0
  470. package/dist/utils/security/sanitization.d.ts +185 -0
  471. package/dist/utils/security/sanitization.d.ts.map +1 -0
  472. package/dist/utils/security/sanitization.js +472 -0
  473. package/dist/utils/security/sanitization.js.map +1 -0
  474. package/dist/utils/telemetry/instrumentation.d.ts +8 -0
  475. package/dist/utils/telemetry/instrumentation.d.ts.map +1 -0
  476. package/dist/utils/telemetry/instrumentation.js +121 -0
  477. package/dist/utils/telemetry/instrumentation.js.map +1 -0
  478. package/dist/utils/telemetry/semconv.d.ts +16 -0
  479. package/dist/utils/telemetry/semconv.d.ts.map +1 -0
  480. package/dist/utils/telemetry/semconv.js +16 -0
  481. package/dist/utils/telemetry/semconv.js.map +1 -0
  482. package/package.json +161 -0
@@ -0,0 +1,236 @@
1
+ import { ErrorHandler, getRequestContext, measureToolExecution, requestContextService, withRequestContext, } from "../../../utils/internal/index.js";
2
+ import { JsonRpcErrorCode, McpError } from "../../../types-global/errors.js";
3
+ // Import shared schemas from centralized location
4
+ import { StandardSqlToolOutputSchema, } from "../../schemas/index.js";
5
+ // Import formatting utilities
6
+ import { markdown, tableFormatter, buildColumnAlignmentMap, formatColumnHeader, } from "../../../utils/formatting/index.js";
7
+ // Re-export standardized SQL tool output schema from centralized schemas
8
+ export const standardSqlToolOutputSchema = StandardSqlToolOutputSchema;
9
+ /**
10
+ * Formats SQL tool output into a professionally formatted markdown response.
11
+ * Uses MarkdownBuilder for structure and TableFormatter for type-aware table rendering.
12
+ * Provides column type indicators, NULL tracking, and performance metrics.
13
+ *
14
+ * @param result - The SQL tool execution result
15
+ * @param config - Optional formatting configuration
16
+ * @returns Array of content blocks for MCP response
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const result = await executeSqlTool(params);
21
+ * const formatted = sqlResponseFormatter(result, {
22
+ * tableFormat: 'grid',
23
+ * maxDisplayRows: 50
24
+ * });
25
+ * ```
26
+ */
27
+ export const sqlResponseFormatter = (result, config) => {
28
+ const tableFormat = config?.tableFormat || "markdown";
29
+ const maxDisplayRows = config?.maxDisplayRows || 100;
30
+ // Handle error cases
31
+ if (!result.success || !result.data) {
32
+ const errorMessage = result.error || "Unknown error occurred";
33
+ const { metadata } = result;
34
+ const errorBuilder = markdown()
35
+ .alert("caution", "❌ SQL Query Failed")
36
+ .blankLine();
37
+ if (metadata?.toolName) {
38
+ errorBuilder.keyValue("Tool", metadata.toolName);
39
+ }
40
+ errorBuilder.keyValue("Error", errorMessage);
41
+ if (result.errorCode) {
42
+ errorBuilder.keyValue("Error Code", String(result.errorCode));
43
+ }
44
+ if (metadata?.sqlStatement) {
45
+ const truncatedSql = metadata.sqlStatement.length > 200
46
+ ? metadata.sqlStatement.substring(0, 197) + "..."
47
+ : metadata.sqlStatement;
48
+ errorBuilder
49
+ .blankLine()
50
+ .h3("SQL Statement")
51
+ .codeBlock(truncatedSql, "sql");
52
+ }
53
+ const errorMarkdown = errorBuilder.build();
54
+ return [{ type: "text", text: errorMarkdown }];
55
+ }
56
+ const { data, metadata } = result;
57
+ const rowCount = data.length;
58
+ // Start building the markdown response
59
+ const mdBuilder = markdown();
60
+ // Tool header
61
+ if (metadata?.toolName) {
62
+ mdBuilder.h2(metadata.toolName);
63
+ }
64
+ // Success indicator
65
+ mdBuilder
66
+ .alert("tip", "✅ Query completed successfully")
67
+ .blankLine()
68
+ .paragraph(`Found **${rowCount} row${rowCount !== 1 ? "s" : ""}** from the database query`);
69
+ // SQL Statement section
70
+ if (metadata?.sqlStatement) {
71
+ const truncatedSql = metadata.sqlStatement.length > 500
72
+ ? metadata.sqlStatement.substring(0, 497) + "..."
73
+ : metadata.sqlStatement;
74
+ mdBuilder.h3("SQL Statement").codeBlock(truncatedSql, "sql");
75
+ }
76
+ // Parameters section
77
+ if (metadata?.parameters && Object.keys(metadata.parameters).length > 0) {
78
+ mdBuilder.h3("Parameters");
79
+ const paramList = Object.entries(metadata.parameters).map(([key, value]) => {
80
+ const displayValue = value === null || value === undefined
81
+ ? "NULL"
82
+ : typeof value === "string" && value.length > 100
83
+ ? `${String(value).substring(0, 97)}...`
84
+ : String(value);
85
+ return `\`${key}\`: ${displayValue}`;
86
+ });
87
+ mdBuilder.list(paramList);
88
+ }
89
+ // Handle empty results
90
+ if (rowCount === 0) {
91
+ mdBuilder
92
+ .paragraph("No rows returned from the query.")
93
+ .h3("Execution Summary")
94
+ .keyValue("Execution time", metadata?.executionTime ? `${metadata.executionTime}ms` : "N/A")
95
+ .keyValue("Parameters used", String(metadata?.parameterCount || 0));
96
+ return [{ type: "text", text: mdBuilder.build() }];
97
+ }
98
+ // Extract column information
99
+ const columns = metadata?.columns || [];
100
+ const firstRow = data[0] || {};
101
+ const allColumns = columns.length > 0
102
+ ? columns
103
+ : Object.keys(firstRow).map((key) => ({
104
+ name: key,
105
+ type: undefined,
106
+ label: key,
107
+ }));
108
+ // Prepare data for table formatter
109
+ const displayRows = data.slice(0, maxDisplayRows);
110
+ const columnCount = allColumns.length;
111
+ // Format headers with type indicators
112
+ const headers = allColumns.map((col) => formatColumnHeader(col.label || col.name, col.type));
113
+ // Build column alignment map based on types
114
+ const alignment = buildColumnAlignmentMap(allColumns);
115
+ // Convert data rows to string arrays
116
+ const rows = displayRows.map((row) => allColumns.map((col) => {
117
+ const value = row[col.name];
118
+ if (value === null || value === undefined)
119
+ return null;
120
+ return String(value);
121
+ }));
122
+ // Format table with metadata tracking
123
+ const tableResult = tableFormatter.formatRawWithMetadata(headers, rows, {
124
+ style: tableFormat,
125
+ alignment,
126
+ nullReplacement: "-",
127
+ maxWidth: 50,
128
+ truncate: true,
129
+ });
130
+ // Add truncation notice if applicable
131
+ if (displayRows.length < rowCount) {
132
+ mdBuilder.alert("note", `Showing ${displayRows.length} of ${rowCount} rows. ${rowCount - displayRows.length} rows omitted.`);
133
+ }
134
+ // Results section
135
+ mdBuilder.h3("Results").raw(tableResult.table);
136
+ // NULL value summary (only if there are NULLs)
137
+ const nullCounts = tableResult.metadata.nullCounts;
138
+ const totalNulls = Object.values(nullCounts).reduce((sum, count) => sum + count, 0);
139
+ // Summary section
140
+ const summaryItems = [
141
+ `**Total rows**: ${rowCount}`,
142
+ `**Columns**: ${columnCount}`,
143
+ ];
144
+ if (metadata?.executionTime) {
145
+ summaryItems.push(`**Execution time**: ${metadata.executionTime}ms`);
146
+ }
147
+ if (totalNulls > 0) {
148
+ const nullDetails = Object.entries(nullCounts)
149
+ .filter(([, count]) => count > 0)
150
+ .map(([col, count]) => {
151
+ // Convert column index to name for display
152
+ const colIndex = parseInt(col);
153
+ const colName = isNaN(colIndex)
154
+ ? col
155
+ : allColumns[colIndex]?.name || col;
156
+ return `${colName} (${count})`;
157
+ })
158
+ .join(", ");
159
+ summaryItems.push(`**NULL values**: ${totalNulls} total - ${nullDetails}`);
160
+ }
161
+ if (metadata?.affectedRows !== undefined) {
162
+ summaryItems.push(`**Affected rows**: ${metadata.affectedRows}`);
163
+ }
164
+ if (metadata?.parameterCount) {
165
+ summaryItems.push(`**Parameters processed**: ${metadata.parameterCount}`);
166
+ }
167
+ mdBuilder.h3("Summary").list(summaryItems);
168
+ return [{ type: "text", text: mdBuilder.build() }];
169
+ };
170
+ /**
171
+ * Formats successful SQL tool output into a text block that highlights
172
+ * row counts and execution timing for quick operator feedback.
173
+ */
174
+ // Default formatter for successful responses (fallback)
175
+ export const defaultResponseFormatter = (result) => [
176
+ { type: "text", text: JSON.stringify(result, null, 2) },
177
+ ];
178
+ /**
179
+ * Creates an MCP-compatible handler from a declarative tool definition.
180
+ * Handles input validation, performance measurement, standardized error
181
+ * formatting, and context propagation.
182
+ */
183
+ export function createHandlerFromDefinition(definition) {
184
+ return async (rawParams, mcpContext) => {
185
+ const handlerContext = requestContextService.createRequestContext({
186
+ parentContext: mcpContext,
187
+ operation: `tool:${definition.name}`,
188
+ toolName: definition.name,
189
+ });
190
+ return withRequestContext(handlerContext, async () => {
191
+ try {
192
+ const validatedInput = definition.inputSchema.parse(rawParams ?? {});
193
+ const result = await measureToolExecution(definition.name, () => definition.logic(validatedInput, handlerContext), validatedInput);
194
+ const output = definition.outputSchema.parse(result);
195
+ const contentBlocks = definition.responseFormatter
196
+ ? definition.responseFormatter(output)
197
+ : defaultResponseFormatter(output);
198
+ return {
199
+ content: contentBlocks,
200
+ structuredContent: output,
201
+ };
202
+ }
203
+ catch (error) {
204
+ const capturedContext = getRequestContext() ?? handlerContext ?? undefined;
205
+ const handledError = ErrorHandler.handleError(error, {
206
+ operation: `tool:${definition.name}`,
207
+ context: capturedContext,
208
+ input: rawParams,
209
+ errorCode: error instanceof McpError ? error.code : undefined,
210
+ });
211
+ const mcpError = handledError instanceof McpError
212
+ ? handledError
213
+ : new McpError(JsonRpcErrorCode.InternalError, handledError instanceof Error
214
+ ? handledError.message
215
+ : String(handledError));
216
+ return {
217
+ isError: true,
218
+ content: [
219
+ {
220
+ type: "text",
221
+ text: `Error executing '${definition.name}': ${mcpError.message}`,
222
+ },
223
+ ],
224
+ structuredContent: {
225
+ success: false,
226
+ data: [],
227
+ error: mcpError.message,
228
+ errorCode: mcpError.code,
229
+ errorDetails: mcpError.details,
230
+ },
231
+ };
232
+ }
233
+ });
234
+ };
235
+ }
236
+ //# sourceMappingURL=toolDefinitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolDefinitions.js","sourceRoot":"","sources":["../../../../src/ibmi-mcp-server/utils/config/toolDefinitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * @fileoverview SQL execution engine for YAML-defined tools
3
+ * Processes SQL parameters and executes queries using SourceManager
4
+ *
5
+ * @module src/utils/yaml/yamlSqlExecutor
6
+ */
7
+ import { SourceManager } from "../../services/sourceManager.js";
8
+ import { SqlToolParameter, SqlToolSecurityConfig, SqlToolExecutionResult } from "../../schemas/index.js";
9
+ import { RequestContext } from "../../../utils/internal/requestContext.js";
10
+ /**
11
+ * SQL execution engine for YAML-defined tools
12
+ * Handles parameter binding and multi-source query execution
13
+ */
14
+ export declare class SQLToolFactory {
15
+ private static sourceManager;
16
+ /**
17
+ * Initialize the SQL executor with a source manager
18
+ * @param sourceManager - Source manager instance
19
+ */
20
+ static initialize(sourceManager: SourceManager): void;
21
+ /**
22
+ * Validate SQL statement for common issues
23
+ * @param statement - SQL statement to validate
24
+ * @param toolName - Tool name for error reporting
25
+ * @param context - Request context
26
+ * @private
27
+ */
28
+ static validateSqlStatement(statement: string, toolName: string, context: RequestContext): Promise<void>;
29
+ /**
30
+ * Execute a SQL statement with parameter binding
31
+ * @param toolName - Name of the tool
32
+ * @param sourceName - Source to execute against
33
+ * @param sqlStatement - SQL statement with parameter placeholders
34
+ * @param parameters - Parameters for processing
35
+ * @param parameterDefinitions - Parameter definitions for validation
36
+ * @param context - Request context (optional)
37
+ * @param securityConfig - Security configuration for validation (optional)
38
+ * @returns Execution result
39
+ */
40
+ static executeStatementWithParameters<T = Record<string, unknown>>(toolName: string, sourceName: string, sqlStatement: string, parameters: Record<string, unknown>, parameterDefinitions?: SqlToolParameter[], context?: RequestContext, securityConfig?: SqlToolSecurityConfig): Promise<SqlToolExecutionResult>;
41
+ /**
42
+ * Execute a query with auth-aware routing
43
+ * Routes to authenticated pools when IBM i tokens are present, otherwise uses source manager
44
+ * @param sql - Processed SQL statement
45
+ * @param parameters - Binding parameters
46
+ * @param sourceName - Source name for fallback routing
47
+ * @param context - Request context
48
+ * @param securityConfig - Optional security configuration
49
+ * @returns Query execution result
50
+ * @private
51
+ */
52
+ private static executeWithAuthRouting;
53
+ /**
54
+ * Get initialized state
55
+ * @returns Whether the executor is initialized
56
+ */
57
+ static isInitialized(): boolean;
58
+ /**
59
+ * Get the source manager instance (for testing)
60
+ * @returns Source manager instance
61
+ * @internal
62
+ */
63
+ static getSourceManager(): SourceManager | undefined;
64
+ }
65
+ //# sourceMappingURL=toolFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolFactory.d.ts","sourceRoot":"","sources":["../../../../src/ibmi-mcp-server/utils/config/toolFactory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAEL,cAAc,EACf,MAAM,oCAAoC,CAAC;AAM5C;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,aAAa,CAAgB;IAE5C;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAWrD;;;;;;OAMG;WACU,oBAAoB,CAC/B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC;IAsChB;;;;;;;;;;OAUG;WACU,8BAA8B,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrE,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,oBAAoB,GAAE,gBAAgB,EAAO,EAC7C,OAAO,CAAC,EAAE,cAAc,EACxB,cAAc,CAAC,EAAE,qBAAqB,GACrC,OAAO,CAAC,sBAAsB,CAAC;IAgLlC;;;;;;;;;;OAUG;mBACkB,sBAAsB;IAyD3C;;;OAGG;IACH,MAAM,CAAC,aAAa,IAAI,OAAO;IAI/B;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,IAAI,aAAa,GAAG,SAAS;CAGrD"}
@@ -0,0 +1,236 @@
1
+ /**
2
+ * @fileoverview SQL execution engine for YAML-defined tools
3
+ * Processes SQL parameters and executes queries using SourceManager
4
+ *
5
+ * @module src/utils/yaml/yamlSqlExecutor
6
+ */
7
+ import { AuthenticatedPoolManager } from "../../services/authenticatedPoolManager.js";
8
+ import { ErrorHandler, logger } from "../../../utils/internal/index.js";
9
+ import { requestContextService, } from "../../../utils/internal/requestContext.js";
10
+ import { JsonRpcErrorCode, McpError } from "../../../types-global/errors.js";
11
+ import { ParameterProcessor } from "../sql/parameterProcessor.js";
12
+ import { authContext } from "../../../mcp-server/transports/auth/index.js";
13
+ /**
14
+ * SQL execution engine for YAML-defined tools
15
+ * Handles parameter binding and multi-source query execution
16
+ */
17
+ export class SQLToolFactory {
18
+ static sourceManager;
19
+ /**
20
+ * Initialize the SQL executor with a source manager
21
+ * @param sourceManager - Source manager instance
22
+ */
23
+ static initialize(sourceManager) {
24
+ this.sourceManager = sourceManager;
25
+ logger.info({
26
+ requestId: "sql-executor-init",
27
+ timestamp: new Date().toISOString(),
28
+ }, "YAML SQL Executor initialized successfully");
29
+ }
30
+ /**
31
+ * Validate SQL statement for common issues
32
+ * @param statement - SQL statement to validate
33
+ * @param toolName - Tool name for error reporting
34
+ * @param context - Request context
35
+ * @private
36
+ */
37
+ static async validateSqlStatement(statement, toolName, context) {
38
+ logger.debug({
39
+ ...context,
40
+ statementLength: statement.length,
41
+ }, `Validating SQL statement for tool: ${toolName}`);
42
+ // Basic SQL validation
43
+ if (!statement?.trim()) {
44
+ throw new McpError(JsonRpcErrorCode.ValidationError, `SQL statement cannot be empty for tool: ${toolName}`, { toolName });
45
+ }
46
+ // Check for potential SQL injection patterns
47
+ const suspiciousPatterns = [
48
+ /;\s*(drop|delete|truncate|alter)\s+/i,
49
+ /union\s+select/i,
50
+ /exec\s*\(/i,
51
+ ];
52
+ for (const pattern of suspiciousPatterns) {
53
+ if (pattern.test(statement)) {
54
+ logger.warning({
55
+ ...context,
56
+ pattern: pattern.source,
57
+ }, `Potentially unsafe SQL pattern detected in tool: ${toolName}`);
58
+ }
59
+ }
60
+ }
61
+ /**
62
+ * Execute a SQL statement with parameter binding
63
+ * @param toolName - Name of the tool
64
+ * @param sourceName - Source to execute against
65
+ * @param sqlStatement - SQL statement with parameter placeholders
66
+ * @param parameters - Parameters for processing
67
+ * @param parameterDefinitions - Parameter definitions for validation
68
+ * @param context - Request context (optional)
69
+ * @param securityConfig - Security configuration for validation (optional)
70
+ * @returns Execution result
71
+ */
72
+ static async executeStatementWithParameters(toolName, sourceName, sqlStatement, parameters, parameterDefinitions = [], context, securityConfig) {
73
+ const operationContext = context ||
74
+ requestContextService.createRequestContext({
75
+ operation: "ExecuteYamlStatementWithParameters",
76
+ toolName,
77
+ sourceName,
78
+ });
79
+ const startTime = Date.now();
80
+ return ErrorHandler.tryCatch(async () => {
81
+ if (!this.sourceManager) {
82
+ throw new McpError(JsonRpcErrorCode.InternalError, "YAML SQL executor not initialized. Call YamlSqlExecutor.initialize() first.");
83
+ }
84
+ logger.debug({
85
+ ...operationContext,
86
+ sqlLength: sqlStatement.length,
87
+ parameterCount: Object.keys(parameters).length,
88
+ definitionCount: parameterDefinitions.length,
89
+ }, `Processing SQL statement with parameters for tool: ${toolName}`);
90
+ let processedSql;
91
+ let bindingParameters = [];
92
+ // Special handling for direct SQL substitution (e.g., execute_sql tool)
93
+ if (parameterDefinitions.length === 1 &&
94
+ parameterDefinitions[0] &&
95
+ sqlStatement.trim() === `:${parameterDefinitions[0].name}`) {
96
+ // This is a direct SQL substitution case (like execute_sql)
97
+ const paramName = parameterDefinitions[0].name;
98
+ if (paramName in parameters &&
99
+ typeof parameters[paramName] === "string") {
100
+ processedSql = parameters[paramName];
101
+ bindingParameters = [];
102
+ logger.debug({
103
+ ...operationContext,
104
+ originalStatement: sqlStatement,
105
+ substitutedSql: processedSql.substring(0, 100) +
106
+ (processedSql.length > 100 ? "..." : ""),
107
+ parameterName: paramName,
108
+ }, `Applied direct SQL substitution for tool: ${toolName}`);
109
+ }
110
+ else {
111
+ throw new McpError(JsonRpcErrorCode.ValidationError, `Missing or invalid SQL parameter '${paramName}' for direct substitution`, { paramName, toolName });
112
+ }
113
+ }
114
+ else if (parameterDefinitions.length > 0) {
115
+ // Process with unified parameter validation and binding
116
+ const result = await ParameterProcessor.process(sqlStatement, parameters, parameterDefinitions, {
117
+ detailedLogging: true,
118
+ validateSyntax: true,
119
+ context: operationContext,
120
+ strictTypeValidation: true,
121
+ });
122
+ processedSql = result.sql;
123
+ bindingParameters = result.parameters;
124
+ if (result.missingParameters.length > 0) {
125
+ logger.warning({
126
+ ...operationContext,
127
+ missingParameters: result.missingParameters,
128
+ }, `Missing parameters for tool ${toolName}`);
129
+ }
130
+ logger.debug({
131
+ ...operationContext,
132
+ mode: result.mode,
133
+ parameterCount: bindingParameters.length,
134
+ parametersUsed: result.parameterNames,
135
+ }, `SQL processed with parameter binding`);
136
+ }
137
+ else {
138
+ // No parameter definitions - use SQL as-is
139
+ processedSql = sqlStatement;
140
+ bindingParameters = [];
141
+ logger.debug({
142
+ ...operationContext,
143
+ sqlLength: sqlStatement.length,
144
+ }, `SQL used as-is (no parameters defined)`);
145
+ }
146
+ // Execute the query with auth-aware routing
147
+ const result = await this.executeWithAuthRouting(processedSql, bindingParameters, sourceName, operationContext, securityConfig);
148
+ const executionTime = Date.now() - startTime;
149
+ logger.debug({
150
+ ...operationContext,
151
+ executionTime,
152
+ rowCount: result.data?.length || 0,
153
+ success: result.success,
154
+ }, `SQL executed successfully for tool: ${toolName}`);
155
+ const simplifiedColumns = (result.metadata?.columns ?? []).map((column, index) => {
156
+ const record = column;
157
+ const name = record.name ?? record.label ?? `column_${index}`;
158
+ return {
159
+ name,
160
+ type: record.type,
161
+ label: record.label ?? record.name,
162
+ };
163
+ });
164
+ return {
165
+ data: result.data || [],
166
+ rowCount: result.data?.length || 0,
167
+ affectedRows: result.metadata
168
+ ?.affectedRows,
169
+ columns: simplifiedColumns,
170
+ executionTime,
171
+ parameterMetadata: {
172
+ mode: parameterDefinitions.length > 0 ? "parameters" : "none",
173
+ parameterCount: bindingParameters.length,
174
+ processedParameters: parameterDefinitions.map((p) => p.name),
175
+ },
176
+ };
177
+ }, {
178
+ operation: "ExecuteYamlStatementWithParameters",
179
+ context: operationContext,
180
+ errorCode: JsonRpcErrorCode.InternalError,
181
+ });
182
+ }
183
+ /**
184
+ * Execute a query with auth-aware routing
185
+ * Routes to authenticated pools when IBM i tokens are present, otherwise uses source manager
186
+ * @param sql - Processed SQL statement
187
+ * @param parameters - Binding parameters
188
+ * @param sourceName - Source name for fallback routing
189
+ * @param context - Request context
190
+ * @param securityConfig - Optional security configuration
191
+ * @returns Query execution result
192
+ * @private
193
+ */
194
+ static async executeWithAuthRouting(sql, parameters, sourceName, context, securityConfig) {
195
+ // Check for IBM i authentication context
196
+ const authInfo = authContext.getStore()?.authInfo;
197
+ if (authInfo?.ibmiToken) {
198
+ // Use authenticated pool manager when IBM i token is present
199
+ logger.debug({
200
+ ...context,
201
+ authClientId: authInfo.clientId,
202
+ ibmiHost: authInfo.ibmiHost,
203
+ routingMode: "authenticated",
204
+ }, "Executing SQL via authenticated pool");
205
+ const poolManager = AuthenticatedPoolManager.getInstance();
206
+ return poolManager.executeQuery(authInfo.ibmiToken, sql, parameters, context);
207
+ }
208
+ else {
209
+ // Fall back to regular source manager (environment credentials)
210
+ logger.debug({
211
+ ...context,
212
+ sourceName,
213
+ routingMode: "environment",
214
+ }, "Executing SQL via source manager");
215
+ return securityConfig
216
+ ? this.sourceManager.executeQuery(sourceName, sql, parameters, context, securityConfig)
217
+ : this.sourceManager.executeQuery(sourceName, sql, parameters, context);
218
+ }
219
+ }
220
+ /**
221
+ * Get initialized state
222
+ * @returns Whether the executor is initialized
223
+ */
224
+ static isInitialized() {
225
+ return !!this.sourceManager;
226
+ }
227
+ /**
228
+ * Get the source manager instance (for testing)
229
+ * @returns Source manager instance
230
+ * @internal
231
+ */
232
+ static getSourceManager() {
233
+ return this.sourceManager;
234
+ }
235
+ }
236
+ //# sourceMappingURL=toolFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolFactory.js","sourceRoot":"","sources":["../../../../src/ibmi-mcp-server/utils/config/toolFactory.ts"],"names":[],"mappings":"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"}