@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
package/README.md ADDED
@@ -0,0 +1,88 @@
1
+ # IBM i MCP Server
2
+
3
+ The Model Context Protocol (MCP) server for IBM i systems.
4
+
5
+ ## Quick Start
6
+
7
+ ```bash
8
+ # Install dependencies
9
+ npm install
10
+
11
+ # Build
12
+ npm run build
13
+
14
+ # Run server (HTTP mode)
15
+ npm run start:http
16
+
17
+ # Run server (stdio mode)
18
+ npm run start:stdio
19
+
20
+ # Run tests
21
+ npm test
22
+ ```
23
+
24
+ ## Configuration
25
+
26
+ Create a `.env` file in the **root of the monorepo** (parent directory):
27
+
28
+ ```bash
29
+ cp ../.env.example ../.env
30
+ ```
31
+
32
+ The server will automatically detect configuration in:
33
+
34
+ 1. Current working directory (for production deployments)
35
+ 2. Parent directory (for monorepo development)
36
+ 3. Server directory (for local overrides)
37
+
38
+ ## Tool Configuration
39
+
40
+ By default, the server loads SQL tools from `../tools/`. Override with:
41
+
42
+ ```bash
43
+ TOOLS_YAML_PATH=../tools npm run start:http
44
+ ```
45
+
46
+ Or set in your `.env` file:
47
+
48
+ ```ini
49
+ TOOLS_YAML_PATH=tools
50
+ ```
51
+
52
+ ## Documentation
53
+
54
+ See the [root README](../README.md) for complete documentation and deployment guides.
55
+
56
+ ## Development
57
+
58
+ This is the main server package within the monorepo. All server development happens here.
59
+
60
+ - **Source**: `src/`
61
+ - **Tests**: `tests/`
62
+ - **Scripts**: `scripts/`
63
+ - **Build Output**: `dist/`
64
+
65
+ ### Available Scripts
66
+
67
+ - `npm run build` - Build the server
68
+ - `npm run rebuild` - Clean and rebuild
69
+ - `npm run start:http` - Start in HTTP mode
70
+ - `npm run start:stdio` - Start in stdio mode
71
+ - `npm test` - Run tests
72
+ - `npm run test:watch` - Run tests in watch mode
73
+ - `npm run test:coverage` - Run tests with coverage
74
+ - `npm run lint` - Lint code
75
+ - `npm run format` - Format code with Prettier
76
+ - `npm run validate` - Validate tool configurations
77
+
78
+ ### Architecture
79
+
80
+ See [CLAUDE.md](../CLAUDE.md) for architectural standards and development guidelines.
81
+
82
+ ## Monorepo Structure
83
+
84
+ This server is part of a monorepo:
85
+
86
+ - `../tools/` - SQL tool YAML configurations
87
+ - `../agents/` - Agent implementations and examples
88
+ - `../apps/` - Deployment configurations (Docker, Gateway, n8n)
@@ -0,0 +1,100 @@
1
+ /**
2
+ * @fileoverview Loads, validates, and exports application configuration.
3
+ * This module centralizes configuration management, sourcing values from
4
+ * environment variables and `package.json`. It uses Zod for schema validation
5
+ * to ensure type safety and correctness of configuration parameters.
6
+ *
7
+ * @module src/config/index
8
+ */
9
+ export declare const config: {
10
+ pkg: {
11
+ name: string;
12
+ version: string;
13
+ };
14
+ mcpServerName: string;
15
+ mcpServerVersion: string;
16
+ logLevel: string;
17
+ logsPath: string | null;
18
+ environment: string;
19
+ mcpTransportType: "stdio" | "http";
20
+ mcpSessionMode: "stateless" | "stateful" | "auto";
21
+ mcpHttpPort: number;
22
+ mcpHttpHost: string;
23
+ mcpHttpEndpointPath: string;
24
+ mcpHttpMaxPortRetries: number;
25
+ mcpHttpPortRetryDelayMs: number;
26
+ mcpStatefulSessionStaleTimeoutMs: number;
27
+ mcpAllowedOrigins: string[] | undefined;
28
+ mcpAuthSecretKey: string | undefined;
29
+ mcpAuthMode: "jwt" | "oauth" | "ibmi" | "none";
30
+ oauthIssuerUrl: string | undefined;
31
+ oauthJwksUri: string | undefined;
32
+ oauthAudience: string | undefined;
33
+ devMcpClientId: string | undefined;
34
+ devMcpScopes: string[] | undefined;
35
+ openrouterAppUrl: string;
36
+ openrouterAppName: string;
37
+ openrouterApiKey: string | undefined;
38
+ llmDefaultModel: string;
39
+ llmDefaultTemperature: number | undefined;
40
+ llmDefaultTopP: number | undefined;
41
+ llmDefaultMaxTokens: number | undefined;
42
+ llmDefaultTopK: number | undefined;
43
+ llmDefaultMinP: number | undefined;
44
+ oauthProxy: {
45
+ authorizationUrl: string | undefined;
46
+ tokenUrl: string | undefined;
47
+ revocationUrl: string | undefined;
48
+ issuerUrl: string | undefined;
49
+ serviceDocumentationUrl: string | undefined;
50
+ defaultClientRedirectUris: string[] | undefined;
51
+ } | undefined;
52
+ supabase: {
53
+ url: string;
54
+ anonKey: string;
55
+ serviceRoleKey: string | undefined;
56
+ } | undefined;
57
+ openTelemetry: {
58
+ enabled: boolean;
59
+ serviceName: string;
60
+ serviceVersion: string;
61
+ tracesEndpoint: string | undefined;
62
+ metricsEndpoint: string | undefined;
63
+ samplingRatio: number;
64
+ logLevel: "NONE" | "ERROR" | "WARN" | "INFO" | "DEBUG" | "VERBOSE" | "ALL";
65
+ };
66
+ /** IBM i DB2 configuration. Undefined if no related env vars are set. */
67
+ db2i: {
68
+ host: string;
69
+ user: string;
70
+ password: string;
71
+ ignoreUnauthorized: boolean;
72
+ } | undefined;
73
+ /** Path to YAML tools configuration file. From `TOOLS_YAML_PATH`. */
74
+ toolsYamlPath: string | undefined;
75
+ /** YAML configuration merge options. From `YAML_MERGE_*` environment variables. */
76
+ yamlMergeOptions: {
77
+ mergeArrays: boolean;
78
+ allowDuplicateTools: boolean;
79
+ allowDuplicateSources: boolean;
80
+ validateMerged: boolean;
81
+ };
82
+ /** IBM i HTTP Authentication configuration. From `IBMI_AUTH_*` environment variables. */
83
+ ibmiHttpAuth: {
84
+ enabled: boolean;
85
+ allowHttp: boolean;
86
+ tokenExpirySeconds: number;
87
+ cleanupIntervalSeconds: number;
88
+ maxConcurrentSessions: number;
89
+ privateKeyPath: string | undefined;
90
+ publicKeyPath: string | undefined;
91
+ keyId: string | undefined;
92
+ };
93
+ /** Enable automatic reloading of YAML tools when configuration files change. From `YAML_AUTO_RELOAD`. Default: true. */
94
+ yamlAutoReload: boolean;
95
+ /** Selected toolsets for filtering tools. Set via CLI --toolsets option or SELECTED_TOOLSETS environment variable. */
96
+ selectedToolsets: string[] | undefined;
97
+ };
98
+ export declare const logLevel: string;
99
+ export declare const environment: string;
100
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAuYH,eAAO,MAAM,MAAM;;cAxTiB,MAAM;iBAAW,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgYzD,yEAAyE;;;;;;;IAWzE,qEAAqE;;IAGrE,mFAAmF;;;;;;;IAQnF,yFAAyF;;;;;;;;;;;IAYzF,wHAAwH;;IAGxH,sHAAsH;sBAGhG,MAAM,EAAE,GAAG,SAAS;CAC3C,CAAC;AAqBF,eAAO,MAAM,QAAQ,EAAE,MAAwB,CAAC;AAChD,eAAO,MAAM,WAAW,EAAE,MAA2B,CAAC"}
@@ -0,0 +1,463 @@
1
+ /**
2
+ * @fileoverview Loads, validates, and exports application configuration.
3
+ * This module centralizes configuration management, sourcing values from
4
+ * environment variables and `package.json`. It uses Zod for schema validation
5
+ * to ensure type safety and correctness of configuration parameters.
6
+ *
7
+ * @module src/config/index
8
+ */
9
+ import dotenv from "dotenv";
10
+ import { existsSync, mkdirSync, readFileSync, statSync } from "fs";
11
+ import path, { dirname, join } from "path";
12
+ import { fileURLToPath } from "url";
13
+ import { z } from "zod";
14
+ // Load .env from multiple possible locations for monorepo flexibility
15
+ // Priority order: current working directory > parent directory > server directory
16
+ const envLocations = [
17
+ // 1. Current working directory (for production/user deployment)
18
+ path.resolve(process.cwd(), ".env"),
19
+ // 2. Parent directory (for monorepo development)
20
+ path.resolve(process.cwd(), "../.env"),
21
+ // 3. Two levels up (if running from dist/)
22
+ path.resolve(process.cwd(), "../../.env"),
23
+ ];
24
+ // Load from first location that exists
25
+ let envLoaded = false;
26
+ for (const envPath of envLocations) {
27
+ if (existsSync(envPath)) {
28
+ dotenv.config({ path: envPath });
29
+ envLoaded = true;
30
+ if (process.stdout.isTTY && process.env.MCP_LOG_LEVEL === "debug") {
31
+ console.log(`Loaded .env from: ${envPath}`);
32
+ }
33
+ break;
34
+ }
35
+ }
36
+ // Fallback: try default dotenv behavior (looks in cwd)
37
+ if (!envLoaded) {
38
+ dotenv.config();
39
+ }
40
+ // --- Determine Project Root ---
41
+ const findProjectRoot = (startDir) => {
42
+ let currentDir = startDir;
43
+ // If the start directory is in `dist`, start searching from the parent directory.
44
+ if (path.basename(currentDir) === "dist") {
45
+ currentDir = path.dirname(currentDir);
46
+ }
47
+ while (true) {
48
+ const packageJsonPath = join(currentDir, "package.json");
49
+ if (existsSync(packageJsonPath)) {
50
+ return currentDir;
51
+ }
52
+ const parentDir = dirname(currentDir);
53
+ if (parentDir === currentDir) {
54
+ throw new Error(`Could not find project root (package.json) starting from ${startDir}`);
55
+ }
56
+ currentDir = parentDir;
57
+ }
58
+ };
59
+ let projectRoot;
60
+ try {
61
+ const currentModuleDir = dirname(fileURLToPath(import.meta.url));
62
+ projectRoot = findProjectRoot(currentModuleDir);
63
+ }
64
+ catch (error) {
65
+ const errorMessage = error instanceof Error ? error.message : String(error);
66
+ console.error(`FATAL: Error determining project root: ${errorMessage}`);
67
+ projectRoot = process.cwd();
68
+ if (process.stdout.isTTY) {
69
+ console.warn(`Warning: Using process.cwd() (${projectRoot}) as fallback project root.`);
70
+ }
71
+ }
72
+ // --- End Determine Project Root ---
73
+ /**
74
+ * Loads and parses the package.json file from the project root.
75
+ * @returns The parsed package.json object or a fallback default.
76
+ * @private
77
+ */
78
+ const loadPackageJson = () => {
79
+ const pkgPath = join(projectRoot, "package.json");
80
+ const fallback = { name: "ibmi-mcp-server", version: "1.0.0" };
81
+ if (!existsSync(pkgPath)) {
82
+ if (process.stdout.isTTY) {
83
+ console.warn(`Warning: package.json not found at ${pkgPath}. Using fallback values. This is expected in some environments (e.g., Docker) but may indicate an issue with project root detection.`);
84
+ }
85
+ return fallback;
86
+ }
87
+ try {
88
+ const fileContents = readFileSync(pkgPath, "utf-8");
89
+ const parsed = JSON.parse(fileContents);
90
+ return {
91
+ name: typeof parsed.name === "string" ? parsed.name : fallback.name,
92
+ version: typeof parsed.version === "string" ? parsed.version : fallback.version,
93
+ };
94
+ }
95
+ catch (error) {
96
+ if (process.stdout.isTTY) {
97
+ console.error("Warning: Could not read or parse package.json. Using hardcoded defaults.", error);
98
+ }
99
+ return fallback;
100
+ }
101
+ };
102
+ const pkg = loadPackageJson();
103
+ const EnvSchema = z.object({
104
+ // --- Existing MCP and other variables ---
105
+ MCP_SERVER_NAME: z.string().optional(),
106
+ MCP_SERVER_VERSION: z.string().optional(),
107
+ MCP_LOG_LEVEL: z.string().default("debug"),
108
+ LOGS_DIR: z.string().default(path.join(projectRoot, "logs")),
109
+ NODE_ENV: z.string().default("development"),
110
+ MCP_TRANSPORT_TYPE: z.enum(["stdio", "http"]).default("stdio"),
111
+ MCP_SESSION_MODE: z.enum(["stateless", "stateful", "auto"]).default("auto"),
112
+ MCP_HTTP_PORT: z.coerce.number().int().positive().default(3010),
113
+ MCP_HTTP_HOST: z.string().default("127.0.0.1"),
114
+ MCP_HTTP_ENDPOINT_PATH: z.string().default("/mcp"),
115
+ MCP_HTTP_MAX_PORT_RETRIES: z.coerce.number().int().nonnegative().default(15),
116
+ MCP_HTTP_PORT_RETRY_DELAY_MS: z.coerce
117
+ .number()
118
+ .int()
119
+ .nonnegative()
120
+ .default(50),
121
+ MCP_STATEFUL_SESSION_STALE_TIMEOUT_MS: z.coerce
122
+ .number()
123
+ .int()
124
+ .positive()
125
+ .default(1_800_000),
126
+ MCP_ALLOWED_ORIGINS: z.string().optional(),
127
+ MCP_AUTH_SECRET_KEY: z
128
+ .string()
129
+ .min(32, "MCP_AUTH_SECRET_KEY must be at least 32 characters long for security reasons.")
130
+ .optional(),
131
+ MCP_AUTH_MODE: z.enum(["jwt", "oauth", "ibmi", "none"]).default("none"),
132
+ OAUTH_ISSUER_URL: z.string().url().optional(),
133
+ OAUTH_JWKS_URI: z.string().url().optional(),
134
+ OAUTH_AUDIENCE: z.string().optional(),
135
+ DEV_MCP_CLIENT_ID: z.string().optional(),
136
+ DEV_MCP_SCOPES: z.string().optional(),
137
+ OPENROUTER_APP_URL: z
138
+ .string()
139
+ .url("OPENROUTER_APP_URL must be a valid URL (e.g., http://localhost:3000)")
140
+ .optional(),
141
+ OPENROUTER_APP_NAME: z.string().optional(),
142
+ OPENROUTER_API_KEY: z.string().optional(),
143
+ LLM_DEFAULT_MODEL: z.string().default("google/gemini-2.5-flash"),
144
+ LLM_DEFAULT_TEMPERATURE: z.coerce.number().min(0).max(2).optional(),
145
+ LLM_DEFAULT_TOP_P: z.coerce.number().min(0).max(1).optional(),
146
+ LLM_DEFAULT_MAX_TOKENS: z.coerce.number().int().positive().optional(),
147
+ LLM_DEFAULT_TOP_K: z.coerce.number().int().nonnegative().optional(),
148
+ LLM_DEFAULT_MIN_P: z.coerce.number().min(0).max(1).optional(),
149
+ OAUTH_PROXY_AUTHORIZATION_URL: z
150
+ .string()
151
+ .url("OAUTH_PROXY_AUTHORIZATION_URL must be a valid URL.")
152
+ .optional(),
153
+ OAUTH_PROXY_TOKEN_URL: z
154
+ .string()
155
+ .url("OAUTH_PROXY_TOKEN_URL must be a valid URL.")
156
+ .optional(),
157
+ OAUTH_PROXY_REVOCATION_URL: z
158
+ .string()
159
+ .url("OAUTH_PROXY_REVOCATION_URL must be a valid URL.")
160
+ .optional(),
161
+ OAUTH_PROXY_ISSUER_URL: z
162
+ .string()
163
+ .url("OAUTH_PROXY_ISSUER_URL must be a valid URL.")
164
+ .optional(),
165
+ OAUTH_PROXY_SERVICE_DOCUMENTATION_URL: z
166
+ .string()
167
+ .url("OAUTH_PROXY_SERVICE_DOCUMENTATION_URL must be a valid URL.")
168
+ .optional(),
169
+ OAUTH_PROXY_DEFAULT_CLIENT_REDIRECT_URIS: z.string().optional(),
170
+ SUPABASE_URL: z.string().url("SUPABASE_URL must be a valid URL.").optional(),
171
+ SUPABASE_ANON_KEY: z.string().optional(),
172
+ SUPABASE_SERVICE_ROLE_KEY: z.string().optional(),
173
+ // --- START: OpenTelemetry Configuration ---
174
+ /** If 'true', OpenTelemetry will be initialized and enabled. Default: 'false'. */
175
+ OTEL_ENABLED: z
176
+ .string()
177
+ .transform((v) => v.toLowerCase() === "true")
178
+ .default("false"),
179
+ /** The logical name of the service. Defaults to MCP_SERVER_NAME or package name. */
180
+ OTEL_SERVICE_NAME: z.string().optional(),
181
+ /** The version of the service. Defaults to MCP_SERVER_VERSION or package version. */
182
+ OTEL_SERVICE_VERSION: z.string().optional(),
183
+ /** The OTLP endpoint for traces. If not set, traces are logged to a file in development. */
184
+ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: z.string().url().optional(),
185
+ /** The OTLP endpoint for metrics. If not set, metrics are not exported. */
186
+ OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: z.string().url().optional(),
187
+ /** Sampling ratio for traces (0.0 to 1.0). 1.0 means sample all. Default: 1.0 */
188
+ OTEL_TRACES_SAMPLER_ARG: z.coerce.number().min(0).max(1).default(1.0),
189
+ /** Log level for OpenTelemetry's internal diagnostic logger. Default: "INFO". */
190
+ OTEL_LOG_LEVEL: z
191
+ .enum(["NONE", "ERROR", "WARN", "INFO", "DEBUG", "VERBOSE", "ALL"])
192
+ .default("INFO"),
193
+ /** IBM i Mapepire daemon server host. From `DB2i_HOST`. */
194
+ DB2i_HOST: z
195
+ .string()
196
+ .min(1, "DB2i_HOST is required for IBM i connections.")
197
+ .optional(),
198
+ /** IBM i DB2 user name. From `DB2i_USER`. */
199
+ DB2i_USER: z
200
+ .string()
201
+ .min(1, "DB2i_USER is required for IBM i connections.")
202
+ .optional(),
203
+ /** IBM i DB2 password. From `DB2i_PASS`. */
204
+ DB2i_PASS: z
205
+ .string()
206
+ .min(1, "DB2i_PASS is required for IBM i connections.")
207
+ .optional(),
208
+ /** Ignore unauthorized SSL certificates for Mapepire. From `DB2i_IGNORE_UNAUTHORIZED`. Default: true. */
209
+ DB2i_IGNORE_UNAUTHORIZED: z
210
+ .string()
211
+ .optional()
212
+ .default("true")
213
+ .transform((val) => val === "true" || val === "1"),
214
+ /** Path to YAML tools configuration file. From `TOOLS_YAML_PATH`. */
215
+ TOOLS_YAML_PATH: z
216
+ .string()
217
+ .min(1, "TOOLS_YAML_PATH is required for YAML-based tools.")
218
+ .optional(),
219
+ /** YAML merge options configuration. From `YAML_MERGE_*` environment variables. */
220
+ YAML_MERGE_ARRAYS: z
221
+ .string()
222
+ .optional()
223
+ .default("true")
224
+ .transform((val) => val === "true"),
225
+ YAML_ALLOW_DUPLICATE_TOOLS: z
226
+ .string()
227
+ .optional()
228
+ .default("false")
229
+ .transform((val) => val === "true"),
230
+ YAML_ALLOW_DUPLICATE_SOURCES: z
231
+ .string()
232
+ .optional()
233
+ .default("false")
234
+ .transform((val) => val === "true"),
235
+ YAML_VALIDATE_MERGED: z
236
+ .string()
237
+ .optional()
238
+ .default("true")
239
+ .transform((val) => val === "true"),
240
+ /** IBM i HTTP Authentication configuration. From `IBMI_AUTH_*` environment variables. */
241
+ IBMI_HTTP_AUTH_ENABLED: z
242
+ .string()
243
+ .optional()
244
+ .default("false")
245
+ .transform((val) => val === "true" || val === "1"),
246
+ IBMI_AUTH_ALLOW_HTTP: z
247
+ .string()
248
+ .optional()
249
+ .default("false")
250
+ .transform((val) => val === "true" || val === "1"),
251
+ IBMI_AUTH_TOKEN_EXPIRY_SECONDS: z.coerce
252
+ .number()
253
+ .int()
254
+ .positive()
255
+ .default(3600),
256
+ IBMI_AUTH_CLEANUP_INTERVAL_SECONDS: z.coerce
257
+ .number()
258
+ .int()
259
+ .positive()
260
+ .default(300),
261
+ IBMI_AUTH_MAX_CONCURRENT_SESSIONS: z.coerce
262
+ .number()
263
+ .int()
264
+ .positive()
265
+ .default(100),
266
+ IBMI_AUTH_PRIVATE_KEY_PATH: z.string().min(1).optional(),
267
+ IBMI_AUTH_PUBLIC_KEY_PATH: z.string().min(1).optional(),
268
+ IBMI_AUTH_KEY_ID: z.string().min(1).optional(),
269
+ /** Enable automatic reloading of YAML tools when configuration files change. From `YAML_AUTO_RELOAD`. Default: true. */
270
+ YAML_AUTO_RELOAD: z
271
+ .string()
272
+ .optional()
273
+ .default("true")
274
+ .transform((val) => val === "true" || val === "1"),
275
+ SELECTED_TOOLSETS: z.string().optional(),
276
+ });
277
+ const parsedEnv = EnvSchema.safeParse(process.env);
278
+ if (!parsedEnv.success) {
279
+ if (process.stdout.isTTY) {
280
+ console.error("❌ Invalid environment variables found:", parsedEnv.error.flatten().fieldErrors);
281
+ }
282
+ }
283
+ const env = parsedEnv.success ? parsedEnv.data : EnvSchema.parse({});
284
+ const ensureDirectory = (dirPath, rootDir, dirName) => {
285
+ const resolvedDirPath = path.isAbsolute(dirPath)
286
+ ? dirPath
287
+ : path.resolve(rootDir, dirPath);
288
+ if (!resolvedDirPath.startsWith(rootDir + path.sep) &&
289
+ resolvedDirPath !== rootDir) {
290
+ if (process.stdout.isTTY) {
291
+ console.error(`Error: ${dirName} path "${dirPath}" resolves to "${resolvedDirPath}", which is outside the project boundary "${rootDir}".`);
292
+ }
293
+ return null;
294
+ }
295
+ if (!existsSync(resolvedDirPath)) {
296
+ try {
297
+ mkdirSync(resolvedDirPath, { recursive: true });
298
+ if (process.stdout.isTTY) {
299
+ console.log(`Created ${dirName} directory: ${resolvedDirPath}`);
300
+ }
301
+ }
302
+ catch (err) {
303
+ const errorMessage = err instanceof Error ? err.message : String(err);
304
+ if (process.stdout.isTTY) {
305
+ console.error(`Error creating ${dirName} directory at ${resolvedDirPath}: ${errorMessage}`);
306
+ }
307
+ return null;
308
+ }
309
+ }
310
+ else {
311
+ try {
312
+ const stats = statSync(resolvedDirPath);
313
+ if (!stats.isDirectory()) {
314
+ if (process.stdout.isTTY) {
315
+ console.error(`Error: ${dirName} path ${resolvedDirPath} exists but is not a directory.`);
316
+ }
317
+ return null;
318
+ }
319
+ }
320
+ catch (statError) {
321
+ if (process.stdout.isTTY) {
322
+ const statErrorMessage = statError instanceof Error ? statError.message : String(statError);
323
+ console.error(`Error accessing ${dirName} path ${resolvedDirPath}: ${statErrorMessage}`);
324
+ }
325
+ return null;
326
+ }
327
+ }
328
+ return resolvedDirPath;
329
+ };
330
+ let validatedLogsPath = ensureDirectory(env.LOGS_DIR, projectRoot, "logs");
331
+ if (!validatedLogsPath) {
332
+ if (process.stdout.isTTY) {
333
+ console.warn(`Warning: Custom logs directory ('${env.LOGS_DIR}') is invalid or outside the project boundary. Falling back to default.`);
334
+ }
335
+ const defaultLogsDir = path.join(projectRoot, "logs");
336
+ validatedLogsPath = ensureDirectory(defaultLogsDir, projectRoot, "logs");
337
+ if (!validatedLogsPath) {
338
+ if (process.stdout.isTTY) {
339
+ console.warn("Warning: Default logs directory could not be created. File logging will be disabled.");
340
+ }
341
+ }
342
+ }
343
+ export const config = {
344
+ pkg,
345
+ mcpServerName: env.MCP_SERVER_NAME || pkg.name,
346
+ mcpServerVersion: env.MCP_SERVER_VERSION || pkg.version,
347
+ logLevel: env.MCP_LOG_LEVEL,
348
+ logsPath: validatedLogsPath,
349
+ environment: env.NODE_ENV,
350
+ mcpTransportType: env.MCP_TRANSPORT_TYPE,
351
+ mcpSessionMode: env.MCP_SESSION_MODE,
352
+ mcpHttpPort: env.MCP_HTTP_PORT,
353
+ mcpHttpHost: env.MCP_HTTP_HOST,
354
+ mcpHttpEndpointPath: env.MCP_HTTP_ENDPOINT_PATH,
355
+ mcpHttpMaxPortRetries: env.MCP_HTTP_MAX_PORT_RETRIES,
356
+ mcpHttpPortRetryDelayMs: env.MCP_HTTP_PORT_RETRY_DELAY_MS,
357
+ mcpStatefulSessionStaleTimeoutMs: env.MCP_STATEFUL_SESSION_STALE_TIMEOUT_MS,
358
+ mcpAllowedOrigins: env.MCP_ALLOWED_ORIGINS?.split(",")
359
+ .map((origin) => origin.trim())
360
+ .filter(Boolean),
361
+ mcpAuthSecretKey: env.MCP_AUTH_SECRET_KEY,
362
+ mcpAuthMode: env.MCP_AUTH_MODE,
363
+ oauthIssuerUrl: env.OAUTH_ISSUER_URL,
364
+ oauthJwksUri: env.OAUTH_JWKS_URI,
365
+ oauthAudience: env.OAUTH_AUDIENCE,
366
+ devMcpClientId: env.DEV_MCP_CLIENT_ID,
367
+ devMcpScopes: env.DEV_MCP_SCOPES?.split(",").map((s) => s.trim()),
368
+ openrouterAppUrl: env.OPENROUTER_APP_URL || "http://localhost:3000",
369
+ openrouterAppName: env.OPENROUTER_APP_NAME || pkg.name || "ibmi-mcp-server",
370
+ openrouterApiKey: env.OPENROUTER_API_KEY,
371
+ llmDefaultModel: env.LLM_DEFAULT_MODEL,
372
+ llmDefaultTemperature: env.LLM_DEFAULT_TEMPERATURE,
373
+ llmDefaultTopP: env.LLM_DEFAULT_TOP_P,
374
+ llmDefaultMaxTokens: env.LLM_DEFAULT_MAX_TOKENS,
375
+ llmDefaultTopK: env.LLM_DEFAULT_TOP_K,
376
+ llmDefaultMinP: env.LLM_DEFAULT_MIN_P,
377
+ oauthProxy: env.OAUTH_PROXY_AUTHORIZATION_URL ||
378
+ env.OAUTH_PROXY_TOKEN_URL ||
379
+ env.OAUTH_PROXY_REVOCATION_URL ||
380
+ env.OAUTH_PROXY_ISSUER_URL ||
381
+ env.OAUTH_PROXY_SERVICE_DOCUMENTATION_URL ||
382
+ env.OAUTH_PROXY_DEFAULT_CLIENT_REDIRECT_URIS
383
+ ? {
384
+ authorizationUrl: env.OAUTH_PROXY_AUTHORIZATION_URL,
385
+ tokenUrl: env.OAUTH_PROXY_TOKEN_URL,
386
+ revocationUrl: env.OAUTH_PROXY_REVOCATION_URL,
387
+ issuerUrl: env.OAUTH_PROXY_ISSUER_URL,
388
+ serviceDocumentationUrl: env.OAUTH_PROXY_SERVICE_DOCUMENTATION_URL,
389
+ defaultClientRedirectUris: env.OAUTH_PROXY_DEFAULT_CLIENT_REDIRECT_URIS?.split(",")
390
+ .map((uri) => uri.trim())
391
+ .filter(Boolean),
392
+ }
393
+ : undefined,
394
+ supabase: env.SUPABASE_URL && env.SUPABASE_ANON_KEY
395
+ ? {
396
+ url: env.SUPABASE_URL,
397
+ anonKey: env.SUPABASE_ANON_KEY,
398
+ serviceRoleKey: env.SUPABASE_SERVICE_ROLE_KEY,
399
+ }
400
+ : undefined,
401
+ openTelemetry: {
402
+ enabled: env.OTEL_ENABLED,
403
+ serviceName: env.OTEL_SERVICE_NAME || env.MCP_SERVER_NAME || pkg.name,
404
+ serviceVersion: env.OTEL_SERVICE_VERSION || env.MCP_SERVER_VERSION || pkg.version,
405
+ tracesEndpoint: env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,
406
+ metricsEndpoint: env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT,
407
+ samplingRatio: env.OTEL_TRACES_SAMPLER_ARG,
408
+ logLevel: env.OTEL_LOG_LEVEL,
409
+ },
410
+ /** IBM i DB2 configuration. Undefined if no related env vars are set. */
411
+ db2i: env.DB2i_HOST && env.DB2i_USER && env.DB2i_PASS
412
+ ? {
413
+ host: env.DB2i_HOST,
414
+ user: env.DB2i_USER,
415
+ password: env.DB2i_PASS,
416
+ ignoreUnauthorized: env.DB2i_IGNORE_UNAUTHORIZED,
417
+ }
418
+ : undefined,
419
+ /** Path to YAML tools configuration file. From `TOOLS_YAML_PATH`. */
420
+ toolsYamlPath: env.TOOLS_YAML_PATH,
421
+ /** YAML configuration merge options. From `YAML_MERGE_*` environment variables. */
422
+ yamlMergeOptions: {
423
+ mergeArrays: env.YAML_MERGE_ARRAYS,
424
+ allowDuplicateTools: env.YAML_ALLOW_DUPLICATE_TOOLS,
425
+ allowDuplicateSources: env.YAML_ALLOW_DUPLICATE_SOURCES,
426
+ validateMerged: env.YAML_VALIDATE_MERGED,
427
+ },
428
+ /** IBM i HTTP Authentication configuration. From `IBMI_AUTH_*` environment variables. */
429
+ ibmiHttpAuth: {
430
+ enabled: env.IBMI_HTTP_AUTH_ENABLED,
431
+ allowHttp: env.IBMI_AUTH_ALLOW_HTTP,
432
+ tokenExpirySeconds: env.IBMI_AUTH_TOKEN_EXPIRY_SECONDS,
433
+ cleanupIntervalSeconds: env.IBMI_AUTH_CLEANUP_INTERVAL_SECONDS,
434
+ maxConcurrentSessions: env.IBMI_AUTH_MAX_CONCURRENT_SESSIONS,
435
+ privateKeyPath: env.IBMI_AUTH_PRIVATE_KEY_PATH,
436
+ publicKeyPath: env.IBMI_AUTH_PUBLIC_KEY_PATH,
437
+ keyId: env.IBMI_AUTH_KEY_ID,
438
+ },
439
+ /** Enable automatic reloading of YAML tools when configuration files change. From `YAML_AUTO_RELOAD`. Default: true. */
440
+ yamlAutoReload: env.YAML_AUTO_RELOAD,
441
+ /** Selected toolsets for filtering tools. Set via CLI --toolsets option or SELECTED_TOOLSETS environment variable. */
442
+ selectedToolsets: env.SELECTED_TOOLSETS?.split(",")
443
+ .map((ts) => ts.trim())
444
+ .filter(Boolean),
445
+ };
446
+ if (config.ibmiHttpAuth.enabled) {
447
+ const missing = [];
448
+ if (!config.ibmiHttpAuth.privateKeyPath) {
449
+ missing.push("IBMI_AUTH_PRIVATE_KEY_PATH");
450
+ }
451
+ if (!config.ibmiHttpAuth.publicKeyPath) {
452
+ missing.push("IBMI_AUTH_PUBLIC_KEY_PATH");
453
+ }
454
+ if (!config.ibmiHttpAuth.keyId) {
455
+ missing.push("IBMI_AUTH_KEY_ID");
456
+ }
457
+ if (missing.length > 0) {
458
+ throw new Error(`IBM i HTTP auth is enabled but missing required key configuration: ${missing.join(", ")}`);
459
+ }
460
+ }
461
+ export const logLevel = config.logLevel;
462
+ export const environment = config.environment;
463
+ //# sourceMappingURL=index.js.map