@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.
- package/README.md +88 -0
- package/dist/config/index.d.ts +100 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +463 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/resolver.d.ts +32 -0
- package/dist/config/resolver.d.ts.map +1 -0
- package/dist/config/resolver.js +60 -0
- package/dist/config/resolver.js.map +1 -0
- package/dist/ibmi-mcp-server/auth/crypto.d.ts +11 -0
- package/dist/ibmi-mcp-server/auth/crypto.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/auth/crypto.js +100 -0
- package/dist/ibmi-mcp-server/auth/crypto.js.map +1 -0
- package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.d.ts +28 -0
- package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.js +243 -0
- package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.js.map +1 -0
- package/dist/ibmi-mcp-server/auth/index.d.ts +9 -0
- package/dist/ibmi-mcp-server/auth/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/auth/index.js +8 -0
- package/dist/ibmi-mcp-server/auth/index.js.map +1 -0
- package/dist/ibmi-mcp-server/auth/tokenManager.d.ts +86 -0
- package/dist/ibmi-mcp-server/auth/tokenManager.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/auth/tokenManager.js +214 -0
- package/dist/ibmi-mcp-server/auth/tokenManager.js.map +1 -0
- package/dist/ibmi-mcp-server/auth/types.d.ts +31 -0
- package/dist/ibmi-mcp-server/auth/types.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/auth/types.js +5 -0
- package/dist/ibmi-mcp-server/auth/types.js.map +1 -0
- package/dist/ibmi-mcp-server/index.d.ts +8 -0
- package/dist/ibmi-mcp-server/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/index.js +126 -0
- package/dist/ibmi-mcp-server/index.js.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/index.d.ts +7 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/index.js +7 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/index.js.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.d.ts +106 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.js +145 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.js.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.d.ts +16 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.js +110 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.js.map +1 -0
- package/dist/ibmi-mcp-server/schemas/common.d.ts +174 -0
- package/dist/ibmi-mcp-server/schemas/common.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/schemas/common.js +119 -0
- package/dist/ibmi-mcp-server/schemas/common.js.map +1 -0
- package/dist/ibmi-mcp-server/schemas/config.d.ts +858 -0
- package/dist/ibmi-mcp-server/schemas/config.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/schemas/config.js +248 -0
- package/dist/ibmi-mcp-server/schemas/config.js.map +1 -0
- package/dist/ibmi-mcp-server/schemas/index.d.ts +12 -0
- package/dist/ibmi-mcp-server/schemas/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/schemas/index.js +20 -0
- package/dist/ibmi-mcp-server/schemas/index.js.map +1 -0
- package/dist/ibmi-mcp-server/schemas/tools.d.ts +287 -0
- package/dist/ibmi-mcp-server/schemas/tools.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/schemas/tools.js +167 -0
- package/dist/ibmi-mcp-server/schemas/tools.js.map +1 -0
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.d.ts +82 -0
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.js +262 -0
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.js.map +1 -0
- package/dist/ibmi-mcp-server/services/baseConnectionPool.d.ts +130 -0
- package/dist/ibmi-mcp-server/services/baseConnectionPool.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/services/baseConnectionPool.js +431 -0
- package/dist/ibmi-mcp-server/services/baseConnectionPool.js.map +1 -0
- package/dist/ibmi-mcp-server/services/connectionPool.d.ts +60 -0
- package/dist/ibmi-mcp-server/services/connectionPool.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/services/connectionPool.js +153 -0
- package/dist/ibmi-mcp-server/services/connectionPool.js.map +1 -0
- package/dist/ibmi-mcp-server/services/securityValidation.d.ts +35 -0
- package/dist/ibmi-mcp-server/services/securityValidation.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/services/securityValidation.js +93 -0
- package/dist/ibmi-mcp-server/services/securityValidation.js.map +1 -0
- package/dist/ibmi-mcp-server/services/sourceManager.d.ts +82 -0
- package/dist/ibmi-mcp-server/services/sourceManager.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/services/sourceManager.js +151 -0
- package/dist/ibmi-mcp-server/services/sourceManager.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts +9 -0
- package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/index.js +9 -0
- package/dist/ibmi-mcp-server/tools/executeSql/index.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts +51 -0
- package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/logic.js +179 -0
- package/dist/ibmi-mcp-server/tools/executeSql/logic.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts +52 -0
- package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/registration.js +161 -0
- package/dist/ibmi-mcp-server/tools/executeSql/registration.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts +13 -0
- package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/index.js +13 -0
- package/dist/ibmi-mcp-server/tools/generateSql/index.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts +64 -0
- package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/logic.js +190 -0
- package/dist/ibmi-mcp-server/tools/generateSql/logic.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts +18 -0
- package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/registration.js +64 -0
- package/dist/ibmi-mcp-server/tools/generateSql/registration.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts +42 -0
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.js +156 -0
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/cli/index.d.ts +6 -0
- package/dist/ibmi-mcp-server/utils/cli/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/cli/index.js +6 -0
- package/dist/ibmi-mcp-server/utils/cli/index.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.d.ts +77 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.js +309 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.d.ts +143 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js +665 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigCache.d.ts +71 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigCache.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigCache.js +158 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigCache.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts +206 -0
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js +236 -0
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts +65 -0
- package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolFactory.js +236 -0
- package/dist/ibmi-mcp-server/utils/config/toolFactory.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolProcessor.d.ts +175 -0
- package/dist/ibmi-mcp-server/utils/config/toolProcessor.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolProcessor.js +460 -0
- package/dist/ibmi-mcp-server/utils/config/toolProcessor.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts +126 -0
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.js +240 -0
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/types.d.ts +74 -0
- package/dist/ibmi-mcp-server/utils/config/types.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/types.js +8 -0
- package/dist/ibmi-mcp-server/utils/config/types.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts +116 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js +426 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.d.ts +182 -0
- package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.js +726 -0
- package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.d.ts +90 -0
- package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.js +187 -0
- package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +270 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server/constants.d.ts +13 -0
- package/dist/mcp-server/constants.d.ts.map +1 -0
- package/dist/mcp-server/constants.js +13 -0
- package/dist/mcp-server/constants.js.map +1 -0
- package/dist/mcp-server/logging/index.d.ts +8 -0
- package/dist/mcp-server/logging/index.d.ts.map +1 -0
- package/dist/mcp-server/logging/index.js +8 -0
- package/dist/mcp-server/logging/index.js.map +1 -0
- package/dist/mcp-server/logging/setLevelHandler.d.ts +38 -0
- package/dist/mcp-server/logging/setLevelHandler.d.ts.map +1 -0
- package/dist/mcp-server/logging/setLevelHandler.js +83 -0
- package/dist/mcp-server/logging/setLevelHandler.js.map +1 -0
- package/dist/mcp-server/resources/echoResource/index.d.ts +14 -0
- package/dist/mcp-server/resources/echoResource/index.d.ts.map +1 -0
- package/dist/mcp-server/resources/echoResource/index.js +14 -0
- package/dist/mcp-server/resources/echoResource/index.js.map +1 -0
- package/dist/mcp-server/resources/echoResource/logic.d.ts +37 -0
- package/dist/mcp-server/resources/echoResource/logic.d.ts.map +1 -0
- package/dist/mcp-server/resources/echoResource/logic.js +46 -0
- package/dist/mcp-server/resources/echoResource/logic.js.map +1 -0
- package/dist/mcp-server/resources/echoResource/registration.d.ts +7 -0
- package/dist/mcp-server/resources/echoResource/registration.d.ts.map +1 -0
- package/dist/mcp-server/resources/echoResource/registration.js +51 -0
- package/dist/mcp-server/resources/echoResource/registration.js.map +1 -0
- package/dist/mcp-server/resources/index.d.ts +10 -0
- package/dist/mcp-server/resources/index.d.ts.map +1 -0
- package/dist/mcp-server/resources/index.js +19 -0
- package/dist/mcp-server/resources/index.js.map +1 -0
- package/dist/mcp-server/resources/utils/resource-utils.d.ts +43 -0
- package/dist/mcp-server/resources/utils/resource-utils.d.ts.map +1 -0
- package/dist/mcp-server/resources/utils/resource-utils.js +44 -0
- package/dist/mcp-server/resources/utils/resource-utils.js.map +1 -0
- package/dist/mcp-server/server.d.ts +23 -0
- package/dist/mcp-server/server.d.ts.map +1 -0
- package/dist/mcp-server/server.js +114 -0
- package/dist/mcp-server/server.js.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/index.d.ts +8 -0
- package/dist/mcp-server/tools/catFactFetcher/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/index.js +8 -0
- package/dist/mcp-server/tools/catFactFetcher/index.js.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/logic.d.ts +52 -0
- package/dist/mcp-server/tools/catFactFetcher/logic.d.ts.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/logic.js +95 -0
- package/dist/mcp-server/tools/catFactFetcher/logic.js.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/registration.d.ts +9 -0
- package/dist/mcp-server/tools/catFactFetcher/registration.d.ts.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/registration.js +43 -0
- package/dist/mcp-server/tools/catFactFetcher/registration.js.map +1 -0
- package/dist/mcp-server/tools/echoTool/index.d.ts +13 -0
- package/dist/mcp-server/tools/echoTool/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/echoTool/index.js +13 -0
- package/dist/mcp-server/tools/echoTool/index.js.map +1 -0
- package/dist/mcp-server/tools/echoTool/logic.d.ts +69 -0
- package/dist/mcp-server/tools/echoTool/logic.d.ts.map +1 -0
- package/dist/mcp-server/tools/echoTool/logic.js +119 -0
- package/dist/mcp-server/tools/echoTool/logic.js.map +1 -0
- package/dist/mcp-server/tools/echoTool/registration.d.ts +9 -0
- package/dist/mcp-server/tools/echoTool/registration.d.ts.map +1 -0
- package/dist/mcp-server/tools/echoTool/registration.js +45 -0
- package/dist/mcp-server/tools/echoTool/registration.js.map +1 -0
- package/dist/mcp-server/tools/imageTest/index.d.ts +7 -0
- package/dist/mcp-server/tools/imageTest/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/imageTest/index.js +7 -0
- package/dist/mcp-server/tools/imageTest/index.js.map +1 -0
- package/dist/mcp-server/tools/imageTest/logic.d.ts +27 -0
- package/dist/mcp-server/tools/imageTest/logic.d.ts.map +1 -0
- package/dist/mcp-server/tools/imageTest/logic.js +44 -0
- package/dist/mcp-server/tools/imageTest/logic.js.map +1 -0
- package/dist/mcp-server/tools/imageTest/registration.d.ts +9 -0
- package/dist/mcp-server/tools/imageTest/registration.d.ts.map +1 -0
- package/dist/mcp-server/tools/imageTest/registration.js +49 -0
- package/dist/mcp-server/tools/imageTest/registration.js.map +1 -0
- package/dist/mcp-server/tools/index.d.ts +4 -0
- package/dist/mcp-server/tools/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/index.js +13 -0
- package/dist/mcp-server/tools/index.js.map +1 -0
- package/dist/mcp-server/tools/utils/tool-utils.d.ts +43 -0
- package/dist/mcp-server/tools/utils/tool-utils.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/tool-utils.js +44 -0
- package/dist/mcp-server/tools/utils/tool-utils.js.map +1 -0
- package/dist/mcp-server/transports/auth/authFactory.d.ts +11 -0
- package/dist/mcp-server/transports/auth/authFactory.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/authFactory.js +46 -0
- package/dist/mcp-server/transports/auth/authFactory.js.map +1 -0
- package/dist/mcp-server/transports/auth/authMiddleware.d.ts +20 -0
- package/dist/mcp-server/transports/auth/authMiddleware.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/authMiddleware.js +58 -0
- package/dist/mcp-server/transports/auth/authMiddleware.js.map +1 -0
- package/dist/mcp-server/transports/auth/index.d.ts +14 -0
- package/dist/mcp-server/transports/auth/index.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/index.js +12 -0
- package/dist/mcp-server/transports/auth/index.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authContext.d.ts +34 -0
- package/dist/mcp-server/transports/auth/lib/authContext.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authContext.js +25 -0
- package/dist/mcp-server/transports/auth/lib/authContext.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.d.ts +15 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.js +9 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.d.ts +19 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.js +53 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts +18 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.js +2 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.d.ts +21 -0
- package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.js +64 -0
- package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts +8 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +118 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts +8 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +118 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js.map +1 -0
- package/dist/mcp-server/transports/core/autoTransportManager.d.ts +48 -0
- package/dist/mcp-server/transports/core/autoTransportManager.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/autoTransportManager.js +57 -0
- package/dist/mcp-server/transports/core/autoTransportManager.js.map +1 -0
- package/dist/mcp-server/transports/core/baseTransportManager.d.ts +17 -0
- package/dist/mcp-server/transports/core/baseTransportManager.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/baseTransportManager.js +20 -0
- package/dist/mcp-server/transports/core/baseTransportManager.js.map +1 -0
- package/dist/mcp-server/transports/core/headerUtils.d.ts +27 -0
- package/dist/mcp-server/transports/core/headerUtils.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/headerUtils.js +53 -0
- package/dist/mcp-server/transports/core/headerUtils.js.map +1 -0
- package/dist/mcp-server/transports/core/honoNodeBridge.d.ts +77 -0
- package/dist/mcp-server/transports/core/honoNodeBridge.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/honoNodeBridge.js +150 -0
- package/dist/mcp-server/transports/core/honoNodeBridge.js.map +1 -0
- package/dist/mcp-server/transports/core/statefulTransportManager.d.ts +81 -0
- package/dist/mcp-server/transports/core/statefulTransportManager.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/statefulTransportManager.js +326 -0
- package/dist/mcp-server/transports/core/statefulTransportManager.js.map +1 -0
- package/dist/mcp-server/transports/core/statelessTransportManager.d.ts +57 -0
- package/dist/mcp-server/transports/core/statelessTransportManager.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/statelessTransportManager.js +151 -0
- package/dist/mcp-server/transports/core/statelessTransportManager.js.map +1 -0
- package/dist/mcp-server/transports/core/transportRequest.d.ts +9 -0
- package/dist/mcp-server/transports/core/transportRequest.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/transportRequest.js +2 -0
- package/dist/mcp-server/transports/core/transportRequest.js.map +1 -0
- package/dist/mcp-server/transports/core/transportTypes.d.ts +112 -0
- package/dist/mcp-server/transports/core/transportTypes.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/transportTypes.js +15 -0
- package/dist/mcp-server/transports/core/transportTypes.js.map +1 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.d.ts +25 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.js +86 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -0
- package/dist/mcp-server/transports/http/httpTransport.d.ts +27 -0
- package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/httpTransport.js +407 -0
- package/dist/mcp-server/transports/http/httpTransport.js.map +1 -0
- package/dist/mcp-server/transports/http/httpTypes.d.ts +17 -0
- package/dist/mcp-server/transports/http/httpTypes.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/httpTypes.js +6 -0
- package/dist/mcp-server/transports/http/httpTypes.js.map +1 -0
- package/dist/mcp-server/transports/http/index.d.ts +8 -0
- package/dist/mcp-server/transports/http/index.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/index.js +7 -0
- package/dist/mcp-server/transports/http/index.js.map +1 -0
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts +21 -0
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.js +54 -0
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.js.map +1 -0
- package/dist/mcp-server/transports/stdio/index.d.ts +6 -0
- package/dist/mcp-server/transports/stdio/index.d.ts.map +1 -0
- package/dist/mcp-server/transports/stdio/index.js +6 -0
- package/dist/mcp-server/transports/stdio/index.js.map +1 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts +43 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts.map +1 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.js +71 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.js.map +1 -0
- package/dist/services/duck-db/duckDBConnectionManager.d.ts +55 -0
- package/dist/services/duck-db/duckDBConnectionManager.d.ts.map +1 -0
- package/dist/services/duck-db/duckDBConnectionManager.js +184 -0
- package/dist/services/duck-db/duckDBConnectionManager.js.map +1 -0
- package/dist/services/duck-db/duckDBQueryExecutor.d.ts +18 -0
- package/dist/services/duck-db/duckDBQueryExecutor.d.ts.map +1 -0
- package/dist/services/duck-db/duckDBQueryExecutor.js +115 -0
- package/dist/services/duck-db/duckDBQueryExecutor.js.map +1 -0
- package/dist/services/duck-db/duckDBService.d.ts +27 -0
- package/dist/services/duck-db/duckDBService.d.ts.map +1 -0
- package/dist/services/duck-db/duckDBService.js +151 -0
- package/dist/services/duck-db/duckDBService.js.map +1 -0
- package/dist/services/duck-db/types.d.ts +135 -0
- package/dist/services/duck-db/types.d.ts.map +1 -0
- package/dist/services/duck-db/types.js +6 -0
- package/dist/services/duck-db/types.js.map +1 -0
- package/dist/services/llm-providers/openRouterProvider.d.ts +36 -0
- package/dist/services/llm-providers/openRouterProvider.d.ts.map +1 -0
- package/dist/services/llm-providers/openRouterProvider.js +235 -0
- package/dist/services/llm-providers/openRouterProvider.js.map +1 -0
- package/dist/services/supabase/supabaseClient.d.ts +25 -0
- package/dist/services/supabase/supabaseClient.d.ts.map +1 -0
- package/dist/services/supabase/supabaseClient.js +68 -0
- package/dist/services/supabase/supabaseClient.js.map +1 -0
- package/dist/storage/duckdbExample.d.ts +8 -0
- package/dist/storage/duckdbExample.d.ts.map +1 -0
- package/dist/storage/duckdbExample.js +197 -0
- package/dist/storage/duckdbExample.js.map +1 -0
- package/dist/types-global/errors.d.ts +101 -0
- package/dist/types-global/errors.d.ts.map +1 -0
- package/dist/types-global/errors.js +109 -0
- package/dist/types-global/errors.js.map +1 -0
- package/dist/utils/formatting/index.d.ts +10 -0
- package/dist/utils/formatting/index.d.ts.map +1 -0
- package/dist/utils/formatting/index.js +10 -0
- package/dist/utils/formatting/index.js.map +1 -0
- package/dist/utils/formatting/markdownBuilder.d.ts +348 -0
- package/dist/utils/formatting/markdownBuilder.d.ts.map +1 -0
- package/dist/utils/formatting/markdownBuilder.js +501 -0
- package/dist/utils/formatting/markdownBuilder.js.map +1 -0
- package/dist/utils/formatting/sqlFormattingUtils.d.ts +69 -0
- package/dist/utils/formatting/sqlFormattingUtils.d.ts.map +1 -0
- package/dist/utils/formatting/sqlFormattingUtils.js +131 -0
- package/dist/utils/formatting/sqlFormattingUtils.js.map +1 -0
- package/dist/utils/formatting/tableFormatter.d.ts +268 -0
- package/dist/utils/formatting/tableFormatter.d.ts.map +1 -0
- package/dist/utils/formatting/tableFormatter.js +550 -0
- package/dist/utils/formatting/tableFormatter.js.map +1 -0
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/internal/asyncContext.d.ts +35 -0
- package/dist/utils/internal/asyncContext.d.ts.map +1 -0
- package/dist/utils/internal/asyncContext.js +38 -0
- package/dist/utils/internal/asyncContext.js.map +1 -0
- package/dist/utils/internal/errorHandler.d.ts +95 -0
- package/dist/utils/internal/errorHandler.d.ts.map +1 -0
- package/dist/utils/internal/errorHandler.js +210 -0
- package/dist/utils/internal/errorHandler.js.map +1 -0
- package/dist/utils/internal/index.d.ts +12 -0
- package/dist/utils/internal/index.d.ts.map +1 -0
- package/dist/utils/internal/index.js +12 -0
- package/dist/utils/internal/index.js.map +1 -0
- package/dist/utils/internal/logger.d.ts +30 -0
- package/dist/utils/internal/logger.d.ts.map +1 -0
- package/dist/utils/internal/logger.js +228 -0
- package/dist/utils/internal/logger.js.map +1 -0
- package/dist/utils/internal/logging-helpers.d.ts +49 -0
- package/dist/utils/internal/logging-helpers.d.ts.map +1 -0
- package/dist/utils/internal/logging-helpers.js +60 -0
- package/dist/utils/internal/logging-helpers.js.map +1 -0
- package/dist/utils/internal/performance.d.ts +19 -0
- package/dist/utils/internal/performance.d.ts.map +1 -0
- package/dist/utils/internal/performance.js +110 -0
- package/dist/utils/internal/performance.js.map +1 -0
- package/dist/utils/internal/requestContext.d.ts +41 -0
- package/dist/utils/internal/requestContext.d.ts.map +1 -0
- package/dist/utils/internal/requestContext.js +47 -0
- package/dist/utils/internal/requestContext.js.map +1 -0
- package/dist/utils/metrics/index.d.ts +8 -0
- package/dist/utils/metrics/index.d.ts.map +1 -0
- package/dist/utils/metrics/index.js +8 -0
- package/dist/utils/metrics/index.js.map +1 -0
- package/dist/utils/metrics/tokenCounter.d.ts +36 -0
- package/dist/utils/metrics/tokenCounter.d.ts.map +1 -0
- package/dist/utils/metrics/tokenCounter.js +115 -0
- package/dist/utils/metrics/tokenCounter.js.map +1 -0
- package/dist/utils/network/fetchWithTimeout.d.ts +22 -0
- package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -0
- package/dist/utils/network/fetchWithTimeout.js +78 -0
- package/dist/utils/network/fetchWithTimeout.js.map +1 -0
- package/dist/utils/network/index.d.ts +7 -0
- package/dist/utils/network/index.d.ts.map +1 -0
- package/dist/utils/network/index.js +6 -0
- package/dist/utils/network/index.js.map +1 -0
- package/dist/utils/parsing/dateParser.d.ts +73 -0
- package/dist/utils/parsing/dateParser.d.ts.map +1 -0
- package/dist/utils/parsing/dateParser.js +108 -0
- package/dist/utils/parsing/dateParser.js.map +1 -0
- package/dist/utils/parsing/index.d.ts +9 -0
- package/dist/utils/parsing/index.d.ts.map +1 -0
- package/dist/utils/parsing/index.js +9 -0
- package/dist/utils/parsing/index.js.map +1 -0
- package/dist/utils/parsing/jsonParser.d.ts +83 -0
- package/dist/utils/parsing/jsonParser.d.ts.map +1 -0
- package/dist/utils/parsing/jsonParser.js +128 -0
- package/dist/utils/parsing/jsonParser.js.map +1 -0
- package/dist/utils/scheduling/index.d.ts +7 -0
- package/dist/utils/scheduling/index.d.ts.map +1 -0
- package/dist/utils/scheduling/index.js +7 -0
- package/dist/utils/scheduling/index.js.map +1 -0
- package/dist/utils/scheduling/scheduler.d.ts +73 -0
- package/dist/utils/scheduling/scheduler.d.ts.map +1 -0
- package/dist/utils/scheduling/scheduler.js +155 -0
- package/dist/utils/scheduling/scheduler.js.map +1 -0
- package/dist/utils/security/idGenerator.d.ts +144 -0
- package/dist/utils/security/idGenerator.d.ts.map +1 -0
- package/dist/utils/security/idGenerator.js +232 -0
- package/dist/utils/security/idGenerator.js.map +1 -0
- package/dist/utils/security/index.d.ts +10 -0
- package/dist/utils/security/index.d.ts.map +1 -0
- package/dist/utils/security/index.js +10 -0
- package/dist/utils/security/index.js.map +1 -0
- package/dist/utils/security/rateLimiter.d.ts +109 -0
- package/dist/utils/security/rateLimiter.d.ts.map +1 -0
- package/dist/utils/security/rateLimiter.js +202 -0
- package/dist/utils/security/rateLimiter.js.map +1 -0
- package/dist/utils/security/sanitization.d.ts +185 -0
- package/dist/utils/security/sanitization.d.ts.map +1 -0
- package/dist/utils/security/sanitization.js +472 -0
- package/dist/utils/security/sanitization.js.map +1 -0
- package/dist/utils/telemetry/instrumentation.d.ts +8 -0
- package/dist/utils/telemetry/instrumentation.d.ts.map +1 -0
- package/dist/utils/telemetry/instrumentation.js +121 -0
- package/dist/utils/telemetry/instrumentation.js.map +1 -0
- package/dist/utils/telemetry/semconv.d.ts +16 -0
- package/dist/utils/telemetry/semconv.d.ts.map +1 -0
- package/dist/utils/telemetry/semconv.js +16 -0
- package/dist/utils/telemetry/semconv.js.map +1 -0
- package/package.json +161 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Command-line argument parser for MCP server
|
|
3
|
+
* Handles --tools argument and sets environment variables accordingly
|
|
4
|
+
* @module src/utils/cli/argumentParser
|
|
5
|
+
*/
|
|
6
|
+
type mcpTransportType = "stdio" | "http";
|
|
7
|
+
export interface CliArguments {
|
|
8
|
+
tools?: string;
|
|
9
|
+
transport?: mcpTransportType;
|
|
10
|
+
toolsets?: string[];
|
|
11
|
+
listToolsets?: boolean;
|
|
12
|
+
help?: boolean;
|
|
13
|
+
errors?: string[];
|
|
14
|
+
warnings?: string[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
* This function should:
|
|
19
|
+
* 1. Parse process.argv.slice(2) to get command line arguments
|
|
20
|
+
* 2. Look for --tools flag and capture the next argument as the path
|
|
21
|
+
* 3. Look for --help or -h flags
|
|
22
|
+
* 5. Return a CliArguments object with the parsed values
|
|
23
|
+
*
|
|
24
|
+
* Handle edge cases like:
|
|
25
|
+
* - Missing value after --tools
|
|
26
|
+
* - Unknown arguments (should warn but not fail)
|
|
27
|
+
* - Multiple --tools arguments (use the last one)
|
|
28
|
+
*/
|
|
29
|
+
export declare function parseCliArguments(): CliArguments;
|
|
30
|
+
/**
|
|
31
|
+
* Validates that a tools path exists and is accessible
|
|
32
|
+
*/
|
|
33
|
+
export declare function validateToolsPath(path: string): {
|
|
34
|
+
valid: boolean;
|
|
35
|
+
message?: string;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Shows help information for CLI usage
|
|
39
|
+
*/
|
|
40
|
+
export declare function showHelp(): void;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=argumentParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"argumentParser.d.ts","sourceRoot":"","sources":["../../../../src/ibmi-mcp-server/utils/cli/argumentParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,KAAK,gBAAgB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzC,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,IAAI,YAAY,CAwDhD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CA8BA;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAoC/B"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Command-line argument parser for MCP server
|
|
3
|
+
* Handles --tools argument and sets environment variables accordingly
|
|
4
|
+
* @module src/utils/cli/argumentParser
|
|
5
|
+
*/
|
|
6
|
+
import { existsSync, statSync } from "fs";
|
|
7
|
+
import { resolve } from "path";
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* This function should:
|
|
11
|
+
* 1. Parse process.argv.slice(2) to get command line arguments
|
|
12
|
+
* 2. Look for --tools flag and capture the next argument as the path
|
|
13
|
+
* 3. Look for --help or -h flags
|
|
14
|
+
* 5. Return a CliArguments object with the parsed values
|
|
15
|
+
*
|
|
16
|
+
* Handle edge cases like:
|
|
17
|
+
* - Missing value after --tools
|
|
18
|
+
* - Unknown arguments (should warn but not fail)
|
|
19
|
+
* - Multiple --tools arguments (use the last one)
|
|
20
|
+
*/
|
|
21
|
+
export function parseCliArguments() {
|
|
22
|
+
const args = process.argv.slice(2);
|
|
23
|
+
const parsed = {
|
|
24
|
+
errors: [],
|
|
25
|
+
warnings: [],
|
|
26
|
+
};
|
|
27
|
+
for (let i = 0; i < args.length; i++) {
|
|
28
|
+
const arg = args[i];
|
|
29
|
+
if (arg === "--tools") {
|
|
30
|
+
if (i + 1 < args.length) {
|
|
31
|
+
const toolsPath = args[i + 1];
|
|
32
|
+
parsed.tools = toolsPath;
|
|
33
|
+
i++; // Skip the next argument as it's the tools path
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
parsed.errors?.push("--tools flag requires a path argument");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else if (arg === "--help" || arg === "-h") {
|
|
40
|
+
parsed.help = true;
|
|
41
|
+
}
|
|
42
|
+
else if (arg === "--transport" || arg === "-t") {
|
|
43
|
+
if (i + 1 < args.length) {
|
|
44
|
+
const transport = args[i + 1];
|
|
45
|
+
if (transport === "stdio" || transport === "http") {
|
|
46
|
+
parsed.transport = transport;
|
|
47
|
+
i++; // Skip the next argument as it's the transport type
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
parsed.errors?.push(`Invalid transport type: ${transport}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
parsed.errors?.push("--transport flag requires a type argument");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else if (arg === "--toolsets" || arg === "-ts") {
|
|
58
|
+
if (i + 1 < args.length) {
|
|
59
|
+
const toolsetsValue = args[i + 1];
|
|
60
|
+
// Split by comma and trim whitespace
|
|
61
|
+
parsed.toolsets =
|
|
62
|
+
toolsetsValue
|
|
63
|
+
?.split(",")
|
|
64
|
+
.map((t) => t.trim())
|
|
65
|
+
.filter((t) => t.length > 0) || [];
|
|
66
|
+
i++; // Skip the next argument as it's the toolsets value
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
parsed.errors?.push("--toolsets flag requires a comma-separated list argument");
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else if (arg === "--list-toolsets") {
|
|
73
|
+
parsed.listToolsets = true;
|
|
74
|
+
}
|
|
75
|
+
else if (arg?.startsWith("--")) {
|
|
76
|
+
parsed.warnings?.push(`Unknown argument detected: ${arg}`);
|
|
77
|
+
i++;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return parsed;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validates that a tools path exists and is accessible
|
|
84
|
+
*/
|
|
85
|
+
export function validateToolsPath(path) {
|
|
86
|
+
try {
|
|
87
|
+
const resolvedPath = resolve(path);
|
|
88
|
+
if (existsSync(resolvedPath)) {
|
|
89
|
+
const stats = statSync(resolvedPath);
|
|
90
|
+
if (stats.isFile()) {
|
|
91
|
+
return {
|
|
92
|
+
valid: true,
|
|
93
|
+
message: `Using tools file: ${resolvedPath}`,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
else if (stats.isDirectory()) {
|
|
97
|
+
return {
|
|
98
|
+
valid: true,
|
|
99
|
+
message: `Using tools directory: ${resolvedPath}`,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// For glob patterns or remote paths, let the YAML loader handle validation
|
|
104
|
+
return {
|
|
105
|
+
valid: true,
|
|
106
|
+
message: `Tools path "${path}" will be validated by YAML tools loader`,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
return {
|
|
111
|
+
valid: false,
|
|
112
|
+
message: `Cannot access tools path "${path}": ${error instanceof Error ? error.message : String(error)}`,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Shows help information for CLI usage
|
|
118
|
+
*/
|
|
119
|
+
export function showHelp() {
|
|
120
|
+
console.log(`
|
|
121
|
+
IBM i MCP Server
|
|
122
|
+
|
|
123
|
+
Usage: npx ibmi-mcp-server [options]
|
|
124
|
+
|
|
125
|
+
Options:
|
|
126
|
+
--tools <path> Path to YAML tools configuration
|
|
127
|
+
Supports:
|
|
128
|
+
- Files: performance.yaml, config.yml
|
|
129
|
+
- Directories: tools/, custom-tools/
|
|
130
|
+
- Globs: "**/*.yaml" (quote for shell safety)
|
|
131
|
+
--toolsets, -ts <list> Comma-separated list of toolsets (e.g., "performance,system")
|
|
132
|
+
--list-toolsets List all available toolsets and exit
|
|
133
|
+
--transport, -t <type> Transport type: "stdio" or "http"
|
|
134
|
+
|
|
135
|
+
-h, --help Show this help message
|
|
136
|
+
|
|
137
|
+
Examples:
|
|
138
|
+
npx ibmi-mcp-server --tools tools
|
|
139
|
+
npx ibmi-mcp-server --tools tools/performance.yaml
|
|
140
|
+
npx ibmi-mcp-server --toolsets performance,system
|
|
141
|
+
npx ibmi-mcp-server --list-toolsets --tools tools
|
|
142
|
+
npx ibmi-mcp-server --tools ../custom-tools/
|
|
143
|
+
npx ibmi-mcp-server --tools "configs/**/*.yaml"
|
|
144
|
+
|
|
145
|
+
Environment Variables:
|
|
146
|
+
TOOLS_YAML_PATH Path to YAML tools (CLI --tools takes precedence)
|
|
147
|
+
MCP_TRANSPORT_TYPE Transport mode: 'stdio' (default) or 'http'
|
|
148
|
+
MCP_LOG_LEVEL Log level: debug, info, warning, error
|
|
149
|
+
|
|
150
|
+
See .env.example for complete environment variable reference.
|
|
151
|
+
|
|
152
|
+
Note: The server runs in stdio mode by default for MCP client integration.
|
|
153
|
+
Use MCP_TRANSPORT_TYPE=http for HTTP mode testing.
|
|
154
|
+
`);
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=argumentParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"argumentParser.js","sourceRoot":"","sources":["../../../../src/ibmi-mcp-server/utils/cli/argumentParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ibmi-mcp-server/utils/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,EACR,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ibmi-mcp-server/utils/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,GAET,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview YAML configuration parser with validation and environment variable interpolation
|
|
3
|
+
* Handles parsing, validation, and processing of YAML tool configurations
|
|
4
|
+
*
|
|
5
|
+
* @module src/utils/yaml/yamlParser
|
|
6
|
+
*/
|
|
7
|
+
import { ParsingResult } from "../../schemas/index.js";
|
|
8
|
+
import { SqlToolParameter } from "../../schemas/index.js";
|
|
9
|
+
import { RequestContext } from "../../../utils/internal/requestContext.js";
|
|
10
|
+
/**
|
|
11
|
+
* YAML configuration parser with validation and environment variable interpolation
|
|
12
|
+
*/
|
|
13
|
+
export declare class ConfigParser {
|
|
14
|
+
/**
|
|
15
|
+
* Parse and validate a YAML tools configuration file
|
|
16
|
+
* @param filePath - Path to the YAML configuration file
|
|
17
|
+
* @param context - Request context for logging
|
|
18
|
+
* @returns Parsing result with validation information
|
|
19
|
+
*/
|
|
20
|
+
static parseYamlFile(filePath: string, context?: RequestContext): Promise<ParsingResult>;
|
|
21
|
+
/**
|
|
22
|
+
* Interpolate environment variables in YAML content
|
|
23
|
+
* Supports ${VAR_NAME} syntax
|
|
24
|
+
* @param content - YAML content string
|
|
25
|
+
* @param context - Request context for logging
|
|
26
|
+
* @returns Content with environment variables interpolated
|
|
27
|
+
* @private
|
|
28
|
+
*/
|
|
29
|
+
private static interpolateEnvironmentVariables;
|
|
30
|
+
/**
|
|
31
|
+
* Interpolate environment variables using client-provided environment
|
|
32
|
+
* Supports ${VAR_NAME} syntax
|
|
33
|
+
*
|
|
34
|
+
* NOT USED CURRENTLY
|
|
35
|
+
* @param content - Content string with environment variable placeholders
|
|
36
|
+
* @param clientEnvironment - Environment variables provided by the client
|
|
37
|
+
* @param context - Request context for logging
|
|
38
|
+
* @returns Content with environment variables interpolated
|
|
39
|
+
*/
|
|
40
|
+
static interpolateClientEnvironmentVariables(content: string, clientEnvironment?: Record<string, string>, context?: RequestContext): string;
|
|
41
|
+
/**
|
|
42
|
+
* Validate that all tool source references exist in the sources section
|
|
43
|
+
* @param config - Parsed YAML configuration
|
|
44
|
+
* @returns Array of validation errors
|
|
45
|
+
* @private
|
|
46
|
+
*/
|
|
47
|
+
private static validateToolSourceReferences;
|
|
48
|
+
/**
|
|
49
|
+
* Validate tool-specific requirements
|
|
50
|
+
* @param config - Parsed YAML configuration
|
|
51
|
+
* @returns Array of validation errors
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
54
|
+
private static validateToolRequirements;
|
|
55
|
+
/**
|
|
56
|
+
* Process tools from YAML configuration into runtime format
|
|
57
|
+
* @param config - Validated YAML configuration
|
|
58
|
+
* @returns Array of processed tools
|
|
59
|
+
* @private
|
|
60
|
+
*/
|
|
61
|
+
private static processTools;
|
|
62
|
+
/**
|
|
63
|
+
* Validate a single tool parameter definition
|
|
64
|
+
* @param parameter - Parameter definition to validate
|
|
65
|
+
* @returns Validation result
|
|
66
|
+
*/
|
|
67
|
+
static validateParameter(parameter: SqlToolParameter): {
|
|
68
|
+
valid: boolean;
|
|
69
|
+
errors: string[];
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Get available parameter types
|
|
73
|
+
* @returns Array of supported parameter types
|
|
74
|
+
*/
|
|
75
|
+
static getAvailableParameterTypes(): string[];
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=configParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configParser.d.ts","sourceRoot":"","sources":["../../../../src/ibmi-mcp-server/utils/config/configParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,aAAa,EAAkB,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAEL,cAAc,EACf,MAAM,oCAAoC,CAAC;AAS5C;;GAEG;AACH,qBAAa,YAAY;IACvB;;;;;OAKG;WACU,aAAa,CACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC;IAiKzB;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,+BAA+B;IA4B9C;;;;;;;;;OASG;IACH,MAAM,CAAC,qCAAqC,CAC1C,OAAO,EAAE,MAAM,EACf,iBAAiB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EAC9C,OAAO,CAAC,EAAE,cAAc,GACvB,MAAM;IA0CT;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAuB3C;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAkBvC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAwD3B;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,GAAG;QACrD,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB;IAWD;;;OAGG;IACH,MAAM,CAAC,0BAA0B,IAAI,MAAM,EAAE;CAG9C"}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview YAML configuration parser with validation and environment variable interpolation
|
|
3
|
+
* Handles parsing, validation, and processing of YAML tool configurations
|
|
4
|
+
*
|
|
5
|
+
* @module src/utils/yaml/yamlParser
|
|
6
|
+
*/
|
|
7
|
+
import { readFileSync, existsSync } from "fs";
|
|
8
|
+
import { resolve } from "path";
|
|
9
|
+
import { load as yamlLoad } from "js-yaml";
|
|
10
|
+
import { ErrorHandler, logger } from "../../../utils/internal/index.js";
|
|
11
|
+
import { requestContextService, } from "../../../utils/internal/requestContext.js";
|
|
12
|
+
// Import schemas from centralized location
|
|
13
|
+
import { SqlToolsConfigSchema, SqlToolParameterSchema, } from "../../schemas/index.js";
|
|
14
|
+
import { JsonRpcErrorCode, McpError } from "../../../types-global/errors.js";
|
|
15
|
+
/**
|
|
16
|
+
* YAML configuration parser with validation and environment variable interpolation
|
|
17
|
+
*/
|
|
18
|
+
export class ConfigParser {
|
|
19
|
+
/**
|
|
20
|
+
* Parse and validate a YAML tools configuration file
|
|
21
|
+
* @param filePath - Path to the YAML configuration file
|
|
22
|
+
* @param context - Request context for logging
|
|
23
|
+
* @returns Parsing result with validation information
|
|
24
|
+
*/
|
|
25
|
+
static async parseYamlFile(filePath, context) {
|
|
26
|
+
const operationContext = context ||
|
|
27
|
+
requestContextService.createRequestContext({
|
|
28
|
+
operation: "ParseYamlFile",
|
|
29
|
+
filePath,
|
|
30
|
+
});
|
|
31
|
+
return ErrorHandler.tryCatch(async () => {
|
|
32
|
+
logger.info({
|
|
33
|
+
...operationContext,
|
|
34
|
+
filePath,
|
|
35
|
+
}, "Parsing YAML configuration file");
|
|
36
|
+
// Check if file exists
|
|
37
|
+
const resolvedPath = resolve(filePath);
|
|
38
|
+
if (!existsSync(resolvedPath)) {
|
|
39
|
+
throw new McpError(JsonRpcErrorCode.ValidationError, `YAML configuration file not found: ${resolvedPath}`);
|
|
40
|
+
}
|
|
41
|
+
// Read file content
|
|
42
|
+
const fileContent = readFileSync(resolvedPath, "utf8");
|
|
43
|
+
logger.debug({
|
|
44
|
+
...operationContext,
|
|
45
|
+
contentLength: fileContent.length,
|
|
46
|
+
}, "YAML file content loaded");
|
|
47
|
+
// Interpolate environment variables at startup
|
|
48
|
+
// TODO: In the future, this should use client-provided environment variables
|
|
49
|
+
// instead of server-side environment variables
|
|
50
|
+
const interpolatedContent = this.interpolateEnvironmentVariables(fileContent, operationContext);
|
|
51
|
+
// Parse YAML
|
|
52
|
+
const parsedYaml = yamlLoad(interpolatedContent);
|
|
53
|
+
// Validate against schema
|
|
54
|
+
const validationResult = SqlToolsConfigSchema.safeParse(parsedYaml);
|
|
55
|
+
if (!validationResult.success) {
|
|
56
|
+
const errors = validationResult.error.errors.map((err) => `${err.path.join(".")}: ${err.message}`);
|
|
57
|
+
logger.error({
|
|
58
|
+
...operationContext,
|
|
59
|
+
errors,
|
|
60
|
+
}, "YAML validation failed");
|
|
61
|
+
return {
|
|
62
|
+
success: false,
|
|
63
|
+
errors,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const config = validationResult.data;
|
|
67
|
+
// Additional validation - check tool source references
|
|
68
|
+
const sourceValidationErrors = this.validateToolSourceReferences(config);
|
|
69
|
+
if (sourceValidationErrors.length > 0) {
|
|
70
|
+
logger.error({
|
|
71
|
+
...operationContext,
|
|
72
|
+
errors: sourceValidationErrors,
|
|
73
|
+
}, "Source reference validation failed");
|
|
74
|
+
return {
|
|
75
|
+
success: false,
|
|
76
|
+
errors: sourceValidationErrors,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
// Note: Toolset validation is intentionally deferred to post-merge validation
|
|
80
|
+
// in YamlConfigBuilder to support cross-file tool references with YAML_MERGE_ARRAYS
|
|
81
|
+
// Additional validation - check tool-specific requirements
|
|
82
|
+
const toolValidationErrors = this.validateToolRequirements(config);
|
|
83
|
+
if (toolValidationErrors.length > 0) {
|
|
84
|
+
logger.error({
|
|
85
|
+
...operationContext,
|
|
86
|
+
errors: toolValidationErrors,
|
|
87
|
+
}, "Tool requirements validation failed");
|
|
88
|
+
return {
|
|
89
|
+
success: false,
|
|
90
|
+
errors: toolValidationErrors,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
// Process tools
|
|
94
|
+
const processedTools = this.processTools(config);
|
|
95
|
+
// Count disabled tools
|
|
96
|
+
const totalTools = config.tools ? Object.keys(config.tools).length : 0;
|
|
97
|
+
const disabledTools = config.tools
|
|
98
|
+
? Object.values(config.tools).filter((tool) => tool.enabled === false)
|
|
99
|
+
.length
|
|
100
|
+
: 0;
|
|
101
|
+
const enabledTools = totalTools - disabledTools;
|
|
102
|
+
// Generate statistics
|
|
103
|
+
const stats = {
|
|
104
|
+
sourceCount: config.sources ? Object.keys(config.sources).length : 0,
|
|
105
|
+
toolCount: totalTools,
|
|
106
|
+
enabledToolCount: enabledTools,
|
|
107
|
+
disabledToolCount: disabledTools,
|
|
108
|
+
toolsetCount: config.toolsets
|
|
109
|
+
? Object.keys(config.toolsets).length
|
|
110
|
+
: 0,
|
|
111
|
+
totalParameterCount: config.tools
|
|
112
|
+
? Object.values(config.tools).reduce((sum, tool) => sum + (tool.parameters?.length || 0), 0)
|
|
113
|
+
: 0,
|
|
114
|
+
};
|
|
115
|
+
logger.info({
|
|
116
|
+
...operationContext,
|
|
117
|
+
stats,
|
|
118
|
+
}, "YAML configuration parsed successfully");
|
|
119
|
+
return {
|
|
120
|
+
success: true,
|
|
121
|
+
config,
|
|
122
|
+
processedTools,
|
|
123
|
+
stats,
|
|
124
|
+
};
|
|
125
|
+
}, {
|
|
126
|
+
operation: "ParseYamlFile",
|
|
127
|
+
context: operationContext,
|
|
128
|
+
errorCode: JsonRpcErrorCode.ConfigurationError,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Interpolate environment variables in YAML content
|
|
133
|
+
* Supports ${VAR_NAME} syntax
|
|
134
|
+
* @param content - YAML content string
|
|
135
|
+
* @param context - Request context for logging
|
|
136
|
+
* @returns Content with environment variables interpolated
|
|
137
|
+
* @private
|
|
138
|
+
*/
|
|
139
|
+
static interpolateEnvironmentVariables(content, context) {
|
|
140
|
+
return content.replace(/\$\{([^}]+)\}/g, (match, varName) => {
|
|
141
|
+
const envValue = process.env[varName];
|
|
142
|
+
if (envValue === undefined) {
|
|
143
|
+
logger.debug({
|
|
144
|
+
...context,
|
|
145
|
+
varName,
|
|
146
|
+
}, `Environment variable ${varName} not found, keeping placeholder`);
|
|
147
|
+
return match;
|
|
148
|
+
}
|
|
149
|
+
logger.debug({
|
|
150
|
+
...context,
|
|
151
|
+
varName,
|
|
152
|
+
envValue: envValue.substring(0, 10) + "...", // Only show first 10 chars for security
|
|
153
|
+
}, `Environment variable ${varName} found and substituted`);
|
|
154
|
+
return envValue;
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Interpolate environment variables using client-provided environment
|
|
159
|
+
* Supports ${VAR_NAME} syntax
|
|
160
|
+
*
|
|
161
|
+
* NOT USED CURRENTLY
|
|
162
|
+
* @param content - Content string with environment variable placeholders
|
|
163
|
+
* @param clientEnvironment - Environment variables provided by the client
|
|
164
|
+
* @param context - Request context for logging
|
|
165
|
+
* @returns Content with environment variables interpolated
|
|
166
|
+
*/
|
|
167
|
+
static interpolateClientEnvironmentVariables(content, clientEnvironment = {}, context) {
|
|
168
|
+
const operationContext = context ||
|
|
169
|
+
requestContextService.createRequestContext({
|
|
170
|
+
operation: "InterpolateClientEnvironmentVariables",
|
|
171
|
+
});
|
|
172
|
+
logger.debug({
|
|
173
|
+
...operationContext,
|
|
174
|
+
contentLength: content.length,
|
|
175
|
+
availableClientVars: Object.keys(clientEnvironment),
|
|
176
|
+
}, "Starting client environment variable interpolation");
|
|
177
|
+
return content.replace(/\$\{([^}]+)\}/g, (match, varName) => {
|
|
178
|
+
const envValue = clientEnvironment[varName];
|
|
179
|
+
if (envValue === undefined) {
|
|
180
|
+
logger.debug({
|
|
181
|
+
...operationContext,
|
|
182
|
+
match,
|
|
183
|
+
varName,
|
|
184
|
+
availableClientVars: Object.keys(clientEnvironment),
|
|
185
|
+
}, `Client environment variable ${varName} not found, keeping placeholder`);
|
|
186
|
+
return match;
|
|
187
|
+
}
|
|
188
|
+
logger.debug({
|
|
189
|
+
...operationContext,
|
|
190
|
+
varName,
|
|
191
|
+
envValue: envValue.substring(0, 10) + "...", // Only show first 10 chars for security
|
|
192
|
+
}, `Client environment variable ${varName} found and substituted`);
|
|
193
|
+
return envValue;
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Validate that all tool source references exist in the sources section
|
|
198
|
+
* @param config - Parsed YAML configuration
|
|
199
|
+
* @returns Array of validation errors
|
|
200
|
+
* @private
|
|
201
|
+
*/
|
|
202
|
+
static validateToolSourceReferences(config) {
|
|
203
|
+
const errors = [];
|
|
204
|
+
// Skip validation if either section is missing
|
|
205
|
+
if (!config.sources || !config.tools) {
|
|
206
|
+
return errors;
|
|
207
|
+
}
|
|
208
|
+
const sourceNames = Object.keys(config.sources);
|
|
209
|
+
Object.entries(config.tools).forEach(([toolName, tool]) => {
|
|
210
|
+
if (!sourceNames.includes(tool.source)) {
|
|
211
|
+
errors.push(`Tool '${toolName}' references unknown source '${tool.source}'. Available sources: ${sourceNames.join(", ")}`);
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
return errors;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Validate tool-specific requirements
|
|
218
|
+
* @param config - Parsed YAML configuration
|
|
219
|
+
* @returns Array of validation errors
|
|
220
|
+
* @private
|
|
221
|
+
*/
|
|
222
|
+
static validateToolRequirements(config) {
|
|
223
|
+
const errors = [];
|
|
224
|
+
// Skip validation if tools section is missing
|
|
225
|
+
if (!config.tools) {
|
|
226
|
+
return errors;
|
|
227
|
+
}
|
|
228
|
+
Object.entries(config.tools).forEach(([toolName, tool]) => {
|
|
229
|
+
// All tools must have a statement
|
|
230
|
+
if (!tool.statement || tool.statement.trim().length === 0) {
|
|
231
|
+
errors.push(`Tool '${toolName}' must have a non-empty statement field`);
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
return errors;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Process tools from YAML configuration into runtime format
|
|
238
|
+
* @param config - Validated YAML configuration
|
|
239
|
+
* @returns Array of processed tools
|
|
240
|
+
* @private
|
|
241
|
+
*/
|
|
242
|
+
static processTools(config) {
|
|
243
|
+
const processedTools = [];
|
|
244
|
+
// Return empty array if tools section is missing
|
|
245
|
+
if (!config.tools) {
|
|
246
|
+
return processedTools;
|
|
247
|
+
}
|
|
248
|
+
// Build toolset membership map
|
|
249
|
+
const toolToToolsets = {};
|
|
250
|
+
if (config.toolsets) {
|
|
251
|
+
Object.entries(config.toolsets).forEach(([toolsetName, toolset]) => {
|
|
252
|
+
toolset.tools.forEach((toolName) => {
|
|
253
|
+
if (!toolToToolsets[toolName]) {
|
|
254
|
+
toolToToolsets[toolName] = [];
|
|
255
|
+
}
|
|
256
|
+
toolToToolsets[toolName].push(toolsetName);
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
// Process each tool
|
|
261
|
+
Object.entries(config.tools).forEach(([toolName, tool]) => {
|
|
262
|
+
// Skip disabled tools
|
|
263
|
+
if (tool.enabled === false) {
|
|
264
|
+
logger.debug({
|
|
265
|
+
toolName,
|
|
266
|
+
enabled: false,
|
|
267
|
+
}, `Skipping disabled tool: ${toolName}`);
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
const source = config.sources?.[tool.source];
|
|
271
|
+
const toolsets = toolToToolsets[toolName] || [];
|
|
272
|
+
processedTools.push({
|
|
273
|
+
name: toolName,
|
|
274
|
+
config: tool,
|
|
275
|
+
source: source,
|
|
276
|
+
toolsets,
|
|
277
|
+
metadata: {
|
|
278
|
+
name: toolName,
|
|
279
|
+
description: tool.description,
|
|
280
|
+
domain: tool.domain,
|
|
281
|
+
category: tool.category,
|
|
282
|
+
toolsets,
|
|
283
|
+
},
|
|
284
|
+
});
|
|
285
|
+
});
|
|
286
|
+
return processedTools;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Validate a single tool parameter definition
|
|
290
|
+
* @param parameter - Parameter definition to validate
|
|
291
|
+
* @returns Validation result
|
|
292
|
+
*/
|
|
293
|
+
static validateParameter(parameter) {
|
|
294
|
+
const result = SqlToolParameterSchema.safeParse(parameter);
|
|
295
|
+
if (result.success) {
|
|
296
|
+
return { valid: true, errors: [] };
|
|
297
|
+
}
|
|
298
|
+
const errors = result.error.errors.map((err) => err.message);
|
|
299
|
+
return { valid: false, errors };
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Get available parameter types
|
|
303
|
+
* @returns Array of supported parameter types
|
|
304
|
+
*/
|
|
305
|
+
static getAvailableParameterTypes() {
|
|
306
|
+
return ["string", "number", "boolean", "integer"];
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=configParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configParser.js","sourceRoot":"","sources":["../../../../src/ibmi-mcp-server/utils/config/configParser.ts"],"names":[],"mappings":"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"}
|