@octopusdeploy/mcp-server 1.1.0 → 2.1.1

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 (231) hide show
  1. package/README.md +202 -47
  2. package/dist/helpers/activeToolsetConfig.d.ts +4 -0
  3. package/dist/helpers/activeToolsetConfig.d.ts.map +1 -0
  4. package/dist/helpers/activeToolsetConfig.js +18 -0
  5. package/dist/helpers/activeToolsetConfig.js.map +1 -0
  6. package/dist/helpers/errorHandling.d.ts +3 -0
  7. package/dist/helpers/errorHandling.d.ts.map +1 -1
  8. package/dist/helpers/errorHandling.js +4 -1
  9. package/dist/helpers/errorHandling.js.map +1 -1
  10. package/dist/helpers/getClientConfigurationFromEnvironment.d.ts +2 -0
  11. package/dist/helpers/getClientConfigurationFromEnvironment.d.ts.map +1 -1
  12. package/dist/helpers/getClientConfigurationFromEnvironment.js +20 -4
  13. package/dist/helpers/getClientConfigurationFromEnvironment.js.map +1 -1
  14. package/dist/helpers/grepLines.d.ts +38 -0
  15. package/dist/helpers/grepLines.d.ts.map +1 -0
  16. package/dist/helpers/grepLines.js +65 -0
  17. package/dist/helpers/grepLines.js.map +1 -0
  18. package/dist/helpers/methodTier.d.ts +15 -0
  19. package/dist/helpers/methodTier.d.ts.map +1 -0
  20. package/dist/helpers/methodTier.js +25 -0
  21. package/dist/helpers/methodTier.js.map +1 -0
  22. package/dist/helpers/pathAllowlist.d.ts +27 -0
  23. package/dist/helpers/pathAllowlist.d.ts.map +1 -0
  24. package/dist/helpers/pathAllowlist.js +177 -0
  25. package/dist/helpers/pathAllowlist.js.map +1 -0
  26. package/dist/helpers/pathGlob.d.ts +15 -0
  27. package/dist/helpers/pathGlob.d.ts.map +1 -0
  28. package/dist/helpers/pathGlob.js +47 -0
  29. package/dist/helpers/pathGlob.js.map +1 -0
  30. package/dist/helpers/requireConfirmation.d.ts +119 -0
  31. package/dist/helpers/requireConfirmation.d.ts.map +1 -0
  32. package/dist/helpers/requireConfirmation.js +148 -0
  33. package/dist/helpers/requireConfirmation.js.map +1 -0
  34. package/dist/helpers/sensitivePathDenylist.d.ts +32 -0
  35. package/dist/helpers/sensitivePathDenylist.d.ts.map +1 -0
  36. package/dist/helpers/sensitivePathDenylist.js +49 -0
  37. package/dist/helpers/sensitivePathDenylist.js.map +1 -0
  38. package/dist/helpers/stripLinks.d.ts +15 -0
  39. package/dist/helpers/stripLinks.d.ts.map +1 -0
  40. package/dist/helpers/stripLinks.js +19 -0
  41. package/dist/helpers/stripLinks.js.map +1 -0
  42. package/dist/helpers/userCache.d.ts +14 -0
  43. package/dist/helpers/userCache.d.ts.map +1 -0
  44. package/dist/helpers/userCache.js +16 -0
  45. package/dist/helpers/userCache.js.map +1 -0
  46. package/dist/helpers/validateExecutePath.d.ts +29 -0
  47. package/dist/helpers/validateExecutePath.d.ts.map +1 -0
  48. package/dist/helpers/validateExecutePath.js +62 -0
  49. package/dist/helpers/validateExecutePath.js.map +1 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +58 -9
  52. package/dist/index.js.map +1 -1
  53. package/dist/resources/catalog/capabilities.d.ts +36 -0
  54. package/dist/resources/catalog/capabilities.d.ts.map +1 -0
  55. package/dist/resources/catalog/capabilities.js +89 -0
  56. package/dist/resources/catalog/capabilities.js.map +1 -0
  57. package/dist/resources/catalog/llmsTxt.d.ts +8 -0
  58. package/dist/resources/catalog/llmsTxt.d.ts.map +1 -0
  59. package/dist/resources/catalog/llmsTxt.js +44 -0
  60. package/dist/resources/catalog/llmsTxt.js.map +1 -0
  61. package/dist/resources/dispatch.d.ts +30 -0
  62. package/dist/resources/dispatch.d.ts.map +1 -0
  63. package/dist/resources/dispatch.js +81 -0
  64. package/dist/resources/dispatch.js.map +1 -0
  65. package/dist/resources/featureToggle.d.ts +2 -0
  66. package/dist/resources/featureToggle.d.ts.map +1 -0
  67. package/dist/resources/featureToggle.js +34 -0
  68. package/dist/resources/featureToggle.js.map +1 -0
  69. package/dist/resources/index.d.ts +12 -0
  70. package/dist/resources/index.d.ts.map +1 -0
  71. package/dist/resources/index.js +44 -0
  72. package/dist/resources/index.js.map +1 -0
  73. package/dist/resources/interruption.d.ts +2 -0
  74. package/dist/resources/interruption.d.ts.map +1 -0
  75. package/dist/resources/interruption.js +34 -0
  76. package/dist/resources/interruption.js.map +1 -0
  77. package/dist/resources/release.d.ts +2 -0
  78. package/dist/resources/release.d.ts.map +1 -0
  79. package/dist/resources/release.js +33 -0
  80. package/dist/resources/release.js.map +1 -0
  81. package/dist/resources/rolloutGroup.d.ts +2 -0
  82. package/dist/resources/rolloutGroup.d.ts.map +1 -0
  83. package/dist/resources/rolloutGroup.js +35 -0
  84. package/dist/resources/rolloutGroup.js.map +1 -0
  85. package/dist/resources/runbook.d.ts +2 -0
  86. package/dist/resources/runbook.d.ts.map +1 -0
  87. package/dist/resources/runbook.js +34 -0
  88. package/dist/resources/runbook.js.map +1 -0
  89. package/dist/resources/task.d.ts +2 -0
  90. package/dist/resources/task.d.ts.map +1 -0
  91. package/dist/resources/task.js +68 -0
  92. package/dist/resources/task.js.map +1 -0
  93. package/dist/tools/createRelease.d.ts.map +1 -1
  94. package/dist/tools/createRelease.js +93 -50
  95. package/dist/tools/createRelease.js.map +1 -1
  96. package/dist/tools/deployRelease.d.ts.map +1 -1
  97. package/dist/tools/deployRelease.js +117 -97
  98. package/dist/tools/deployRelease.js.map +1 -1
  99. package/dist/tools/execute.d.ts +3 -0
  100. package/dist/tools/execute.d.ts.map +1 -0
  101. package/dist/tools/execute.js +262 -0
  102. package/dist/tools/execute.js.map +1 -0
  103. package/dist/tools/findAccounts.d.ts.map +1 -1
  104. package/dist/tools/findAccounts.js +15 -12
  105. package/dist/tools/findAccounts.js.map +1 -1
  106. package/dist/tools/findCertificates.d.ts.map +1 -1
  107. package/dist/tools/findCertificates.js +19 -16
  108. package/dist/tools/findCertificates.js.map +1 -1
  109. package/dist/tools/findDeploymentTargets.d.ts.map +1 -1
  110. package/dist/tools/findDeploymentTargets.js +26 -23
  111. package/dist/tools/findDeploymentTargets.js.map +1 -1
  112. package/dist/tools/findFeatureToggles.d.ts +37 -0
  113. package/dist/tools/findFeatureToggles.d.ts.map +1 -0
  114. package/dist/tools/findFeatureToggles.js +139 -0
  115. package/dist/tools/findFeatureToggles.js.map +1 -0
  116. package/dist/tools/findInterruptions.d.ts +79 -0
  117. package/dist/tools/findInterruptions.d.ts.map +1 -0
  118. package/dist/tools/findInterruptions.js +273 -0
  119. package/dist/tools/findInterruptions.js.map +1 -0
  120. package/dist/tools/findReleases.d.ts.map +1 -1
  121. package/dist/tools/findReleases.js +90 -48
  122. package/dist/tools/findReleases.js.map +1 -1
  123. package/dist/tools/findRunbooks.d.ts +3 -0
  124. package/dist/tools/findRunbooks.d.ts.map +1 -0
  125. package/dist/tools/findRunbooks.js +139 -0
  126. package/dist/tools/findRunbooks.js.map +1 -0
  127. package/dist/tools/findTenants.d.ts.map +1 -1
  128. package/dist/tools/findTenants.js +28 -25
  129. package/dist/tools/findTenants.js.map +1 -1
  130. package/dist/tools/getBranches.d.ts.map +1 -1
  131. package/dist/tools/getBranches.js +13 -10
  132. package/dist/tools/getBranches.js.map +1 -1
  133. package/dist/tools/getCurrentUser.d.ts.map +1 -1
  134. package/dist/tools/getCurrentUser.js +7 -4
  135. package/dist/tools/getCurrentUser.js.map +1 -1
  136. package/dist/tools/getDeploymentFromUrl.d.ts +8 -3
  137. package/dist/tools/getDeploymentFromUrl.d.ts.map +1 -1
  138. package/dist/tools/getDeploymentFromUrl.js +46 -18
  139. package/dist/tools/getDeploymentFromUrl.js.map +1 -1
  140. package/dist/tools/getDeploymentProcess.d.ts.map +1 -1
  141. package/dist/tools/getDeploymentProcess.js +26 -23
  142. package/dist/tools/getDeploymentProcess.js.map +1 -1
  143. package/dist/tools/getKubernetesLiveStatus.d.ts.map +1 -1
  144. package/dist/tools/getKubernetesLiveStatus.js +13 -10
  145. package/dist/tools/getKubernetesLiveStatus.js.map +1 -1
  146. package/dist/tools/getMissingTenantVariables.d.ts.map +1 -1
  147. package/dist/tools/getMissingTenantVariables.js +13 -10
  148. package/dist/tools/getMissingTenantVariables.js.map +1 -1
  149. package/dist/tools/getTaskFromUrl.d.ts +2 -3
  150. package/dist/tools/getTaskFromUrl.d.ts.map +1 -1
  151. package/dist/tools/getTaskFromUrl.js +33 -33
  152. package/dist/tools/getTaskFromUrl.js.map +1 -1
  153. package/dist/tools/getTenantVariables.d.ts.map +1 -1
  154. package/dist/tools/getTenantVariables.js +13 -10
  155. package/dist/tools/getTenantVariables.js.map +1 -1
  156. package/dist/tools/getVariables.d.ts.map +1 -1
  157. package/dist/tools/getVariables.js +12 -9
  158. package/dist/tools/getVariables.js.map +1 -1
  159. package/dist/tools/grepLlmsTxt.d.ts +13 -0
  160. package/dist/tools/grepLlmsTxt.d.ts.map +1 -0
  161. package/dist/tools/grepLlmsTxt.js +105 -0
  162. package/dist/tools/grepLlmsTxt.js.map +1 -0
  163. package/dist/tools/grepTaskLog.d.ts +30 -0
  164. package/dist/tools/grepTaskLog.d.ts.map +1 -0
  165. package/dist/tools/grepTaskLog.js +116 -0
  166. package/dist/tools/grepTaskLog.js.map +1 -0
  167. package/dist/tools/index.d.ts +11 -5
  168. package/dist/tools/index.d.ts.map +1 -1
  169. package/dist/tools/index.js +21 -7
  170. package/dist/tools/index.js.map +1 -1
  171. package/dist/tools/listDeployments.d.ts.map +1 -1
  172. package/dist/tools/listDeployments.js +22 -13
  173. package/dist/tools/listDeployments.js.map +1 -1
  174. package/dist/tools/listEnvironments.d.ts.map +1 -1
  175. package/dist/tools/listEnvironments.js +12 -9
  176. package/dist/tools/listEnvironments.js.map +1 -1
  177. package/dist/tools/listProjects.d.ts.map +1 -1
  178. package/dist/tools/listProjects.js +10 -7
  179. package/dist/tools/listProjects.js.map +1 -1
  180. package/dist/tools/listSpaces.d.ts.map +1 -1
  181. package/dist/tools/listSpaces.js +9 -6
  182. package/dist/tools/listSpaces.js.map +1 -1
  183. package/dist/tools/readResource.d.ts +3 -0
  184. package/dist/tools/readResource.d.ts.map +1 -0
  185. package/dist/tools/readResource.js +50 -0
  186. package/dist/tools/readResource.js.map +1 -0
  187. package/dist/tools/runRunbook.d.ts +3 -0
  188. package/dist/tools/runRunbook.d.ts.map +1 -0
  189. package/dist/tools/runRunbook.js +174 -0
  190. package/dist/tools/runRunbook.js.map +1 -0
  191. package/dist/tools/updateFeatureToggle.d.ts +94 -0
  192. package/dist/tools/updateFeatureToggle.d.ts.map +1 -0
  193. package/dist/tools/updateFeatureToggle.js +308 -0
  194. package/dist/tools/updateFeatureToggle.js.map +1 -0
  195. package/dist/types/featureToggleTypes.d.ts +47 -0
  196. package/dist/types/featureToggleTypes.d.ts.map +1 -0
  197. package/dist/types/featureToggleTypes.js +10 -0
  198. package/dist/types/featureToggleTypes.js.map +1 -0
  199. package/dist/types/resourceConfig.d.ts +17 -0
  200. package/dist/types/resourceConfig.d.ts.map +1 -0
  201. package/dist/types/resourceConfig.js +6 -0
  202. package/dist/types/resourceConfig.js.map +1 -0
  203. package/dist/types/toolAnnotations.d.ts +8 -0
  204. package/dist/types/toolAnnotations.d.ts.map +1 -0
  205. package/dist/types/toolAnnotations.js +28 -0
  206. package/dist/types/toolAnnotations.js.map +1 -0
  207. package/dist/types/toolConfig.d.ts +15 -1
  208. package/dist/types/toolConfig.d.ts.map +1 -1
  209. package/dist/types/toolConfig.js +4 -1
  210. package/dist/types/toolConfig.js.map +1 -1
  211. package/dist/utils/parseConfig.d.ts +1 -1
  212. package/dist/utils/parseConfig.d.ts.map +1 -1
  213. package/dist/utils/parseConfig.js +3 -2
  214. package/dist/utils/parseConfig.js.map +1 -1
  215. package/package.json +4 -4
  216. package/dist/tools/getTaskById.d.ts +0 -9
  217. package/dist/tools/getTaskById.d.ts.map +0 -1
  218. package/dist/tools/getTaskById.js +0 -51
  219. package/dist/tools/getTaskById.js.map +0 -1
  220. package/dist/tools/getTaskDetails.d.ts +0 -9
  221. package/dist/tools/getTaskDetails.d.ts.map +0 -1
  222. package/dist/tools/getTaskDetails.js +0 -65
  223. package/dist/tools/getTaskDetails.js.map +0 -1
  224. package/dist/tools/getTaskRaw.d.ts +0 -9
  225. package/dist/tools/getTaskRaw.d.ts.map +0 -1
  226. package/dist/tools/getTaskRaw.js +0 -50
  227. package/dist/tools/getTaskRaw.js.map +0 -1
  228. package/dist/tools/listReleasesForProject.d.ts +0 -3
  229. package/dist/tools/listReleasesForProject.d.ts.map +0 -1
  230. package/dist/tools/listReleasesForProject.js +0 -60
  231. package/dist/tools/listReleasesForProject.js.map +0 -1
