@octopusdeploy/mcp-server 0.1.2

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 (167) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +210 -0
  3. package/dist/helpers/getClientConfigurationFromEnvironment.d.ts +7 -0
  4. package/dist/helpers/getClientConfigurationFromEnvironment.d.ts.map +1 -0
  5. package/dist/helpers/getClientConfigurationFromEnvironment.js +31 -0
  6. package/dist/helpers/getClientConfigurationFromEnvironment.js.map +1 -0
  7. package/dist/helpers/getPublicUrl.d.ts +2 -0
  8. package/dist/helpers/getPublicUrl.d.ts.map +1 -0
  9. package/dist/helpers/getPublicUrl.js +4 -0
  10. package/dist/helpers/getPublicUrl.js.map +1 -0
  11. package/dist/helpers/vcsProjectHelpers.d.ts +4 -0
  12. package/dist/helpers/vcsProjectHelpers.d.ts.map +1 -0
  13. package/dist/helpers/vcsProjectHelpers.js +21 -0
  14. package/dist/helpers/vcsProjectHelpers.js.map +1 -0
  15. package/dist/index.d.ts +3 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +74 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/resources/index.d.ts +3 -0
  20. package/dist/resources/index.d.ts.map +1 -0
  21. package/dist/resources/index.js +4 -0
  22. package/dist/resources/index.js.map +1 -0
  23. package/dist/resources/spacesResource.d.ts +3 -0
  24. package/dist/resources/spacesResource.d.ts.map +1 -0
  25. package/dist/resources/spacesResource.js +54 -0
  26. package/dist/resources/spacesResource.js.map +1 -0
  27. package/dist/tools/getBranches.d.ts +3 -0
  28. package/dist/tools/getBranches.d.ts.map +1 -0
  29. package/dist/tools/getBranches.js +55 -0
  30. package/dist/tools/getBranches.js.map +1 -0
  31. package/dist/tools/getCurrentUser.d.ts +3 -0
  32. package/dist/tools/getCurrentUser.d.ts.map +1 -0
  33. package/dist/tools/getCurrentUser.js +40 -0
  34. package/dist/tools/getCurrentUser.js.map +1 -0
  35. package/dist/tools/getDeploymentProcess.d.ts +3 -0
  36. package/dist/tools/getDeploymentProcess.d.ts.map +1 -0
  37. package/dist/tools/getDeploymentProcess.js +91 -0
  38. package/dist/tools/getDeploymentProcess.js.map +1 -0
  39. package/dist/tools/getDeploymentTarget.d.ts +3 -0
  40. package/dist/tools/getDeploymentTarget.d.ts.map +1 -0
  41. package/dist/tools/getDeploymentTarget.js +66 -0
  42. package/dist/tools/getDeploymentTarget.js.map +1 -0
  43. package/dist/tools/getKubernetesLiveStatus.d.ts +3 -0
  44. package/dist/tools/getKubernetesLiveStatus.d.ts.map +1 -0
  45. package/dist/tools/getKubernetesLiveStatus.js +64 -0
  46. package/dist/tools/getKubernetesLiveStatus.js.map +1 -0
  47. package/dist/tools/getLatestDeployment.d.ts +3 -0
  48. package/dist/tools/getLatestDeployment.d.ts.map +1 -0
  49. package/dist/tools/getLatestDeployment.js +85 -0
  50. package/dist/tools/getLatestDeployment.js.map +1 -0
  51. package/dist/tools/getMissingTenantVariables.d.ts +3 -0
  52. package/dist/tools/getMissingTenantVariables.d.ts.map +1 -0
  53. package/dist/tools/getMissingTenantVariables.js +47 -0
  54. package/dist/tools/getMissingTenantVariables.js.map +1 -0
  55. package/dist/tools/getReleaseById.d.ts +3 -0
  56. package/dist/tools/getReleaseById.d.ts.map +1 -0
  57. package/dist/tools/getReleaseById.js +45 -0
  58. package/dist/tools/getReleaseById.js.map +1 -0
  59. package/dist/tools/getTaskById.d.ts +9 -0
  60. package/dist/tools/getTaskById.d.ts.map +1 -0
  61. package/dist/tools/getTaskById.js +44 -0
  62. package/dist/tools/getTaskById.js.map +1 -0
  63. package/dist/tools/getTaskDetails.d.ts +9 -0
  64. package/dist/tools/getTaskDetails.d.ts.map +1 -0
  65. package/dist/tools/getTaskDetails.js +44 -0
  66. package/dist/tools/getTaskDetails.js.map +1 -0
  67. package/dist/tools/getTaskRaw.d.ts +9 -0
  68. package/dist/tools/getTaskRaw.d.ts.map +1 -0
  69. package/dist/tools/getTaskRaw.js +43 -0
  70. package/dist/tools/getTaskRaw.js.map +1 -0
  71. package/dist/tools/getTenantById.d.ts +3 -0
  72. package/dist/tools/getTenantById.d.ts.map +1 -0
  73. package/dist/tools/getTenantById.js +45 -0
  74. package/dist/tools/getTenantById.js.map +1 -0
  75. package/dist/tools/getTenantVariables.d.ts +3 -0
  76. package/dist/tools/getTenantVariables.d.ts.map +1 -0
  77. package/dist/tools/getTenantVariables.js +58 -0
  78. package/dist/tools/getTenantVariables.js.map +1 -0
  79. package/dist/tools/index.d.ts +24 -0
  80. package/dist/tools/index.d.ts.map +1 -0
  81. package/dist/tools/index.js +49 -0
  82. package/dist/tools/index.js.map +1 -0
  83. package/dist/tools/listDeploymentTargets.d.ts +3 -0
  84. package/dist/tools/listDeploymentTargets.d.ts.map +1 -0
  85. package/dist/tools/listDeploymentTargets.js +98 -0
  86. package/dist/tools/listDeploymentTargets.js.map +1 -0
  87. package/dist/tools/listDeployments.d.ts +3 -0
  88. package/dist/tools/listDeployments.d.ts.map +1 -0
  89. package/dist/tools/listDeployments.js +70 -0
  90. package/dist/tools/listDeployments.js.map +1 -0
  91. package/dist/tools/listEnvironments.d.ts +3 -0
  92. package/dist/tools/listEnvironments.d.ts.map +1 -0
  93. package/dist/tools/listEnvironments.js +42 -0
  94. package/dist/tools/listEnvironments.js.map +1 -0
  95. package/dist/tools/listProjects.d.ts +3 -0
  96. package/dist/tools/listProjects.d.ts.map +1 -0
  97. package/dist/tools/listProjects.js +44 -0
  98. package/dist/tools/listProjects.js.map +1 -0
  99. package/dist/tools/listReleases.d.ts +3 -0
  100. package/dist/tools/listReleases.d.ts.map +1 -0
  101. package/dist/tools/listReleases.js +54 -0
  102. package/dist/tools/listReleases.js.map +1 -0
  103. package/dist/tools/listReleasesForProject.d.ts +3 -0
  104. package/dist/tools/listReleasesForProject.d.ts.map +1 -0
  105. package/dist/tools/listReleasesForProject.js +60 -0
  106. package/dist/tools/listReleasesForProject.js.map +1 -0
  107. package/dist/tools/listSpaces.d.ts +3 -0
  108. package/dist/tools/listSpaces.d.ts.map +1 -0
  109. package/dist/tools/listSpaces.js +38 -0
  110. package/dist/tools/listSpaces.js.map +1 -0
  111. package/dist/tools/listTenants.d.ts +3 -0
  112. package/dist/tools/listTenants.d.ts.map +1 -0
  113. package/dist/tools/listTenants.js +64 -0
  114. package/dist/tools/listTenants.js.map +1 -0
  115. package/dist/types/baseResource.d.ts +14 -0
  116. package/dist/types/baseResource.d.ts.map +1 -0
  117. package/dist/types/baseResource.js +3 -0
  118. package/dist/types/baseResource.js.map +1 -0
  119. package/dist/types/deploymentProcessTypes.d.ts +33 -0
  120. package/dist/types/deploymentProcessTypes.d.ts.map +1 -0
  121. package/dist/types/deploymentProcessTypes.js +20 -0
  122. package/dist/types/deploymentProcessTypes.js.map +1 -0
  123. package/dist/types/deploymentTargetTypes.d.ts +74 -0
  124. package/dist/types/deploymentTargetTypes.d.ts.map +1 -0
  125. package/dist/types/deploymentTargetTypes.js +32 -0
  126. package/dist/types/deploymentTargetTypes.js.map +1 -0
  127. package/dist/types/gitBranchTypes.d.ts +11 -0
  128. package/dist/types/gitBranchTypes.d.ts.map +1 -0
  129. package/dist/types/gitBranchTypes.js +2 -0
  130. package/dist/types/gitBranchTypes.js.map +1 -0
  131. package/dist/types/projectTypes.d.ts +2 -0
  132. package/dist/types/projectTypes.d.ts.map +1 -0
  133. package/dist/types/projectTypes.js +2 -0
  134. package/dist/types/projectTypes.js.map +1 -0
  135. package/dist/types/resourceCollection.d.ts +9 -0
  136. package/dist/types/resourceCollection.d.ts.map +1 -0
  137. package/dist/types/resourceCollection.js +2 -0
  138. package/dist/types/resourceCollection.js.map +1 -0
  139. package/dist/types/spaceTypes.d.ts +2 -0
  140. package/dist/types/spaceTypes.d.ts.map +1 -0
  141. package/dist/types/spaceTypes.js +2 -0
  142. package/dist/types/spaceTypes.js.map +1 -0
  143. package/dist/types/taskTypes.d.ts +2 -0
  144. package/dist/types/taskTypes.d.ts.map +1 -0
  145. package/dist/types/taskTypes.js +2 -0
  146. package/dist/types/taskTypes.js.map +1 -0
  147. package/dist/types/tenantsTypes.d.ts +2 -0
  148. package/dist/types/tenantsTypes.d.ts.map +1 -0
  149. package/dist/types/tenantsTypes.js +2 -0
  150. package/dist/types/tenantsTypes.js.map +1 -0
  151. package/dist/types/toolConfig.d.ts +19 -0
  152. package/dist/types/toolConfig.d.ts.map +1 -0
  153. package/dist/types/toolConfig.js +17 -0
  154. package/dist/types/toolConfig.js.map +1 -0
  155. package/dist/utils/clientInfo.d.ts +20 -0
  156. package/dist/utils/clientInfo.d.ts.map +1 -0
  157. package/dist/utils/clientInfo.js +23 -0
  158. package/dist/utils/clientInfo.js.map +1 -0
  159. package/dist/utils/logger.d.ts +45 -0
  160. package/dist/utils/logger.d.ts.map +1 -0
  161. package/dist/utils/logger.js +130 -0
  162. package/dist/utils/logger.js.map +1 -0
  163. package/dist/utils/parseConfig.d.ts +4 -0
  164. package/dist/utils/parseConfig.d.ts.map +1 -0
  165. package/dist/utils/parseConfig.js +21 -0
  166. package/dist/utils/parseConfig.js.map +1 -0
  167. package/package.json +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAEL,aAAa,EACb,gBAAgB,EAEjB,MAAM,wBAAwB,CAAC;AAEhC,2DAA2D;AAC3D,OAAO,iBAAiB,CAAC;AACzB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,6BAA6B,CAAC;AACrC,OAAO,kBAAkB,CAAC;AAC1B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,iBAAiB,CAAC;AACzB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,yBAAyB,CAAC;AACjC,OAAO,gCAAgC,CAAC;AACxC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,kBAAkB,CAAC;AAC1B,OAAO,qBAAqB,CAAC;AAE7B,SAAS,aAAa,CAAC,gBAAkC,EAAE,MAAqB;IAC9E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8BAA8B;IAC9B,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,KAAK,KAAK;QACtD,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,IAAI,gBAAgB,CAAC,CAAC;IAEjD,IAAI,gBAAgB,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7G,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uBAAuB;IACvB,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,SAAwB,EAAE;IACzE,2EAA2E;IAC3E,KAAK,MAAM,CAAC,EAAE,gBAAgB,CAAC,IAAI,aAAa,EAAE,CAAC;QACjD,IAAI,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,CAAC;YAC5C,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerListDeploymentTargetsTool(server: McpServer): void;
