n8n-mcp 2.7.7

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 (375) hide show
  1. package/.env.example +79 -0
  2. package/LICENSE +21 -0
  3. package/README.md +670 -0
  4. package/data/nodes.db +0 -0
  5. package/dist/config/n8n-api.d.ts +9 -0
  6. package/dist/config/n8n-api.d.ts.map +1 -0
  7. package/dist/config/n8n-api.js +41 -0
  8. package/dist/config/n8n-api.js.map +1 -0
  9. package/dist/database/database-adapter.d.ts +32 -0
  10. package/dist/database/database-adapter.d.ts.map +1 -0
  11. package/dist/database/database-adapter.js +328 -0
  12. package/dist/database/database-adapter.js.map +1 -0
  13. package/dist/database/node-repository.d.ts +11 -0
  14. package/dist/database/node-repository.d.ts.map +1 -0
  15. package/dist/database/node-repository.js +67 -0
  16. package/dist/database/node-repository.js.map +1 -0
  17. package/dist/http-server-single-session.d.ts +21 -0
  18. package/dist/http-server-single-session.d.ts.map +1 -0
  19. package/dist/http-server-single-session.js +279 -0
  20. package/dist/http-server-single-session.js.map +1 -0
  21. package/dist/http-server.d.ts +9 -0
  22. package/dist/http-server.d.ts.map +1 -0
  23. package/dist/http-server.js +342 -0
  24. package/dist/http-server.js.map +1 -0
  25. package/dist/index.d.ts +7 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +17 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/loaders/node-loader.d.ts +11 -0
  30. package/dist/loaders/node-loader.d.ts.map +1 -0
  31. package/dist/loaders/node-loader.js +79 -0
  32. package/dist/loaders/node-loader.js.map +1 -0
  33. package/dist/mappers/docs-mapper.d.ts +6 -0
  34. package/dist/mappers/docs-mapper.d.ts.map +1 -0
  35. package/dist/mappers/docs-mapper.js +59 -0
  36. package/dist/mappers/docs-mapper.js.map +1 -0
  37. package/dist/mcp/absolute-minimal.d.ts +4 -0
  38. package/dist/mcp/absolute-minimal.d.ts.map +1 -0
  39. package/dist/mcp/absolute-minimal.js +34 -0
  40. package/dist/mcp/absolute-minimal.js.map +1 -0
  41. package/dist/mcp/fixed-protocol.d.ts +17 -0
  42. package/dist/mcp/fixed-protocol.d.ts.map +1 -0
  43. package/dist/mcp/fixed-protocol.js +162 -0
  44. package/dist/mcp/fixed-protocol.js.map +1 -0
  45. package/dist/mcp/handlers-documentation.d.ts +18 -0
  46. package/dist/mcp/handlers-documentation.d.ts.map +1 -0
  47. package/dist/mcp/handlers-documentation.js +113 -0
  48. package/dist/mcp/handlers-documentation.js.map +1 -0
  49. package/dist/mcp/handlers-n8n-manager.d.ts +21 -0
  50. package/dist/mcp/handlers-n8n-manager.d.ts.map +1 -0
  51. package/dist/mcp/handlers-n8n-manager.js +827 -0
  52. package/dist/mcp/handlers-n8n-manager.js.map +1 -0
  53. package/dist/mcp/handlers-workflow-diff.d.ts +3 -0
  54. package/dist/mcp/handlers-workflow-diff.d.ts.map +1 -0
  55. package/dist/mcp/handlers-workflow-diff.js +125 -0
  56. package/dist/mcp/handlers-workflow-diff.js.map +1 -0
  57. package/dist/mcp/index.d.ts +3 -0
  58. package/dist/mcp/index.d.ts.map +1 -0
  59. package/dist/mcp/index.js +106 -0
  60. package/dist/mcp/index.js.map +1 -0
  61. package/dist/mcp/minimal-test.d.ts +3 -0
  62. package/dist/mcp/minimal-test.d.ts.map +1 -0
  63. package/dist/mcp/minimal-test.js +83 -0
  64. package/dist/mcp/minimal-test.js.map +1 -0
  65. package/dist/mcp/server.d.ts +42 -0
  66. package/dist/mcp/server.d.ts.map +1 -0
  67. package/dist/mcp/server.js +1258 -0
  68. package/dist/mcp/server.js.map +1 -0
  69. package/dist/mcp/stderr-test.d.ts +2 -0
  70. package/dist/mcp/stderr-test.d.ts.map +1 -0
  71. package/dist/mcp/stderr-test.js +32 -0
  72. package/dist/mcp/stderr-test.js.map +1 -0
  73. package/dist/mcp/stdio-wrapper.d.ts +3 -0
  74. package/dist/mcp/stdio-wrapper.d.ts.map +1 -0
  75. package/dist/mcp/stdio-wrapper.js +52 -0
  76. package/dist/mcp/stdio-wrapper.js.map +1 -0
  77. package/dist/mcp/tools-documentation.d.ts +34 -0
  78. package/dist/mcp/tools-documentation.d.ts.map +1 -0
  79. package/dist/mcp/tools-documentation.js +609 -0
  80. package/dist/mcp/tools-documentation.js.map +1 -0
  81. package/dist/mcp/tools-n8n-manager.d.ts +3 -0
  82. package/dist/mcp/tools-n8n-manager.d.ts.map +1 -0
  83. package/dist/mcp/tools-n8n-manager.js +496 -0
  84. package/dist/mcp/tools-n8n-manager.js.map +1 -0
  85. package/dist/mcp/tools.d.ts +3 -0
  86. package/dist/mcp/tools.d.ts.map +1 -0
  87. package/dist/mcp/tools.js +405 -0
  88. package/dist/mcp/tools.js.map +1 -0
  89. package/dist/mcp/ultra-minimal.d.ts +8 -0
  90. package/dist/mcp/ultra-minimal.d.ts.map +1 -0
  91. package/dist/mcp/ultra-minimal.js +93 -0
  92. package/dist/mcp/ultra-minimal.js.map +1 -0
  93. package/dist/mcp/working-test.d.ts +3 -0
  94. package/dist/mcp/working-test.d.ts.map +1 -0
  95. package/dist/mcp/working-test.js +48 -0
  96. package/dist/mcp/working-test.js.map +1 -0
  97. package/dist/mcp/wrapper.sh +28 -0
  98. package/dist/mcp-engine.d.ts +32 -0
  99. package/dist/mcp-engine.d.ts.map +1 -0
  100. package/dist/mcp-engine.js +63 -0
  101. package/dist/mcp-engine.js.map +1 -0
  102. package/dist/n8n/MCPApi.credentials.d.ts +8 -0
  103. package/dist/n8n/MCPApi.credentials.d.ts.map +1 -0
  104. package/dist/n8n/MCPApi.credentials.js +53 -0
  105. package/dist/n8n/MCPApi.credentials.js.map +1 -0
  106. package/dist/n8n/MCPNode.node.d.ts +13 -0
  107. package/dist/n8n/MCPNode.node.d.ts.map +1 -0
  108. package/dist/n8n/MCPNode.node.js +260 -0
  109. package/dist/n8n/MCPNode.node.js.map +1 -0
  110. package/dist/parsers/node-parser.d.ts +30 -0
  111. package/dist/parsers/node-parser.d.ts.map +1 -0
  112. package/dist/parsers/node-parser.js +152 -0
  113. package/dist/parsers/node-parser.js.map +1 -0
  114. package/dist/parsers/property-extractor.d.ts +10 -0
  115. package/dist/parsers/property-extractor.d.ts.map +1 -0
  116. package/dist/parsers/property-extractor.js +155 -0
  117. package/dist/parsers/property-extractor.js.map +1 -0
  118. package/dist/parsers/simple-parser.d.ts +24 -0
  119. package/dist/parsers/simple-parser.d.ts.map +1 -0
  120. package/dist/parsers/simple-parser.js +160 -0
  121. package/dist/parsers/simple-parser.js.map +1 -0
  122. package/dist/scripts/debug-n8n-auth.d.ts +3 -0
  123. package/dist/scripts/debug-n8n-auth.d.ts.map +1 -0
  124. package/dist/scripts/debug-n8n-auth.js +97 -0
  125. package/dist/scripts/debug-n8n-auth.js.map +1 -0
  126. package/dist/scripts/debug-node.d.ts +3 -0
  127. package/dist/scripts/debug-node.d.ts.map +1 -0
  128. package/dist/scripts/debug-node.js +59 -0
  129. package/dist/scripts/debug-node.js.map +1 -0
  130. package/dist/scripts/extract-from-docker.d.ts +3 -0
  131. package/dist/scripts/extract-from-docker.d.ts.map +1 -0
  132. package/dist/scripts/extract-from-docker.js +210 -0
  133. package/dist/scripts/extract-from-docker.js.map +1 -0
  134. package/dist/scripts/fetch-templates-robust.d.ts +4 -0
  135. package/dist/scripts/fetch-templates-robust.d.ts.map +1 -0
  136. package/dist/scripts/fetch-templates-robust.js +126 -0
  137. package/dist/scripts/fetch-templates-robust.js.map +1 -0
  138. package/dist/scripts/fetch-templates.d.ts +4 -0
  139. package/dist/scripts/fetch-templates.d.ts.map +1 -0
  140. package/dist/scripts/fetch-templates.js +94 -0
  141. package/dist/scripts/fetch-templates.js.map +1 -0
  142. package/dist/scripts/rebuild-database.d.ts +4 -0
  143. package/dist/scripts/rebuild-database.d.ts.map +1 -0
  144. package/dist/scripts/rebuild-database.js +95 -0
  145. package/dist/scripts/rebuild-database.js.map +1 -0
  146. package/dist/scripts/rebuild-optimized.d.ts +3 -0
  147. package/dist/scripts/rebuild-optimized.d.ts.map +1 -0
  148. package/dist/scripts/rebuild-optimized.js +198 -0
  149. package/dist/scripts/rebuild-optimized.js.map +1 -0
  150. package/dist/scripts/rebuild.d.ts +3 -0
  151. package/dist/scripts/rebuild.d.ts.map +1 -0
  152. package/dist/scripts/rebuild.js +163 -0
  153. package/dist/scripts/rebuild.js.map +1 -0
  154. package/dist/scripts/sanitize-templates.d.ts +3 -0
  155. package/dist/scripts/sanitize-templates.d.ts.map +1 -0
  156. package/dist/scripts/sanitize-templates.js +56 -0
  157. package/dist/scripts/sanitize-templates.js.map +1 -0
  158. package/dist/scripts/test-ai-workflow-validation.d.ts +3 -0
  159. package/dist/scripts/test-ai-workflow-validation.d.ts.map +1 -0
  160. package/dist/scripts/test-ai-workflow-validation.js +191 -0
  161. package/dist/scripts/test-ai-workflow-validation.js.map +1 -0
  162. package/dist/scripts/test-api-headers.d.ts +3 -0
  163. package/dist/scripts/test-api-headers.d.ts.map +1 -0
  164. package/dist/scripts/test-api-headers.js +35 -0
  165. package/dist/scripts/test-api-headers.js.map +1 -0
  166. package/dist/scripts/test-docker-config-simulation.d.ts +3 -0
  167. package/dist/scripts/test-docker-config-simulation.d.ts.map +1 -0
  168. package/dist/scripts/test-docker-config-simulation.js +74 -0
  169. package/dist/scripts/test-docker-config-simulation.js.map +1 -0
  170. package/dist/scripts/test-enhanced-validation.d.ts +3 -0
  171. package/dist/scripts/test-enhanced-validation.d.ts.map +1 -0
  172. package/dist/scripts/test-enhanced-validation.js +117 -0
  173. package/dist/scripts/test-enhanced-validation.js.map +1 -0
  174. package/dist/scripts/test-lazy-config.d.ts +3 -0
  175. package/dist/scripts/test-lazy-config.d.ts.map +1 -0
  176. package/dist/scripts/test-lazy-config.js +60 -0
  177. package/dist/scripts/test-lazy-config.js.map +1 -0
  178. package/dist/scripts/test-limited-results.d.ts +3 -0
  179. package/dist/scripts/test-limited-results.d.ts.map +1 -0
  180. package/dist/scripts/test-limited-results.js +76 -0
  181. package/dist/scripts/test-limited-results.js.map +1 -0
  182. package/dist/scripts/test-mcp-n8n-update-partial.d.ts +3 -0
  183. package/dist/scripts/test-mcp-n8n-update-partial.d.ts.map +1 -0
  184. package/dist/scripts/test-mcp-n8n-update-partial.js +138 -0
  185. package/dist/scripts/test-mcp-n8n-update-partial.js.map +1 -0
  186. package/dist/scripts/test-mcp-tools.d.ts +3 -0
  187. package/dist/scripts/test-mcp-tools.d.ts.map +1 -0
  188. package/dist/scripts/test-mcp-tools.js +36 -0
  189. package/dist/scripts/test-mcp-tools.js.map +1 -0
  190. package/dist/scripts/test-n8n-manager-integration.d.ts +3 -0
  191. package/dist/scripts/test-n8n-manager-integration.d.ts.map +1 -0
  192. package/dist/scripts/test-n8n-manager-integration.js +122 -0
  193. package/dist/scripts/test-n8n-manager-integration.js.map +1 -0
  194. package/dist/scripts/test-n8n-validate-workflow.d.ts +3 -0
  195. package/dist/scripts/test-n8n-validate-workflow.d.ts.map +1 -0
  196. package/dist/scripts/test-n8n-validate-workflow.js +125 -0
  197. package/dist/scripts/test-n8n-validate-workflow.js.map +1 -0
  198. package/dist/scripts/test-nodes.d.ts +3 -0
  199. package/dist/scripts/test-nodes.d.ts.map +1 -0
  200. package/dist/scripts/test-nodes.js +91 -0
  201. package/dist/scripts/test-nodes.js.map +1 -0
  202. package/dist/scripts/test-single-workflow.d.ts +3 -0
  203. package/dist/scripts/test-single-workflow.d.ts.map +1 -0
  204. package/dist/scripts/test-single-workflow.js +112 -0
  205. package/dist/scripts/test-single-workflow.js.map +1 -0
  206. package/dist/scripts/test-template-validation.d.ts +3 -0
  207. package/dist/scripts/test-template-validation.d.ts.map +1 -0
  208. package/dist/scripts/test-template-validation.js +142 -0
  209. package/dist/scripts/test-template-validation.js.map +1 -0
  210. package/dist/scripts/test-templates.d.ts +4 -0
  211. package/dist/scripts/test-templates.d.ts.map +1 -0
  212. package/dist/scripts/test-templates.js +99 -0
  213. package/dist/scripts/test-templates.js.map +1 -0
  214. package/dist/scripts/test-transactional-diff.d.ts +2 -0
  215. package/dist/scripts/test-transactional-diff.d.ts.map +1 -0
  216. package/dist/scripts/test-transactional-diff.js +240 -0
  217. package/dist/scripts/test-transactional-diff.js.map +1 -0
  218. package/dist/scripts/test-update-partial-debug.d.ts +3 -0
  219. package/dist/scripts/test-update-partial-debug.d.ts.map +1 -0
  220. package/dist/scripts/test-update-partial-debug.js +92 -0
  221. package/dist/scripts/test-update-partial-debug.js.map +1 -0
  222. package/dist/scripts/test-version-extraction.d.ts +2 -0
  223. package/dist/scripts/test-version-extraction.d.ts.map +1 -0
  224. package/dist/scripts/test-version-extraction.js +74 -0
  225. package/dist/scripts/test-version-extraction.js.map +1 -0
  226. package/dist/scripts/test-workflow-diff.d.ts +3 -0
  227. package/dist/scripts/test-workflow-diff.d.ts.map +1 -0
  228. package/dist/scripts/test-workflow-diff.js +328 -0
  229. package/dist/scripts/test-workflow-diff.js.map +1 -0
  230. package/dist/scripts/test-workflow-validation.d.ts +3 -0
  231. package/dist/scripts/test-workflow-validation.d.ts.map +1 -0
  232. package/dist/scripts/test-workflow-validation.js +238 -0
  233. package/dist/scripts/test-workflow-validation.js.map +1 -0
  234. package/dist/scripts/validate.d.ts +3 -0
  235. package/dist/scripts/validate.d.ts.map +1 -0
  236. package/dist/scripts/validate.js +121 -0
  237. package/dist/scripts/validate.js.map +1 -0
  238. package/dist/scripts/validation-summary.d.ts +3 -0
  239. package/dist/scripts/validation-summary.d.ts.map +1 -0
  240. package/dist/scripts/validation-summary.js +135 -0
  241. package/dist/scripts/validation-summary.js.map +1 -0
  242. package/dist/services/config-validator.d.ts +39 -0
  243. package/dist/services/config-validator.d.ts.map +1 -0
  244. package/dist/services/config-validator.js +376 -0
  245. package/dist/services/config-validator.js.map +1 -0
  246. package/dist/services/enhanced-config-validator.d.ts +38 -0
  247. package/dist/services/enhanced-config-validator.d.ts.map +1 -0
  248. package/dist/services/enhanced-config-validator.js +300 -0
  249. package/dist/services/enhanced-config-validator.js.map +1 -0
  250. package/dist/services/example-generator.d.ts +14 -0
  251. package/dist/services/example-generator.d.ts.map +1 -0
  252. package/dist/services/example-generator.js +556 -0
  253. package/dist/services/example-generator.js.map +1 -0
  254. package/dist/services/expression-validator.d.ts +27 -0
  255. package/dist/services/expression-validator.d.ts.map +1 -0
  256. package/dist/services/expression-validator.js +163 -0
  257. package/dist/services/expression-validator.js.map +1 -0
  258. package/dist/services/n8n-api-client.d.ts +39 -0
  259. package/dist/services/n8n-api-client.d.ts.map +1 -0
  260. package/dist/services/n8n-api-client.js +326 -0
  261. package/dist/services/n8n-api-client.js.map +1 -0
  262. package/dist/services/n8n-validation.d.ts +127 -0
  263. package/dist/services/n8n-validation.d.ts.map +1 -0
  264. package/dist/services/n8n-validation.js +238 -0
  265. package/dist/services/n8n-validation.js.map +1 -0
  266. package/dist/services/node-documentation-service.d.ts +70 -0
  267. package/dist/services/node-documentation-service.d.ts.map +1 -0
  268. package/dist/services/node-documentation-service.js +518 -0
  269. package/dist/services/node-documentation-service.js.map +1 -0
  270. package/dist/services/node-specific-validators.d.ts +28 -0
  271. package/dist/services/node-specific-validators.d.ts.map +1 -0
  272. package/dist/services/node-specific-validators.js +666 -0
  273. package/dist/services/node-specific-validators.js.map +1 -0
  274. package/dist/services/property-dependencies.d.ts +36 -0
  275. package/dist/services/property-dependencies.d.ts.map +1 -0
  276. package/dist/services/property-dependencies.js +168 -0
  277. package/dist/services/property-dependencies.js.map +1 -0
  278. package/dist/services/property-filter.d.ts +39 -0
  279. package/dist/services/property-filter.d.ts.map +1 -0
  280. package/dist/services/property-filter.js +362 -0
  281. package/dist/services/property-filter.js.map +1 -0
  282. package/dist/services/task-templates.d.ts +26 -0
  283. package/dist/services/task-templates.d.ts.map +1 -0
  284. package/dist/services/task-templates.js +555 -0
  285. package/dist/services/task-templates.js.map +1 -0
  286. package/dist/services/workflow-diff-engine.d.ts +31 -0
  287. package/dist/services/workflow-diff-engine.d.ts.map +1 -0
  288. package/dist/services/workflow-diff-engine.js +478 -0
  289. package/dist/services/workflow-diff-engine.js.map +1 -0
  290. package/dist/services/workflow-validator.d.ts +87 -0
  291. package/dist/services/workflow-validator.d.ts.map +1 -0
  292. package/dist/services/workflow-validator.js +656 -0
  293. package/dist/services/workflow-validator.js.map +1 -0
  294. package/dist/templates/template-fetcher.d.ts +41 -0
  295. package/dist/templates/template-fetcher.d.ts.map +1 -0
  296. package/dist/templates/template-fetcher.js +94 -0
  297. package/dist/templates/template-fetcher.js.map +1 -0
  298. package/dist/templates/template-repository.d.ts +34 -0
  299. package/dist/templates/template-repository.d.ts.map +1 -0
  300. package/dist/templates/template-repository.js +121 -0
  301. package/dist/templates/template-repository.js.map +1 -0
  302. package/dist/templates/template-service.d.ts +31 -0
  303. package/dist/templates/template-service.d.ts.map +1 -0
  304. package/dist/templates/template-service.js +131 -0
  305. package/dist/templates/template-service.js.map +1 -0
  306. package/dist/types/index.d.ts +31 -0
  307. package/dist/types/index.d.ts.map +1 -0
  308. package/dist/types/index.js +3 -0
  309. package/dist/types/index.js.map +1 -0
  310. package/dist/types/n8n-api.d.ts +241 -0
  311. package/dist/types/n8n-api.d.ts.map +1 -0
  312. package/dist/types/n8n-api.js +10 -0
  313. package/dist/types/n8n-api.js.map +1 -0
  314. package/dist/types/workflow-diff.d.ts +113 -0
  315. package/dist/types/workflow-diff.d.ts.map +1 -0
  316. package/dist/types/workflow-diff.js +15 -0
  317. package/dist/types/workflow-diff.js.map +1 -0
  318. package/dist/utils/auth.d.ts +12 -0
  319. package/dist/utils/auth.d.ts.map +1 -0
  320. package/dist/utils/auth.js +66 -0
  321. package/dist/utils/auth.js.map +1 -0
  322. package/dist/utils/bridge.d.ts +12 -0
  323. package/dist/utils/bridge.d.ts.map +1 -0
  324. package/dist/utils/bridge.js +127 -0
  325. package/dist/utils/bridge.js.map +1 -0
  326. package/dist/utils/console-manager.d.ts +10 -0
  327. package/dist/utils/console-manager.d.ts.map +1 -0
  328. package/dist/utils/console-manager.js +63 -0
  329. package/dist/utils/console-manager.js.map +1 -0
  330. package/dist/utils/documentation-fetcher.d.ts +2 -0
  331. package/dist/utils/documentation-fetcher.d.ts.map +1 -0
  332. package/dist/utils/documentation-fetcher.js +18 -0
  333. package/dist/utils/documentation-fetcher.js.map +1 -0
  334. package/dist/utils/enhanced-documentation-fetcher.d.ts +73 -0
  335. package/dist/utils/enhanced-documentation-fetcher.d.ts.map +1 -0
  336. package/dist/utils/enhanced-documentation-fetcher.js +397 -0
  337. package/dist/utils/enhanced-documentation-fetcher.js.map +1 -0
  338. package/dist/utils/error-handler.d.ts +24 -0
  339. package/dist/utils/error-handler.d.ts.map +1 -0
  340. package/dist/utils/error-handler.js +84 -0
  341. package/dist/utils/error-handler.js.map +1 -0
  342. package/dist/utils/example-generator.d.ts +8 -0
  343. package/dist/utils/example-generator.d.ts.map +1 -0
  344. package/dist/utils/example-generator.js +106 -0
  345. package/dist/utils/example-generator.js.map +1 -0
  346. package/dist/utils/logger.d.ts +32 -0
  347. package/dist/utils/logger.d.ts.map +1 -0
  348. package/dist/utils/logger.js +97 -0
  349. package/dist/utils/logger.js.map +1 -0
  350. package/dist/utils/mcp-client.d.ts +21 -0
  351. package/dist/utils/mcp-client.d.ts.map +1 -0
  352. package/dist/utils/mcp-client.js +96 -0
  353. package/dist/utils/mcp-client.js.map +1 -0
  354. package/dist/utils/n8n-errors.d.ts +25 -0
  355. package/dist/utils/n8n-errors.d.ts.map +1 -0
  356. package/dist/utils/n8n-errors.js +129 -0
  357. package/dist/utils/n8n-errors.js.map +1 -0
  358. package/dist/utils/node-source-extractor.d.ts +21 -0
  359. package/dist/utils/node-source-extractor.d.ts.map +1 -0
  360. package/dist/utils/node-source-extractor.js +377 -0
  361. package/dist/utils/node-source-extractor.js.map +1 -0
  362. package/dist/utils/simple-cache.d.ts +8 -0
  363. package/dist/utils/simple-cache.d.ts.map +1 -0
  364. package/dist/utils/simple-cache.js +34 -0
  365. package/dist/utils/simple-cache.js.map +1 -0
  366. package/dist/utils/template-sanitizer.d.ts +21 -0
  367. package/dist/utils/template-sanitizer.d.ts.map +1 -0
  368. package/dist/utils/template-sanitizer.js +108 -0
  369. package/dist/utils/template-sanitizer.js.map +1 -0
  370. package/dist/utils/version.d.ts +2 -0
  371. package/dist/utils/version.d.ts.map +1 -0
  372. package/dist/utils/version.js +18 -0
  373. package/dist/utils/version.js.map +1 -0
  374. package/package.json +100 -0
  375. package/package.runtime.json +19 -0
