@ibm/ibmi-mcp-server 0.1.2 → 0.3.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 (207) hide show
  1. package/README.md +2178 -46
  2. package/dist/config/index.d.ts +2 -0
  3. package/dist/config/index.d.ts.map +1 -1
  4. package/dist/config/index.js +57 -24
  5. package/dist/config/index.js.map +1 -1
  6. package/dist/config/resolver.d.ts.map +1 -1
  7. package/dist/config/resolver.js.map +1 -1
  8. package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.js +1 -1
  9. package/dist/ibmi-mcp-server/services/connectionPool.js +2 -2
  10. package/dist/ibmi-mcp-server/tools/executeSql.tool.d.ts +80 -0
  11. package/dist/ibmi-mcp-server/tools/executeSql.tool.d.ts.map +1 -0
  12. package/dist/ibmi-mcp-server/tools/executeSql.tool.js +356 -0
  13. package/dist/ibmi-mcp-server/tools/executeSql.tool.js.map +1 -0
  14. package/dist/ibmi-mcp-server/tools/generateSql.tool.d.ts +36 -0
  15. package/dist/ibmi-mcp-server/tools/generateSql.tool.d.ts.map +1 -0
  16. package/dist/ibmi-mcp-server/tools/generateSql.tool.js +281 -0
  17. package/dist/ibmi-mcp-server/tools/generateSql.tool.js.map +1 -0
  18. package/dist/ibmi-mcp-server/tools/index.d.ts +85 -0
  19. package/dist/ibmi-mcp-server/tools/index.d.ts.map +1 -0
  20. package/dist/ibmi-mcp-server/tools/index.js +21 -0
  21. package/dist/ibmi-mcp-server/tools/index.js.map +1 -0
  22. package/dist/ibmi-mcp-server/utils/config/configParser.d.ts +9 -0
  23. package/dist/ibmi-mcp-server/utils/config/configParser.d.ts.map +1 -1
  24. package/dist/ibmi-mcp-server/utils/config/configParser.js +58 -0
  25. package/dist/ibmi-mcp-server/utils/config/configParser.js.map +1 -1
  26. package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js +1 -1
  27. package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js.map +1 -1
  28. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts +4 -4
  29. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts.map +1 -1
  30. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js +7 -8
  31. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js.map +1 -1
  32. package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts +0 -8
  33. package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts.map +1 -1
  34. package/dist/ibmi-mcp-server/utils/config/toolFactory.js +0 -31
  35. package/dist/ibmi-mcp-server/utils/config/toolFactory.js.map +1 -1
  36. package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts +1 -1
  37. package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts.map +1 -1
  38. package/dist/ibmi-mcp-server/utils/config/toolsetManager.js +2 -2
  39. package/dist/ibmi-mcp-server/utils/config/toolsetManager.js.map +1 -1
  40. package/dist/ibmi-mcp-server/utils/language/document.d.ts +26 -0
  41. package/dist/ibmi-mcp-server/utils/language/document.d.ts.map +1 -0
  42. package/dist/ibmi-mcp-server/utils/language/document.js +318 -0
  43. package/dist/ibmi-mcp-server/utils/language/document.js.map +1 -0
  44. package/dist/ibmi-mcp-server/utils/language/statement.d.ts +43 -0
  45. package/dist/ibmi-mcp-server/utils/language/statement.d.ts.map +1 -0
  46. package/dist/ibmi-mcp-server/utils/language/statement.js +796 -0
  47. package/dist/ibmi-mcp-server/utils/language/statement.js.map +1 -0
  48. package/dist/ibmi-mcp-server/utils/language/tokens.d.ts +32 -0
  49. package/dist/ibmi-mcp-server/utils/language/tokens.d.ts.map +1 -0
  50. package/dist/ibmi-mcp-server/utils/language/tokens.js +532 -0
  51. package/dist/ibmi-mcp-server/utils/language/tokens.js.map +1 -0
  52. package/dist/ibmi-mcp-server/utils/language/types.d.ts +138 -0
  53. package/dist/ibmi-mcp-server/utils/language/types.d.ts.map +1 -0
  54. package/dist/ibmi-mcp-server/utils/language/types.js +93 -0
  55. package/dist/ibmi-mcp-server/utils/language/types.js.map +1 -0
  56. package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.d.ts +48 -0
  57. package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.d.ts.map +1 -0
  58. package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.js +93 -0
  59. package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.js.map +1 -0
  60. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts +35 -59
  61. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts.map +1 -1
  62. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js +108 -288
  63. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js.map +1 -1
  64. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.d.ts +54 -0
  65. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.d.ts.map +1 -0
  66. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.js +91 -0
  67. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.js.map +1 -0
  68. package/dist/index.js +4 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/mcp-server/tools/index.d.ts +13 -2
  71. package/dist/mcp-server/tools/index.d.ts.map +1 -1
  72. package/dist/mcp-server/tools/index.js +29 -9
  73. package/dist/mcp-server/tools/index.js.map +1 -1
  74. package/dist/mcp-server/tools/utils/index.d.ts +7 -0
  75. package/dist/mcp-server/tools/utils/index.d.ts.map +1 -0
  76. package/dist/mcp-server/tools/utils/index.js +7 -0
  77. package/dist/mcp-server/tools/utils/index.js.map +1 -0
  78. package/dist/mcp-server/tools/utils/tool-factory.d.ts +129 -0
  79. package/dist/mcp-server/tools/utils/tool-factory.d.ts.map +1 -0
  80. package/dist/mcp-server/tools/utils/tool-factory.js +179 -0
  81. package/dist/mcp-server/tools/utils/tool-factory.js.map +1 -0
  82. package/dist/mcp-server/tools/utils/types.d.ts +117 -0
  83. package/dist/mcp-server/tools/utils/types.d.ts.map +1 -0
  84. package/dist/mcp-server/tools/utils/types.js +11 -0
  85. package/dist/mcp-server/tools/utils/types.js.map +1 -0
  86. package/dist/mcp-server/transports/core/cleanupTransformStream.d.ts +26 -0
  87. package/dist/mcp-server/transports/core/cleanupTransformStream.d.ts.map +1 -0
  88. package/dist/mcp-server/transports/core/cleanupTransformStream.js +60 -0
  89. package/dist/mcp-server/transports/core/cleanupTransformStream.js.map +1 -0
  90. package/dist/mcp-server/transports/core/statefulTransportManager.d.ts +1 -1
  91. package/dist/mcp-server/transports/core/statefulTransportManager.d.ts.map +1 -1
  92. package/dist/mcp-server/transports/core/statefulTransportManager.js +50 -40
  93. package/dist/mcp-server/transports/core/statefulTransportManager.js.map +1 -1
  94. package/dist/mcp-server/transports/core/statelessTransportManager.d.ts +2 -13
  95. package/dist/mcp-server/transports/core/statelessTransportManager.d.ts.map +1 -1
  96. package/dist/mcp-server/transports/core/statelessTransportManager.js +35 -62
  97. package/dist/mcp-server/transports/core/statelessTransportManager.js.map +1 -1
  98. package/dist/mcp-server/transports/core/transportRequest.d.ts +1 -2
  99. package/dist/mcp-server/transports/core/transportRequest.d.ts.map +1 -1
  100. package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts.map +1 -1
  101. package/dist/mcp-server/transports/http/mcpTransportMiddleware.js +1 -3
  102. package/dist/mcp-server/transports/http/mcpTransportMiddleware.js.map +1 -1
  103. package/dist/utils/internal/logger.d.ts +5 -0
  104. package/dist/utils/internal/logger.d.ts.map +1 -1
  105. package/dist/utils/internal/logger.js +65 -36
  106. package/dist/utils/internal/logger.js.map +1 -1
  107. package/package.json +29 -23
  108. package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts +0 -9
  109. package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts.map +0 -1
  110. package/dist/ibmi-mcp-server/tools/executeSql/index.js +0 -9
  111. package/dist/ibmi-mcp-server/tools/executeSql/index.js.map +0 -1
  112. package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts +0 -51
  113. package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts.map +0 -1
  114. package/dist/ibmi-mcp-server/tools/executeSql/logic.js +0 -179
  115. package/dist/ibmi-mcp-server/tools/executeSql/logic.js.map +0 -1
  116. package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts +0 -52
  117. package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts.map +0 -1
  118. package/dist/ibmi-mcp-server/tools/executeSql/registration.js +0 -161
  119. package/dist/ibmi-mcp-server/tools/executeSql/registration.js.map +0 -1
  120. package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts +0 -13
  121. package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts.map +0 -1
  122. package/dist/ibmi-mcp-server/tools/generateSql/index.js +0 -13
  123. package/dist/ibmi-mcp-server/tools/generateSql/index.js.map +0 -1
  124. package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts +0 -64
  125. package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts.map +0 -1
  126. package/dist/ibmi-mcp-server/tools/generateSql/logic.js +0 -190
  127. package/dist/ibmi-mcp-server/tools/generateSql/logic.js.map +0 -1
  128. package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts +0 -18
  129. package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts.map +0 -1
  130. package/dist/ibmi-mcp-server/tools/generateSql/registration.js +0 -64
  131. package/dist/ibmi-mcp-server/tools/generateSql/registration.js.map +0 -1
  132. package/dist/mcp-server/tools/catFactFetcher/index.d.ts +0 -8
  133. package/dist/mcp-server/tools/catFactFetcher/index.d.ts.map +0 -1
  134. package/dist/mcp-server/tools/catFactFetcher/index.js +0 -8
  135. package/dist/mcp-server/tools/catFactFetcher/index.js.map +0 -1
  136. package/dist/mcp-server/tools/catFactFetcher/logic.d.ts +0 -52
  137. package/dist/mcp-server/tools/catFactFetcher/logic.d.ts.map +0 -1
  138. package/dist/mcp-server/tools/catFactFetcher/logic.js +0 -95
  139. package/dist/mcp-server/tools/catFactFetcher/logic.js.map +0 -1
  140. package/dist/mcp-server/tools/catFactFetcher/registration.d.ts +0 -9
  141. package/dist/mcp-server/tools/catFactFetcher/registration.d.ts.map +0 -1
  142. package/dist/mcp-server/tools/catFactFetcher/registration.js +0 -43
  143. package/dist/mcp-server/tools/catFactFetcher/registration.js.map +0 -1
  144. package/dist/mcp-server/tools/echoTool/index.d.ts +0 -13
  145. package/dist/mcp-server/tools/echoTool/index.d.ts.map +0 -1
  146. package/dist/mcp-server/tools/echoTool/index.js +0 -13
  147. package/dist/mcp-server/tools/echoTool/index.js.map +0 -1
  148. package/dist/mcp-server/tools/echoTool/logic.d.ts +0 -69
  149. package/dist/mcp-server/tools/echoTool/logic.d.ts.map +0 -1
  150. package/dist/mcp-server/tools/echoTool/logic.js +0 -119
  151. package/dist/mcp-server/tools/echoTool/logic.js.map +0 -1
  152. package/dist/mcp-server/tools/echoTool/registration.d.ts +0 -9
  153. package/dist/mcp-server/tools/echoTool/registration.d.ts.map +0 -1
  154. package/dist/mcp-server/tools/echoTool/registration.js +0 -45
  155. package/dist/mcp-server/tools/echoTool/registration.js.map +0 -1
  156. package/dist/mcp-server/tools/imageTest/index.d.ts +0 -7
  157. package/dist/mcp-server/tools/imageTest/index.d.ts.map +0 -1
  158. package/dist/mcp-server/tools/imageTest/index.js +0 -7
  159. package/dist/mcp-server/tools/imageTest/index.js.map +0 -1
  160. package/dist/mcp-server/tools/imageTest/logic.d.ts +0 -27
  161. package/dist/mcp-server/tools/imageTest/logic.d.ts.map +0 -1
  162. package/dist/mcp-server/tools/imageTest/logic.js +0 -44
  163. package/dist/mcp-server/tools/imageTest/logic.js.map +0 -1
  164. package/dist/mcp-server/tools/imageTest/registration.d.ts +0 -9
  165. package/dist/mcp-server/tools/imageTest/registration.d.ts.map +0 -1
  166. package/dist/mcp-server/tools/imageTest/registration.js +0 -49
  167. package/dist/mcp-server/tools/imageTest/registration.js.map +0 -1
  168. package/dist/mcp-server/tools/utils/tool-utils.d.ts +0 -43
  169. package/dist/mcp-server/tools/utils/tool-utils.d.ts.map +0 -1
  170. package/dist/mcp-server/tools/utils/tool-utils.js +0 -44
  171. package/dist/mcp-server/tools/utils/tool-utils.js.map +0 -1
  172. package/dist/mcp-server/transports/core/headerUtils.d.ts +0 -27
  173. package/dist/mcp-server/transports/core/headerUtils.d.ts.map +0 -1
  174. package/dist/mcp-server/transports/core/headerUtils.js +0 -53
  175. package/dist/mcp-server/transports/core/headerUtils.js.map +0 -1
  176. package/dist/mcp-server/transports/core/honoNodeBridge.d.ts +0 -77
  177. package/dist/mcp-server/transports/core/honoNodeBridge.d.ts.map +0 -1
  178. package/dist/mcp-server/transports/core/honoNodeBridge.js +0 -150
  179. package/dist/mcp-server/transports/core/honoNodeBridge.js.map +0 -1
  180. package/dist/services/duck-db/duckDBConnectionManager.d.ts +0 -55
  181. package/dist/services/duck-db/duckDBConnectionManager.d.ts.map +0 -1
  182. package/dist/services/duck-db/duckDBConnectionManager.js +0 -184
  183. package/dist/services/duck-db/duckDBConnectionManager.js.map +0 -1
  184. package/dist/services/duck-db/duckDBQueryExecutor.d.ts +0 -18
  185. package/dist/services/duck-db/duckDBQueryExecutor.d.ts.map +0 -1
  186. package/dist/services/duck-db/duckDBQueryExecutor.js +0 -115
  187. package/dist/services/duck-db/duckDBQueryExecutor.js.map +0 -1
  188. package/dist/services/duck-db/duckDBService.d.ts +0 -27
  189. package/dist/services/duck-db/duckDBService.d.ts.map +0 -1
  190. package/dist/services/duck-db/duckDBService.js +0 -151
  191. package/dist/services/duck-db/duckDBService.js.map +0 -1
  192. package/dist/services/duck-db/types.d.ts +0 -135
  193. package/dist/services/duck-db/types.d.ts.map +0 -1
  194. package/dist/services/duck-db/types.js +0 -6
  195. package/dist/services/duck-db/types.js.map +0 -1
  196. package/dist/services/llm-providers/openRouterProvider.d.ts +0 -36
  197. package/dist/services/llm-providers/openRouterProvider.d.ts.map +0 -1
  198. package/dist/services/llm-providers/openRouterProvider.js +0 -235
  199. package/dist/services/llm-providers/openRouterProvider.js.map +0 -1
  200. package/dist/services/supabase/supabaseClient.d.ts +0 -25
  201. package/dist/services/supabase/supabaseClient.d.ts.map +0 -1
  202. package/dist/services/supabase/supabaseClient.js +0 -68
  203. package/dist/services/supabase/supabaseClient.js.map +0 -1
  204. package/dist/storage/duckdbExample.d.ts +0 -8
  205. package/dist/storage/duckdbExample.d.ts.map +0 -1
  206. package/dist/storage/duckdbExample.js +0 -197
  207. package/dist/storage/duckdbExample.js.map +0 -1
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ import { config, environment } from "./config/index.js";
13
13
  import { initializeAndStartServer } from "./mcp-server/server.js";
