n8n-workflow-builder-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (595) hide show
  1. package/.cursor/rules/cursor_rules.mdc +53 -0
  2. package/.cursor/rules/dev_workflow.mdc +219 -0
  3. package/.cursor/rules/mcp.mdc +430 -0
  4. package/.cursor/rules/self_improve.mdc +72 -0
  5. package/.cursor/rules/taskmaster.mdc +382 -0
  6. package/.cursorignore +1 -0
  7. package/.cursorrules +4 -0
  8. package/.env.example +23 -0
  9. package/.eslintrc.json +38 -0
  10. package/.github/workflows/npm-publish-github-packages.yml +55 -0
  11. package/.prettierrc +9 -0
  12. package/.roo/rules/dev_workflow.md +219 -0
  13. package/.roo/rules/mcp.md +430 -0
  14. package/.roo/rules/roo_rules.md +53 -0
  15. package/.roo/rules/self_improve.md +72 -0
  16. package/.roo/rules/taskmaster.md +382 -0
  17. package/.roo/rules-architect/architect-rules +93 -0
  18. package/.roo/rules-ask/ask-rules +89 -0
  19. package/.roo/rules-boomerang/boomerang-rules +181 -0
  20. package/.roo/rules-code/code-rules +61 -0
  21. package/.roo/rules-debug/debug-rules +68 -0
  22. package/.roo/rules-test/test-rules +61 -0
  23. package/.roomodes +63 -0
  24. package/.taskmasterconfig +31 -0
  25. package/.windsurfrules +2382 -0
  26. package/LICENSE +21 -0
  27. package/README.md +210 -0
  28. package/config/credentials/credentials.json +1 -0
  29. package/config/default.js +41 -0
  30. package/package.json +56 -0
  31. package/scripts/demo-n8n-integration.js +161 -0
  32. package/scripts/demo-workflow-generator.js +102 -0
  33. package/scripts/init.sh +36 -0
  34. package/scripts/prd.txt +197 -0
  35. package/src/index.ts +1440 -0
  36. package/src/middleware/auth.js +273 -0
  37. package/src/middleware/authorize.js +183 -0
  38. package/src/middleware/logging.js +64 -0
  39. package/src/middleware/mcp.js +187 -0
  40. package/src/middleware/rateLimiter.js +82 -0
  41. package/src/middleware/validation.js +241 -0
  42. package/src/models/credential.js +359 -0
  43. package/src/models/llmService.js +236 -0
  44. package/src/models/n8nIntegration.js +542 -0
  45. package/src/models/storage.js +196 -0
  46. package/src/models/tool.js +148 -0
  47. package/src/models/user.js +164 -0
  48. package/src/models/workflow.js +229 -0
  49. package/src/routes/toolDefinitions.js +62 -0
  50. package/src/routes/toolExecution.js +79 -0
  51. package/src/tools/__index.js +242 -0
  52. package/src/tools/connectionManagement.js +500 -0
  53. package/src/tools/n8nIntegration.js +370 -0
  54. package/src/tools/nodeDiscovery.js +488 -0
  55. package/src/tools/nodeManagement.js +674 -0
  56. package/src/tools/toolDefinitions.js +660 -0
  57. package/src/tools/workflowCreation.js +100 -0
  58. package/src/tools/workflowGenerator.js +152 -0
  59. package/src/tools/workflowStorage.js +113 -0
  60. package/src/tools/workflowTesting.js +285 -0
  61. package/src/utils/encryption.js +164 -0
  62. package/src/utils/logger.js +84 -0
  63. package/src/utils/mcp.js +85 -0
  64. package/src/utils/securityLogger.js +109 -0
  65. package/tests/auth.test.js +402 -0
  66. package/tests/authorize.test.js +208 -0
  67. package/tests/run-memory-tests.js +55 -0
  68. package/tests/run-tests.js +55 -0
  69. package/tests/server.test.js +203 -0
  70. package/tests/unit/add-ai-connections.test.js +385 -0
  71. package/tests/unit/connectionManagement.test.js +309 -0
  72. package/tests/unit/langchain-llm-format.test.js +259 -0
  73. package/tests/unit/memory-connection.test.js +140 -0
  74. package/tests/unit/memory-integration.test.js +253 -0
  75. package/tests/unit/n8nIntegration.test.js +291 -0
  76. package/tests/unit/nodeDiscovery.test.js +270 -0
  77. package/tests/unit/nodeManagement.test.js +522 -0
  78. package/tests/unit/utils/mcp-test-utils.js +94 -0
  79. package/tests/unit/workflowCreation.test.js +110 -0
  80. package/tests/unit/workflowTesting.test.js +269 -0
  81. package/tests/user.test.js +181 -0
  82. package/tsconfig.json +20 -0
  83. package/workflow_nodes/Brandfetch.json +85 -0
  84. package/workflow_nodes/WorkflowTrigger.json +28 -0
  85. package/workflow_nodes/actionNetwork.json +218 -0
  86. package/workflow_nodes/activeCampaign.json +722 -0
  87. package/workflow_nodes/activeCampaignTrigger.json +52 -0
  88. package/workflow_nodes/acuitySchedulingTrigger.json +8 -0
  89. package/workflow_nodes/adalo.json +123 -0
  90. package/workflow_nodes/affinity.json +203 -0
  91. package/workflow_nodes/affinityTrigger.json +124 -0
  92. package/workflow_nodes/aggregate.json +119 -0
  93. package/workflow_nodes/agileCrm.json +503 -0
  94. package/workflow_nodes/aiTransform.json +17 -0
  95. package/workflow_nodes/airtable.json +226 -0
  96. package/workflow_nodes/airtableTrigger.json +120 -0
  97. package/workflow_nodes/airtop.json +10 -0
  98. package/workflow_nodes/amqp.json +62 -0
  99. package/workflow_nodes/amqpTrigger.json +8 -0
  100. package/workflow_nodes/apiTemplateIo.json +147 -0
  101. package/workflow_nodes/asana.json +446 -0
  102. package/workflow_nodes/asanaTrigger.json +52 -0
  103. package/workflow_nodes/automizy.json +195 -0
  104. package/workflow_nodes/autopilot.json +287 -0
  105. package/workflow_nodes/autopilotTrigger.json +8 -0
  106. package/workflow_nodes/awsCertificateManager.json +223 -0
  107. package/workflow_nodes/awsComprehend.json +125 -0
  108. package/workflow_nodes/awsDynamoDb.json +251 -0
  109. package/workflow_nodes/awsElb.json +174 -0
  110. package/workflow_nodes/awsLambda.json +69 -0
  111. package/workflow_nodes/awsRekognition.json +191 -0
  112. package/workflow_nodes/awsS3.json +32 -0
  113. package/workflow_nodes/awsSes.json +302 -0
  114. package/workflow_nodes/awsSns.json +110 -0
  115. package/workflow_nodes/awsSnsTrigger.json +47 -0
  116. package/workflow_nodes/awsSqs.json +140 -0
  117. package/workflow_nodes/awsTextract.json +43 -0
  118. package/workflow_nodes/awsTranscribe.json +217 -0
  119. package/workflow_nodes/azureCosmosDb.json +8 -0
  120. package/workflow_nodes/azureStorage.json +17 -0
  121. package/workflow_nodes/bambooHr.json +8 -0
  122. package/workflow_nodes/bannerbear.json +126 -0
  123. package/workflow_nodes/baserow.json +277 -0
  124. package/workflow_nodes/beeminder.json +146 -0
  125. package/workflow_nodes/bitbucketTrigger.json +62 -0
  126. package/workflow_nodes/bitly.json +130 -0
  127. package/workflow_nodes/bitwarden.json +224 -0
  128. package/workflow_nodes/box.json +457 -0
  129. package/workflow_nodes/boxTrigger.json +8 -0
  130. package/workflow_nodes/brevo.json +41 -0
  131. package/workflow_nodes/brevoTrigger.json +145 -0
  132. package/workflow_nodes/bubble.json +212 -0
  133. package/workflow_nodes/calTrigger.json +91 -0
  134. package/workflow_nodes/calendlyTrigger.json +71 -0
  135. package/workflow_nodes/chargebee.json +217 -0
  136. package/workflow_nodes/chargebeeTrigger.json +187 -0
  137. package/workflow_nodes/circleCi.json +89 -0
  138. package/workflow_nodes/ciscoWebex.json +593 -0
  139. package/workflow_nodes/ciscoWebexTrigger.json +159 -0
  140. package/workflow_nodes/clearbit.json +138 -0
  141. package/workflow_nodes/clickUp.json +793 -0
  142. package/workflow_nodes/clickUpTrigger.json +188 -0
  143. package/workflow_nodes/clockify.json +372 -0
  144. package/workflow_nodes/clockifyTrigger.json +26 -0
  145. package/workflow_nodes/cloudflare.json +103 -0
  146. package/workflow_nodes/cockpit.json +161 -0
  147. package/workflow_nodes/coda.json +242 -0
  148. package/workflow_nodes/code.json +40 -0
  149. package/workflow_nodes/coinGecko.json +363 -0
  150. package/workflow_nodes/compareDatasets.json +14 -0
  151. package/workflow_nodes/compression.json +66 -0
  152. package/workflow_nodes/contentful.json +29 -0
  153. package/workflow_nodes/convertKit.json +159 -0
  154. package/workflow_nodes/convertKitTrigger.json +109 -0
  155. package/workflow_nodes/convertToFile.json +64 -0
  156. package/workflow_nodes/copper.json +239 -0
  157. package/workflow_nodes/copperTrigger.json +8 -0
  158. package/workflow_nodes/cortex.json +348 -0
  159. package/workflow_nodes/crateDb.json +90 -0
  160. package/workflow_nodes/cron.json +23 -0
  161. package/workflow_nodes/crowdDev.json +8 -0
  162. package/workflow_nodes/crowdDevTrigger.json +8 -0
  163. package/workflow_nodes/crypto.json +147 -0
  164. package/workflow_nodes/customerIo.json +206 -0
  165. package/workflow_nodes/customerIoTrigger.json +185 -0
  166. package/workflow_nodes/dateTime.json +39 -0
  167. package/workflow_nodes/debughelper.json +162 -0
  168. package/workflow_nodes/deepL.json +103 -0
  169. package/workflow_nodes/demio.json +187 -0
  170. package/workflow_nodes/dhl.json +53 -0
  171. package/workflow_nodes/discord.json +81 -0
  172. package/workflow_nodes/discourse.json +319 -0
  173. package/workflow_nodes/disqus.json +254 -0
  174. package/workflow_nodes/drift.json +112 -0
  175. package/workflow_nodes/dropbox.json +258 -0
  176. package/workflow_nodes/dropcontact.json +154 -0
  177. package/workflow_nodes/e2eTest.json +70 -0
  178. package/workflow_nodes/editImage.json +132 -0
  179. package/workflow_nodes/egoi.json +220 -0
  180. package/workflow_nodes/elasticSecurity.json +401 -0
  181. package/workflow_nodes/elasticsearch.json +422 -0
  182. package/workflow_nodes/emailReadImap.json +88 -0
  183. package/workflow_nodes/emailSend.json +38 -0
  184. package/workflow_nodes/emelia.json +201 -0
  185. package/workflow_nodes/emeliaTrigger.json +57 -0
  186. package/workflow_nodes/erpNext.json +139 -0
  187. package/workflow_nodes/errorTrigger.json +15 -0
  188. package/workflow_nodes/evaluationMetrics.json +21 -0
  189. package/workflow_nodes/eventbriteTrigger.json +125 -0
  190. package/workflow_nodes/executeCommand.json +25 -0
  191. package/workflow_nodes/executeWorkflow.json +102 -0
  192. package/workflow_nodes/executeWorkflowTrigger.json +65 -0
  193. package/workflow_nodes/executionData.json +35 -0
  194. package/workflow_nodes/extractFromFile.json +71 -0
  195. package/workflow_nodes/facebookGraphApi.json +234 -0
  196. package/workflow_nodes/facebookLeadAdsTrigger.json +8 -0
  197. package/workflow_nodes/facebookTrigger.json +112 -0
  198. package/workflow_nodes/figmaTrigger.json +8 -0
  199. package/workflow_nodes/filemaker.json +268 -0
  200. package/workflow_nodes/filter.json +24 -0
  201. package/workflow_nodes/flow.json +323 -0
  202. package/workflow_nodes/flowTrigger.json +52 -0
  203. package/workflow_nodes/form.json +25 -0
  204. package/workflow_nodes/formIoTrigger.json +59 -0
  205. package/workflow_nodes/formTrigger.json +8 -0
  206. package/workflow_nodes/formstackTrigger.json +8 -0
  207. package/workflow_nodes/freshdesk.json +584 -0
  208. package/workflow_nodes/freshservice.json +899 -0
  209. package/workflow_nodes/freshworksCrm.json +772 -0
  210. package/workflow_nodes/ftp.json +127 -0
  211. package/workflow_nodes/function.json +22 -0
  212. package/workflow_nodes/functionItem.json +22 -0
  213. package/workflow_nodes/gSuiteAdmin.json +562 -0
  214. package/workflow_nodes/getResponse.json +310 -0
  215. package/workflow_nodes/getResponseTrigger.json +82 -0
  216. package/workflow_nodes/ghost.json +290 -0
  217. package/workflow_nodes/git.json +184 -0
  218. package/workflow_nodes/github.json +732 -0
  219. package/workflow_nodes/githubTrigger.json +317 -0
  220. package/workflow_nodes/gitlab.json +544 -0
  221. package/workflow_nodes/gitlabTrigger.json +61 -0
  222. package/workflow_nodes/gmail.json +62 -0
  223. package/workflow_nodes/gmailTrigger.json +127 -0
  224. package/workflow_nodes/goToWebinar.json +430 -0
  225. package/workflow_nodes/gong.json +22 -0
  226. package/workflow_nodes/googleAds.json +116 -0
  227. package/workflow_nodes/googleAnalytics.json +28 -0
  228. package/workflow_nodes/googleBigQuery.json +38 -0
  229. package/workflow_nodes/googleBooks.json +154 -0
  230. package/workflow_nodes/googleBusinessProfile.json +277 -0
  231. package/workflow_nodes/googleBusinessProfileTrigger.json +55 -0
  232. package/workflow_nodes/googleCalendar.json +474 -0
  233. package/workflow_nodes/googleCalendarTrigger.json +72 -0
  234. package/workflow_nodes/googleChat.json +187 -0
  235. package/workflow_nodes/googleCloudNaturalLanguage.json +171 -0
  236. package/workflow_nodes/googleCloudStorage.json +466 -0
  237. package/workflow_nodes/googleContacts.json +481 -0
  238. package/workflow_nodes/googleDocs.json +312 -0
  239. package/workflow_nodes/googleDrive.json +920 -0
  240. package/workflow_nodes/googleDriveTrigger.json +181 -0
  241. package/workflow_nodes/googleFirebaseCloudFirestore.json +156 -0
  242. package/workflow_nodes/googleFirebaseRealtimeDatabase.json +75 -0
  243. package/workflow_nodes/googlePerspective.json +94 -0
  244. package/workflow_nodes/googleSheets.json +98 -0
  245. package/workflow_nodes/googleSheetsTrigger.json +192 -0
  246. package/workflow_nodes/googleSlides.json +186 -0
  247. package/workflow_nodes/googleTasks.json +198 -0
  248. package/workflow_nodes/googleTranslate.json +80 -0
  249. package/workflow_nodes/gotify.json +110 -0
  250. package/workflow_nodes/grafana.json +155 -0
  251. package/workflow_nodes/graphql.json +165 -0
  252. package/workflow_nodes/grist.json +13 -0
  253. package/workflow_nodes/gumroadTrigger.json +8 -0
  254. package/workflow_nodes/hackerNews.json +100 -0
  255. package/workflow_nodes/haloPSA.json +286 -0
  256. package/workflow_nodes/harvest.json +699 -0
  257. package/workflow_nodes/helpScout.json +629 -0
  258. package/workflow_nodes/helpScoutTrigger.json +8 -0
  259. package/workflow_nodes/highLevel.json +8 -0
  260. package/workflow_nodes/homeAssistant.json +201 -0
  261. package/workflow_nodes/html.json +118 -0
  262. package/workflow_nodes/htmlExtract.json +87 -0
  263. package/workflow_nodes/httpRequest.json +472 -0
  264. package/workflow_nodes/hubspot.json +62 -0
  265. package/workflow_nodes/hubspotTrigger.json +138 -0
  266. package/workflow_nodes/humanticAi.json +82 -0
  267. package/workflow_nodes/hunter.json +168 -0
  268. package/workflow_nodes/iCal.json +20 -0
  269. package/workflow_nodes/if.json +24 -0
  270. package/workflow_nodes/intercom.json +335 -0
  271. package/workflow_nodes/interval.json +8 -0
  272. package/workflow_nodes/invoiceNinja.json +882 -0
  273. package/workflow_nodes/invoiceNinjaTrigger.json +11 -0
  274. package/workflow_nodes/itemLists.json +313 -0
  275. package/workflow_nodes/iterable.json +168 -0
  276. package/workflow_nodes/jenkins.json +172 -0
  277. package/workflow_nodes/jira.json +529 -0
  278. package/workflow_nodes/jiraTrigger.json +308 -0
  279. package/workflow_nodes/jotFormTrigger.json +44 -0
  280. package/workflow_nodes/jwt.json +195 -0
  281. package/workflow_nodes/kafka.json +132 -0
  282. package/workflow_nodes/kafkaTrigger.json +11 -0
  283. package/workflow_nodes/keap.json +915 -0
  284. package/workflow_nodes/keapTrigger.json +37 -0
  285. package/workflow_nodes/kitemaker.json +153 -0
  286. package/workflow_nodes/koBoToolbox.json +337 -0
  287. package/workflow_nodes/koBoToolboxTrigger.json +8 -0
  288. package/workflow_nodes/langchain_Summarization Chain.json +60 -0
  289. package/workflow_nodes/langchain_agent.json +145 -0
  290. package/workflow_nodes/langchain_allowFileUploads.json +180 -0
  291. package/workflow_nodes/langchain_chainLlm.json +16 -0
  292. package/workflow_nodes/langchain_chainSummarization.json +119 -0
  293. package/workflow_nodes/langchain_code.json +62 -0
  294. package/workflow_nodes/langchain_documentBinaryInputLoader.json +8 -0
  295. package/workflow_nodes/langchain_documentDefaultDataLoader.json +8 -0
  296. package/workflow_nodes/langchain_documentGithubLoader.json +8 -0
  297. package/workflow_nodes/langchain_documentJsonInputLoader.json +8 -0
  298. package/workflow_nodes/langchain_embeddingDimensions.json +17 -0
  299. package/workflow_nodes/langchain_embeddingsAwsBedrock.json +8 -0
  300. package/workflow_nodes/langchain_embeddingsAzureOpenAi.json +151 -0
  301. package/workflow_nodes/langchain_embeddingsCohere.json +8 -0
  302. package/workflow_nodes/langchain_embeddingsGoogleGemini.json +8 -0
  303. package/workflow_nodes/langchain_embeddingsGoogleVertex.json +8 -0
  304. package/workflow_nodes/langchain_embeddingsHuggingFaceInference.json +8 -0
  305. package/workflow_nodes/langchain_embeddingsMistralCloud.json +8 -0
  306. package/workflow_nodes/langchain_embeddingsOllama.json +8 -0
  307. package/workflow_nodes/langchain_informationExtractor.json +81 -0
  308. package/workflow_nodes/langchain_lmChatAwsBedrock.json +8 -0
  309. package/workflow_nodes/langchain_lmChatAzureOpenAi.json +151 -0
  310. package/workflow_nodes/langchain_lmChatDeepSeek.json +10 -0
  311. package/workflow_nodes/langchain_lmChatGoogleGemini.json +31 -0
  312. package/workflow_nodes/langchain_lmChatGoogleVertex.json +32 -0
  313. package/workflow_nodes/langchain_lmChatGroq.json +8 -0
  314. package/workflow_nodes/langchain_lmChatMistralCloud.json +8 -0
  315. package/workflow_nodes/langchain_lmChatOllama.json +8 -0
  316. package/workflow_nodes/langchain_lmChatOpenAi.json +155 -0
  317. package/workflow_nodes/langchain_lmChatOpenRouter.json +10 -0
  318. package/workflow_nodes/langchain_lmChatXAiGrok.json +10 -0
  319. package/workflow_nodes/langchain_lmCohere.json +8 -0
  320. package/workflow_nodes/langchain_lmOllama.json +8 -0
  321. package/workflow_nodes/langchain_lmOpenAi.json +251 -0
  322. package/workflow_nodes/langchain_lmOpenHuggingFaceInference.json +8 -0
  323. package/workflow_nodes/langchain_manualChatTrigger.json +11 -0
  324. package/workflow_nodes/langchain_mcpClientTool.json +86 -0
  325. package/workflow_nodes/langchain_mcpTrigger.json +8 -0
  326. package/workflow_nodes/langchain_memoryBufferWindow.json +13 -0
  327. package/workflow_nodes/langchain_memoryChatRetriever.json +22 -0
  328. package/workflow_nodes/langchain_memoryManager.json +106 -0
  329. package/workflow_nodes/langchain_memoryMongoDbChat.json +10 -0
  330. package/workflow_nodes/langchain_memoryMotorhead.json +13 -0
  331. package/workflow_nodes/langchain_memoryPostgresChat.json +13 -0
  332. package/workflow_nodes/langchain_memoryRedisChat.json +15 -0
  333. package/workflow_nodes/langchain_memoryXata.json +14 -0
  334. package/workflow_nodes/langchain_memoryZep.json +13 -0
  335. package/workflow_nodes/langchain_model.json +155 -0
  336. package/workflow_nodes/langchain_mongoCollection.json +16 -0
  337. package/workflow_nodes/langchain_notice.json +22 -0
  338. package/workflow_nodes/langchain_openAiAssistant.json +132 -0
  339. package/workflow_nodes/langchain_options.json +17 -0
  340. package/workflow_nodes/langchain_outputParserAutofixing.json +8 -0
  341. package/workflow_nodes/langchain_outputParserItemList.json +8 -0
  342. package/workflow_nodes/langchain_outputParserStructured.json +12 -0
  343. package/workflow_nodes/langchain_pineconeNamespace.json +16 -0
  344. package/workflow_nodes/langchain_queryName.json +16 -0
  345. package/workflow_nodes/langchain_retrieverContextualCompression.json +8 -0
  346. package/workflow_nodes/langchain_retrieverMultiQuery.json +8 -0
  347. package/workflow_nodes/langchain_retrieverVectorStore.json +8 -0
  348. package/workflow_nodes/langchain_retrieverWorkflow.json +103 -0
  349. package/workflow_nodes/langchain_sentimentAnalysis.json +52 -0
  350. package/workflow_nodes/langchain_systemPromptTemplate.json +47 -0
  351. package/workflow_nodes/langchain_tableName.json +23 -0
  352. package/workflow_nodes/langchain_textClassifier.json +66 -0
  353. package/workflow_nodes/langchain_textSplitterCharacterTextSplitter.json +8 -0
  354. package/workflow_nodes/langchain_textSplitterRecursiveCharacterTextSplitter.json +8 -0
  355. package/workflow_nodes/langchain_textSplitterTokenSplitter.json +8 -0
  356. package/workflow_nodes/langchain_toolCalculator.json +8 -0
  357. package/workflow_nodes/langchain_toolCode.json +12 -0
  358. package/workflow_nodes/langchain_toolHttpRequest.json +232 -0
  359. package/workflow_nodes/langchain_toolSearXng.json +8 -0
  360. package/workflow_nodes/langchain_toolSerpApi.json +8 -0
  361. package/workflow_nodes/langchain_toolThink.json +8 -0
  362. package/workflow_nodes/langchain_toolVectorStore.json +11 -0
  363. package/workflow_nodes/langchain_toolWikipedia.json +8 -0
  364. package/workflow_nodes/langchain_toolWolframAlpha.json +8 -0
  365. package/workflow_nodes/langchain_toolWorkflow.json +8 -0
  366. package/workflow_nodes/langchain_vectorStoreInMemoryInsert.json +29 -0
  367. package/workflow_nodes/langchain_vectorStoreInMemoryLoad.json +8 -0
  368. package/workflow_nodes/langchain_vectorStorePineconeInsert.json +37 -0
  369. package/workflow_nodes/langchain_vectorStorePineconeLoad.json +8 -0
  370. package/workflow_nodes/langchain_vectorStoreSupabaseInsert.json +32 -0
  371. package/workflow_nodes/langchain_vectorStoreSupabaseLoad.json +8 -0
  372. package/workflow_nodes/langchain_vectorStoreZepInsert.json +46 -0
  373. package/workflow_nodes/langchain_vectorStoreZepLoad.json +8 -0
  374. package/workflow_nodes/ldap.json +182 -0
  375. package/workflow_nodes/lemlist.json +44 -0
  376. package/workflow_nodes/lemlistTrigger.json +45 -0
  377. package/workflow_nodes/limit.json +26 -0
  378. package/workflow_nodes/line.json +95 -0
  379. package/workflow_nodes/linear.json +151 -0
  380. package/workflow_nodes/linearTrigger.json +71 -0
  381. package/workflow_nodes/lingvaNex.json +66 -0
  382. package/workflow_nodes/linkedIn.json +142 -0
  383. package/workflow_nodes/localFileTrigger.json +120 -0
  384. package/workflow_nodes/lonescale.json +171 -0
  385. package/workflow_nodes/lonescaleTrigger.json +8 -0
  386. package/workflow_nodes/magento2.json +164 -0
  387. package/workflow_nodes/mailcheck.json +46 -0
  388. package/workflow_nodes/mailchimp.json +507 -0
  389. package/workflow_nodes/mailchimpTrigger.json +100 -0
  390. package/workflow_nodes/mailerLite.json +24 -0
  391. package/workflow_nodes/mailerLiteTrigger.json +74 -0
  392. package/workflow_nodes/mailgun.json +81 -0
  393. package/workflow_nodes/mailjet.json +201 -0
  394. package/workflow_nodes/mailjetTrigger.json +8 -0
  395. package/workflow_nodes/mandrill.json +372 -0
  396. package/workflow_nodes/manualTrigger.json +8 -0
  397. package/workflow_nodes/markdown.json +376 -0
  398. package/workflow_nodes/marketstack.json +126 -0
  399. package/workflow_nodes/matrix.json +264 -0
  400. package/workflow_nodes/mattermost.json +8 -0
  401. package/workflow_nodes/mautic.json +564 -0
  402. package/workflow_nodes/mauticTrigger.json +54 -0
  403. package/workflow_nodes/medium.json +209 -0
  404. package/workflow_nodes/merge.json +125 -0
  405. package/workflow_nodes/messageBird.json +182 -0
  406. package/workflow_nodes/metabase.json +175 -0
  407. package/workflow_nodes/microsoftDynamicsCrm.json +100 -0
  408. package/workflow_nodes/microsoftEntra.json +51 -0
  409. package/workflow_nodes/microsoftExcel.json +35 -0
  410. package/workflow_nodes/microsoftGraphSecurity.json +113 -0
  411. package/workflow_nodes/microsoftOneDrive.json +232 -0
  412. package/workflow_nodes/microsoftOneDriveTrigger.json +80 -0
  413. package/workflow_nodes/microsoftOutlook.json +40 -0
  414. package/workflow_nodes/microsoftOutlookTrigger.json +24 -0
  415. package/workflow_nodes/microsoftSql.json +81 -0
  416. package/workflow_nodes/microsoftTeams.json +36 -0
  417. package/workflow_nodes/microsoftToDo.json +181 -0
  418. package/workflow_nodes/mindee.json +86 -0
  419. package/workflow_nodes/misp.json +399 -0
  420. package/workflow_nodes/mocean.json +103 -0
  421. package/workflow_nodes/mondayCom.json +290 -0
  422. package/workflow_nodes/mongoDb.json +16 -0
  423. package/workflow_nodes/monicaCrm.json +543 -0
  424. package/workflow_nodes/moveBinaryData.json +121 -0
  425. package/workflow_nodes/mqtt.json +67 -0
  426. package/workflow_nodes/mqttTrigger.json +47 -0
  427. package/workflow_nodes/msg91.json +65 -0
  428. package/workflow_nodes/mySql.json +111 -0
  429. package/workflow_nodes/n8n.json +75 -0
  430. package/workflow_nodes/n8nTrigger.json +27 -0
  431. package/workflow_nodes/nasa.json +310 -0
  432. package/workflow_nodes/netlify.json +87 -0
  433. package/workflow_nodes/netlifyTrigger.json +68 -0
  434. package/workflow_nodes/netscalerAdc.json +243 -0
  435. package/workflow_nodes/nextCloud.json +312 -0
  436. package/workflow_nodes/noOp.json +8 -0
  437. package/workflow_nodes/nocoDb.json +276 -0
  438. package/workflow_nodes/notion.json +8 -0
  439. package/workflow_nodes/notionTrigger.json +75 -0
  440. package/workflow_nodes/npm.json +64 -0
  441. package/workflow_nodes/odoo.json +344 -0
  442. package/workflow_nodes/okta.json +97 -0
  443. package/workflow_nodes/oneSimpleApi.json +281 -0
  444. package/workflow_nodes/onfleet.json +316 -0
  445. package/workflow_nodes/onfleetTrigger.json +8 -0
  446. package/workflow_nodes/openAi.json +154 -0
  447. package/workflow_nodes/openThesaurus.json +81 -0
  448. package/workflow_nodes/openWeatherMap.json +129 -0
  449. package/workflow_nodes/orbit.json +375 -0
  450. package/workflow_nodes/oura.json +74 -0
  451. package/workflow_nodes/paddle.json +403 -0
  452. package/workflow_nodes/pagerDuty.json +351 -0
  453. package/workflow_nodes/payPal.json +196 -0
  454. package/workflow_nodes/payPalTrigger.json +40 -0
  455. package/workflow_nodes/peekalink.json +41 -0
  456. package/workflow_nodes/phantombuster.json +172 -0
  457. package/workflow_nodes/philipsHue.json +177 -0
  458. package/workflow_nodes/pipedrive.json +860 -0
  459. package/workflow_nodes/pipedriveTrigger.json +11 -0
  460. package/workflow_nodes/plivo.json +91 -0
  461. package/workflow_nodes/postHog.json +122 -0
  462. package/workflow_nodes/postbin.json +60 -0
  463. package/workflow_nodes/postgres.json +109 -0
  464. package/workflow_nodes/postgresTrigger.json +8 -0
  465. package/workflow_nodes/postmarkTrigger.json +72 -0
  466. package/workflow_nodes/profitWell.json +305 -0
  467. package/workflow_nodes/pushbullet.json +186 -0
  468. package/workflow_nodes/pushcut.json +75 -0
  469. package/workflow_nodes/pushcutTrigger.json +8 -0
  470. package/workflow_nodes/pushover.json +159 -0
  471. package/workflow_nodes/questDb.json +94 -0
  472. package/workflow_nodes/quickChart.json +188 -0
  473. package/workflow_nodes/quickbase.json +205 -0
  474. package/workflow_nodes/quickbooks.json +550 -0
  475. package/workflow_nodes/rabbitmq.json +165 -0
  476. package/workflow_nodes/rabbitmqTrigger.json +8 -0
  477. package/workflow_nodes/raindrop.json +216 -0
  478. package/workflow_nodes/readBinaryFile.json +26 -0
  479. package/workflow_nodes/readBinaryFiles.json +26 -0
  480. package/workflow_nodes/readPDF.json +31 -0
  481. package/workflow_nodes/readWriteFile.json +27 -0
  482. package/workflow_nodes/reddit.json +309 -0
  483. package/workflow_nodes/redis.json +183 -0
  484. package/workflow_nodes/redisTrigger.json +8 -0
  485. package/workflow_nodes/removeDuplicates.json +8 -0
  486. package/workflow_nodes/renameKeys.json +67 -0
  487. package/workflow_nodes/respondToWebhook.json +126 -0
  488. package/workflow_nodes/rocketchat.json +216 -0
  489. package/workflow_nodes/rssFeedRead.json +28 -0
  490. package/workflow_nodes/rssFeedReadTrigger.json +17 -0
  491. package/workflow_nodes/rundeck.json +79 -0
  492. package/workflow_nodes/s3.json +425 -0
  493. package/workflow_nodes/salesforce.json +1137 -0
  494. package/workflow_nodes/salesforceTrigger.json +122 -0
  495. package/workflow_nodes/salesmate.json +467 -0
  496. package/workflow_nodes/scheduleTrigger.json +270 -0
  497. package/workflow_nodes/seaTable.json +8 -0
  498. package/workflow_nodes/seaTableTrigger.json +87 -0
  499. package/workflow_nodes/securityScorecard.json +459 -0
  500. package/workflow_nodes/segment.json +219 -0
  501. package/workflow_nodes/sendGrid.json +359 -0
  502. package/workflow_nodes/sendy.json +225 -0
  503. package/workflow_nodes/sentryIo.json +426 -0
  504. package/workflow_nodes/serviceNow.json +544 -0
  505. package/workflow_nodes/set.json +124 -0
  506. package/workflow_nodes/shopify.json +707 -0
  507. package/workflow_nodes/shopifyTrigger.json +8 -0
  508. package/workflow_nodes/signl4.json +133 -0
  509. package/workflow_nodes/simulate.json +30 -0
  510. package/workflow_nodes/simulateTrigger.json +8 -0
  511. package/workflow_nodes/slack.json +62 -0
  512. package/workflow_nodes/slackTrigger.json +135 -0
  513. package/workflow_nodes/sms77.json +121 -0
  514. package/workflow_nodes/snowflake.json +65 -0
  515. package/workflow_nodes/sort.json +57 -0
  516. package/workflow_nodes/splitInBatches.json +30 -0
  517. package/workflow_nodes/splitOut.json +62 -0
  518. package/workflow_nodes/splunk.json +40 -0
  519. package/workflow_nodes/spontit.json +123 -0
  520. package/workflow_nodes/spotify.json +285 -0
  521. package/workflow_nodes/spreadsheetFile.json +8 -0
  522. package/workflow_nodes/sseTrigger.json +8 -0
  523. package/workflow_nodes/ssh.json +105 -0
  524. package/workflow_nodes/stackby.json +85 -0
  525. package/workflow_nodes/start.json +15 -0
  526. package/workflow_nodes/stickyNote.json +36 -0
  527. package/workflow_nodes/stopAndError.json +8 -0
  528. package/workflow_nodes/storyblok.json +138 -0
  529. package/workflow_nodes/strapi.json +138 -0
  530. package/workflow_nodes/strava.json +427 -0
  531. package/workflow_nodes/stravaTrigger.json +79 -0
  532. package/workflow_nodes/stripe.json +357 -0
  533. package/workflow_nodes/stripeTrigger.json +775 -0
  534. package/workflow_nodes/summarize.json +124 -0
  535. package/workflow_nodes/supabase.json +136 -0
  536. package/workflow_nodes/surveyMonkeyTrigger.json +160 -0
  537. package/workflow_nodes/switch.json +91 -0
  538. package/workflow_nodes/syncroMsp.json +8 -0
  539. package/workflow_nodes/taiga.json +340 -0
  540. package/workflow_nodes/taigaTrigger.json +81 -0
  541. package/workflow_nodes/tapfiliate.json +241 -0
  542. package/workflow_nodes/telegram.json +612 -0
  543. package/workflow_nodes/telegramTrigger.json +142 -0
  544. package/workflow_nodes/theHive.json +497 -0
  545. package/workflow_nodes/theHiveProject.json +8 -0
  546. package/workflow_nodes/theHiveProjectTrigger.json +162 -0
  547. package/workflow_nodes/theHiveTrigger.json +101 -0
  548. package/workflow_nodes/timescaleDb.json +95 -0
  549. package/workflow_nodes/todoist.json +285 -0
  550. package/workflow_nodes/togglTrigger.json +24 -0
  551. package/workflow_nodes/totp.json +86 -0
  552. package/workflow_nodes/travisCi.json +142 -0
  553. package/workflow_nodes/trello.json +609 -0
  554. package/workflow_nodes/trelloTrigger.json +8 -0
  555. package/workflow_nodes/twake.json +76 -0
  556. package/workflow_nodes/twilio.json +95 -0
  557. package/workflow_nodes/twilioTrigger.json +46 -0
  558. package/workflow_nodes/twist.json +376 -0
  559. package/workflow_nodes/twitter.json +40 -0
  560. package/workflow_nodes/typeformTrigger.json +62 -0
  561. package/workflow_nodes/unleashedSoftware.json +154 -0
  562. package/workflow_nodes/uplead.json +72 -0
  563. package/workflow_nodes/uproc.json +26 -0
  564. package/workflow_nodes/uptimeRobot.json +453 -0
  565. package/workflow_nodes/urlScanIo.json +113 -0
  566. package/workflow_nodes/venafiTlsProtectCloud.json +310 -0
  567. package/workflow_nodes/venafiTlsProtectCloudTrigger.json +38 -0
  568. package/workflow_nodes/venafiTlsProtectDatacenter.json +491 -0
  569. package/workflow_nodes/vero.json +158 -0
  570. package/workflow_nodes/vonage.json +125 -0
  571. package/workflow_nodes/wait.json +71 -0
  572. package/workflow_nodes/webflow.json +38 -0
  573. package/workflow_nodes/webflowTrigger.json +8 -0
  574. package/workflow_nodes/webhook.json +55 -0
  575. package/workflow_nodes/wekan.json +460 -0
  576. package/workflow_nodes/whatsApp.json +476 -0
  577. package/workflow_nodes/whatsAppTrigger.json +103 -0
  578. package/workflow_nodes/wise.json +330 -0
  579. package/workflow_nodes/wiseTrigger.json +8 -0
  580. package/workflow_nodes/wooCommerce.json +812 -0
  581. package/workflow_nodes/wooCommerceTrigger.json +8 -0
  582. package/workflow_nodes/wordpress.json +500 -0
  583. package/workflow_nodes/workableTrigger.json +51 -0
  584. package/workflow_nodes/writeBinaryFile.json +34 -0
  585. package/workflow_nodes/wufooTrigger.json +37 -0
  586. package/workflow_nodes/xero.json +530 -0
  587. package/workflow_nodes/xml.json +129 -0
  588. package/workflow_nodes/youTube.json +578 -0
  589. package/workflow_nodes/yourls.json +71 -0
  590. package/workflow_nodes/zammad.json +406 -0
  591. package/workflow_nodes/zendesk.json +526 -0
  592. package/workflow_nodes/zendeskTrigger.json +187 -0
  593. package/workflow_nodes/zohoCrm.json +721 -0
  594. package/workflow_nodes/zoom.json +507 -0
  595. package/workflow_nodes/zulip.json +371 -0