@@ -0,0 +1,827 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getN8nApiClient = getN8nApiClient;
4
+ exports.handleCreateWorkflow = handleCreateWorkflow;
5
+ exports.handleGetWorkflow = handleGetWorkflow;
6
+ exports.handleGetWorkflowDetails = handleGetWorkflowDetails;
7
+ exports.handleGetWorkflowStructure = handleGetWorkflowStructure;
8
+ exports.handleGetWorkflowMinimal = handleGetWorkflowMinimal;
9
+ exports.handleUpdateWorkflow = handleUpdateWorkflow;
10
+ exports.handleDeleteWorkflow = handleDeleteWorkflow;
11
+ exports.handleListWorkflows = handleListWorkflows;
12
+ exports.handleValidateWorkflow = handleValidateWorkflow;
13
+ exports.handleTriggerWebhookWorkflow = handleTriggerWebhookWorkflow;
14
+ exports.handleGetExecution = handleGetExecution;
15
+ exports.handleListExecutions = handleListExecutions;
16
+ exports.handleDeleteExecution = handleDeleteExecution;
17
+ exports.handleHealthCheck = handleHealthCheck;
18
+ exports.handleListAvailableTools = handleListAvailableTools;
19
+ exports.handleDiagnostic = handleDiagnostic;
20
+ const n8n_api_client_1 = require("../services/n8n-api-client");
21
+ const n8n_api_1 = require("../config/n8n-api");
22
+ const n8n_api_2 = require("../types/n8n-api");
23
+ const n8n_validation_1 = require("../services/n8n-validation");
24
+ const n8n_errors_1 = require("../utils/n8n-errors");
25
+ const logger_1 = require("../utils/logger");
26
+ const zod_1 = require("zod");
27
+ const workflow_validator_1 = require("../services/workflow-validator");
28
+ const enhanced_config_validator_1 = require("../services/enhanced-config-validator");
29
+ let apiClient = null;
30
+ let lastConfigUrl = null;
31
+ function getN8nApiClient() {
32
+ const config = (0, n8n_api_1.getN8nApiConfig)();
33
+ if (!config) {
34
+ if (apiClient) {
35
+ logger_1.logger.info('n8n API configuration removed, clearing client');
36
+ apiClient = null;
37
+ lastConfigUrl = null;
38
+ }
39
+ return null;
40
+ }
41
+ if (!apiClient || lastConfigUrl !== config.baseUrl) {
42
+ logger_1.logger.info('n8n API client initialized', { url: config.baseUrl });
43
+ apiClient = new n8n_api_client_1.N8nApiClient(config);
44
+ lastConfigUrl = config.baseUrl;
45
+ }
46
+ return apiClient;
47
+ }
48
+ function ensureApiConfigured() {
49
+ const client = getN8nApiClient();
50
+ if (!client) {
51
+ throw new Error('n8n API not configured. Please set N8N_API_URL and N8N_API_KEY environment variables.');
52
+ }
53
+ return client;
54
+ }
55
+ const createWorkflowSchema = zod_1.z.object({
56
+ name: zod_1.z.string(),
57
+ nodes: zod_1.z.array(zod_1.z.any()),
58
+ connections: zod_1.z.record(zod_1.z.any()),
59
+ settings: zod_1.z.object({
60
+ executionOrder: zod_1.z.enum(['v0', 'v1']).optional(),
61
+ timezone: zod_1.z.string().optional(),
62
+ saveDataErrorExecution: zod_1.z.enum(['all', 'none']).optional(),
63
+ saveDataSuccessExecution: zod_1.z.enum(['all', 'none']).optional(),
64
+ saveManualExecutions: zod_1.z.boolean().optional(),
65
+ saveExecutionProgress: zod_1.z.boolean().optional(),
66
+ executionTimeout: zod_1.z.number().optional(),
67
+ errorWorkflow: zod_1.z.string().optional(),
68
+ }).optional(),
69
+ });
70
+ const updateWorkflowSchema = zod_1.z.object({
71
+ id: zod_1.z.string(),
72
+ name: zod_1.z.string().optional(),
73
+ nodes: zod_1.z.array(zod_1.z.any()).optional(),
74
+ connections: zod_1.z.record(zod_1.z.any()).optional(),
75
+ settings: zod_1.z.any().optional(),
76
+ });
77
+ const listWorkflowsSchema = zod_1.z.object({
78
+ limit: zod_1.z.number().min(1).max(100).optional(),
79
+ cursor: zod_1.z.string().optional(),
80
+ active: zod_1.z.boolean().optional(),
81
+ tags: zod_1.z.array(zod_1.z.string()).optional(),
82
+ projectId: zod_1.z.string().optional(),
83
+ excludePinnedData: zod_1.z.boolean().optional(),
84
+ });
85
+ const validateWorkflowSchema = zod_1.z.object({
86
+ id: zod_1.z.string(),
87
+ options: zod_1.z.object({
88
+ validateNodes: zod_1.z.boolean().optional(),
89
+ validateConnections: zod_1.z.boolean().optional(),
90
+ validateExpressions: zod_1.z.boolean().optional(),
91
+ profile: zod_1.z.enum(['minimal', 'runtime', 'ai-friendly', 'strict']).optional(),
92
+ }).optional(),
93
+ });
94
+ const triggerWebhookSchema = zod_1.z.object({
95
+ webhookUrl: zod_1.z.string().url(),
96
+ httpMethod: zod_1.z.enum(['GET', 'POST', 'PUT', 'DELETE']).optional(),
97
+ data: zod_1.z.record(zod_1.z.unknown()).optional(),
98
+ headers: zod_1.z.record(zod_1.z.string()).optional(),
99
+ waitForResponse: zod_1.z.boolean().optional(),
100
+ });
101
+ const listExecutionsSchema = zod_1.z.object({
102
+ limit: zod_1.z.number().min(1).max(100).optional(),
103
+ cursor: zod_1.z.string().optional(),
104
+ workflowId: zod_1.z.string().optional(),
105
+ projectId: zod_1.z.string().optional(),
106
+ status: zod_1.z.enum(['success', 'error', 'waiting']).optional(),
107
+ includeData: zod_1.z.boolean().optional(),
108
+ });
109
+ async function handleCreateWorkflow(args) {
110
+ try {
111
+ const client = ensureApiConfigured();
112
+ const input = createWorkflowSchema.parse(args);
113
+ const errors = (0, n8n_validation_1.validateWorkflowStructure)(input);
114
+ if (errors.length > 0) {
115
+ return {
116
+ success: false,
117
+ error: 'Workflow validation failed',
118
+ details: { errors }
119
+ };
120
+ }
121
+ const workflow = await client.createWorkflow(input);
122
+ return {
123
+ success: true,
124
+ data: workflow,
125
+ message: `Workflow "${workflow.name}" created successfully with ID: ${workflow.id}`
126
+ };
127
+ }
128
+ catch (error) {
129
+ if (error instanceof zod_1.z.ZodError) {
130
+ return {
131
+ success: false,
132
+ error: 'Invalid input',
133
+ details: { errors: error.errors }
134
+ };
135
+ }
136
+ if (error instanceof n8n_errors_1.N8nApiError) {
137
+ return {
138
+ success: false,
139
+ error: (0, n8n_errors_1.getUserFriendlyErrorMessage)(error),
140
+ code: error.code,
141
+ details: error.details
142
+ };
143
+ }
144
+ return {
145
+ success: false,
146
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
147
+ };
148
+ }
149
+ }
150
+ async function handleGetWorkflow(args) {
151
+ try {
152
+ const client = ensureApiConfigured();
153
+ const { id } = zod_1.z.object({ id: zod_1.z.string() }).parse(args);
154
+ const workflow = await client.getWorkflow(id);
155
+ return {
156
+ success: true,
157
+ data: workflow
158
+ };
159
+ }
160
+ catch (error) {
161
+ if (error instanceof zod_1.z.ZodError) {
162
+ return {
163
+ success: false,
164
+ error: 'Invalid input',
165
+ details: { errors: error.errors }
166
+ };
167
+ }
168
+ if (error instanceof n8n_errors_1.N8nApiError) {
169
+ return {
170
+ success: false,
171
+ error: (0, n8n_errors_1.getUserFriendlyErrorMessage)(error),
172
+ code: error.code
173
+ };
174
+ }
175
+ return {
176
+ success: false,
177
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
178
+ };
179
+ }
180
+ }
181
+ async function handleGetWorkflowDetails(args) {
182
+ try {
183
+ const client = ensureApiConfigured();
184
+ const { id } = zod_1.z.object({ id: zod_1.z.string() }).parse(args);
185
+ const workflow = await client.getWorkflow(id);
186
+ const executions = await client.listExecutions({
187
+ workflowId: id,
188
+ limit: 10
189
+ });
190
+ const stats = {
191
+ totalExecutions: executions.data.length,
192
+ successCount: executions.data.filter(e => e.status === n8n_api_2.ExecutionStatus.SUCCESS).length,
193
+ errorCount: executions.data.filter(e => e.status === n8n_api_2.ExecutionStatus.ERROR).length,
194
+ lastExecutionTime: executions.data[0]?.startedAt || null
195
+ };
196
+ return {
197
+ success: true,
198
+ data: {
199
+ workflow,
200
+ executionStats: stats,
201
+ hasWebhookTrigger: (0, n8n_validation_1.hasWebhookTrigger)(workflow),
202
+ webhookPath: (0, n8n_validation_1.getWebhookUrl)(workflow)
203
+ }
204
+ };
205
+ }
206
+ catch (error) {
207
+ if (error instanceof zod_1.z.ZodError) {
208
+ return {
209
+ success: false,
210
+ error: 'Invalid input',
211
+ details: { errors: error.errors }
212
+ };
213
+ }
214
+ if (error instanceof n8n_errors_1.N8nApiError) {
215
+ return {
216
+ success: false,
217
+ error: (0, n8n_errors_1.getUserFriendlyErrorMessage)(error),
218
+ code: error.code
219
+ };
220
+ }
221
+ return {
222
+ success: false,
223
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
224
+ };
225
+ }
226
+ }
227
+ async function handleGetWorkflowStructure(args) {
228
+ try {
229
+ const client = ensureApiConfigured();
230
+ const { id } = zod_1.z.object({ id: zod_1.z.string() }).parse(args);
231
+ const workflow = await client.getWorkflow(id);
232
+ const simplifiedNodes = workflow.nodes.map(node => ({
233
+ id: node.id,
234
+ name: node.name,
235
+ type: node.type,
236
+ position: node.position,
237
+ disabled: node.disabled || false
238
+ }));
239
+ return {
240
+ success: true,
241
+ data: {
242
+ id: workflow.id,
243
+ name: workflow.name,
244
+ active: workflow.active,
245
+ nodes: simplifiedNodes,
246
+ connections: workflow.connections,
247
+ nodeCount: workflow.nodes.length,
248
+ connectionCount: Object.keys(workflow.connections).length
249
+ }
250
+ };
251
+ }
252
+ catch (error) {
253
+ if (error instanceof zod_1.z.ZodError) {
254
+ return {
255
+ success: false,
256
+ error: 'Invalid input',
257
+ details: { errors: error.errors }
258
+ };
259
+ }
260
+ if (error instanceof n8n_errors_1.N8nApiError) {
261
+ return {
262
+ success: false,
263
+ error: (0, n8n_errors_1.getUserFriendlyErrorMessage)(error),
264
+ code: error.code
265
+ };
266
+ }
267
+ return {
268
+ success: false,
269
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
270
+ };
271
+ }
272
+ }
273
+ async function handleGetWorkflowMinimal(args) {
274
+ try {
275
+ const client = ensureApiConfigured();
276
+ const { id } = zod_1.z.object({ id: zod_1.z.string() }).parse(args);
277
+ const workflow = await client.getWorkflow(id);
278
+ return {
279
+ success: true,
280
+ data: {
281
+ id: workflow.id,
282
+ name: workflow.name,
283
+ active: workflow.active,
284
+ tags: workflow.tags || [],
285
+ createdAt: workflow.createdAt,
286
+ updatedAt: workflow.updatedAt
287
+ }
288
+ };
289
+ }
290
+ catch (error) {
291
+ if (error instanceof zod_1.z.ZodError) {
292
+ return {
293
+ success: false,
294
+ error: 'Invalid input',
295
+ details: { errors: error.errors }
296
+ };
297
+ }
298
+ if (error instanceof n8n_errors_1.N8nApiError) {
299
+ return {
300
+ success: false,
301
+ error: (0, n8n_errors_1.getUserFriendlyErrorMessage)(error),
302
+ code: error.code
303
+ };
304
+ }
305
+ return {
306
+ success: false,
307
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
308
+ };
309
+ }
310
+ }
311
+ async function handleUpdateWorkflow(args) {
312
+ try {
313
+ const client = ensureApiConfigured();
314
+ const input = updateWorkflowSchema.parse(args);
315
+ const { id, ...updateData } = input;
316
+ if (updateData.nodes || updateData.connections) {
317
+ let fullWorkflow = updateData;
318
+ if (!updateData.nodes || !updateData.connections) {
319
+ const current = await client.getWorkflow(id);
320
+ fullWorkflow = {
321
+ ...current,
322
+ ...updateData
323
+ };
324
+ }
325
+ const errors = (0, n8n_validation_1.validateWorkflowStructure)(fullWorkflow);
326
+ if (errors.length > 0) {
327
+ return {
328
+ success: false,
329
+ error: 'Workflow validation failed',
330
+ details: { errors }
331
+ };
332
+ }
333
+ }
334
+ const workflow = await client.updateWorkflow(id, updateData);
335
+ return {
336
+ success: true,
337
+ data: workflow,
338
+ message: `Workflow "${workflow.name}" updated successfully`
339
+ };
340
+ }
341
+ catch (error) {
342
+ if (error instanceof zod_1.z.ZodError) {
343
+ return {
344
+ success: false,
345
+ error: 'Invalid input',
346
+ details: { errors: error.errors }
347
+ };
348
+ }
349
+ if (error instanceof n8n_errors_1.N8nApiError) {
350
+ return {
351
+ success: false,
352
+ error: (0, n8n_errors_1.getUserFriendlyErrorMessage)(error),
353
+ code: error.code,
354
+ details: error.details
355
+ };
356
+ }
357
+ return {
358
+ success: false,
359
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
360
+ };
361
+ }
362
+ }
363
+ async function handleDeleteWorkflow(args) {
364
+ try {
365
+ const client = ensureApiConfigured();
366
+ const { id } = zod_1.z.object({ id: zod_1.z.string() }).parse(args);
367
+ await client.deleteWorkflow(id);
368
+ return {
369
+ success: true,
370
+ message: `Workflow ${id} deleted successfully`
371
+ };
372
+ }
373
+ catch (error) {
374
+ if (error instanceof zod_1.z.ZodError) {
375
+ return {
376
+ success: false,
377
+ error: 'Invalid input',
378
+ details: { errors: error.errors }
379
+ };
380
+ }
381
+ if (error instanceof n8n_errors_1.N8nApiError) {
382
+ return {
383
+ success: false,
384
+ error: (0, n8n_errors_1.getUserFriendlyErrorMessage)(error),
385
+ code: error.code
386
+ };
387
+ }
388
+ return {
389
+ success: false,
390
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
391
+ };
392
+ }
393
+ }
394
+ async function handleListWorkflows(args) {
395
+ try {
396
+ const client = ensureApiConfigured();
397
+ const input = listWorkflowsSchema.parse(args || {});
398
+ const response = await client.listWorkflows({
399
+ limit: input.limit || 100,
400
+ cursor: input.cursor,
401
+ active: input.active,
402
+ tags: input.tags,
403
+ projectId: input.projectId,
404
+ excludePinnedData: input.excludePinnedData ?? true
405
+ });
406
+ return {
407
+ success: true,
408
+ data: {
409
+ workflows: response.data,
410
+ nextCursor: response.nextCursor,
411
+ total: response.data.length
412
+ }
413
+ };
414
+ }
415
+ catch (error) {
416
+ if (error instanceof zod_1.z.ZodError) {
417
+ return {
418
+ success: false,
419
+ error: 'Invalid input',
420
+ details: { errors: error.errors }
421
+ };
422
+ }
423
+ if (error instanceof n8n_errors_1.N8nApiError) {
424
+ return {
425
+ success: false,
426
+ error: (0, n8n_errors_1.getUserFriendlyErrorMessage)(error),
427
+ code: error.code
428
+ };
429
+ }
430
+ return {
431
+ success: false,
432
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
433
+ };
434
+ }
435
+ }
436
+ async function handleValidateWorkflow(args, repository) {
437
+ try {
438
+ const client = ensureApiConfigured();
439
+ const input = validateWorkflowSchema.parse(args);
440
+ const workflowResponse = await handleGetWorkflow({ id: input.id });
441
+ if (!workflowResponse.success) {
442
+ return workflowResponse;
443
+ }
444
+ const workflow = workflowResponse.data;
445
+ const validator = new workflow_validator_1.WorkflowValidator(repository, enhanced_config_validator_1.EnhancedConfigValidator);
446
+ const validationResult = await validator.validateWorkflow(workflow, input.options);
447
+ const response = {
448
+ valid: validationResult.valid,
449
+ workflowId: workflow.id,
450
+ workflowName: workflow.name,
451
+ summary: {
452
+ totalNodes: validationResult.statistics.totalNodes,
453
+ enabledNodes: validationResult.statistics.enabledNodes,
454
+ triggerNodes: validationResult.statistics.triggerNodes,
455
+ validConnections: validationResult.statistics.validConnections,
456
+ invalidConnections: validationResult.statistics.invalidConnections,
457
+ expressionsValidated: validationResult.statistics.expressionsValidated,
458
+ errorCount: validationResult.errors.length,
459
+ warningCount: validationResult.warnings.length
460
+ }
461
+ };
462
+ if (validationResult.errors.length > 0) {
463
+ response.errors = validationResult.errors.map(e => ({
464
+ node: e.nodeName || 'workflow',
465
+ message: e.message,
466
+ details: e.details
467
+ }));
468
+ }
469
+ if (validationResult.warnings.length > 0) {
470
+ response.warnings = validationResult.warnings.map(w => ({
471
+ node: w.nodeName || 'workflow',
472
+ message: w.message,
473
+ details: w.details
474
+ }));
475
+ }
476
+ if (validationResult.suggestions.length > 0) {
477
+ response.suggestions = validationResult.suggestions;
478
+ }
479
+ return {
480
+ success: true,
481
+ data: response
482
+ };
483
+ }
484
+ catch (error) {
485
+ if (error instanceof zod_1.z.ZodError) {
486
+ return {
487
+ success: false,
488
+ error: 'Invalid input',
489
+ details: { errors: error.errors }
490
+ };
491
+ }
492
+ if (error instanceof n8n_errors_1.N8nApiError) {
493
+ return {
494
+ success: false,
495
+ error: (0, n8n_errors_1.getUserFriendlyErrorMessage)(error),
496
+ code: error.code
497
+ };
498
+ }
499
+ return {
500
+ success: false,
501
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
502
+ };
503
+ }
504
+ }
505
+ async function handleTriggerWebhookWorkflow(args) {
506
+ try {
507
+ const client = ensureApiConfigured();
508
+ const input = triggerWebhookSchema.parse(args);
509
+ const webhookRequest = {
510
+ webhookUrl: input.webhookUrl,
511
+ httpMethod: input.httpMethod || 'POST',
512
+ data: input.data,
513
+ headers: input.headers,
514
+ waitForResponse: input.waitForResponse ?? true
515
+ };
516
+ const response = await client.triggerWebhook(webhookRequest);
517
+ return {
518
+ success: true,
519
+ data: response,
520
+ message: 'Webhook triggered successfully'
521
+ };
522
+ }
523
+ catch (error) {
524
+ if (error instanceof zod_1.z.ZodError) {
525
+ return {
526
+ success: false,
527
+ error: 'Invalid input',
528
+ details: { errors: error.errors }
529
+ };
530
+ }
531
+ if (error instanceof n8n_errors_1.N8nApiError) {
532
+ return {
533
+ success: false,
534
+ error: (0, n8n_errors_1.getUserFriendlyErrorMessage)(error),
535
+ code: error.code,
536
+ details: error.details
537
+ };
538
+ }
539
+ return {
540
+ success: false,
541
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
542
+ };
543
+ }
544
+ }
545
+ async function handleGetExecution(args) {
546
+ try {
547
+ const client = ensureApiConfigured();
548
+ const { id, includeData } = zod_1.z.object({
549
+ id: zod_1.z.string(),
550
+ includeData: zod_1.z.boolean().optional()
551
+ }).parse(args);
552
+ const execution = await client.getExecution(id, includeData || false);
553
+ return {
554
+ success: true,
555
+ data: execution
556
+ };
557
+ }
558
+ catch (error) {
559
+ if (error instanceof zod_1.z.ZodError) {
560
+ return {
561
+ success: false,
562
+ error: 'Invalid input',
563
+ details: { errors: error.errors }
564
+ };
565
+ }
566
+ if (error instanceof n8n_errors_1.N8nApiError) {
567
+ return {
568
+ success: false,
569
+ error: (0, n8n_errors_1.getUserFriendlyErrorMessage)(error),
570
+ code: error.code
571
+ };
572
+ }
573
+ return {
574
+ success: false,
575
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
576
+ };
577
+ }
578
+ }
579
+ async function handleListExecutions(args) {
580
+ try {
581
+ const client = ensureApiConfigured();
582
+ const input = listExecutionsSchema.parse(args || {});
583
+ const response = await client.listExecutions({
584
+ limit: input.limit || 100,
585
+ cursor: input.cursor,
586
+ workflowId: input.workflowId,
587
+ projectId: input.projectId,
588
+ status: input.status,
589
+ includeData: input.includeData || false
590
+ });
591
+ return {
592
+ success: true,
593
+ data: {
594
+ executions: response.data,
595
+ nextCursor: response.nextCursor,
596
+ total: response.data.length
597
+ }
598
+ };
599
+ }
600
+ catch (error) {
601
+ if (error instanceof zod_1.z.ZodError) {
602
+ return {
603
+ success: false,
604
+ error: 'Invalid input',
605
+ details: { errors: error.errors }
606
+ };
607
+ }
608
+ if (error instanceof n8n_errors_1.N8nApiError) {
609
+ return {
610
+ success: false,
611
+ error: (0, n8n_errors_1.getUserFriendlyErrorMessage)(error),
612
+ code: error.code
613
+ };
614
+ }
615
+ return {
616
+ success: false,
617
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
618
+ };
619
+ }
620
+ }
621
+ async function handleDeleteExecution(args) {
622
+ try {
623
+ const client = ensureApiConfigured();
624
+ const { id } = zod_1.z.object({ id: zod_1.z.string() }).parse(args);
625
+ await client.deleteExecution(id);
626
+ return {
627
+ success: true,
628
+ message: `Execution ${id} deleted successfully`
629
+ };
630
+ }
631
+ catch (error) {
632
+ if (error instanceof zod_1.z.ZodError) {
633
+ return {
634
+ success: false,
635
+ error: 'Invalid input',
636
+ details: { errors: error.errors }
637
+ };
638
+ }
639
+ if (error instanceof n8n_errors_1.N8nApiError) {
640
+ return {
641
+ success: false,
642
+ error: (0, n8n_errors_1.getUserFriendlyErrorMessage)(error),
643
+ code: error.code
644
+ };
645
+ }
646
+ return {
647
+ success: false,
648
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
649
+ };
650
+ }
651
+ }
652
+ async function handleHealthCheck() {
653
+ try {
654
+ const client = ensureApiConfigured();
655
+ const health = await client.healthCheck();
656
+ return {
657
+ success: true,
658
+ data: {
659
+ status: health.status,
660
+ instanceId: health.instanceId,
661
+ n8nVersion: health.n8nVersion,
662
+ features: health.features,
663
+ apiUrl: (0, n8n_api_1.getN8nApiConfig)()?.baseUrl
664
+ }
665
+ };
666
+ }
667
+ catch (error) {
668
+ if (error instanceof n8n_errors_1.N8nApiError) {
669
+ return {
670
+ success: false,
671
+ error: (0, n8n_errors_1.getUserFriendlyErrorMessage)(error),
672
+ code: error.code,
673
+ details: {
674
+ apiUrl: (0, n8n_api_1.getN8nApiConfig)()?.baseUrl,
675
+ hint: 'Check if n8n is running and API is enabled'
676
+ }
677
+ };
678
+ }
679
+ return {
680
+ success: false,
681
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
682
+ };
683
+ }
684
+ }
685
+ async function handleListAvailableTools() {
686
+ const tools = [
687
+ {
688
+ category: 'Workflow Management',
689
+ tools: [
690
+ { name: 'n8n_create_workflow', description: 'Create new workflows' },
691
+ { name: 'n8n_get_workflow', description: 'Get workflow by ID' },
692
+ { name: 'n8n_get_workflow_details', description: 'Get detailed workflow info with stats' },
693
+ { name: 'n8n_get_workflow_structure', description: 'Get simplified workflow structure' },
694
+ { name: 'n8n_get_workflow_minimal', description: 'Get minimal workflow info' },
695
+ { name: 'n8n_update_workflow', description: 'Update existing workflows' },
696
+ { name: 'n8n_delete_workflow', description: 'Delete workflows' },
697
+ { name: 'n8n_list_workflows', description: 'List workflows with filters' },
698
+ { name: 'n8n_validate_workflow', description: 'Validate workflow from n8n instance' }
699
+ ]
700
+ },
701
+ {
702
+ category: 'Execution Management',
703
+ tools: [
704
+ { name: 'n8n_trigger_webhook_workflow', description: 'Trigger workflows via webhook' },
705
+ { name: 'n8n_get_execution', description: 'Get execution details' },
706
+ { name: 'n8n_list_executions', description: 'List executions with filters' },
707
+ { name: 'n8n_delete_execution', description: 'Delete execution records' }
708
+ ]
709
+ },
710
+ {
711
+ category: 'System',
712
+ tools: [
713
+ { name: 'n8n_health_check', description: 'Check API connectivity' },
714
+ { name: 'n8n_list_available_tools', description: 'List all available tools' }
715
+ ]
716
+ }
717
+ ];
718
+ const config = (0, n8n_api_1.getN8nApiConfig)();
719
+ const apiConfigured = config !== null;
720
+ return {
721
+ success: true,
722
+ data: {
723
+ tools,
724
+ apiConfigured,
725
+ configuration: config ? {
726
+ apiUrl: config.baseUrl,
727
+ timeout: config.timeout,
728
+ maxRetries: config.maxRetries
729
+ } : null,
730
+ limitations: [
731
+ 'Cannot activate/deactivate workflows via API',
732
+ 'Cannot execute workflows directly (must use webhooks)',
733
+ 'Cannot stop running executions',
734
+ 'Tags and credentials have limited API support'
735
+ ]
736
+ }
737
+ };
738
+ }
739
+ async function handleDiagnostic(request) {
740
+ const verbose = request.params?.arguments?.verbose || false;
741
+ const envVars = {
742
+ N8N_API_URL: process.env.N8N_API_URL || null,
743
+ N8N_API_KEY: process.env.N8N_API_KEY ? '***configured***' : null,
744
+ NODE_ENV: process.env.NODE_ENV || 'production',
745
+ MCP_MODE: process.env.MCP_MODE || 'stdio'
746
+ };
747
+ const apiConfig = (0, n8n_api_1.getN8nApiConfig)();
748
+ const apiConfigured = apiConfig !== null;
749
+ const apiClient = getN8nApiClient();
750
+ let apiStatus = {
751
+ configured: apiConfigured,
752
+ connected: false,
753
+ error: null,
754
+ version: null
755
+ };
756
+ if (apiClient) {
757
+ try {
758
+ const health = await apiClient.healthCheck();
759
+ apiStatus.connected = true;
760
+ apiStatus.version = health.n8nVersion || 'unknown';
761
+ }
762
+ catch (error) {
763
+ apiStatus.error = error instanceof Error ? error.message : 'Unknown error';
764
+ }
765
+ }
766
+ const documentationTools = 22;
767
+ const managementTools = apiConfigured ? 16 : 0;
768
+ const totalTools = documentationTools + managementTools;
769
+ const diagnostic = {
770
+ timestamp: new Date().toISOString(),
771
+ environment: envVars,
772
+ apiConfiguration: {
773
+ configured: apiConfigured,
774
+ status: apiStatus,
775
+ config: apiConfig ? {
776
+ baseUrl: apiConfig.baseUrl,
777
+ timeout: apiConfig.timeout,
778
+ maxRetries: apiConfig.maxRetries
779
+ } : null
780
+ },
781
+ toolsAvailability: {
782
+ documentationTools: {
783
+ count: documentationTools,
784
+ enabled: true,
785
+ description: 'Always available - node info, search, validation, etc.'
786
+ },
787
+ managementTools: {
788
+ count: managementTools,
789
+ enabled: apiConfigured,
790
+ description: apiConfigured ?
791
+ 'Management tools are ENABLED - create, update, execute workflows' :
792
+ 'Management tools are DISABLED - configure N8N_API_URL and N8N_API_KEY to enable'
793
+ },
794
+ totalAvailable: totalTools
795
+ },
796
+ troubleshooting: {
797
+ steps: apiConfigured ? [
798
+ 'API is configured and should work',
799
+ 'If tools are not showing in Claude Desktop:',
800
+ '1. Restart Claude Desktop completely',
801
+ '2. Check if using latest Docker image',
802
+ '3. Verify environment variables are passed correctly',
803
+ '4. Try running n8n_health_check to test connectivity'
804
+ ] : [
805
+ 'To enable management tools:',
806
+ '1. Set N8N_API_URL environment variable (e.g., https://your-n8n-instance.com)',
807
+ '2. Set N8N_API_KEY environment variable (get from n8n API settings)',
808
+ '3. Restart the MCP server',
809
+ '4. Management tools will automatically appear'
810
+ ],
811
+ documentation: 'For detailed setup instructions, see: https://github.com/czlonkowski/n8n-mcp#n8n-management-tools-new-v260---requires-api-configuration'
812
+ }
813
+ };
814
+ if (verbose) {
815
+ diagnostic['debug'] = {
816
+ processEnv: Object.keys(process.env).filter(key => key.startsWith('N8N_') || key.startsWith('MCP_')),
817
+ nodeVersion: process.version,
818
+ platform: process.platform,
819
+ workingDirectory: process.cwd()
820
+ };
821
+ }
822
+ return {
823
+ success: true,
824
+ data: diagnostic
825
+ };
826
+ }
827
+ //# sourceMappingURL=handlers-n8n-manager.js.map