@@ -0,0 +1,68 @@
1
+ import { Client, SpaceServerTaskRepository } from "@octopusdeploy/api-client";
2
+ import { registerResourceDescriptor } from "../types/resourceConfig.js";
3
+ import { getClientConfigurationFromEnvironment } from "../helpers/getClientConfigurationFromEnvironment.js";
4
+ import { validateEntityId, handleOctopusApiError, ENTITY_PREFIXES, } from "../helpers/errorHandling.js";
5
+ import { stripLinks } from "../helpers/stripLinks.js";
6
+ const TASK_HELP_TEXT = "Use find_releases or list_deployments to find tasks via their parent entity, or get_deployment_from_url / get_task_from_url for URL-based lookups.";
7
+ registerResourceDescriptor({
8
+ name: "task",
9
+ uriTemplate: "octopus://spaces/{spaceName}/tasks/{taskId}",
10
+ toolset: "tasks",
11
+ title: "Octopus task summary",
12
+ description: "Lightweight task metadata: state, timing, completion flags, and arguments. Cheap to fetch — use this for polling or status checks. For step timings and embedded log entries use the /details URI; to search the raw activity log call the grep_task_log tool.",
13
+ mimeType: "application/json",
14
+ read: async ({ spaceName, taskId }) => {
15
+ validateEntityId(taskId, "task", ENTITY_PREFIXES.task);
16
+ try {
17
+ const client = await Client.create(getClientConfigurationFromEnvironment());
18
+ const task = await new SpaceServerTaskRepository(client, spaceName).getById(taskId);
19
+ return {
20
+ mimeType: "application/json",
21
+ text: JSON.stringify(stripLinks(task)),
22
+ };
23
+ }
24
+ catch (error) {
25
+ handleOctopusApiError(error, {
26
+ entityType: "task",
27
+ entityId: taskId,
28
+ spaceName,
29
+ helpText: TASK_HELP_TEXT,
30
+ });
31
+ }
32
+ },
33
+ });
34
+ registerResourceDescriptor({
35
+ name: "task-details",
36
+ uriTemplate: "octopus://spaces/{spaceName}/tasks/{taskId}/details",
37
+ toolset: "tasks",
38
+ title: "Octopus task details (structured activity tree)",
39
+ description: "Full ServerTaskDetails payload: the task summary plus Progress, PhysicalLogSize, and the hierarchical ActivityLogs tree (each step's children, status, and embedded log entries). Heavier than the /task summary — fetch when you need step-by-step timings or programmatic access to log entries.",
40
+ mimeType: "application/json",
41
+ read: async ({ spaceName, taskId }) => {
42
+ validateEntityId(taskId, "task", ENTITY_PREFIXES.task);
43
+ try {
44
+ const client = await Client.create(getClientConfigurationFromEnvironment());
45
+ const details = await new SpaceServerTaskRepository(client, spaceName).getDetails(taskId);
46
+ return {
47
+ mimeType: "application/json",
48
+ text: JSON.stringify(stripLinks(details)),
49
+ };
50
+ }
51
+ catch (error) {
52
+ handleOctopusApiError(error, {
53
+ entityType: "task",
54
+ entityId: taskId,
55
+ spaceName,
56
+ helpText: TASK_HELP_TEXT,
57
+ });
58
+ }
59
+ },
60
+ });
61
+ // NOTE: There is intentionally no `octopus://spaces/{spaceName}/tasks/{taskId}/log`
62
+ // resource. Activity logs can be multi-megabyte; exposing them as an addressable
63
+ // resource invites agents to fetch the whole body when they only need a few
64
+ // matching lines. Use the `grep_task_log` tool instead — its parameters mirror
65
+ // GNU grep and it returns only matching slices with totalMatches/context.
66
+ // For structured log entries with categories and timestamps, use the /details
67
+ // URI above (it embeds ActivityLogs[] inline).
68
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/resources/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,qCAAqC,EAAE,MAAM,qDAAqD,CAAC;AAC5G,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,cAAc,GAClB,oJAAoJ,CAAC;AAEvJ,0BAA0B,CAAC;IACzB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,6CAA6C;IAC1D,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EACT,gQAAgQ;IAClQ,QAAQ,EAAE,kBAAkB;IAC5B,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;QACpC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAChC,qCAAqC,EAAE,CACxC,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,yBAAyB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,OAAO,CACzE,MAAM,CACP,CAAC;YAEF,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACvC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB,CAAC,KAAK,EAAE;gBAC3B,UAAU,EAAE,MAAM;gBAClB,QAAQ,EAAE,MAAM;gBAChB,SAAS;gBACT,QAAQ,EAAE,cAAc;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,0BAA0B,CAAC;IACzB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,qDAAqD;IAClE,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,iDAAiD;IACxD,WAAW,EACT,oSAAoS;IACtS,QAAQ,EAAE,kBAAkB;IAC5B,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;QACpC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAChC,qCAAqC,EAAE,CACxC,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,IAAI,yBAAyB,CACjD,MAAM,EACN,SAAS,CACV,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAErB,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aAC1C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB,CAAC,KAAK,EAAE;gBAC3B,UAAU,EAAE,MAAM;gBAClB,QAAQ,EAAE,MAAM;gBAChB,SAAS;gBACT,QAAQ,EAAE,cAAc;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,oFAAoF;AACpF,iFAAiF;AACjF,4EAA4E;AAC5E,+EAA+E;AAC/E,0EAA0E;AAC1E,8EAA8E;AAC9E,+CAA+C"}
@@ -1 +1 @@
1
- {"version":3,"file":"createRelease.d.ts","sourceRoot":"","sources":["../../src/tools/createRelease.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,QAiI1D"}
1
+ {"version":3,"file":"createRelease.d.ts","sourceRoot":"","sources":["../../src/tools/createRelease.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,QA2K1D"}
@@ -3,59 +3,73 @@ import { z } from "zod";
3
3
  import {} from "@modelcontextprotocol/sdk/server/mcp.js";
4
4
  import { getClientConfigurationFromEnvironment } from "../helpers/getClientConfigurationFromEnvironment.js";
5
5
  import { registerToolDefinition } from "../types/toolConfig.js";
6
+ import { ADDITIVE_WRITE_TOOL_ANNOTATIONS } from "../types/toolAnnotations.js";
6
7
  import { handleOctopusApiError } from "../helpers/errorHandling.js";
8
+ import { requireConfirmation, unconfirmedResponse, } from "../helpers/requireConfirmation.js";
7
9
  export function registerCreateReleaseTool(server) {
8
- server.tool("create_release", `Create a new release for an Octopus Deploy project
9
-
10
- This tool creates a new release for a project. The space name and project name are required. All other parameters are optional and will use Octopus defaults if not specified.`, {
11
- spaceName: z.string().describe("The space name"),
12
- projectName: z.string().describe("The project name"),
13
- releaseVersion: z
14
- .string()
15
- .optional()
16
- .describe("The version for the release (e.g., '1.0.0'). If not specified, Octopus will auto-generate based on project settings."),
17
- channelName: z
18
- .string()
19
- .optional()
20
- .describe("The channel name (uses default channel if not specified)"),
21
- packageVersion: z
22
- .string()
23
- .optional()
24
- .describe("Default package version to use for all packages"),
25
- packages: z
26
- .array(z.string())
27
- .optional()
28
- .describe("Array of package specifications (format depends on Octopus configuration)"),
29
- gitCommit: z.string().optional().describe("Git commit hash"),
30
- gitRef: z.string().optional().describe("Git reference (branch or tag)"),
31
- releaseNotes: z
32
- .string()
33
- .optional()
34
- .describe("Release notes for this release"),
35
- ignoreIfAlreadyExists: z
36
- .boolean()
37
- .optional()
38
- .describe("If true, skip creation if release already exists (returns existing release)"),
39
- ignoreChannelRules: z
40
- .boolean()
41
- .optional()
42
- .describe("If true, ignore channel version rules"),
43
- packagePrerelease: z
44
- .string()
45
- .optional()
46
- .describe("Package prerelease tag"),
47
- customFields: z
48
- .record(z.string())
49
- .optional()
50
- .describe("Custom field values as key-value pairs"),
51
- }, {
10
+ server.registerTool("create_release", {
52
11
  title: "Create a new release in Octopus Deploy",
53
- readOnlyHint: false,
54
- }, async ({ spaceName, projectName, releaseVersion, channelName, packageVersion, packages, gitCommit, gitRef, releaseNotes, ignoreIfAlreadyExists, ignoreChannelRules, packagePrerelease, customFields, }) => {
12
+ description: `Create a new release for an Octopus Deploy project
13
+
14
+ This tool creates a new release for a project. The space name and project name are required. All other parameters are optional and will use Octopus defaults if not specified.`,
15
+ inputSchema: {
16
+ spaceName: z.string().describe("The space name"),
17
+ projectName: z.string().describe("The project name"),
18
+ releaseVersion: z
19
+ .string()
20
+ .optional()
21
+ .describe("The version for the release (e.g., '1.0.0'). If not specified, Octopus will auto-generate based on project settings."),
22
+ channelName: z
23
+ .string()
24
+ .optional()
25
+ .describe("The channel name (uses default channel if not specified)"),
26
+ packageVersion: z
27
+ .string()
28
+ .optional()
29
+ .describe("Default package version to use for all packages"),
30
+ packages: z
31
+ .array(z.string())
32
+ .optional()
33
+ .describe("Array of package specifications (format depends on Octopus configuration)"),
34
+ gitCommit: z.string().optional().describe("Git commit hash"),
35
+ gitRef: z.string().optional().describe("Git reference (branch or tag)"),
36
+ releaseNotes: z
37
+ .string()
38
+ .optional()
39
+ .describe("Release notes for this release"),
40
+ ignoreIfAlreadyExists: z
41
+ .boolean()
42
+ .optional()
43
+ .describe("If true, skip creation if release already exists (returns existing release)"),
44
+ ignoreChannelRules: z
45
+ .boolean()
46
+ .optional()
47
+ .describe("If true, ignore channel version rules"),
48
+ packagePrerelease: z
49
+ .string()
50
+ .optional()
51
+ .describe("Package prerelease tag"),
52
+ customFields: z
53
+ .record(z.string())
54
+ .optional()
55
+ .describe("Custom field values as key-value pairs"),
56
+ confirm: z
57
+ .boolean()
58
+ .optional()
59
+ .describe("Required only when the MCP client does not support elicitation. Set to true to confirm release creation; otherwise the tool aborts."),
60
+ },
61
+ annotations: ADDITIVE_WRITE_TOOL_ANNOTATIONS,
62
+ }, async ({ spaceName, projectName, releaseVersion, channelName, packageVersion, packages, gitCommit, gitRef, releaseNotes, ignoreIfAlreadyExists, ignoreChannelRules, packagePrerelease, customFields, confirm, }) => {
55
63
  try {
56
- const configuration = getClientConfigurationFromEnvironment();
57
- const client = await Client.create(configuration);
58
- const releaseRepository = new ReleaseRepository(client, spaceName);
64
+ const summary = [
65
+ `Create release for project ${projectName}`,
66
+ releaseVersion ? `version ${releaseVersion}` : null,
67
+ channelName ? `on channel ${channelName}` : null,
68
+ gitRef ? `from ${gitRef}` : null,
69
+ `in space ${spaceName}`,
70
+ ]
71
+ .filter(Boolean)
72
+ .join(" ");
59
73
  const command = {
60
74
  spaceName: spaceName,
61
75
  ProjectName: projectName,
@@ -75,7 +89,31 @@ This tool creates a new release for a project. The space name and project name a
75
89
  ...(packagePrerelease && { PackagePrerelease: packagePrerelease }),
76
90
  ...(customFields && { CustomFields: customFields }),
77
91
  };
92
+ const confirmation = await requireConfirmation(server, {
93
+ message: `${summary}?`,
94
+ fallbackConfirm: confirm,
95
+ change: { source: {}, target: command },
96
+ });
97
+ if (!confirmation.confirmed) {
98
+ return unconfirmedResponse(confirmation, {
99
+ action: "release creation",
100
+ });
101
+ }
102
+ const configuration = getClientConfigurationFromEnvironment();
103
+ const client = await Client.create(configuration);
104
+ const releaseRepository = new ReleaseRepository(client, spaceName);
78
105
  const response = await releaseRepository.create(command);
106
+ let versionControlReference;
107
+ try {
108
+ const release = await releaseRepository.get(response.ReleaseId);
109
+ versionControlReference = release.VersionControlReference;
110
+ }
111
+ catch {
112
+ versionControlReference = undefined;
113
+ }
114
+ const encodedSpace = encodeURIComponent(spaceName);
115
+ const encodedId = encodeURIComponent(response.ReleaseId);
116
+ const resourceUri = `octopus://spaces/${encodedSpace}/releases/${encodedId}`;
79
117
  return {
80
118
  content: [
81
119
  {
@@ -84,8 +122,10 @@ This tool creates a new release for a project. The space name and project name a
84
122
  success: true,
85
123
  releaseId: response.ReleaseId,
86
124
  releaseVersion: response.ReleaseVersion,
125
+ versionControlReference,
126
+ resourceUri,
87
127
  message: `Release ${response.ReleaseVersion} created successfully`,
88
- helpText: "Use find_releases to view release details, or use deploy_release to deploy this release to environments.",
128
+ helpText: "Read resourceUri for the full release body (includes releaseNotes). Use deploy_release to deploy this release to environments.",
89
129
  }, null, 2),
90
130
  },
91
131
  ],
@@ -104,5 +144,8 @@ registerToolDefinition({
104
144
  toolName: "create_release",
105
145
  config: { toolset: "releases", readOnly: false },
106
146
  registerFn: registerCreateReleaseTool,
147
+ // ReleaseRepository.create uses the Executions API (~/api/{space}/releases/create/v1)
148
+ // which the api-client refuses to call against servers older than 2022.3.5512.
149
+ minimumOctopusVersion: "2022.3.5512",
107
150
  });
108
151
  //# sourceMappingURL=createRelease.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createRelease.js","sourceRoot":"","sources":["../../src/tools/createRelease.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createRelease.js","sourceRoot":"","sources":["../../src/tools/createRelease.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,qCAAqC,EAAE,MAAM,qDAAqD,CAAC;AAC5G,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAE3C,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,wCAAwC;QAC/C,WAAW,EAAE;;+KAE4J;QACzK,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAChD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACpD,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,sHAAsH,CACvH;YACH,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,0DAA0D,CAAC;YACvE,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,QAAQ,EAAE,CAAC;iBACR,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CACP,2EAA2E,CAC5E;YACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YACvE,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,gCAAgC,CAAC;YAC7C,qBAAqB,EAAE,CAAC;iBACrB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,6EAA6E,CAC9E;YACH,kBAAkB,EAAE,CAAC;iBAClB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,uCAAuC,CAAC;YACpD,iBAAiB,EAAE,CAAC;iBACjB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,wBAAwB,CAAC;YACrC,YAAY,EAAE,CAAC;iBACZ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBAClB,QAAQ,EAAE;iBACV,QAAQ,CAAC,wCAAwC,CAAC;YACrD,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,qIAAqI,CACtI;SACJ;QACD,WAAW,EAAE,+BAA+B;KAC7C,EACD,KAAK,EAAE,EACL,SAAS,EACT,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,EACd,QAAQ,EACR,SAAS,EACT,MAAM,EACN,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,OAAO,GACR,EAAE,EAAE;QACH,IAAI,CAAC;YACH,MAAM,OAAO,GAAG;gBACd,8BAA8B,WAAW,EAAE;gBAC3C,cAAc,CAAC,CAAC,CAAC,WAAW,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI;gBACnD,WAAW,CAAC,CAAC,CAAC,cAAc,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;gBAChD,MAAM,CAAC,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI;gBAChC,YAAY,SAAS,EAAE;aACxB;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,GAAG,CAAC,CAAC;YAEb,MAAM,OAAO,GAAG;gBACd,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,WAAW;gBACxB,GAAG,CAAC,cAAc,IAAI,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;gBACzD,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;gBAChD,GAAG,CAAC,cAAc,IAAI,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;gBACzD,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;gBACvC,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;gBAC1C,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBACjC,GAAG,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;gBACnD,GAAG,CAAC,qBAAqB,KAAK,SAAS,IAAI;oBACzC,qBAAqB,EAAE,qBAAqB;iBAC7C,CAAC;gBACF,GAAG,CAAC,kBAAkB,KAAK,SAAS,IAAI;oBACtC,kBAAkB,EAAE,kBAAkB;iBACvC,CAAC;gBACF,GAAG,CAAC,iBAAiB,IAAI,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;gBAClE,GAAG,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;aACpD,CAAC;YAEF,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE;gBACrD,OAAO,EAAE,GAAG,OAAO,GAAG;gBACtB,eAAe,EAAE,OAAO;gBACxB,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;aACxC,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;gBAC5B,OAAO,mBAAmB,CAAC,YAAY,EAAE;oBACvC,MAAM,EAAE,kBAAkB;iBAC3B,CAAC,CAAC;YACL,CAAC;YAED,MAAM,aAAa,GAAG,qCAAqC,EAAE,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAEnE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAEzD,IAAI,uBAA4E,CAAC;YACjF,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAChE,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;YAC5D,CAAC;YAAC,MAAM,CAAC;gBACP,uBAAuB,GAAG,SAAS,CAAC;YACtC,CAAC;YAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACnD,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACzD,MAAM,WAAW,GAAG,oBAAoB,YAAY,aAAa,SAAS,EAAE,CAAC;YAE7E,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,OAAO,EAAE,IAAI;4BACb,SAAS,EAAE,QAAQ,CAAC,SAAS;4BAC7B,cAAc,EAAE,QAAQ,CAAC,cAAc;4BACvC,uBAAuB;4BACvB,WAAW;4BACX,OAAO,EAAE,WAAW,QAAQ,CAAC,cAAc,uBAAuB;4BAClE,QAAQ,EACN,gIAAgI;yBACnI,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB,CAAC,KAAK,EAAE;gBAC3B,UAAU,EAAE,SAAS;gBACrB,SAAS;gBACT,QAAQ,EACN,4HAA4H;aAC/H,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,sBAAsB,CAAC;IACrB,QAAQ,EAAE,gBAAgB;IAC1B,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE;IAChD,UAAU,EAAE,yBAAyB;IACrC,sFAAsF;IACtF,+EAA+E;IAC/E,qBAAqB,EAAE,aAAa;CACrC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deployRelease.d.ts","sourceRoot":"","sources":["../../src/tools/deployRelease.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,QAyP1D"}
1
+ {"version":3,"file":"deployRelease.d.ts","sourceRoot":"","sources":["../../src/tools/deployRelease.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,QA4Q1D"}
@@ -3,83 +3,91 @@ import { z } from "zod";
3
3
  import {} from "@modelcontextprotocol/sdk/server/mcp.js";
4
4
  import { getClientConfigurationFromEnvironment } from "../helpers/getClientConfigurationFromEnvironment.js";
5
5
  import { registerToolDefinition } from "../types/toolConfig.js";
6
+ import { DESTRUCTIVE_WRITE_TOOL_ANNOTATIONS } from "../types/toolAnnotations.js";
6
7
  import { handleOctopusApiError } from "../helpers/errorHandling.js";
8
+ import { requireConfirmation, unconfirmedResponse, } from "../helpers/requireConfirmation.js";
7
9
  export function registerDeployReleaseTool(server) {
8
- server.tool("deploy_release", `Deploy a release to one or more environments in Octopus Deploy
10
+ server.registerTool("deploy_release", {
11
+ title: "Deploy a release to environments in Octopus Deploy",
12
+ description: `Deploy a release to one or more environments in Octopus Deploy
9
13
 
10
14
  This tool supports both tenanted and untenanted deployments:
11
15
  - **Untenanted**: Don't provide tenants or tenantTags. Can deploy to multiple environments at once.
12
16
  - **Tenanted**: Provide tenants or tenantTags. Can only deploy to ONE environment, but can target multiple tenants.
13
17
 
14
- The tool automatically determines which deployment type to use based on the parameters provided.`, {
15
- spaceName: z.string().describe("The space name"),
16
- projectName: z.string().describe("The project name"),
17
- releaseVersion: z
18
- .string()
19
- .describe("The release version to deploy (e.g., '1.0.0')"),
20
- environmentNames: z
21
- .array(z.string())
22
- .describe("Array of environment names. For tenanted deployments, must contain exactly one environment."),
23
- tenants: z
24
- .array(z.string())
25
- .optional()
26
- .describe("Array of tenant names for tenanted deployment (optional)"),
27
- tenantTags: z
28
- .array(z.string())
29
- .optional()
30
- .describe("Array of tenant tags for tenanted deployment (e.g., ['Region/US-West', 'Tier/Production'])"),
31
- forcePackageRedeployment: z
32
- .boolean()
33
- .optional()
34
- .describe("Force redeployment of packages"),
35
- updateVariableSnapshot: z
36
- .boolean()
37
- .optional()
38
- .describe("Update the variable snapshot"),
39
- forcePackageDownload: z
40
- .boolean()
41
- .optional()
42
- .describe("Force package download"),
43
- specificMachineNames: z
44
- .array(z.string())
45
- .optional()
46
- .describe("Deploy to specific machines only"),
47
- excludedMachineNames: z
48
- .array(z.string())
49
- .optional()
50
- .describe("Exclude specific machines from deployment"),
51
- skipStepNames: z
52
- .array(z.string())
53
- .optional()
54
- .describe("Skip specific deployment steps"),
55
- useGuidedFailure: z
56
- .boolean()
57
- .optional()
58
- .describe("Use guided failure mode"),
59
- runAt: z
60
- .string()
61
- .optional()
62
- .describe("Schedule deployment for later (ISO 8601 date string)"),
63
- noRunAfter: z
64
- .string()
65
- .optional()
66
- .describe("Don't run deployment after this time (ISO 8601 date string)"),
67
- variables: z
68
- .record(z.string())
69
- .optional()
70
- .describe("Prompted variable values as key-value pairs"),
71
- deploymentFreezeOverrideReason: z
72
- .string()
73
- .optional()
74
- .describe("Reason for overriding deployment freeze"),
75
- deploymentFreezeNames: z
76
- .array(z.string())
77
- .optional()
78
- .describe("Names of deployment freezes to override"),
79
- }, {
80
- title: "Deploy a release to environments in Octopus Deploy",
81
- readOnlyHint: false,
82
- }, async ({ spaceName, projectName, releaseVersion, environmentNames, tenants, tenantTags, forcePackageRedeployment, updateVariableSnapshot, forcePackageDownload, specificMachineNames, excludedMachineNames, skipStepNames, useGuidedFailure, runAt, noRunAfter, variables, deploymentFreezeOverrideReason, deploymentFreezeNames, }) => {
18
+ The tool automatically determines which deployment type to use based on the parameters provided.`,
19
+ inputSchema: {
20
+ spaceName: z.string().describe("The space name"),
21
+ projectName: z.string().describe("The project name"),
22
+ releaseVersion: z
23
+ .string()
24
+ .describe("The release version to deploy (e.g., '1.0.0')"),
25
+ environmentNames: z
26
+ .array(z.string())
27
+ .describe("Array of environment names. For tenanted deployments, must contain exactly one environment."),
28
+ tenants: z
29
+ .array(z.string())
30
+ .optional()
31
+ .describe("Array of tenant names for tenanted deployment (optional)"),
32
+ tenantTags: z
33
+ .array(z.string())
34
+ .optional()
35
+ .describe("Array of tenant tags for tenanted deployment (e.g., ['Region/US-West', 'Tier/Production'])"),
36
+ forcePackageRedeployment: z
37
+ .boolean()
38
+ .optional()
39
+ .describe("Force redeployment of packages"),
40
+ updateVariableSnapshot: z
41
+ .boolean()
42
+ .optional()
43
+ .describe("Update the variable snapshot"),
44
+ forcePackageDownload: z
45
+ .boolean()
46
+ .optional()
47
+ .describe("Force package download"),
48
+ specificMachineNames: z
49
+ .array(z.string())
50
+ .optional()
51
+ .describe("Deploy to specific machines only"),
52
+ excludedMachineNames: z
53
+ .array(z.string())
54
+ .optional()
55
+ .describe("Exclude specific machines from deployment"),
56
+ skipStepNames: z
57
+ .array(z.string())
58
+ .optional()
59
+ .describe("Skip specific deployment steps"),
60
+ useGuidedFailure: z
61
+ .boolean()
62
+ .optional()
63
+ .describe("Use guided failure mode"),
64
+ runAt: z
65
+ .string()
66
+ .optional()
67
+ .describe("Schedule deployment for later (ISO 8601 date string)"),
68
+ noRunAfter: z
69
+ .string()
70
+ .optional()
71
+ .describe("Don't run deployment after this time (ISO 8601 date string)"),
72
+ variables: z
73
+ .record(z.string())
74
+ .optional()
75
+ .describe("Prompted variable values as key-value pairs"),
76
+ deploymentFreezeOverrideReason: z
77
+ .string()
78
+ .optional()
79
+ .describe("Reason for overriding deployment freeze"),
80
+ deploymentFreezeNames: z
81
+ .array(z.string())
82
+ .optional()
83
+ .describe("Names of deployment freezes to override"),
84
+ confirm: z
85
+ .boolean()
86
+ .optional()
87
+ .describe("Required only when the MCP client does not support elicitation. Set to true to confirm deployment; otherwise the tool aborts."),
88
+ },
89
+ annotations: DESTRUCTIVE_WRITE_TOOL_ANNOTATIONS,
90
+ }, async ({ spaceName, projectName, releaseVersion, environmentNames, tenants, tenantTags, forcePackageRedeployment, updateVariableSnapshot, forcePackageDownload, specificMachineNames, excludedMachineNames, skipStepNames, useGuidedFailure, runAt, noRunAfter, variables, deploymentFreezeOverrideReason, deploymentFreezeNames, confirm, }) => {
83
91
  try {
84
92
  // Validate environment names
85
93
  if (!environmentNames || environmentNames.length === 0) {
@@ -93,9 +101,11 @@ The tool automatically determines which deployment type to use based on the para
93
101
  throw new Error(`Tenanted deployments can only target one environment at a time. You provided ${environmentNames.length} environments. ` +
94
102
  `For tenanted deployments, specify exactly one environment in environmentNames, then use tenants or tenantTags to target specific tenants.`);
95
103
  }
96
- const configuration = getClientConfigurationFromEnvironment();
97
- const client = await Client.create(configuration);
98
- const deploymentRepository = new DeploymentRepository(client, spaceName);
104
+ const tenantSummary = isTenanted
105
+ ? ` for tenants [${(tenants ?? []).join(", ")}${tenantTags?.length ? `; tags: ${tenantTags.join(", ")}` : ""}]`
106
+ : "";
107
+ const confirmMessage = `Deploy release ${releaseVersion} of ${projectName} to ` +
108
+ `[${environmentNames.join(", ")}]${tenantSummary} in space ${spaceName}?`;
99
109
  // Build common parameters
100
110
  const commonParams = {
101
111
  spaceName: spaceName,
@@ -129,30 +139,36 @@ The tool automatically determines which deployment type to use based on the para
129
139
  DeploymentFreezeNames: deploymentFreezeNames,
130
140
  }),
131
141
  };
132
- let response;
133
- let deploymentType;
134
- if (isTenanted) {
135
- // Tenanted deployment
136
- deploymentType = "tenanted";
137
- const command = {
138
- ...commonParams,
139
- ReleaseVersion: releaseVersion,
140
- EnvironmentName: environmentNames[0],
141
- Tenants: tenants || [],
142
- TenantTags: tenantTags || [],
143
- };
144
- response = await deploymentRepository.createTenanted(command);
145
- }
146
- else {
147
- // Untenanted deployment
148
- deploymentType = "untenanted";
149
- const command = {
150
- ...commonParams,
151
- ReleaseVersion: releaseVersion,
152
- EnvironmentNames: environmentNames,
153
- };
154
- response = await deploymentRepository.create(command);
142
+ const tenantedCommand = {
143
+ ...commonParams,
144
+ ReleaseVersion: releaseVersion,
145
+ EnvironmentName: environmentNames[0],
146
+ Tenants: tenants || [],
147
+ TenantTags: tenantTags || [],
148
+ };
149
+ const untenantedCommand = {
150
+ ...commonParams,
151
+ ReleaseVersion: releaseVersion,
152
+ EnvironmentNames: environmentNames,
153
+ };
154
+ const confirmation = await requireConfirmation(server, {
155
+ message: confirmMessage,
156
+ fallbackConfirm: confirm,
157
+ change: {
158
+ source: {},
159
+ target: isTenanted ? tenantedCommand : untenantedCommand,
160
+ },
161
+ });
162
+ if (!confirmation.confirmed) {
163
+ return unconfirmedResponse(confirmation, { action: "deployment" });
155
164
  }
165
+ const configuration = getClientConfigurationFromEnvironment();
166
+ const client = await Client.create(configuration);
167
+ const deploymentRepository = new DeploymentRepository(client, spaceName);
168
+ const deploymentType = isTenanted ? "tenanted" : "untenanted";
169
+ const response = isTenanted
170
+ ? await deploymentRepository.createTenanted(tenantedCommand)
171
+ : await deploymentRepository.create(untenantedCommand);
156
172
  // Format the response
157
173
  const tasks = response.DeploymentServerTasks || [];
158
174
  return {
@@ -168,7 +184,7 @@ The tool automatically determines which deployment type to use based on the para
168
184
  deploymentId: task.DeploymentId,
169
185
  })),
170
186
  message: `Successfully created ${tasks.length} deployment(s) for release ${releaseVersion}`,
171
- helpText: `Use get_task_by_id with the taskId values to monitor deployment progress. Use list_deployments to view deployment details. Use find_releases to verify the release exists.`,
187
+ helpText: `Fetch octopus://spaces/{spaceName}/tasks/{taskId} (or /details for the structured activity tree) via resources/read or read_resource to monitor deployment progress. To search the raw log for a specific error or step, call grep_task_log with the taskId. Use list_deployments for high-level deployment listings.`,
172
188
  }, null, 2),
173
189
  },
174
190
  ],
@@ -203,5 +219,9 @@ registerToolDefinition({
203
219
  toolName: "deploy_release",
204
220
  config: { toolset: "deployments", readOnly: false },
205
221
  registerFn: registerDeployReleaseTool,
222
+ // DeploymentRepository.create / .createTenanted use the Executions API
223
+ // (~/api/{space}/deployments/create/v1 and /create/tenanted/v1-alpha) which
224
+ // the api-client refuses to call against servers older than 2022.3.5512.
225
+ minimumOctopusVersion: "2022.3.5512",
206
226
  });
207
227
  //# sourceMappingURL=deployRelease.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deployRelease.js","sourceRoot":"","sources":["../../src/tools/deployRelease.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deployRelease.js","sourceRoot":"","sources":["../../src/tools/deployRelease.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,qCAAqC,EAAE,MAAM,qDAAqD,CAAC;AAC5G,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,kCAAkC,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAE3C,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,oDAAoD;QAC3D,WAAW,EAAE;;;;;;iGAM8E;QAC3F,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAChD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACpD,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,QAAQ,CAAC,+CAA+C,CAAC;YAC5D,gBAAgB,EAAE,CAAC;iBAChB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,CACP,6FAA6F,CAC9F;YACH,OAAO,EAAE,CAAC;iBACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,0DAA0D,CAAC;YACvE,UAAU,EAAE,CAAC;iBACV,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CACP,4FAA4F,CAC7F;YACH,wBAAwB,EAAE,CAAC;iBACxB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,gCAAgC,CAAC;YAC7C,sBAAsB,EAAE,CAAC;iBACtB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,8BAA8B,CAAC;YAC3C,oBAAoB,EAAE,CAAC;iBACpB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,wBAAwB,CAAC;YACrC,oBAAoB,EAAE,CAAC;iBACpB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC;YAC/C,oBAAoB,EAAE,CAAC;iBACpB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,2CAA2C,CAAC;YACxD,aAAa,EAAE,CAAC;iBACb,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,gCAAgC,CAAC;YAC7C,gBAAgB,EAAE,CAAC;iBAChB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,yBAAyB,CAAC;YACtC,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,sDAAsD,CAAC;YACnE,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,6DAA6D,CAC9D;YACH,SAAS,EAAE,CAAC;iBACT,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBAClB,QAAQ,EAAE;iBACV,QAAQ,CAAC,6CAA6C,CAAC;YAC1D,8BAA8B,EAAE,CAAC;iBAC9B,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;YACtD,qBAAqB,EAAE,CAAC;iBACrB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;YACtD,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,+HAA+H,CAChI;SACJ;QACD,WAAW,EAAE,kCAAkC;KAChD,EACD,KAAK,EAAE,EACL,SAAS,EACT,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,UAAU,EACV,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,KAAK,EACL,UAAU,EACV,SAAS,EACT,8BAA8B,EAC9B,qBAAqB,EACrB,OAAO,GACR,EAAE,EAAE;QACH,IAAI,CAAC;YACH,6BAA6B;YAC7B,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YAED,6CAA6C;YAC7C,MAAM,UAAU,GACd,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC/B,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAExC,2CAA2C;YAC3C,IAAI,UAAU,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CACb,gFAAgF,gBAAgB,CAAC,MAAM,iBAAiB;oBACtH,2IAA2I,CAC9I,CAAC;YACJ,CAAC;YAED,MAAM,aAAa,GAAG,UAAU;gBAC9B,CAAC,CAAC,iBAAiB,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GACzC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAC5D,GAAG;gBACL,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,cAAc,GAClB,kBAAkB,cAAc,OAAO,WAAW,MAAM;gBACxD,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,aAAa,SAAS,GAAG,CAAC;YAE5E,0BAA0B;YAC1B,MAAM,YAAY,GAAG;gBACnB,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,WAAW;gBACxB,GAAG,CAAC,wBAAwB,KAAK,SAAS,IAAI;oBAC5C,wBAAwB,EAAE,wBAAwB;iBACnD,CAAC;gBACF,GAAG,CAAC,sBAAsB,KAAK,SAAS,IAAI;oBAC1C,sBAAsB,EAAE,sBAAsB;iBAC/C,CAAC;gBACF,GAAG,CAAC,oBAAoB,KAAK,SAAS,IAAI;oBACxC,oBAAoB,EAAE,oBAAoB;iBAC3C,CAAC;gBACF,GAAG,CAAC,oBAAoB,IAAI;oBAC1B,oBAAoB,EAAE,oBAAoB;iBAC3C,CAAC;gBACF,GAAG,CAAC,oBAAoB,IAAI;oBAC1B,oBAAoB,EAAE,oBAAoB;iBAC3C,CAAC;gBACF,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;gBACtD,GAAG,CAAC,gBAAgB,KAAK,SAAS,IAAI;oBACpC,gBAAgB,EAAE,gBAAgB;iBACnC,CAAC;gBACF,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxC,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvD,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;gBAC1C,GAAG,CAAC,8BAA8B,IAAI;oBACpC,8BAA8B,EAAE,8BAA8B;iBAC/D,CAAC;gBACF,GAAG,CAAC,qBAAqB,IAAI;oBAC3B,qBAAqB,EAAE,qBAAqB;iBAC7C,CAAC;aACH,CAAC;YAEF,MAAM,eAAe,GAAG;gBACtB,GAAG,YAAY;gBACf,cAAc,EAAE,cAAc;gBAC9B,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC;gBACpC,OAAO,EAAE,OAAO,IAAI,EAAE;gBACtB,UAAU,EAAE,UAAU,IAAI,EAAE;aAC7B,CAAC;YACF,MAAM,iBAAiB,GAAG;gBACxB,GAAG,YAAY;gBACf,cAAc,EAAE,cAAc;gBAC9B,gBAAgB,EAAE,gBAAgB;aACnC,CAAC;YAEF,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE;gBACrD,OAAO,EAAE,cAAc;gBACvB,eAAe,EAAE,OAAO;gBACxB,MAAM,EAAE;oBACN,MAAM,EAAE,EAAE;oBACV,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB;iBACzD;aACF,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;gBAC5B,OAAO,mBAAmB,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,aAAa,GAAG,qCAAqC,EAAE,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,CACnD,MAAM,EACN,SAAS,CACV,CAAC;YAEF,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;YAC9D,MAAM,QAAQ,GAAG,UAAU;gBACzB,CAAC,CAAC,MAAM,oBAAoB,CAAC,cAAc,CAAC,eAAe,CAAC;gBAC5D,CAAC,CAAC,MAAM,oBAAoB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAEzD,sBAAsB;YACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,qBAAqB,IAAI,EAAE,CAAC;YAEnD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,OAAO,EAAE,IAAI;4BACb,cAAc;4BACd,kBAAkB,EAAE,KAAK,CAAC,MAAM;4BAChC,eAAe,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gCACpC,MAAM,EAAE,IAAI,CAAC,YAAY;gCACzB,YAAY,EAAE,IAAI,CAAC,YAAY;6BAChC,CAAC,CAAC;4BACH,OAAO,EAAE,wBAAwB,KAAK,CAAC,MAAM,8BAA8B,cAAc,EAAE;4BAC3F,QAAQ,EAAE,uTAAuT;yBAClU,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,yCAAyC;YACzC,IAAI,KAAK,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjE,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;gCACE,OAAO,EAAE,KAAK;gCACd,KAAK,EAAE,KAAK,CAAC,OAAO;6BACrB,EACD,IAAI,EACJ,CAAC,CACF;yBACF;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,4BAA4B;YAC5B,qBAAqB,CAAC,KAAK,EAAE;gBAC3B,UAAU,EAAE,YAAY;gBACxB,SAAS;gBACT,QAAQ,EACN,iOAAiO;aACpO,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,sBAAsB,CAAC;IACrB,QAAQ,EAAE,gBAAgB;IAC1B,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE;IACnD,UAAU,EAAE,yBAAyB;IACrC,uEAAuE;IACvE,4EAA4E;IAC5E,yEAAyE;IACzE,qBAAqB,EAAE,aAAa;CACrC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerExecuteTool(server: McpServer): void;
3
+ //# sourceMappingURL=execute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/tools/execute.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsKzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAmLpD"}