@@ -0,0 +1,219 @@
1
+ ---
2
+ description: Guide for using Task Master to manage task-driven development workflows
3
+ globs: **/*
4
+ alwaysApply: true
5
+ ---
6
+ # Task Master Development Workflow
7
+
8
+ This guide outlines the typical process for using Task Master to manage software development projects.
9
+
10
+ ## Primary Interaction: MCP Server vs. CLI
11
+
12
+ Task Master offers two primary ways to interact:
13
+
14
+ 1. **MCP Server (Recommended for Integrated Tools)**:
15
+ - For AI agents and integrated development environments (like Roo Code), interacting via the **MCP server is the preferred method**.
16
+ - The MCP server exposes Task Master functionality through a set of tools (e.g., `get_tasks`, `add_subtask`).
17
+ - This method offers better performance, structured data exchange, and richer error handling compared to CLI parsing.
18
+ - Refer to [`mcp.md`](mdc:.roo/rules/mcp.md) for details on the MCP architecture and available tools.
19
+ - A comprehensive list and description of MCP tools and their corresponding CLI commands can be found in [`taskmaster.md`](mdc:.roo/rules/taskmaster.md).
20
+ - **Restart the MCP server** if core logic in `scripts/modules` or MCP tool/direct function definitions change.
21
+
22
+ 2. **`task-master` CLI (For Users & Fallback)**:
23
+ - The global `task-master` command provides a user-friendly interface for direct terminal interaction.
24
+ - It can also serve as a fallback if the MCP server is inaccessible or a specific function isn't exposed via MCP.
25
+ - Install globally with `npm install -g task-master-ai` or use locally via `npx task-master-ai ...`.
26
+ - The CLI commands often mirror the MCP tools (e.g., `task-master list` corresponds to `get_tasks`).
27
+ - Refer to [`taskmaster.md`](mdc:.roo/rules/taskmaster.md) for a detailed command reference.
28
+
29
+ ## Standard Development Workflow Process
30
+
31
+ - Start new projects by running `initialize_project` tool / `task-master init` or `parse_prd` / `task-master parse-prd --input='<prd-file.txt>'` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)) to generate initial tasks.json
32
+ - Begin coding sessions with `get_tasks` / `task-master list` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)) to see current tasks, status, and IDs
33
+ - Determine the next task to work on using `next_task` / `task-master next` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)).
34
+ - Analyze task complexity with `analyze_project_complexity` / `task-master analyze-complexity --research` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)) before breaking down tasks
35
+ - Review complexity report using `complexity_report` / `task-master complexity-report` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)).
36
+ - Select tasks based on dependencies (all marked 'done'), priority level, and ID order
37
+ - Clarify tasks by checking task files in tasks/ directory or asking for user input
38
+ - View specific task details using `get_task` / `task-master show <id>` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)) to understand implementation requirements
39
+ - Break down complex tasks using `expand_task` / `task-master expand --id=<id> --force --research` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)) with appropriate flags like `--force` (to replace existing subtasks) and `--research`.
40
+ - Clear existing subtasks if needed using `clear_subtasks` / `task-master clear-subtasks --id=<id>` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)) before regenerating
41
+ - Implement code following task details, dependencies, and project standards
42
+ - Verify tasks according to test strategies before marking as complete (See [`tests.md`](mdc:.roo/rules/tests.md))
43
+ - Mark completed tasks with `set_task_status` / `task-master set-status --id=<id> --status=done` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md))
44
+ - Update dependent tasks when implementation differs from original plan using `update` / `task-master update --from=<id> --prompt="..."` or `update_task` / `task-master update-task --id=<id> --prompt="..."` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md))
45
+ - Add new tasks discovered during implementation using `add_task` / `task-master add-task --prompt="..." --research` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)).
46
+ - Add new subtasks as needed using `add_subtask` / `task-master add-subtask --parent=<id> --title="..."` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)).
47
+ - Append notes or details to subtasks using `update_subtask` / `task-master update-subtask --id=<subtaskId> --prompt='Add implementation notes here...\nMore details...'` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)).
48
+ - Generate task files with `generate` / `task-master generate` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)) after updating tasks.json
49
+ - Maintain valid dependency structure with `add_dependency`/`remove_dependency` tools or `task-master add-dependency`/`remove-dependency` commands, `validate_dependencies` / `task-master validate-dependencies`, and `fix_dependencies` / `task-master fix-dependencies` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)) when needed
50
+ - Respect dependency chains and task priorities when selecting work
51
+ - Report progress regularly using `get_tasks` / `task-master list`
52
+
53
+ ## Task Complexity Analysis
54
+
55
+ - Run `analyze_project_complexity` / `task-master analyze-complexity --research` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)) for comprehensive analysis
56
+ - Review complexity report via `complexity_report` / `task-master complexity-report` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)) for a formatted, readable version.
57
+ - Focus on tasks with highest complexity scores (8-10) for detailed breakdown
58
+ - Use analysis results to determine appropriate subtask allocation
59
+ - Note that reports are automatically used by the `expand_task` tool/command
60
+
61
+ ## Task Breakdown Process
62
+
63
+ - Use `expand_task` / `task-master expand --id=<id>`. It automatically uses the complexity report if found, otherwise generates default number of subtasks.
64
+ - Use `--num=<number>` to specify an explicit number of subtasks, overriding defaults or complexity report recommendations.
65
+ - Add `--research` flag to leverage Perplexity AI for research-backed expansion.
66
+ - Add `--force` flag to clear existing subtasks before generating new ones (default is to append).
67
+ - Use `--prompt="<context>"` to provide additional context when needed.
68
+ - Review and adjust generated subtasks as necessary.
69
+ - Use `expand_all` tool or `task-master expand --all` to expand multiple pending tasks at once, respecting flags like `--force` and `--research`.
70
+ - If subtasks need complete replacement (regardless of the `--force` flag on `expand`), clear them first with `clear_subtasks` / `task-master clear-subtasks --id=<id>`.
71
+
72
+ ## Implementation Drift Handling
73
+
74
+ - When implementation differs significantly from planned approach
75
+ - When future tasks need modification due to current implementation choices
76
+ - When new dependencies or requirements emerge
77
+ - Use `update` / `task-master update --from=<futureTaskId> --prompt='<explanation>\nUpdate context...' --research` to update multiple future tasks.
78
+ - Use `update_task` / `task-master update-task --id=<taskId> --prompt='<explanation>\nUpdate context...' --research` to update a single specific task.
79
+
80
+ ## Task Status Management
81
+
82
+ - Use 'pending' for tasks ready to be worked on
83
+ - Use 'done' for completed and verified tasks
84
+ - Use 'deferred' for postponed tasks
85
+ - Add custom status values as needed for project-specific workflows
86
+
87
+ ## Task Structure Fields
88
+
89
+ - **id**: Unique identifier for the task (Example: `1`, `1.1`)
90
+ - **title**: Brief, descriptive title (Example: `"Initialize Repo"`)
91
+ - **description**: Concise summary of what the task involves (Example: `"Create a new repository, set up initial structure."`)
92
+ - **status**: Current state of the task (Example: `"pending"`, `"done"`, `"deferred"`)
93
+ - **dependencies**: IDs of prerequisite tasks (Example: `[1, 2.1]`)
94
+ - Dependencies are displayed with status indicators (✅ for completed, ⏱️ for pending)
95
+ - This helps quickly identify which prerequisite tasks are blocking work
96
+ - **priority**: Importance level (Example: `"high"`, `"medium"`, `"low"`)
97
+ - **details**: In-depth implementation instructions (Example: `"Use GitHub client ID/secret, handle callback, set session token."`)
98
+ - **testStrategy**: Verification approach (Example: `"Deploy and call endpoint to confirm 'Hello World' response."`)
99
+ - **subtasks**: List of smaller, more specific tasks (Example: `[{"id": 1, "title": "Configure OAuth", ...}]`)
100
+ - Refer to task structure details (previously linked to `tasks.md`).
101
+
102
+ ## Configuration Management (Updated)
103
+
104
+ Taskmaster configuration is managed through two main mechanisms:
105
+
106
+ 1. **`.taskmasterconfig` File (Primary):**
107
+ * Located in the project root directory.
108
+ * Stores most configuration settings: AI model selections (main, research, fallback), parameters (max tokens, temperature), logging level, default subtasks/priority, project name, etc.
109
+ * **Managed via `task-master models --setup` command.** Do not edit manually unless you know what you are doing.
110
+ * **View/Set specific models via `task-master models` command or `models` MCP tool.**
111
+ * Created automatically when you run `task-master models --setup` for the first time.
112
+
113
+ 2. **Environment Variables (`.env` / `mcp.json`):**
114
+ * Used **only** for sensitive API keys and specific endpoint URLs.
115
+ * Place API keys (one per provider) in a `.env` file in the project root for CLI usage.
116
+ * For MCP/Roo Code integration, configure these keys in the `env` section of `.roo/mcp.json`.
117
+ * Available keys/variables: See `assets/env.example` or the Configuration section in the command reference (previously linked to `taskmaster.md`).
118
+
119
+ **Important:** Non-API key settings (like model selections, `MAX_TOKENS`, `LOG_LEVEL`) are **no longer configured via environment variables**. Use the `task-master models` command (or `--setup` for interactive configuration) or the `models` MCP tool.
120
+ **If AI commands FAIL in MCP** verify that the API key for the selected provider is present in the `env` section of `.roo/mcp.json`.
121
+ **If AI commands FAIL in CLI** verify that the API key for the selected provider is present in the `.env` file in the root of the project.
122
+
123
+ ## Determining the Next Task
124
+
125
+ - Run `next_task` / `task-master next` to show the next task to work on.
126
+ - The command identifies tasks with all dependencies satisfied
127
+ - Tasks are prioritized by priority level, dependency count, and ID
128
+ - The command shows comprehensive task information including:
129
+ - Basic task details and description
130
+ - Implementation details
131
+ - Subtasks (if they exist)
132
+ - Contextual suggested actions
133
+ - Recommended before starting any new development work
134
+ - Respects your project's dependency structure
135
+ - Ensures tasks are completed in the appropriate sequence
136
+ - Provides ready-to-use commands for common task actions
137
+
138
+ ## Viewing Specific Task Details
139
+
140
+ - Run `get_task` / `task-master show <id>` to view a specific task.
141
+ - Use dot notation for subtasks: `task-master show 1.2` (shows subtask 2 of task 1)
142
+ - Displays comprehensive information similar to the next command, but for a specific task
143
+ - For parent tasks, shows all subtasks and their current status
144
+ - For subtasks, shows parent task information and relationship
145
+ - Provides contextual suggested actions appropriate for the specific task
146
+ - Useful for examining task details before implementation or checking status
147
+
148
+ ## Managing Task Dependencies
149
+
150
+ - Use `add_dependency` / `task-master add-dependency --id=<id> --depends-on=<id>` to add a dependency.
151
+ - Use `remove_dependency` / `task-master remove-dependency --id=<id> --depends-on=<id>` to remove a dependency.
152
+ - The system prevents circular dependencies and duplicate dependency entries
153
+ - Dependencies are checked for existence before being added or removed
154
+ - Task files are automatically regenerated after dependency changes
155
+ - Dependencies are visualized with status indicators in task listings and files
156
+
157
+ ## Iterative Subtask Implementation
158
+
159
+ Once a task has been broken down into subtasks using `expand_task` or similar methods, follow this iterative process for implementation:
160
+
161
+ 1. **Understand the Goal (Preparation):**
162
+ * Use `get_task` / `task-master show <subtaskId>` (see [`taskmaster.md`](mdc:.roo/rules/taskmaster.md)) to thoroughly understand the specific goals and requirements of the subtask.
163
+
164
+ 2. **Initial Exploration & Planning (Iteration 1):**
165
+ * This is the first attempt at creating a concrete implementation plan.
166
+ * Explore the codebase to identify the precise files, functions, and even specific lines of code that will need modification.
167
+ * Determine the intended code changes (diffs) and their locations.
168
+ * Gather *all* relevant details from this exploration phase.
169
+
170
+ 3. **Log the Plan:**
171
+ * Run `update_subtask` / `task-master update-subtask --id=<subtaskId> --prompt='<detailed plan>'`.
172
+ * Provide the *complete and detailed* findings from the exploration phase in the prompt. Include file paths, line numbers, proposed diffs, reasoning, and any potential challenges identified. Do not omit details. The goal is to create a rich, timestamped log within the subtask's `details`.
173
+
174
+ 4. **Verify the Plan:**
175
+ * Run `get_task` / `task-master show <subtaskId>` again to confirm that the detailed implementation plan has been successfully appended to the subtask's details.
176
+
177
+ 5. **Begin Implementation:**
178
+ * Set the subtask status using `set_task_status` / `task-master set-status --id=<subtaskId> --status=in-progress`.
179
+ * Start coding based on the logged plan.
180
+
181
+ 6. **Refine and Log Progress (Iteration 2+):**
182
+ * As implementation progresses, you will encounter challenges, discover nuances, or confirm successful approaches.
183
+ * **Before appending new information**: Briefly review the *existing* details logged in the subtask (using `get_task` or recalling from context) to ensure the update adds fresh insights and avoids redundancy.
184
+ * **Regularly** use `update_subtask` / `task-master update-subtask --id=<subtaskId> --prompt='<update details>\n- What worked...\n- What didn't work...'` to append new findings.
185
+ * **Crucially, log:**
186
+ * What worked ("fundamental truths" discovered).
187
+ * What didn't work and why (to avoid repeating mistakes).
188
+ * Specific code snippets or configurations that were successful.
189
+ * Decisions made, especially if confirmed with user input.
190
+ * Any deviations from the initial plan and the reasoning.
191
+ * The objective is to continuously enrich the subtask's details, creating a log of the implementation journey that helps the AI (and human developers) learn, adapt, and avoid repeating errors.
192
+
193
+ 7. **Review & Update Rules (Post-Implementation):**
194
+ * Once the implementation for the subtask is functionally complete, review all code changes and the relevant chat history.
195
+ * Identify any new or modified code patterns, conventions, or best practices established during the implementation.
196
+ * Create new or update existing rules following internal guidelines (previously linked to `cursor_rules.md` and `self_improve.md`).
197
+
198
+ 8. **Mark Task Complete:**
199
+ * After verifying the implementation and updating any necessary rules, mark the subtask as completed: `set_task_status` / `task-master set-status --id=<subtaskId> --status=done`.
200
+
201
+ 9. **Commit Changes (If using Git):**
202
+ * Stage the relevant code changes and any updated/new rule files (`git add .`).
203
+ * Craft a comprehensive Git commit message summarizing the work done for the subtask, including both code implementation and any rule adjustments.
204
+ * Execute the commit command directly in the terminal (e.g., `git commit -m 'feat(module): Implement feature X for subtask <subtaskId>\n\n- Details about changes...\n- Updated rule Y for pattern Z'`).
205
+ * Consider if a Changeset is needed according to internal versioning guidelines (previously linked to `changeset.md`). If so, run `npm run changeset`, stage the generated file, and amend the commit or create a new one.
206
+
207
+ 10. **Proceed to Next Subtask:**
208
+ * Identify the next subtask (e.g., using `next_task` / `task-master next`).
209
+
210
+ ## Code Analysis & Refactoring Techniques
211
+
212
+ - **Top-Level Function Search**:
213
+ - Useful for understanding module structure or planning refactors.
214
+ - Use grep/ripgrep to find exported functions/constants:
215
+ `rg "export (async function|function|const) \w+"` or similar patterns.
216
+ - Can help compare functions between files during migrations or identify potential naming conflicts.
217
+
218
+ ---
219
+ *This workflow provides a general guideline. Adapt it based on your specific project needs and team practices.*
@@ -0,0 +1,430 @@
1
+ ---
2
+ description:
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+ # MCP Server Implementation Best Practices
7
+
8
+ These guidelines ensure our MCP server follows the latest Model Context Protocol (2025) standards, providing a consistent API experience for AI model interactions.
9
+
10
+ ## Core Architecture
11
+
12
+ - **Follow JSON-RPC 2.0 Message Format**
13
+ - All server responses must include `jsonrpc: "2.0"`, `id`, and either `result` or `error`
14
+ - Error objects must contain `code` and `message` properties
15
+ - Include proper request IDs in all responses
16
+
17
+ ```javascript
18
+ // ✅ DO: Format responses following JSON-RPC 2.0
19
+ const createJsonRpcResponse = (id, result) => ({
20
+ jsonrpc: "2.0",
21
+ id,
22
+ result
23
+ });
24
+
25
+ const createJsonRpcError = (id, code, message) => ({
26
+ jsonrpc: "2.0",
27
+ id,
28
+ error: { code, message }
29
+ });
30
+
31
+ // ❌ DON'T: Return arbitrary JSON structures
32
+ res.json({ success: true, data: result });
33
+ ```
34
+
35
+ - **Implement Proper Transport Layers**
36
+ - Support standard MCP transports (Stdio, HTTP, WebSockets)
37
+ - Transport selection should be configurable
38
+ - Handle connection lifecycle events properly
39
+
40
+ ```javascript
41
+ // ✅ DO: Use standardized transport implementations
42
+ const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio.js');
43
+ const transport = new StdioServerTransport();
44
+ server.connect(transport);
45
+
46
+ // ❌ DON'T: Create custom message formats
47
+ process.stdin.on('data', (data) => {
48
+ // Custom parsing logic...
49
+ });
50
+ ```
51
+
52
+ - **Implement Capability Negotiation**
53
+ - Explicitly declare supported capabilities (tools, resources, prompts, sampling)
54
+ - Follow the MCP specification version declaration
55
+ - Respond to capability request messages
56
+
57
+ ```javascript
58
+ // ✅ DO: Properly declare server capabilities
59
+ app.post('/mcp/capabilities', (req, res) => {
60
+ res.status(200).json({
61
+ jsonrpc: "2.0",
62
+ id: req.body.id,
63
+ result: {
64
+ capabilities: {
65
+ tools: true,
66
+ resources: true,
67
+ prompts: false,
68
+ sampling: false
69
+ },
70
+ version: "2025-03-26"
71
+ }
72
+ });
73
+ });
74
+ ```
75
+
76
+ ## Tool Definitions
77
+
78
+ - **Standardize Tool Schemas**
79
+ - Each tool must have `name`, `description`, and `parameters`
80
+ - Parameter validation must follow JSON Schema (via Zod, Ajv, etc.)
81
+ - Include required vs. optional parameter designation
82
+ - Document expected inputs and outputs
83
+
84
+ ```javascript
85
+ // ✅ DO: Use well-structured tool definitions
86
+ const createTool = (description, parameters, execute) => ({
87
+ description,
88
+ parameters: {
89
+ type: 'object',
90
+ properties: parameters,
91
+ required: Object.keys(parameters).filter(key => !parameters[key].optional)
92
+ },
93
+ execute,
94
+ required_on_execute: true,
95
+ categories: ['workflow'],
96
+ parallelizable: false
97
+ });
98
+
99
+ // ❌ DON'T: Use loosely typed parameters
100
+ const simpleTool = {
101
+ run: (params) => {
102
+ // No validation before execution
103
+ }
104
+ };
105
+ ```
106
+
107
+ - **Implement Comprehensive Parameter Validation**
108
+ - Validate all parameters before tool execution
109
+ - Provide descriptive error messages for invalid parameters
110
+ - Include type checking, bounds checking, and format validation
111
+ - Support nested objects and array validation
112
+
113
+ ```javascript
114
+ // ✅ DO: Validate parameters with detailed errors
115
+ const validate = ajv.compile(schema);
116
+ const valid = validate(params);
117
+
118
+ if (!valid) {
119
+ const errors = validate.errors.map(err =>
120
+ `${err.instancePath} ${err.message}`
121
+ ).join('; ');
122
+
123
+ throw new Error(`Invalid parameters: ${errors}`);
124
+ }
125
+
126
+ // ❌ DON'T: Use loose validation or manual checks
127
+ if (!params.name) {
128
+ throw new Error('Name is required');
129
+ }
130
+ ```
131
+
132
+ ## Security
133
+
134
+ - **Implement Robust Authentication & Authorization**
135
+ - Authenticate all MCP requests
136
+ - Apply authorization rules for tool execution
137
+ - Log authentication failures
138
+ - Use refresh tokens and proper session management
139
+
140
+ ```javascript
141
+ // ✅ DO: Implement proper auth with tool-specific authorization
142
+ const enhancedAuth = (req, res, next) => {
143
+ // Validate authentication
144
+ authenticate(req, res, (err) => {
145
+ if (err) return next(err);
146
+
147
+ // Add authorization check
148
+ const { toolInfo } = req;
149
+ if (toolInfo && !authorizeToolAccess(req.user, toolInfo)) {
150
+ return res.status(403).json({
151
+ error: {
152
+ message: 'Not authorized to use this tool',
153
+ code: 'UNAUTHORIZED_TOOL_ACCESS'
154
+ }
155
+ });
156
+ }
157
+ next();
158
+ });
159
+ };
160
+
161
+ // ❌ DON'T: Use simple global authentication without tool-specific authorization
162
+ app.use(basicAuthMiddleware);
163
+ ```
164
+
165
+ - **Secure Configuration Management**
166
+ - Store secrets in environment variables or secure storage
167
+ - Support multiple environments (dev, staging, prod)
168
+ - Never hardcode credentials
169
+ - Use separate configuration files for non-sensitive settings
170
+
171
+ ```javascript
172
+ // ✅ DO: Use environment variables for secrets
173
+ require('dotenv').config();
174
+ const apiKey = process.env.API_KEY;
175
+
176
+ // ❌ DON'T: Hardcode credentials
177
+ const apiKey = 'sk_live_abcdef123456';
178
+ ```
179
+
180
+ ## Error Handling
181
+
182
+ - **Implement Consistent Error Responses**
183
+ - Use standardized error codes
184
+ - Provide human-readable error messages
185
+ - Include debugging information in development
186
+ - Mask sensitive data in error responses
187
+
188
+ ```javascript
189
+ // ✅ DO: Return structured error responses
190
+ const createErrorResponse = (message, code, status = 500) => {
191
+ logger.error(`MCP Error: ${code} - ${message}`);
192
+
193
+ return {
194
+ error: {
195
+ message,
196
+ code
197
+ },
198
+ status
199
+ };
200
+ };
201
+
202
+ // ❌ DON'T: Return inconsistent error formats
203
+ res.status(500).json({ message: "Something went wrong" });
204
+ ```
205
+
206
+ - **Log Errors with Context**
207
+ - Include request context in error logs
208
+ - Log stack traces in development
209
+ - Use structured logging formats (JSON)
210
+ - Implement different log levels (debug, info, error)
211
+
212
+ ```javascript
213
+ // ✅ DO: Log detailed error context
214
+ logger.error({
215
+ message: `Tool execution error: ${error.message}`,
216
+ toolName: req.toolInfo.name,
217
+ parameters: maskSensitiveData(req.toolInfo.parameters),
218
+ errorCode: error.code,
219
+ stack: process.env.NODE_ENV === 'development' ? error.stack : undefined
220
+ });
221
+
222
+ // ❌ DON'T: Log minimal information
223
+ console.error("Error:", error.message);
224
+ ```
225
+
226
+ ## Performance & Scalability
227
+
228
+ - **Implement Rate Limiting**
229
+ - Limit requests per client/API key
230
+ - Apply graduated rate limits based on client tier
231
+ - Return standard 429 responses when limits exceeded
232
+ - Include rate limit information in response headers
233
+
234
+ ```javascript
235
+ // ✅ DO: Implement proper rate limiting
236
+ app.use(rateLimit({
237
+ windowMs: 15 * 60 * 1000, // 15 minutes
238
+ max: 100, // limit each IP to 100 requests per windowMs
239
+ standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers
240
+ handler: (req, res) => {
241
+ const error = createErrorResponse(
242
+ 'Too many requests, please try again later.',
243
+ 'RATE_LIMIT_EXCEEDED',
244
+ 429
245
+ );
246
+ res.status(error.status).json({ error: error.error });
247
+ }
248
+ }));
249
+ ```
250
+
251
+ - **Optimize Tool Execution**
252
+ - Implement caching for frequently used tool results
253
+ - Use connection pooling for external API calls
254
+ - Apply timeouts for long-running operations
255
+ - Consider async execution for non-blocking operations
256
+
257
+ ```javascript
258
+ // ✅ DO: Implement caching for expensive operations
259
+ const cache = new NodeCache({ stdTTL: 300 }); // 5 minute default TTL
260
+
261
+ const getCachedOrFetch = async (key, fetchFn) => {
262
+ const cached = cache.get(key);
263
+ if (cached) return cached;
264
+
265
+ const result = await fetchFn();
266
+ cache.set(key, result);
267
+ return result;
268
+ };
269
+ ```
270
+
271
+ ## Testing & Reliability
272
+
273
+ - **Create Comprehensive Test Suites**
274
+ - Test all tool endpoints
275
+ - Include positive and negative test cases
276
+ - Test parameter validation logic
277
+ - Mock external dependencies
278
+
279
+ ```javascript
280
+ // ✅ DO: Test success and error cases
281
+ it('should return 400 if tool name is missing', async () => {
282
+ const response = await request(app)
283
+ .post('/mcp/execute')
284
+ .send({ parameters: {} });
285
+
286
+ expect(response.status).toBe(400);
287
+ expect(response.body).toHaveProperty('error');
288
+ expect(response.body.error).toHaveProperty('code', 'MISSING_TOOL_NAME');
289
+ });
290
+
291
+ it('should process valid tool execution request', async () => {
292
+ const response = await request(app)
293
+ .post('/mcp/execute')
294
+ .send({
295
+ name: 'workflow_list',
296
+ parameters: { limit: 10 }
297
+ });
298
+
299
+ expect(response.status).toBe(200);
300
+ expect(response.body).toHaveProperty('tool', 'workflow_list');
301
+ });
302
+ ```
303
+
304
+ - **Implement Health Checks**
305
+ - Create a health endpoint that verifies all dependencies
306
+ - Include version information in health response
307
+ - Check external service connectivity
308
+ - Implement readiness and liveness probes
309
+
310
+ ```javascript
311
+ // ✅ DO: Implement detailed health checks
312
+ app.get('/health', async (req, res) => {
313
+ try {
314
+ // Check database connection
315
+ await db.ping();
316
+
317
+ // Check external API connectivity
318
+ await externalApi.status();
319
+
320
+ res.status(200).json({
321
+ status: 'ok',
322
+ version: '0.1.0',
323
+ uptime: process.uptime(),
324
+ timestamp: new Date().toISOString()
325
+ });
326
+ } catch (error) {
327
+ res.status(503).json({
328
+ status: 'error',
329
+ message: 'Service unavailable',
330
+ details: error.message
331
+ });
332
+ }
333
+ });
334
+ ```
335
+
336
+ ## Resources & Context
337
+
338
+ - **Implement Resource Endpoints**
339
+ - Expose useful context via resource endpoints
340
+ - Structure resources hierarchically
341
+ - Support resource retrieval by ID
342
+ - Include metadata with resources
343
+
344
+ ```javascript
345
+ // ✅ DO: Implement proper resource endpoints
346
+ app.post('/mcp/resources/list', authenticate, (req, res) => {
347
+ const resources = [
348
+ { id: 'workflow-templates', name: 'Workflow Templates', type: 'collection' },
349
+ { id: 'node-types', name: 'Node Types', type: 'collection' },
350
+ { id: 'integration-docs', name: 'Integration Documentation', type: 'document' }
351
+ ];
352
+
353
+ const response = createJsonRpcResponse(req.body.id, { resources });
354
+ res.status(200).json(response);
355
+ });
356
+ ```
357
+
358
+ - **Support Context Awareness**
359
+ - Allow tools to access contextual information
360
+ - Share context between related tool calls
361
+ - Maintain session state when appropriate
362
+ - Document context dependencies
363
+
364
+ ```javascript
365
+ // ✅ DO: Implement context-aware tools
366
+ const executeWorkflow = async (params, context) => {
367
+ // Access the current user context
368
+ const userId = context.user.id;
369
+
370
+ // Access previously established session information
371
+ const sessionData = context.session.get('workflowData') || {};
372
+
373
+ // Store results for future tool calls
374
+ context.session.set('lastExecutionId', executionId);
375
+
376
+ return result;
377
+ };
378
+ ```
379
+
380
+ ## Documentation
381
+
382
+ - **Generate API Documentation**
383
+ - Create OpenAPI/Swagger documentation
384
+ - Document all tools and their parameters
385
+ - Include example requests and responses
386
+ - Provide error code references
387
+
388
+ ```javascript
389
+ // ✅ DO: Use OpenAPI annotations for documentation
390
+ /**
391
+ * @openapi
392
+ * /mcp/execute:
393
+ * post:
394
+ * summary: Execute an MCP tool
395
+ * requestBody:
396
+ * required: true
397
+ * content:
398
+ * application/json:
399
+ * schema:
400
+ * type: object
401
+ * required:
402
+ * - name
403
+ * properties:
404
+ * name:
405
+ * type: string
406
+ * description: Tool name in format "category_action"
407
+ * parameters:
408
+ * type: object
409
+ * description: Tool-specific parameters
410
+ */
411
+ ```
412
+
413
+ - **Provide Clear Tool Documentation**
414
+ - Document each tool's purpose and behavior
415
+ - Explain parameter requirements clearly
416
+ - Provide usage examples
417
+ - Document potential errors and resolutions
418
+
419
+ ```javascript
420
+ // ✅ DO: Document tools thoroughly
421
+ /**
422
+ * Create a new n8n workflow
423
+ *
424
+ * @param {Object} parameters - Tool parameters
425
+ * @param {string} parameters.name - Name of the workflow
426
+ * @param {boolean} [parameters.active=false] - Whether the workflow should be active
427
+ * @returns {Promise<Object>} Created workflow details
428
+ * @throws {Error} If workflow creation fails
429
+ */
430
+ ```