3
+ //# sourceMappingURL=listDeploymentTargets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listDeploymentTargets.d.ts","sourceRoot":"","sources":["../../src/tools/listDeploymentTargets.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,SAAS,QAkHlE"}
@@ -0,0 +1,98 @@
1
+ import { Client, resolveSpaceId } from "@octopusdeploy/api-client";
2
+ import { z } from "zod";
3
+ import {} from "@modelcontextprotocol/sdk/server/mcp.js";
4
+ import { registerToolDefinition } from "../types/toolConfig.js";
5
+ import { getClientConfigurationFromEnvironment } from "../helpers/getClientConfigurationFromEnvironment.js";
6
+ import {} from "../types/deploymentTargetTypes.js";
7
+ export function registerListDeploymentTargetsTool(server) {
8
+ server.tool("list_deployment_targets", `List deployment targets (machines) in a space
9
+
10
+ This tool lists all deployment targets in a given space. The space name is required. You can optionally filter by various parameters like name, roles, health status, etc.`, {
11
+ spaceName: z.string(),
12
+ skip: z.number().optional(),
13
+ take: z.number().optional(),
14
+ name: z.string().optional(),
15
+ ids: z.array(z.string()).optional(),
16
+ partialName: z.string().optional(),
17
+ roles: z.array(z.string()).optional().describe("A list of roles / target tags to filter by."),
18
+ isDisabled: z.boolean().optional(),
19
+ healthStatuses: z.array(z.string()).optional().describe("Possible values: Healthy, Unhealthy, Unavailable, Unknown, HasWarnings"),
20
+ commStyles: z.array(z.string()).optional(),
21
+ tenantIds: z.array(z.string()).optional(),
22
+ tenantTags: z.array(z.string()).optional(),
23
+ environmentIds: z.array(z.string()).optional(),
24
+ thumbprint: z.string().optional(),
25
+ deploymentId: z.string().optional(),
26
+ shellNames: z.array(z.string()).optional(),
27
+ deploymentTargetTypes: z.array(z.string()).optional(),
28
+ }, {
29
+ title: "List all deployment targets in an Octopus Deploy space",
30
+ readOnlyHint: true,
31
+ }, async ({ spaceName, skip, take, name, ids, partialName, roles, isDisabled, healthStatuses, commStyles, tenantIds, tenantTags, environmentIds, thumbprint, deploymentId, shellNames, deploymentTargetTypes, }) => {
32
+ const configuration = getClientConfigurationFromEnvironment();
33
+ const client = await Client.create(configuration);
34
+ const spaceId = await resolveSpaceId(client, spaceName);
35
+ const response = await client.get("~/api/{spaceId}/machines{?skip,take,name,ids,partialName,roles,isDisabled,healthStatuses,commStyles,tenantIds,tenantTags,environmentIds,thumbprint,deploymentId,shellNames,deploymentTargetTypes}", {
36
+ spaceId,
37
+ skip,
38
+ take,
39
+ name,
40
+ ids,
41
+ partialName,
42
+ roles,
43
+ isDisabled,
44
+ healthStatuses,
45
+ commStyles,
46
+ tenantIds,
47
+ tenantTags,
48
+ environmentIds,
49
+ thumbprint,
50
+ deploymentId,
51
+ shellNames,
52
+ deploymentTargetTypes,
53
+ });
54
+ const deploymentTargets = response.Items.map((target) => ({
55
+ spaceId: target.SpaceId,
56
+ id: target.Id,
57
+ name: target.Name,
58
+ slug: target.Slug,
59
+ isDisabled: target.IsDisabled,
60
+ healthStatus: target.HealthStatus,
61
+ statusSummary: target.StatusSummary,
62
+ environmentIds: target.EnvironmentIds,
63
+ roles: target.Roles,
64
+ tenantedDeploymentParticipation: target.TenantedDeploymentParticipation,
65
+ tenantIds: target.TenantIds,
66
+ tenantTags: target.TenantTags,
67
+ endpoint: {
68
+ communicationStyle: target.Endpoint.CommunicationStyle,
69
+ uri: target.Endpoint.Uri,
70
+ fingerprint: target.Endpoint.Fingerprint,
71
+ },
72
+ shellName: target.ShellName,
73
+ machinePolicyId: target.MachinePolicyId,
74
+ hasLatestCalamari: target.HasLatestCalamari,
75
+ isInProcess: target.IsInProcess,
76
+ }));
77
+ return {
78
+ content: [
79
+ {
80
+ type: "text",
81
+ text: JSON.stringify({
82
+ totalResults: response.TotalResults,
83
+ itemsPerPage: response.ItemsPerPage,
84
+ numberOfPages: response.NumberOfPages,
85
+ lastPageNumber: response.LastPageNumber,
86
+ items: deploymentTargets,
87
+ }),
88
+ },
89
+ ],
90
+ };
91
+ });
92
+ }
93
+ registerToolDefinition({
94
+ toolName: "list_deployment_targets",
95
+ config: { toolset: "machines", readOnly: true },
96
+ registerFn: registerListDeploymentTargetsTool
97
+ });
98
+ //# sourceMappingURL=listDeploymentTargets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listDeploymentTargets.js","sourceRoot":"","sources":["../../src/tools/listDeploymentTargets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,cAAc,EAA2B,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qCAAqC,EAAE,MAAM,qDAAqD,CAAC;AAC5G,OAAO,EAAiC,MAAM,mCAAmC,CAAC;AAElF,MAAM,UAAU,iCAAiC,CAAC,MAAiB;IACjE,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB;;2KAEuK,EACvK;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QAC7F,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAClC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;QACjI,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC1C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACzC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC1C,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC9C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC1C,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KACtD,EACD;QACE,KAAK,EAAE,wDAAwD;QAC/D,YAAY,EAAE,IAAI;KACnB,EACD,KAAK,EAAE,EACL,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,WAAW,EACX,KAAK,EACL,UAAU,EACV,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,EACV,cAAc,EACd,UAAU,EACV,YAAY,EACZ,UAAU,EACV,qBAAqB,GACtB,EAAE,EAAE;QACH,MAAM,aAAa,GAAG,qCAAqC,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAC/B,mMAAmM,EACnM;YACE,OAAO;YACP,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,GAAG;YACH,WAAW;YACX,KAAK;YACL,UAAU;YACV,cAAc;YACd,UAAU;YACV,SAAS;YACT,UAAU;YACV,cAAc;YACd,UAAU;YACV,YAAY;YACZ,UAAU;YACV,qBAAqB;SACtB,CACF,CAAC;QACF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAgC,EAAE,EAAE,CAAC,CAAC;YAClF,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,+BAA+B,EAAE,MAAM,CAAC,+BAA+B;YACvE,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,QAAQ,EAAE;gBACR,kBAAkB,EAAE,MAAM,CAAC,QAAQ,CAAC,kBAAkB;gBACtD,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG;gBACxB,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW;aACzC;YACD,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,YAAY,EAAE,QAAQ,CAAC,YAAY;wBACnC,YAAY,EAAE,QAAQ,CAAC,YAAY;wBACnC,aAAa,EAAE,QAAQ,CAAC,aAAa;wBACrC,cAAc,EAAE,QAAQ,CAAC,cAAc;wBACvC,KAAK,EAAE,iBAAiB;qBACzB,CAAC;iBACH;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,sBAAsB,CAAC;IACrB,QAAQ,EAAE,yBAAyB;IACnC,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC/C,UAAU,EAAE,iCAAiC;CAC9C,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerListDeploymentsTool(server: McpServer): void;
3
+ //# sourceMappingURL=listDeployments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listDeployments.d.ts","sourceRoot":"","sources":["../../src/tools/listDeployments.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,QAmE5D"}
@@ -0,0 +1,70 @@
1
+ import { Client, DeploymentRepository, TaskState } from "@octopusdeploy/api-client";
2
+ import { z } from "zod";
3
+ import {} from "@modelcontextprotocol/sdk/server/mcp.js";
4
+ import { getClientConfigurationFromEnvironment } from "../helpers/getClientConfigurationFromEnvironment.js";
5
+ import { registerToolDefinition } from "../types/toolConfig.js";
6
+ export function registerListDeploymentsTool(server) {
7
+ server.tool("list_deployments", `List deployments in a space
8
+
9
+ This tool lists deployments in a given space. The space name is required. When requesting latest deployment consider which deployment state the user is interested in (successful or all). Optional filters include: projects (array of project IDs), environments (array of environment IDs), tenants (array of tenant IDs), channels (array of channel IDs), taskState (one of: Canceled, Cancelling, Executing, Failed, Queued, Success, TimedOut), and take (number of results to return).`, {
10
+ spaceName: z.string(),
11
+ projects: z.array(z.string()).optional(),
12
+ environments: z.array(z.string()).optional(),
13
+ tenants: z.array(z.string()).optional(),
14
+ channels: z.array(z.string()).optional(),
15
+ taskState: z.enum(["Canceled", "Cancelling", "Executing", "Failed", "Queued", "Success", "TimedOut"]).optional(),
16
+ take: z.number().optional()
17
+ }, {
18
+ title: "List deployments in an Octopus Deploy space",
19
+ readOnlyHint: true,
20
+ }, async ({ spaceName, projects, environments, tenants, channels, taskState, take }) => {
21
+ const configuration = getClientConfigurationFromEnvironment();
22
+ const client = await Client.create(configuration);
23
+ const deploymentRepository = new DeploymentRepository(client, spaceName);
24
+ const deploymentsResponse = await deploymentRepository.list({
25
+ projects,
26
+ environments,
27
+ tenants,
28
+ channels,
29
+ taskState: taskState ? TaskState[taskState] : undefined,
30
+ take
31
+ });
32
+ const deployments = deploymentsResponse.Items.map((deployment) => ({
33
+ spaceId: deployment.SpaceId,
34
+ id: deployment.Id,
35
+ name: deployment.Name,
36
+ releaseId: deployment.ReleaseId,
37
+ environmentId: deployment.EnvironmentId,
38
+ tenantId: deployment.TenantId,
39
+ projectId: deployment.ProjectId,
40
+ channelId: deployment.ChannelId,
41
+ created: deployment.Created,
42
+ taskId: deployment.TaskId,
43
+ deploymentProcessId: deployment.DeploymentProcessId,
44
+ comments: deployment.Comments,
45
+ formValues: deployment.FormValues,
46
+ queueTime: deployment.QueueTime,
47
+ queueTimeExpiry: deployment.QueueTimeExpiry,
48
+ useGuidedFailure: deployment.UseGuidedFailure,
49
+ specificMachineIds: deployment.SpecificMachineIds,
50
+ excludedMachineIds: deployment.ExcludedMachineIds,
51
+ skipActions: deployment.SkipActions,
52
+ forcePackageDownload: deployment.ForcePackageDownload,
53
+ forcePackageRedeployment: deployment.ForcePackageRedeployment,
54
+ }));
55
+ return {
56
+ content: [
57
+ {
58
+ type: "text",
59
+ text: JSON.stringify(deployments),
60
+ },
61
+ ],
62
+ };
63
+ });
64
+ }
65
+ registerToolDefinition({
66
+ toolName: "list_deployments",
67
+ config: { toolset: "deployments", readOnly: true },
68
+ registerFn: registerListDeploymentsTool
69
+ });
70
+ //# sourceMappingURL=listDeployments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listDeployments.js","sourceRoot":"","sources":["../../src/tools/listDeployments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerListEnvironmentsTool(server: McpServer): void;
3
+ //# sourceMappingURL=listEnvironments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listEnvironments.d.ts","sourceRoot":"","sources":["../../src/tools/listEnvironments.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,QAsC7D"}
@@ -0,0 +1,42 @@
1
+ import { Client, EnvironmentRepository } from "@octopusdeploy/api-client";
2
+ import { z } from "zod";
3
+ import {} from "@modelcontextprotocol/sdk/server/mcp.js";
4
+ import { getClientConfigurationFromEnvironment } from "../helpers/getClientConfigurationFromEnvironment.js";
5
+ import { registerToolDefinition } from "../types/toolConfig.js";
6
+ export function registerListEnvironmentsTool(server) {
7
+ server.tool("list_environments", `List environments in a space
8
+
9
+ This tool lists all environments in a given space. The space name is required. Use this tool as early as possible to understand which environments are configured. Optionally filter by partial name match using partialName parameter.`, { spaceName: z.string(), partialName: z.string().optional() }, {
10
+ title: "List all environments in an Octopus Deploy space",
11
+ readOnlyHint: true,
12
+ }, async ({ spaceName, partialName }) => {
13
+ const configuration = getClientConfigurationFromEnvironment();
14
+ const client = await Client.create(configuration);
15
+ const environmentRepository = new EnvironmentRepository(client, spaceName);
16
+ const environmentsResponse = await environmentRepository.list({ partialName });
17
+ const environments = environmentsResponse.Items.map((environment) => ({
18
+ spaceId: environment.SpaceId,
19
+ id: environment.Id,
20
+ name: environment.Name,
21
+ description: environment.Description,
22
+ sortOrder: environment.SortOrder,
23
+ useGuidedFailure: environment.UseGuidedFailure,
24
+ allowDynamicInfrastructure: environment.AllowDynamicInfrastructure,
25
+ extensionSettings: environment.ExtensionSettings,
26
+ }));
27
+ return {
28
+ content: [
29
+ {
30
+ type: "text",
31
+ text: JSON.stringify(environments),
32
+ },
33
+ ],
34
+ };
35
+ });
36
+ }
37
+ registerToolDefinition({
38
+ toolName: "list_environments",
39
+ config: { toolset: "core", readOnly: true },
40
+ registerFn: registerListEnvironmentsTool
41
+ });
42
+ //# sourceMappingURL=listEnvironments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listEnvironments.js","sourceRoot":"","sources":["../../src/tools/listEnvironments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAA8B,MAAM,2BAA2B,CAAC;AACtG,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;AAEhE,MAAM,UAAU,4BAA4B,CAAC,MAAiB;IAC5D,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB;;0OAEsO,EACtO,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,EAC7D;QACE,KAAK,EAAE,kDAAkD;QACzD,YAAY,EAAE,IAAI;KACnB,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE;QACnC,MAAM,aAAa,GAAG,qCAAqC,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE3E,MAAM,oBAAoB,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QAC/E,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAkC,EAAE,EAAE,CAAC,CAAC;YAC3F,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,EAAE,EAAE,WAAW,CAAC,EAAE;YAClB,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,gBAAgB,EAAE,WAAW,CAAC,gBAAgB;YAC9C,0BAA0B,EAAE,WAAW,CAAC,0BAA0B;YAClE,iBAAiB,EAAE,WAAW,CAAC,iBAAiB;SACjD,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;iBACnC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAGD,sBAAsB,CAAC;IACrB,QAAQ,EAAE,mBAAmB;IAC7B,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC3C,UAAU,EAAE,4BAA4B;CACzC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerListProjectsTool(server: McpServer): void;
3
+ //# sourceMappingURL=listProjects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listProjects.d.ts","sourceRoot":"","sources":["../../src/tools/listProjects.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,QAwCzD"}
@@ -0,0 +1,44 @@
1
+ import { Client, ProjectRepository } from "@octopusdeploy/api-client";
2
+ import { z } from "zod";
3
+ import {} from "@modelcontextprotocol/sdk/server/mcp.js";
4
+ import { registerToolDefinition } from "../types/toolConfig.js";
5
+ import { getClientConfigurationFromEnvironment } from "../helpers/getClientConfigurationFromEnvironment.js";
6
+ import { projectsDescription } from "../types/projectTypes.js";
7
+ export function registerListProjectsTool(server) {
8
+ server.tool("list_projects", `This tool lists all projects in a given space. ${projectsDescription} The space name is required, if you can't find the space name, ask the user directly for the name of the space. Optionally filter by partial name match using partialName parameter.`, { spaceName: z.string(), partialName: z.string().optional() }, {
9
+ title: "List all projects in an Octopus Deploy space",
10
+ readOnlyHint: true,
11
+ }, async ({ spaceName, partialName }) => {
12
+ const configuration = getClientConfigurationFromEnvironment();
13
+ const client = await Client.create(configuration);
14
+ const projectRepository = new ProjectRepository(client, spaceName);
15
+ const projectsResponse = await projectRepository.list({ partialName });
16
+ const projects = projectsResponse.Items.map((project) => ({
17
+ spaceId: project.SpaceId,
18
+ id: project.Id,
19
+ name: project.Name,
20
+ description: project.Description,
21
+ slug: project.Slug,
22
+ deploymentProcessId: project.DeploymentProcessId,
23
+ lifecycleId: project.LifecycleId,
24
+ isDisabled: project.IsDisabled,
25
+ repositoryUrl: project.PersistenceSettings.Type === "VersionControlled"
26
+ ? project.PersistenceSettings.Url
27
+ : null,
28
+ }));
29
+ return {
30
+ content: [
31
+ {
32
+ type: "text",
33
+ text: JSON.stringify(projects),
34
+ },
35
+ ],
36
+ };
37
+ });
38
+ }
39
+ registerToolDefinition({
40
+ toolName: "list_projects",
41
+ config: { toolset: "projects", readOnly: true },
42
+ registerFn: registerListProjectsTool
43
+ });
44
+ //# sourceMappingURL=listProjects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listProjects.js","sourceRoot":"","sources":["../../src/tools/listProjects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAgB,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qCAAqC,EAAE,MAAM,qDAAqD,CAAC;AAC5G,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,IAAI,CACT,eAAe,EACf,kDAAkD,mBAAmB,sLAAsL,EAC3P,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,EAC7D;QACE,KAAK,EAAE,8CAA8C;QACrD,YAAY,EAAE,IAAI;KACnB,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE;QACnC,MAAM,aAAa,GAAG,qCAAqC,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEnE,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC;YACjE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,aAAa,EACX,OAAO,CAAC,mBAAmB,CAAC,IAAI,KAAK,mBAAmB;gBACtD,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG;gBACjC,CAAC,CAAC,IAAI;SACX,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;iBAC/B;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,sBAAsB,CAAC;IACrB,QAAQ,EAAE,eAAe;IACzB,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC/C,UAAU,EAAE,wBAAwB;CACrC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerListReleasesTool(server: McpServer): void;
3
+ //# sourceMappingURL=listReleases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listReleases.d.ts","sourceRoot":"","sources":["../../src/tools/listReleases.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,QAkDzD"}
@@ -0,0 +1,54 @@
1
+ import { Client, ReleaseRepository } from "@octopusdeploy/api-client";
2
+ import { z } from "zod";
3
+ import {} from "@modelcontextprotocol/sdk/server/mcp.js";
4
+ import { getClientConfigurationFromEnvironment } from "../helpers/getClientConfigurationFromEnvironment.js";
5
+ import { registerToolDefinition } from "../types/toolConfig.js";
6
+ export function registerListReleasesTool(server) {
7
+ server.tool("list_releases", `List releases in a space
8
+
9
+ This tool lists all releases in a given space. The space name is required. Optionally provide skip and take parameters for pagination.`, {
10
+ spaceName: z.string().describe("The space name"),
11
+ skip: z.number().optional().describe("Number of items to skip for pagination"),
12
+ take: z.number().optional().describe("Number of items to take for pagination")
13
+ }, {
14
+ title: "List all releases in an Octopus Deploy space",
15
+ readOnlyHint: true,
16
+ }, async ({ spaceName, skip, take }) => {
17
+ const configuration = getClientConfigurationFromEnvironment();
18
+ const client = await Client.create(configuration);
19
+ const releaseRepository = new ReleaseRepository(client, spaceName);
20
+ const releasesResponse = await releaseRepository.list({ skip, take });
21
+ return {
22
+ content: [
23
+ {
24
+ type: "text",
25
+ text: JSON.stringify({
26
+ totalResults: releasesResponse.TotalResults,
27
+ itemsPerPage: releasesResponse.ItemsPerPage,
28
+ numberOfPages: releasesResponse.NumberOfPages,
29
+ lastPageNumber: releasesResponse.LastPageNumber,
30
+ items: releasesResponse.Items.map(release => ({
31
+ id: release.Id,
32
+ version: release.Version,
33
+ channelId: release.ChannelId,
34
+ projectId: release.ProjectId,
35
+ releaseNotes: release.ReleaseNotes,
36
+ assembled: release.Assembled,
37
+ ignoreChannelRules: release.IgnoreChannelRules,
38
+ selectedPackages: release.SelectedPackages,
39
+ selectedGitResources: release.SelectedGitResources,
40
+ buildInformation: release.BuildInformation,
41
+ customFields: release.CustomFields
42
+ }))
43
+ }),
44
+ },
45
+ ],
46
+ };
47
+ });
48
+ }
49
+ registerToolDefinition({
50
+ toolName: "list_releases",
51
+ config: { toolset: "releases", readOnly: true },
52
+ registerFn: registerListReleasesTool
53
+ });
54
+ //# sourceMappingURL=listReleases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listReleases.js","sourceRoot":"","sources":["../../src/tools/listReleases.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;AAEhE,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,IAAI,CACT,eAAe,EACf;;yIAEqI,EACrI;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAChD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QAC9E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KAC/E,EACD;QACE,KAAK,EAAE,8CAA8C;QACrD,YAAY,EAAE,IAAI;KACnB,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QAClC,MAAM,aAAa,GAAG,qCAAqC,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEnE,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,YAAY,EAAE,gBAAgB,CAAC,YAAY;wBAC3C,YAAY,EAAE,gBAAgB,CAAC,YAAY;wBAC3C,aAAa,EAAE,gBAAgB,CAAC,aAAa;wBAC7C,cAAc,EAAE,gBAAgB,CAAC,cAAc;wBAC/C,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;4BAC5C,EAAE,EAAE,OAAO,CAAC,EAAE;4BACd,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,SAAS,EAAE,OAAO,CAAC,SAAS;4BAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;4BAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;4BAClC,SAAS,EAAE,OAAO,CAAC,SAAS;4BAC5B,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;4BAC9C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;4BAC1C,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;4BAClD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;4BAC1C,YAAY,EAAE,OAAO,CAAC,YAAY;yBACnC,CAAC,CAAC;qBACJ,CAAC;iBACH;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,sBAAsB,CAAC;IACrB,QAAQ,EAAE,eAAe;IACzB,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC/C,UAAU,EAAE,wBAAwB;CACrC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerListReleasesForProjectTool(server: McpServer): void;
3
+ //# sourceMappingURL=listReleasesForProject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listReleasesForProject.d.ts","sourceRoot":"","sources":["../../src/tools/listReleasesForProject.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,SAAS,QAwDnE"}
@@ -0,0 +1,60 @@
1
+ import { Client, ReleaseRepository } from "@octopusdeploy/api-client";
2
+ import { z } from "zod";
3
+ import {} from "@modelcontextprotocol/sdk/server/mcp.js";
4
+ import { getClientConfigurationFromEnvironment } from "../helpers/getClientConfigurationFromEnvironment.js";
5
+ import { registerToolDefinition } from "../types/toolConfig.js";
6
+ export function registerListReleasesForProjectTool(server) {
7
+ server.tool("list_releases_for_project", `List releases for a specific project
8
+
9
+ This tool lists all releases for a given project in a space. The space name and project ID are required. Optionally provide skip, take, and searchByVersion parameters.`, {
10
+ spaceName: z.string(),
11
+ projectId: z.string(),
12
+ skip: z.number().optional().describe("Number of items to skip for pagination"),
13
+ take: z.number().optional().describe("Number of items to take for pagination"),
14
+ searchByVersion: z.string().optional().describe("Search releases by version string")
15
+ }, {
16
+ title: "List releases for a project in Octopus Deploy",
17
+ readOnlyHint: true,
18
+ }, async ({ spaceName, projectId, skip, take, searchByVersion }) => {
19
+ const configuration = getClientConfigurationFromEnvironment();
20
+ const client = await Client.create(configuration);
21
+ const releaseRepository = new ReleaseRepository(client, spaceName);
22
+ const releasesResponse = await releaseRepository.listForProject(projectId, {
23
+ skip,
24
+ take,
25
+ searchByVersion
26
+ });
27
+ return {
28
+ content: [
29
+ {
30
+ type: "text",
31
+ text: JSON.stringify({
32
+ totalResults: releasesResponse.TotalResults,
33
+ itemsPerPage: releasesResponse.ItemsPerPage,
34
+ numberOfPages: releasesResponse.NumberOfPages,
35
+ lastPageNumber: releasesResponse.LastPageNumber,
36
+ items: releasesResponse.Items.map(release => ({
37
+ id: release.Id,
38
+ version: release.Version,
39
+ channelId: release.ChannelId,
40
+ projectId: release.ProjectId,
41
+ releaseNotes: release.ReleaseNotes,
42
+ assembled: release.Assembled,
43
+ ignoreChannelRules: release.IgnoreChannelRules,
44
+ selectedPackages: release.SelectedPackages,
45
+ selectedGitResources: release.SelectedGitResources,
46
+ buildInformation: release.BuildInformation,
47
+ customFields: release.CustomFields
48
+ }))
49
+ }),
50
+ },
51
+ ],
52
+ };
53
+ });
54
+ }
55
+ registerToolDefinition({
56
+ toolName: "list_releases_for_project",
57
+ config: { toolset: "releases", readOnly: true },
58
+ registerFn: registerListReleasesForProjectTool
59
+ });
60
+ //# sourceMappingURL=listReleasesForProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listReleasesForProject.js","sourceRoot":"","sources":["../../src/tools/listReleasesForProject.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;AAEhE,MAAM,UAAU,kCAAkC,CAAC,MAAiB;IAClE,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B;;0KAEsK,EACtK;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QAC9E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QAC9E,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;KACrF,EACD;QACE,KAAK,EAAE,+CAA+C;QACtD,YAAY,EAAE,IAAI;KACnB,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE;QAC9D,MAAM,aAAa,GAAG,qCAAqC,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEnE,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAAC,cAAc,CAAC,SAAS,EAAE;YACzE,IAAI;YACJ,IAAI;YACJ,eAAe;SAChB,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,YAAY,EAAE,gBAAgB,CAAC,YAAY;wBAC3C,YAAY,EAAE,gBAAgB,CAAC,YAAY;wBAC3C,aAAa,EAAE,gBAAgB,CAAC,aAAa;wBAC7C,cAAc,EAAE,gBAAgB,CAAC,cAAc;wBAC/C,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;4BAC5C,EAAE,EAAE,OAAO,CAAC,EAAE;4BACd,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,SAAS,EAAE,OAAO,CAAC,SAAS;4BAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;4BAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;4BAClC,SAAS,EAAE,OAAO,CAAC,SAAS;4BAC5B,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;4BAC9C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;4BAC1C,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;4BAClD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;4BAC1C,YAAY,EAAE,OAAO,CAAC,YAAY;yBACnC,CAAC,CAAC;qBACJ,CAAC;iBACH;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,sBAAsB,CAAC;IACrB,QAAQ,EAAE,2BAA2B;IACrC,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC/C,UAAU,EAAE,kCAAkC;CAC/C,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerListSpacesTool(server: McpServer): void;
3
+ //# sourceMappingURL=listSpaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listSpaces.d.ts","sourceRoot":"","sources":["../../src/tools/listSpaces.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,QAiCvD"}
@@ -0,0 +1,38 @@
1
+ import { Client, SpaceRepository } from "@octopusdeploy/api-client";
2
+ import { z } from "zod";
3
+ import { getClientConfigurationFromEnvironment } from "../helpers/getClientConfigurationFromEnvironment.js";
4
+ import {} from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ import { registerToolDefinition } from "../types/toolConfig.js";
6
+ import { spacesDescription } from "../types/spaceTypes.js";
7
+ export function registerListSpacesTool(server) {
8
+ server.tool("list_spaces", `List all spaces in the Octopus Deploy instance. ${spacesDescription} Always use this tool first to check that the requested space exists.`, { partialName: z.string().optional() }, {
9
+ title: "List all spaces in an Octopus Deploy instance",
10
+ readOnlyHint: true,
11
+ }, async ({ partialName }) => {
12
+ const configuration = getClientConfigurationFromEnvironment();
13
+ const client = await Client.create(configuration);
14
+ const spaceRepository = new SpaceRepository(client);
15
+ const spacesResponse = await spaceRepository.list({ partialName });
16
+ const spaces = spacesResponse.Items.map((space) => ({
17
+ id: space.Id,
18
+ name: space.Name,
19
+ description: space.Description,
20
+ isDefault: space.IsDefault,
21
+ taskQueueStopped: space.TaskQueueStopped,
22
+ }));
23
+ return {
24
+ content: [
25
+ {
26
+ type: "text",
27
+ text: JSON.stringify(spaces),
28
+ },
29
+ ],
30
+ };
31
+ });
32
+ }
33
+ registerToolDefinition({
34
+ toolName: "list_spaces",
35
+ config: { toolset: "core", readOnly: true },
36
+ registerFn: registerListSpacesTool
37
+ });
38
+ //# sourceMappingURL=listSpaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listSpaces.js","sourceRoot":"","sources":["../../src/tools/listSpaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qCAAqC,EAAE,MAAM,qDAAqD,CAAC;AAC5G,OAAO,EAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,IAAI,CACT,aAAa,EACb,mDAAmD,iBAAiB,uEAAuE,EAC3I,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,EACtC;QACE,KAAK,EAAE,+CAA+C;QACtD,YAAY,EAAE,IAAI;KACnB,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;QACxB,MAAM,aAAa,GAAG,qCAAqC,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAEpD,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClD,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;SACzC,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;iBAC7B;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,sBAAsB,CAAC;IACrB,QAAQ,EAAE,aAAa;IACvB,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC3C,UAAU,EAAE,sBAAsB;CACnC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerListTenantsTool(server: McpServer): void;
3
+ //# sourceMappingURL=listTenants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listTenants.d.ts","sourceRoot":"","sources":["../../src/tools/listTenants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,QA2DxD"}
@@ -0,0 +1,64 @@
1
+ import { Client, TenantRepository } from "@octopusdeploy/api-client";
2
+ import { z } from "zod";
3
+ import {} from "@modelcontextprotocol/sdk/server/mcp.js";
4
+ import { getClientConfigurationFromEnvironment } from "../helpers/getClientConfigurationFromEnvironment.js";
5
+ import { registerToolDefinition } from "../types/toolConfig.js";
6
+ import { getPublicUrl } from "../helpers/getPublicUrl.js";
7
+ export function registerListTenantsTool(server) {
8
+ server.tool("list_tenants", `List tenants in a space
9
+
10
+ This tool lists all tenants in a given space. The space name is required. Optionally provide skip and take parameters for pagination.`, {
11
+ spaceName: z.string().describe("The space name"),
12
+ skip: z.number().optional().describe("Number of items to skip for pagination"),
13
+ take: z.number().optional().describe("Number of items to take for pagination"),
14
+ projectId: z.string().optional().describe("Filter by specific project ID"),
15
+ tags: z.string().optional().describe("Filter by tenant tags (comma-separated list)"),
16
+ ids: z.array(z.string()).optional().describe("Filter by specific tenant IDs"),
17
+ partialName: z.string().optional().describe("Filter by partial tenant name match")
18
+ }, {
19
+ title: "List all tenants in an Octopus Deploy space",
20
+ readOnlyHint: true,
21
+ }, async ({ spaceName, skip, take, projectId, tags, ids, partialName }) => {
22
+ const configuration = getClientConfigurationFromEnvironment();
23
+ const client = await Client.create(configuration);
24
+ const tenantRepository = new TenantRepository(client, spaceName);
25
+ const tenantsResponse = await tenantRepository.list({
26
+ skip,
27
+ take,
28
+ projectId,
29
+ tags,
30
+ ids,
31
+ partialName
32
+ });
33
+ return {
34
+ content: [
35
+ {
36
+ type: "text",
37
+ text: JSON.stringify({
38
+ totalResults: tenantsResponse.TotalResults,
39
+ itemsPerPage: tenantsResponse.ItemsPerPage,
40
+ numberOfPages: tenantsResponse.NumberOfPages,
41
+ lastPageNumber: tenantsResponse.LastPageNumber,
42
+ items: tenantsResponse.Items.map(tenant => ({
43
+ id: tenant.Id,
44
+ name: tenant.Name,
45
+ description: tenant.Description,
46
+ projectEnvironments: tenant.ProjectEnvironments,
47
+ tenantTags: tenant.TenantTags,
48
+ clonedFromTenantId: tenant.ClonedFromTenantId,
49
+ spaceId: tenant.SpaceId,
50
+ publicUrl: getPublicUrl(`${configuration.instanceURL}/app#/{spaceId}/tenants/{tenantId}/overview`, { spaceId: tenant.SpaceId, tenantId: tenant.Id }),
51
+ publicUrlInstruction: `You can view more details about this tenant in the Octopus Deploy web portal at the provided publicUrl.`
52
+ }))
53
+ }),
54
+ },
55
+ ],
56
+ };
57
+ });
58
+ }
59
+ registerToolDefinition({
60
+ toolName: "list_tenants",
61
+ config: { toolset: "tenants", readOnly: true },
62
+ registerFn: registerListTenantsTool
63
+ });
64
+ //# sourceMappingURL=listTenants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listTenants.js","sourceRoot":"","sources":["../../src/tools/listTenants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface ResourceWithId<TLinks = {}> {
2
+ Id: string;
3
+ Links: TLinks;
4
+ }
5
+ export interface NamedResource<TLinks = {}> extends ResourceWithId<TLinks> {
6
+ Name: string;
7
+ }
8
+ export interface SpaceScopedResource {
9
+ SpaceId: string;
10
+ }
11
+ export interface ResourceWithSlug {
12
+ Slug?: string;
13
+ }
14
+ //# sourceMappingURL=baseResource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseResource.d.ts","sourceRoot":"","sources":["../../src/types/baseResource.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc,CAAC,MAAM,GAAG,EAAE;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa,CAAC,MAAM,GAAG,EAAE,CAAE,SAAQ,cAAc,CAAC,MAAM,CAAC;IACtE,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB"}