14
14
  import { requestContextService } from "./utils/index.js";
15
15
  import { logFatal, logOperationError, logOperationStart, logOperationSuccess, } from "./utils/internal/logging-helpers.js";
16
- import { logger } from "./utils/internal/logger.js";
16
+ import { logger, reinitializeLogger } from "./utils/internal/logger.js";
17
17
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
18
18
  import http from "http";
19
19
  import { statSync, existsSync } from "fs";
@@ -30,6 +30,7 @@ async function listToolsetsCommand() {
30
30
  try {
31
31
  // Apply CLI overrides to get the correct tools path
32
32
  applyCliOverrides(cliArgs);
33
+ reinitializeLogger();
33
34
  if (!config.toolsYamlPath) {
34
35
  logger.error("❌ No YAML tools configuration found.");
35
36
  logger.error(" Use --tools <path> to specify YAML tools configuration or set TOOLS_YAML_PATH environment variable.\n");
@@ -145,6 +146,8 @@ if (cliArgs.tools) {
145
146
  }
146
147
  // Apply CLI overrides directly to global config so downstream modules see changes
147
148
  applyCliOverrides(cliArgs);
149
+ // Reinitialize logger with updated config (especially transport mode from CLI)
150
+ reinitializeLogger();
148
151
  // Log overrides if provided
149
152
  if (cliArgs.tools) {
150
153
  logger.info(`ℹ Using tools path: ${config.toolsYamlPath}`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,15 @@
1
+ /**
2
+ * Tool Registration Entry Point
3
+ *
4
+ * Registers all factory pattern tools with the MCP server.
5
+ * Each tool is registered directly using registerToolFromDefinition.
6
+ *
7
+ * @module tools
8
+ */
1
9
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- /** Registers all available tools with the MCP server. */
3
- export declare const registerAllTools: (server: McpServer) => Promise<void>;
10
+ /**
11
+ * Registers all factory pattern tools with the MCP server.
12
+ * Tools are defined in the allToolDefinitions array.
13
+ */
14
+ export declare function registerAllTools(server: McpServer): Promise<void>;
4
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,yDAAyD;AACzD,eAAO,MAAM,gBAAgB,GAAU,QAAQ,SAAS,KAAG,OAAO,CAAC,IAAI,CAStE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BvE"}
@@ -1,13 +1,33 @@
1
- import { requestContextService } from "../../utils/index.js";
1
+ /**
2
+ * Tool Registration Entry Point
3
+ *
4
+ * Registers all factory pattern tools with the MCP server.
5
+ * Each tool is registered directly using registerToolFromDefinition.
6
+ *
7
+ * @module tools
8
+ */
9
+ import { allToolDefinitions } from "../../ibmi-mcp-server/tools/index.js";
10
+ import { registerToolFromDefinition } from "./utils/tool-factory.js";
11
+ import { logger, requestContextService } from "../../utils/index.js";
2
12
  import { logOperationStart, logOperationSuccess, } from "../../utils/internal/logging-helpers.js";
3
- import { registerGenerateSqlTool } from "../../ibmi-mcp-server/tools/generateSql/index.js";
4
- /** Registers all available tools with the MCP server. */
5
- export const registerAllTools = async (server) => {
13
+ import { config } from "../../config/index.js";
14
+ /**
15
+ * Registers all factory pattern tools with the MCP server.
16
+ * Tools are defined in the allToolDefinitions array.
17
+ */
18
+ export async function registerAllTools(server) {
6
19
  const context = requestContextService.createRequestContext({
7
- operation: "registerAllTools",
20
+ operation: "RegisterAllTools",
8
21
  });
9
- logOperationStart(context, "Starting registration of all tools...");
10
- await Promise.all([registerGenerateSqlTool(server)]);
11
- logOperationSuccess(context, "All tools have been registered successfully.");
12
- };
22
+ logOperationStart(context, `Registering ${allToolDefinitions.length} factory pattern tools`);
23
+ for (const toolDef of allToolDefinitions) {
24
+ if (toolDef.name === "execute_sql" && !config.ibmi_enableExecuteSql) {
25
+ // Skip execute_sql tool if disabled via IBMI_ENABLE_EXECUTE_SQL
26
+ logger.debug(context, "Skipping registration of execute_sql tool (IBMI_ENABLE_EXECUTE_SQL=false)");
27
+ continue;
28
+ }
29
+ await registerToolFromDefinition(server, toolDef);
30
+ }
31
+ logOperationSuccess(context, `Successfully registered ${allToolDefinitions.length} factory pattern tools`);
32
+ }
13
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAEvF,yDAAyD;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAiB,EAAiB,EAAE;IACzE,MAAM,OAAO,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;QACzD,SAAS,EAAE,kBAAkB;KAC9B,CAAC,CAAC;IACH,iBAAiB,CAAC,OAAO,EAAE,uCAAuC,CAAC,CAAC;IAEpE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAErD,mBAAmB,CAAC,OAAO,EAAE,8CAA8C,CAAC,CAAC;AAC/E,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAiB;IACtD,MAAM,OAAO,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;QACzD,SAAS,EAAE,kBAAkB;KAC9B,CAAC,CAAC;IAEH,iBAAiB,CACf,OAAO,EACP,eAAe,kBAAkB,CAAC,MAAM,wBAAwB,CACjE,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACpE,gEAAgE;YAChE,MAAM,CAAC,KAAK,CACV,OAAO,EACP,2EAA2E,CAC5E,CAAC;YACF,SAAS;QACX,CAAC;QACD,MAAM,0BAA0B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,mBAAmB,CACjB,OAAO,EACP,2BAA2B,kBAAkB,CAAC,MAAM,wBAAwB,CAC7E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tool utilities barrel file
3
+ * Exports tool-related utilities and types
4
+ */
5
+ export type { ToolDefinition, ToolAnnotations, ToolLogicFn, SdkContext, } from "./types.js";
6
+ export * from "./tool-factory.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,cAAc,EACd,eAAe,EACf,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tool utilities barrel file
3
+ * Exports tool-related utilities and types
4
+ */
5
+ // Export factory functions
6
+ export * from "./tool-factory.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,2BAA2B;AAC3B,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Tool Registration Factory
3
+ *
4
+ * Provides a factory pattern for creating and registering MCP tools with minimal boilerplate.
5
+ * Handles validation, registration, error handling, and response formatting automatically.
6
+ *
7
+ * @module tool-factory
8
+ * @feature 001-tool-factory
9
+ */
10
+ import { z } from "zod";
11
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
12
+ import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
13
+ import { type RequestContext } from "../../../utils/index.js";
14
+ import type { ToolDefinition, ResponseFormatter, SdkContext } from "./types.js";
15
+ /**
16
+ * Zod schema for validating tool definitions at registration time.
17
+ */
18
+ export declare const ToolDefinitionSchema: z.ZodObject<{
19
+ name: z.ZodString;
20
+ description: z.ZodString;
21
+ inputSchema: z.ZodType<z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, {
22
+ [x: string]: any;
23
+ }, {
24
+ [x: string]: any;
25
+ }>, z.ZodTypeDef, z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, {
26
+ [x: string]: any;
27
+ }, {
28
+ [x: string]: any;
29
+ }>>;
30
+ outputSchema: z.ZodType<z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, {
31
+ [x: string]: any;
32
+ }, {
33
+ [x: string]: any;
34
+ }>, z.ZodTypeDef, z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, {
35
+ [x: string]: any;
36
+ }, {
37
+ [x: string]: any;
38
+ }>>;
39
+ logic: z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>;
40
+ title: z.ZodOptional<z.ZodString>;
41
+ responseFormatter: z.ZodOptional<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>>;
42
+ annotations: z.ZodOptional<z.ZodObject<{
43
+ readOnlyHint: z.ZodOptional<z.ZodBoolean>;
44
+ destructiveHint: z.ZodOptional<z.ZodBoolean>;
45
+ openWorldHint: z.ZodOptional<z.ZodBoolean>;
46
+ }, "strip", z.ZodTypeAny, {
47
+ readOnlyHint?: boolean | undefined;
48
+ openWorldHint?: boolean | undefined;
49
+ destructiveHint?: boolean | undefined;
50
+ }, {
51
+ readOnlyHint?: boolean | undefined;
52
+ openWorldHint?: boolean | undefined;
53
+ destructiveHint?: boolean | undefined;
54
+ }>>;
55
+ enabled: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>]>>;
56
+ }, "strip", z.ZodTypeAny, {
57
+ name: string;
58
+ description: string;
59
+ inputSchema: z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, {
60
+ [x: string]: any;
61
+ }, {
62
+ [x: string]: any;
63
+ }>;
64
+ outputSchema: z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, {
65
+ [x: string]: any;
66
+ }, {
67
+ [x: string]: any;
68
+ }>;
69
+ logic: (...args: unknown[]) => unknown;
70
+ enabled?: boolean | ((...args: unknown[]) => unknown) | undefined;
71
+ title?: string | undefined;
72
+ annotations?: {
73
+ readOnlyHint?: boolean | undefined;
74
+ openWorldHint?: boolean | undefined;
75
+ destructiveHint?: boolean | undefined;
76
+ } | undefined;
77
+ responseFormatter?: ((...args: unknown[]) => unknown) | undefined;
78
+ }, {
79
+ name: string;
80
+ description: string;
81
+ inputSchema: z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, {
82
+ [x: string]: any;
83
+ }, {
84
+ [x: string]: any;
85
+ }>;
86
+ outputSchema: z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, {
87
+ [x: string]: any;
88
+ }, {
89
+ [x: string]: any;
90
+ }>;
91
+ logic: (...args: unknown[]) => unknown;
92
+ enabled?: boolean | ((...args: unknown[]) => unknown) | undefined;
93
+ title?: string | undefined;
94
+ annotations?: {
95
+ readOnlyHint?: boolean | undefined;
96
+ openWorldHint?: boolean | undefined;
97
+ destructiveHint?: boolean | undefined;
98
+ } | undefined;
99
+ responseFormatter?: ((...args: unknown[]) => unknown) | undefined;
100
+ }>;
101
+ /**
102
+ * Creates a standardized MCP tool handler.
103
+ * This factory encapsulates context creation, performance measurement,
104
+ * error handling, and response formatting. It separates the app's internal
105
+ * RequestContext from the SDK's context (SdkContext).
106
+ *
107
+ * @param toolName - The name of the tool for logging and metrics
108
+ * @param logic - The core business logic function
109
+ * @param responseFormatter - Optional custom formatter (defaults to JSON)
110
+ * @returns A handler function compatible with the MCP SDK's tool callback
111
+ */
112
+ export declare function createHandler<TInput, TOutput>(toolName: string, logic: (input: TInput, appContext: RequestContext, sdkContext: SdkContext) => Promise<TOutput>, responseFormatter?: ResponseFormatter<TOutput>): (input: TInput, extra: unknown) => Promise<CallToolResult>;
113
+ /**
114
+ * Factory function for creating tool definitions.
115
+ * Provides type inference and acts as the main entry point for tool authors.
116
+ *
117
+ * @param definition - The tool configuration
118
+ * @returns The same tool definition (for type inference)
119
+ */
120
+ export declare function defineTool<TInputShape extends z.ZodRawShape, TOutputShape extends z.ZodRawShape>(definition: ToolDefinition<TInputShape, TOutputShape>): ToolDefinition<TInputShape, TOutputShape>;
121
+ /**
122
+ * Registers a single tool from its definition.
123
+ * Accepts any tool definition shape to support arrays of mixed tool types.
124
+ *
125
+ * @param server - The MCP server instance
126
+ * @param toolDef - The tool definition to register
127
+ */
128
+ export declare function registerToolFromDefinition(server: McpServer, toolDef: ToolDefinition<any, any>): Promise<void>;
129
+ //# sourceMappingURL=tool-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-factory.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/tool-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAa,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,KAAK,EACV,cAAc,EAEd,iBAAiB,EACjB,UAAU,EACX,MAAM,YAAY,CAAC;AAMpB;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgC/B,CAAC;AAkBH;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAC3C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,CACL,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,cAAc,EAC1B,UAAU,EAAE,UAAU,KACnB,OAAO,CAAC,OAAO,CAAC,EACrB,iBAAiB,GAAE,iBAAiB,CAAC,OAAO,CAA0D,GACrG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,CAiD5D;AAMD;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,WAAW,SAAS,CAAC,CAAC,WAAW,EACjC,YAAY,SAAS,CAAC,CAAC,WAAW,EAElC,UAAU,EAAE,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,GACpD,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,CAI3C;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,SAAS,EAEjB,OAAO,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CA6Ef"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Tool Registration Factory
3
+ *
4
+ * Provides a factory pattern for creating and registering MCP tools with minimal boilerplate.
5
+ * Handles validation, registration, error handling, and response formatting automatically.
6
+ *
7
+ * @module tool-factory
8
+ * @feature 001-tool-factory
9
+ */
10
+ import { z } from "zod";
11
+ import { JsonRpcErrorCode } from "../../../types-global/errors.js";
12
+ import { ErrorHandler, requestContextService, measureToolExecution, } from "../../../utils/index.js";
13
+ import { logOperationStart, logOperationSuccess, } from "../../../utils/internal/logging-helpers.js";
14
+ // =============================================================================
15
+ // Validation Schema
16
+ // =============================================================================
17
+ /**
18
+ * Zod schema for validating tool definitions at registration time.
19
+ */
20
+ export const ToolDefinitionSchema = z.object({
21
+ name: z
22
+ .string()
23
+ .min(1, "Tool name is required")
24
+ .regex(/^[a-z][a-z0-9_]*$/, "Tool name must be snake_case (lowercase letters, numbers, underscores)"),
25
+ description: z.string().min(1, "Tool description is required"),
26
+ inputSchema: z.custom((val) => val instanceof z.ZodObject, {
27
+ message: "inputSchema must be a Zod object schema",
28
+ }),
29
+ outputSchema: z.custom((val) => val instanceof z.ZodObject, {
30
+ message: "outputSchema must be a Zod object schema",
31
+ }),
32
+ logic: z.function(),
33
+ title: z.string().optional(),
34
+ responseFormatter: z.function().optional(),
35
+ annotations: z
36
+ .object({
37
+ readOnlyHint: z.boolean().optional(),
38
+ destructiveHint: z.boolean().optional(),
39
+ openWorldHint: z.boolean().optional(),
40
+ })
41
+ .optional(),
42
+ enabled: z.union([z.boolean(), z.function()]).optional(),
43
+ });
44
+ // =============================================================================
45
+ // Default Response Formatter
46
+ // =============================================================================
47
+ /**
48
+ * Default formatter for successful responses.
49
+ * Returns a simple JSON representation of the result.
50
+ */
51
+ const defaultResponseFormatter = (result) => [
52
+ { type: "text", text: JSON.stringify(result, null, 2) },
53
+ ];
54
+ // =============================================================================
55
+ // Handler Factory
56
+ // =============================================================================
57
+ /**
58
+ * Creates a standardized MCP tool handler.
59
+ * This factory encapsulates context creation, performance measurement,
60
+ * error handling, and response formatting. It separates the app's internal
61
+ * RequestContext from the SDK's context (SdkContext).
62
+ *
63
+ * @param toolName - The name of the tool for logging and metrics
64
+ * @param logic - The core business logic function
65
+ * @param responseFormatter - Optional custom formatter (defaults to JSON)
66
+ * @returns A handler function compatible with the MCP SDK's tool callback
67
+ */
68
+ export function createHandler(toolName, logic, responseFormatter = defaultResponseFormatter) {
69
+ return async (input, callContext) => {
70
+ // Cast the SDK context to our specific SdkContext type
71
+ const sdkContext = callContext;
72
+ const sessionId = typeof sdkContext?.sessionId === "string"
73
+ ? sdkContext.sessionId
74
+ : undefined;
75
+ // Create the application's internal logger/tracing context
76
+ const appContext = requestContextService.createRequestContext({
77
+ parentContext: sdkContext,
78
+ operation: "HandleToolRequest",
79
+ additionalContext: { toolName, sessionId, input },
80
+ });
81
+ try {
82
+ const result = await measureToolExecution(toolName, () => logic(input, appContext, sdkContext), input);
83
+ return {
84
+ structuredContent: result,
85
+ content: responseFormatter(result),
86
+ };
87
+ }
88
+ catch (error) {
89
+ const mcpError = ErrorHandler.handleError(error, {
90
+ operation: `tool:${toolName}`,
91
+ context: appContext,
92
+ input,
93
+ });
94
+ return {
95
+ isError: true,
96
+ content: [{ type: "text", text: `Error: ${mcpError.message}` }],
97
+ structuredContent: {
98
+ code: mcpError.code,
99
+ message: mcpError.message,
100
+ details: mcpError.details,
101
+ },
102
+ };
103
+ }
104
+ };
105
+ }
106
+ // =============================================================================
107
+ // Factory Functions
108
+ // =============================================================================
109
+ /**
110
+ * Factory function for creating tool definitions.
111
+ * Provides type inference and acts as the main entry point for tool authors.
112
+ *
113
+ * @param definition - The tool configuration
114
+ * @returns The same tool definition (for type inference)
115
+ */
116
+ export function defineTool(definition) {
117
+ // Validate the definition
118
+ ToolDefinitionSchema.parse(definition);
119
+ return definition;
120
+ }
121
+ /**
122
+ * Registers a single tool from its definition.
123
+ * Accepts any tool definition shape to support arrays of mixed tool types.
124
+ *
125
+ * @param server - The MCP server instance
126
+ * @param toolDef - The tool definition to register
127
+ */
128
+ export async function registerToolFromDefinition(server,
129
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
130
+ toolDef) {
131
+ const registrationContext = requestContextService.createRequestContext({
132
+ operation: "RegisterTool",
133
+ toolName: toolDef.name,
134
+ });
135
+ logOperationStart(registrationContext, `Registering tool: '${toolDef.name}'`);
136
+ await ErrorHandler.tryCatch(async () => {
137
+ // Check if tool is enabled
138
+ const enabled = toolDef.enabled === undefined
139
+ ? true
140
+ : typeof toolDef.enabled === "function"
141
+ ? toolDef.enabled()
142
+ : toolDef.enabled;
143
+ if (!enabled) {
144
+ logOperationSuccess(registrationContext, `Tool '${toolDef.name}' is disabled, skipping registration`);
145
+ return;
146
+ }
147
+ // Prepare metadata
148
+ const title = toolDef.title ||
149
+ toolDef.name
150
+ .split("_")
151
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
152
+ .join(" ");
153
+ const annotations = {
154
+ readOnlyHint: toolDef.annotations?.readOnlyHint ?? false,
155
+ destructiveHint: toolDef.annotations?.destructiveHint ?? false,
156
+ openWorldHint: toolDef.annotations?.openWorldHint ?? false,
157
+ };
158
+ // Use custom formatter or default
159
+ const responseFormatter = toolDef.responseFormatter || defaultResponseFormatter;
160
+ // Create handler using the factory
161
+ const handler = createHandler(toolDef.name, toolDef.logic, responseFormatter);
162
+ // Register with MCP server
163
+ // Use .shape to extract raw schema like YAML tools do
164
+ server.registerTool(toolDef.name, {
165
+ title,
166
+ description: toolDef.description,
167
+ inputSchema: toolDef.inputSchema.shape,
168
+ outputSchema: toolDef.outputSchema.shape,
169
+ annotations,
170
+ }, handler);
171
+ logOperationSuccess(registrationContext, `Tool '${toolDef.name}' registered successfully`);
172
+ }, {
173
+ operation: `RegisteringTool_${toolDef.name}`,
174
+ context: registrationContext,
175
+ errorCode: JsonRpcErrorCode.InitializationFailed,
176
+ critical: true,
177
+ });
178
+ }
179
+ //# sourceMappingURL=tool-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-factory.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/tool-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Tool Factory Contracts
3
+ *
4
+ * TypeScript interfaces defining the contract between tool authors
5
+ * and the registration system.
6
+ *
7
+ * @module tool-factory
8
+ * @feature 001-tool-factory
9
+ */
10
+ import type { z, ZodObject, ZodRawShape } from "zod";
11
+ import type { ContentBlock } from "@modelcontextprotocol/sdk/types.js";
12
+ import type { RequestHandlerExtra } from "@modelcontextprotocol/sdk/shared/protocol.js";
13
+ import type { ServerNotification, ServerRequest } from "@modelcontextprotocol/sdk/types.js";
14
+ import type { RequestContext } from "../../../utils/index.js";
15
+ /**
16
+ * Defines the function signature for formatting a successful tool logic result
17
+ * into content blocks for display.
18
+ * @template TOutput The type of the successful output from the logic.
19
+ * @param result The successful output from the tool's logic function.
20
+ * @returns An array of ContentBlocks for the MCP client to display.
21
+ */
22
+ export type ResponseFormatter<TOutput> = (result: TOutput) => ContentBlock[];
23
+ /**
24
+ * A type alias for the SDK's `RequestHandlerExtra` context, making it more
25
+ * specific and easier to reference in our tool logic signatures.
26
+ * Provides access to protocol-level capabilities like cancellation, notifications, and auth.
27
+ */
28
+ export type SdkContext = RequestHandlerExtra<ServerRequest, ServerNotification>;
29
+ /**
30
+ * Function signature for tool business logic.
31
+ * Receives validated input, application context, and SDK context, returns structured output.
32
+ *
33
+ * @template TInput - Input type inferred from inputSchema
34
+ * @template TOutput - Output type inferred from outputSchema
35
+ */
36
+ export type ToolLogicFn<TInput, TOutput> = (params: TInput, appContext: RequestContext, sdkContext: SdkContext) => Promise<TOutput>;
37
+ /**
38
+ * MCP protocol hints for LLM decision-making.
39
+ * All fields are optional and default to false.
40
+ */
41
+ export interface ToolAnnotations {
42
+ /** Tool only reads data, no side effects */
43
+ readOnlyHint?: boolean;
44
+ /** Tool may permanently delete or modify data */
45
+ destructiveHint?: boolean;
46
+ /** Tool makes external API or network calls */
47
+ openWorldHint?: boolean;
48
+ }
49
+ /**
50
+ * Developer-facing interface for declaring an MCP tool.
51
+ *
52
+ * @template TInputShape - Zod shape for input schema
53
+ * @template TOutputShape - Zod shape for output schema
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * const myTool = defineTool({
58
+ * name: "my_tool",
59
+ * description: "Does something useful",
60
+ * inputSchema: z.object({ query: z.string() }),
61
+ * outputSchema: z.object({ result: z.string() }),
62
+ * logic: async ({ query }, appContext) => {
63
+ * logger.debug({ ...appContext, query }, 'Processing query');
64
+ * return { result: `Processed: ${query}` };
65
+ * },
66
+ * });
67
+ * ```
68
+ */
69
+ export interface ToolDefinition<TInputShape extends ZodRawShape = ZodRawShape, TOutputShape extends ZodRawShape = ZodRawShape> {
70
+ /**
71
+ * Unique tool identifier.
72
+ * Convention: snake_case (e.g., "describe_sql_object")
73
+ */
74
+ name: string;
75
+ /**
76
+ * LLM-facing description of tool capabilities.
77
+ * Should clearly explain what the tool does and when to use it.
78
+ */
79
+ description: string;
80
+ /**
81
+ * Zod schema validating tool input.
82
+ * Input is validated before logic function is called.
83
+ */
84
+ inputSchema: ZodObject<TInputShape>;
85
+ /**
86
+ * Zod schema defining expected output structure.
87
+ * Used for documentation and type inference.
88
+ */
89
+ outputSchema: ZodObject<TOutputShape>;
90
+ /**
91
+ * Pure async function implementing tool behavior.
92
+ * Receives validated input and application context, returns structured output.
93
+ */
94
+ logic: ToolLogicFn<z.infer<ZodObject<TInputShape>>, z.infer<ZodObject<TOutputShape>>>;
95
+ /**
96
+ * Human-readable title for UI display.
97
+ * Defaults to formatted tool name if not provided.
98
+ */
99
+ title?: string;
100
+ /**
101
+ * Custom output formatter.
102
+ * Defaults to JSON serialization with text summary.
103
+ */
104
+ responseFormatter?: ResponseFormatter<z.infer<ZodObject<TOutputShape>>>;
105
+ /**
106
+ * MCP safety hints for LLM decision-making.
107
+ * All hints default to false if not specified.
108
+ */
109
+ annotations?: ToolAnnotations;
110
+ /**
111
+ * Conditional registration control.
112
+ * Set to false or return false from function to skip registration.
113
+ * Defaults to true (tool is registered).
114
+ */
115
+ enabled?: boolean | (() => boolean);
116
+ }
117
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACd,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAM9D;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK,YAAY,EAAE,CAAC;AAE7E;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,CAAC,MAAM,EAAE,OAAO,IAAI,CACzC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,cAAc,EAC1B,UAAU,EAAE,UAAU,KACnB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iDAAiD;IACjD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+CAA+C;IAC/C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,cAAc,CAC7B,WAAW,SAAS,WAAW,GAAG,WAAW,EAC7C,YAAY,SAAS,WAAW,GAAG,WAAW;IAE9C;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAEpC;;;OAGG;IACH,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IAEtC;;;OAGG;IACH,KAAK,EAAE,WAAW,CAChB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAC/B,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CACjC,CAAC;IAEF;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAExE;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAE9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;CACrC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Tool Factory Contracts
3
+ *
4
+ * TypeScript interfaces defining the contract between tool authors
5
+ * and the registration system.
6
+ *
7
+ * @module tool-factory
8
+ * @feature 001-tool-factory
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}