@tmhs/docker-mcp 0.9.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/README.md +79 -2
  2. package/dist/index.js +85 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/tools/configCreate.d.ts +3 -0
  5. package/dist/tools/configCreate.d.ts.map +1 -0
  6. package/dist/tools/configCreate.js +24 -0
  7. package/dist/tools/configCreate.js.map +1 -0
  8. package/dist/tools/configInspect.d.ts +3 -0
  9. package/dist/tools/configInspect.d.ts.map +1 -0
  10. package/dist/tools/configInspect.js +22 -0
  11. package/dist/tools/configInspect.js.map +1 -0
  12. package/dist/tools/configLs.d.ts +3 -0
  13. package/dist/tools/configLs.d.ts.map +1 -0
  14. package/dist/tools/configLs.js +22 -0
  15. package/dist/tools/configLs.js.map +1 -0
  16. package/dist/tools/configRm.d.ts +3 -0
  17. package/dist/tools/configRm.d.ts.map +1 -0
  18. package/dist/tools/configRm.js +17 -0
  19. package/dist/tools/configRm.js.map +1 -0
  20. package/dist/tools/nodeDemote.d.ts +3 -0
  21. package/dist/tools/nodeDemote.d.ts.map +1 -0
  22. package/dist/tools/nodeDemote.js +17 -0
  23. package/dist/tools/nodeDemote.js.map +1 -0
  24. package/dist/tools/nodeInspect.d.ts +3 -0
  25. package/dist/tools/nodeInspect.d.ts.map +1 -0
  26. package/dist/tools/nodeInspect.js +22 -0
  27. package/dist/tools/nodeInspect.js.map +1 -0
  28. package/dist/tools/nodeLs.d.ts +3 -0
  29. package/dist/tools/nodeLs.d.ts.map +1 -0
  30. package/dist/tools/nodeLs.js +22 -0
  31. package/dist/tools/nodeLs.js.map +1 -0
  32. package/dist/tools/nodePromote.d.ts +3 -0
  33. package/dist/tools/nodePromote.d.ts.map +1 -0
  34. package/dist/tools/nodePromote.js +17 -0
  35. package/dist/tools/nodePromote.js.map +1 -0
  36. package/dist/tools/nodePs.d.ts +3 -0
  37. package/dist/tools/nodePs.d.ts.map +1 -0
  38. package/dist/tools/nodePs.js +25 -0
  39. package/dist/tools/nodePs.js.map +1 -0
  40. package/dist/tools/nodeRm.d.ts +3 -0
  41. package/dist/tools/nodeRm.d.ts.map +1 -0
  42. package/dist/tools/nodeRm.js +22 -0
  43. package/dist/tools/nodeRm.js.map +1 -0
  44. package/dist/tools/nodeUpdate.d.ts +3 -0
  45. package/dist/tools/nodeUpdate.d.ts.map +1 -0
  46. package/dist/tools/nodeUpdate.js +29 -0
  47. package/dist/tools/nodeUpdate.js.map +1 -0
  48. package/dist/tools/secretCreate.d.ts +3 -0
  49. package/dist/tools/secretCreate.d.ts.map +1 -0
  50. package/dist/tools/secretCreate.js +24 -0
  51. package/dist/tools/secretCreate.js.map +1 -0
  52. package/dist/tools/secretInspect.d.ts +3 -0
  53. package/dist/tools/secretInspect.d.ts.map +1 -0
  54. package/dist/tools/secretInspect.js +22 -0
  55. package/dist/tools/secretInspect.js.map +1 -0
  56. package/dist/tools/secretLs.d.ts +3 -0
  57. package/dist/tools/secretLs.d.ts.map +1 -0
  58. package/dist/tools/secretLs.js +22 -0
  59. package/dist/tools/secretLs.js.map +1 -0
  60. package/dist/tools/secretRm.d.ts +3 -0
  61. package/dist/tools/secretRm.d.ts.map +1 -0
  62. package/dist/tools/secretRm.js +17 -0
  63. package/dist/tools/secretRm.js.map +1 -0
  64. package/dist/tools/serviceCreate.d.ts +3 -0
  65. package/dist/tools/serviceCreate.d.ts.map +1 -0
  66. package/dist/tools/serviceCreate.js +62 -0
  67. package/dist/tools/serviceCreate.js.map +1 -0
  68. package/dist/tools/serviceInspect.d.ts +3 -0
  69. package/dist/tools/serviceInspect.d.ts.map +1 -0
  70. package/dist/tools/serviceInspect.js +22 -0
  71. package/dist/tools/serviceInspect.js.map +1 -0
  72. package/dist/tools/serviceLogs.d.ts +3 -0
  73. package/dist/tools/serviceLogs.d.ts.map +1 -0
  74. package/dist/tools/serviceLogs.js +28 -0
  75. package/dist/tools/serviceLogs.js.map +1 -0
  76. package/dist/tools/serviceLs.d.ts +3 -0
  77. package/dist/tools/serviceLs.d.ts.map +1 -0
  78. package/dist/tools/serviceLs.js +22 -0
  79. package/dist/tools/serviceLs.js.map +1 -0
  80. package/dist/tools/servicePs.d.ts +3 -0
  81. package/dist/tools/servicePs.d.ts.map +1 -0
  82. package/dist/tools/servicePs.js +24 -0
  83. package/dist/tools/servicePs.js.map +1 -0
  84. package/dist/tools/serviceRm.d.ts +3 -0
  85. package/dist/tools/serviceRm.d.ts.map +1 -0
  86. package/dist/tools/serviceRm.js +17 -0
  87. package/dist/tools/serviceRm.js.map +1 -0
  88. package/dist/tools/serviceRollback.d.ts +3 -0
  89. package/dist/tools/serviceRollback.d.ts.map +1 -0
  90. package/dist/tools/serviceRollback.js +22 -0
  91. package/dist/tools/serviceRollback.js.map +1 -0
  92. package/dist/tools/serviceScale.d.ts +3 -0
  93. package/dist/tools/serviceScale.d.ts.map +1 -0
  94. package/dist/tools/serviceScale.js +17 -0
  95. package/dist/tools/serviceScale.js.map +1 -0
  96. package/dist/tools/serviceUpdate.d.ts +3 -0
  97. package/dist/tools/serviceUpdate.d.ts.map +1 -0
  98. package/dist/tools/serviceUpdate.js +45 -0
  99. package/dist/tools/serviceUpdate.js.map +1 -0
  100. package/dist/tools/stackConfig.d.ts +3 -0
  101. package/dist/tools/stackConfig.d.ts.map +1 -0
  102. package/dist/tools/stackConfig.js +17 -0
  103. package/dist/tools/stackConfig.js.map +1 -0
  104. package/dist/tools/stackDeploy.d.ts +3 -0
  105. package/dist/tools/stackDeploy.d.ts.map +1 -0
  106. package/dist/tools/stackDeploy.js +29 -0
  107. package/dist/tools/stackDeploy.js.map +1 -0
  108. package/dist/tools/stackLs.d.ts +3 -0
  109. package/dist/tools/stackLs.d.ts.map +1 -0
  110. package/dist/tools/stackLs.js +17 -0
  111. package/dist/tools/stackLs.js.map +1 -0
  112. package/dist/tools/stackPs.d.ts +3 -0
  113. package/dist/tools/stackPs.d.ts.map +1 -0
  114. package/dist/tools/stackPs.js +24 -0
  115. package/dist/tools/stackPs.js.map +1 -0
  116. package/dist/tools/stackRm.d.ts +3 -0
  117. package/dist/tools/stackRm.d.ts.map +1 -0
  118. package/dist/tools/stackRm.js +17 -0
  119. package/dist/tools/stackRm.js.map +1 -0
  120. package/dist/tools/stackServices.d.ts +3 -0
  121. package/dist/tools/stackServices.d.ts.map +1 -0
  122. package/dist/tools/stackServices.js +24 -0
  123. package/dist/tools/stackServices.js.map +1 -0
  124. package/dist/tools/swarmCa.d.ts +3 -0
  125. package/dist/tools/swarmCa.d.ts.map +1 -0
  126. package/dist/tools/swarmCa.js +26 -0
  127. package/dist/tools/swarmCa.js.map +1 -0
  128. package/dist/tools/swarmInit.d.ts +3 -0
  129. package/dist/tools/swarmInit.d.ts.map +1 -0
  130. package/dist/tools/swarmInit.js +29 -0
  131. package/dist/tools/swarmInit.js.map +1 -0
  132. package/dist/tools/swarmJoin.d.ts +3 -0
  133. package/dist/tools/swarmJoin.d.ts.map +1 -0
  134. package/dist/tools/swarmJoin.js +26 -0
  135. package/dist/tools/swarmJoin.js.map +1 -0
  136. package/dist/tools/swarmJoinToken.d.ts +3 -0
  137. package/dist/tools/swarmJoinToken.d.ts.map +1 -0
  138. package/dist/tools/swarmJoinToken.js +22 -0
  139. package/dist/tools/swarmJoinToken.js.map +1 -0
  140. package/dist/tools/swarmLeave.d.ts +3 -0
  141. package/dist/tools/swarmLeave.d.ts.map +1 -0
  142. package/dist/tools/swarmLeave.js +20 -0
  143. package/dist/tools/swarmLeave.js.map +1 -0
  144. package/dist/tools/swarmUnlock.d.ts +3 -0
  145. package/dist/tools/swarmUnlock.d.ts.map +1 -0
  146. package/dist/tools/swarmUnlock.js +33 -0
  147. package/dist/tools/swarmUnlock.js.map +1 -0
  148. package/dist/tools/swarmUnlockKey.d.ts +3 -0
  149. package/dist/tools/swarmUnlockKey.d.ts.map +1 -0
  150. package/dist/tools/swarmUnlockKey.js +21 -0
  151. package/dist/tools/swarmUnlockKey.js.map +1 -0
  152. package/dist/tools/swarmUpdate.d.ts +3 -0
  153. package/dist/tools/swarmUpdate.d.ts.map +1 -0
  154. package/dist/tools/swarmUpdate.js +29 -0
  155. package/dist/tools/swarmUpdate.js.map +1 -0
  156. package/dist/tools/trustInspect.d.ts +3 -0
  157. package/dist/tools/trustInspect.d.ts.map +1 -0
  158. package/dist/tools/trustInspect.js +22 -0
  159. package/dist/tools/trustInspect.js.map +1 -0
  160. package/dist/tools/trustKey.d.ts +3 -0
  161. package/dist/tools/trustKey.d.ts.map +1 -0
  162. package/dist/tools/trustKey.js +30 -0
  163. package/dist/tools/trustKey.js.map +1 -0
  164. package/dist/tools/trustRevoke.d.ts +3 -0
  165. package/dist/tools/trustRevoke.d.ts.map +1 -0
  166. package/dist/tools/trustRevoke.js +22 -0
  167. package/dist/tools/trustRevoke.js.map +1 -0
  168. package/dist/tools/trustSign.d.ts +3 -0
  169. package/dist/tools/trustSign.d.ts.map +1 -0
  170. package/dist/tools/trustSign.js +22 -0
  171. package/dist/tools/trustSign.js.map +1 -0
  172. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeUpdate.d.ts","sourceRoot":"","sources":["../../src/tools/nodeUpdate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmBhD"}
@@ -0,0 +1,29 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ node: z.string().min(1).describe("Node ID or hostname"),
5
+ availability: z.enum(["active", "pause", "drain"]).optional().describe("Node availability"),
6
+ role: z.enum(["worker", "manager"]).optional().describe("Node role"),
7
+ labels: z.array(z.string()).optional().describe("Labels to add (e.g. ['env=production', 'region=us-east'])"),
8
+ };
9
+ export function register(server) {
10
+ server.tool("docker_nodeUpdate", "Update metadata on a Docker Swarm node (availability, role, labels)", inputSchema, async (args) => {
11
+ try {
12
+ const cmdArgs = ["node", "update"];
13
+ if (args.availability)
14
+ cmdArgs.push("--availability", args.availability);
15
+ if (args.role)
16
+ cmdArgs.push("--role", args.role);
17
+ if (args.labels)
18
+ for (const l of args.labels)
19
+ cmdArgs.push("--label-add", l);
20
+ cmdArgs.push(args.node);
21
+ const output = await execDocker(cmdArgs);
22
+ return { content: [{ type: "text", text: output.trim() || `Node '${args.node}' updated` }] };
23
+ }
24
+ catch (error) {
25
+ return errorResponse(error);
26
+ }
27
+ });
28
+ }
29
+ //# sourceMappingURL=nodeUpdate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeUpdate.js","sourceRoot":"","sources":["../../src/tools/nodeUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACvD,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC3F,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IACpE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;CAC7G,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,qEAAqE,EACrE,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,YAAY;gBAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACzE,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,IAAI,CAAC,MAAM;gBAAE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM;oBAAE,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAC7E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,CAAC;QACxG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=secretCreate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretCreate.d.ts","sourceRoot":"","sources":["../../src/tools/secretCreate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiBhD"}
@@ -0,0 +1,24 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ name: z.string().min(1).describe("Secret name"),
5
+ file: z.string().min(1).describe("Path to the secret file"),
6
+ labels: z.array(z.string()).optional().describe("Labels (e.g. ['env=production'])"),
7
+ };
8
+ export function register(server) {
9
+ server.tool("docker_secretCreate", "Create a Docker Swarm secret from a file", inputSchema, async (args) => {
10
+ try {
11
+ const cmdArgs = ["secret", "create"];
12
+ if (args.labels)
13
+ for (const l of args.labels)
14
+ cmdArgs.push("--label", l);
15
+ cmdArgs.push(args.name, args.file);
16
+ const output = await execDocker(cmdArgs);
17
+ return { content: [{ type: "text", text: output.trim() || `Secret '${args.name}' created` }] };
18
+ }
19
+ catch (error) {
20
+ return errorResponse(error);
21
+ }
22
+ });
23
+ }
24
+ //# sourceMappingURL=secretCreate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretCreate.js","sourceRoot":"","sources":["../../src/tools/secretCreate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC3D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;CACpF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,0CAA0C,EAC1C,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACrC,IAAI,IAAI,CAAC,MAAM;gBAAE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM;oBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,WAAW,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,CAAC;QAC1G,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=secretInspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretInspect.d.ts","sourceRoot":"","sources":["../../src/tools/secretInspect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiBhD"}
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ secret: z.string().min(1).describe("Secret name or ID"),
5
+ pretty: z.boolean().optional().default(false).describe("Print in human-readable format"),
6
+ };
7
+ export function register(server) {
8
+ server.tool("docker_secretInspect", "Display detailed information on a Docker Swarm secret (metadata only, not the value)", inputSchema, async (args) => {
9
+ try {
10
+ const cmdArgs = ["secret", "inspect"];
11
+ if (args.pretty)
12
+ cmdArgs.push("--pretty");
13
+ cmdArgs.push(args.secret);
14
+ const output = await execDocker(cmdArgs);
15
+ return { content: [{ type: "text", text: output.trim() }] };
16
+ }
17
+ catch (error) {
18
+ return errorResponse(error);
19
+ }
20
+ });
21
+ }
22
+ //# sourceMappingURL=secretInspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretInspect.js","sourceRoot":"","sources":["../../src/tools/secretInspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACvD,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;CACzF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,sFAAsF,EACtF,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=secretLs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretLs.d.ts","sourceRoot":"","sources":["../../src/tools/secretLs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgBhD"}
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ filter: z.array(z.string()).optional().describe("Filters (e.g. ['name=my-secret'])"),
5
+ format: z.string().optional().default("json").describe("Output format (default: json)"),
6
+ };
7
+ export function register(server) {
8
+ server.tool("docker_secretLs", "List Docker Swarm secrets", inputSchema, async (args) => {
9
+ try {
10
+ const cmdArgs = ["secret", "ls", "--format", args.format ?? "json"];
11
+ if (args.filter)
12
+ for (const f of args.filter)
13
+ cmdArgs.push("--filter", f);
14
+ const output = await execDocker(cmdArgs);
15
+ return { content: [{ type: "text", text: output.trim() || "No secrets found" }] };
16
+ }
17
+ catch (error) {
18
+ return errorResponse(error);
19
+ }
20
+ });
21
+ }
22
+ //# sourceMappingURL=secretLs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretLs.js","sourceRoot":"","sources":["../../src/tools/secretLs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACpF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CACxF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,2BAA2B,EAC3B,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;YACpE,IAAI,IAAI,CAAC,MAAM;gBAAE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM;oBAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC1E,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,kBAAkB,EAAE,CAAC,EAAE,CAAC;QAC7F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=secretRm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretRm.d.ts","sourceRoot":"","sources":["../../src/tools/secretRm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAchD"}
@@ -0,0 +1,17 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ secrets: z.array(z.string()).min(1).describe("Secret names or IDs to remove"),
5
+ };
6
+ export function register(server) {
7
+ server.tool("docker_secretRm", "Remove one or more Docker Swarm secrets", inputSchema, async (args) => {
8
+ try {
9
+ const output = await execDocker(["secret", "rm", ...args.secrets]);
10
+ return { content: [{ type: "text", text: output.trim() || `Removed secrets: ${args.secrets.join(", ")}` }] };
11
+ }
12
+ catch (error) {
13
+ return errorResponse(error);
14
+ }
15
+ });
16
+ }
17
+ //# sourceMappingURL=secretRm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretRm.js","sourceRoot":"","sources":["../../src/tools/secretRm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CAC9E,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,yCAAyC,EACzC,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACnE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,oBAAoB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACxH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=serviceCreate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceCreate.d.ts","sourceRoot":"","sources":["../../src/tools/serviceCreate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoBzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4BhD"}
@@ -0,0 +1,62 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ name: z.string().min(1).describe("Service name"),
5
+ image: z.string().min(1).describe("Container image"),
6
+ replicas: z.number().optional().describe("Number of replicas"),
7
+ mode: z.enum(["replicated", "global"]).optional().describe("Service mode (default: replicated)"),
8
+ ports: z.array(z.string()).optional().describe("Port mappings (e.g. ['8080:80', '443:443'])"),
9
+ env: z.array(z.string()).optional().describe("Environment variables (e.g. ['KEY=value'])"),
10
+ mounts: z.array(z.string()).optional().describe("Mounts (e.g. ['type=volume,source=data,target=/data'])"),
11
+ networks: z.array(z.string()).optional().describe("Networks to attach"),
12
+ constraints: z.array(z.string()).optional().describe("Placement constraints (e.g. ['node.role==manager'])"),
13
+ labels: z.array(z.string()).optional().describe("Service labels (e.g. ['app=web'])"),
14
+ command: z.array(z.string()).optional().describe("Command to run in the container"),
15
+ restartPolicy: z.string().optional().describe("Restart condition (none, on-failure, any)"),
16
+ limitCpu: z.number().optional().describe("CPU limit (e.g. 0.5)"),
17
+ limitMemory: z.string().optional().describe("Memory limit (e.g. '512m')"),
18
+ };
19
+ export function register(server) {
20
+ server.tool("docker_serviceCreate", "Create a new Docker Swarm service (replicated or global)", inputSchema, async (args) => {
21
+ try {
22
+ const cmdArgs = ["service", "create", "--name", args.name];
23
+ if (args.mode === "global")
24
+ cmdArgs.push("--mode", "global");
25
+ if (args.replicas !== undefined)
26
+ cmdArgs.push("--replicas", String(args.replicas));
27
+ if (args.ports)
28
+ for (const p of args.ports)
29
+ cmdArgs.push("-p", p);
30
+ if (args.env)
31
+ for (const e of args.env)
32
+ cmdArgs.push("-e", e);
33
+ if (args.mounts)
34
+ for (const m of args.mounts)
35
+ cmdArgs.push("--mount", m);
36
+ if (args.networks)
37
+ for (const n of args.networks)
38
+ cmdArgs.push("--network", n);
39
+ if (args.constraints)
40
+ for (const c of args.constraints)
41
+ cmdArgs.push("--constraint", c);
42
+ if (args.labels)
43
+ for (const l of args.labels)
44
+ cmdArgs.push("--label", l);
45
+ if (args.restartPolicy)
46
+ cmdArgs.push("--restart-condition", args.restartPolicy);
47
+ if (args.limitCpu !== undefined)
48
+ cmdArgs.push("--limit-cpu", String(args.limitCpu));
49
+ if (args.limitMemory)
50
+ cmdArgs.push("--limit-memory", args.limitMemory);
51
+ cmdArgs.push(args.image);
52
+ if (args.command)
53
+ cmdArgs.push(...args.command);
54
+ const output = await execDocker(cmdArgs, { timeout: 120_000 });
55
+ return { content: [{ type: "text", text: output.trim() || `Service '${args.name}' created` }] };
56
+ }
57
+ catch (error) {
58
+ return errorResponse(error);
59
+ }
60
+ });
61
+ }
62
+ //# sourceMappingURL=serviceCreate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceCreate.js","sourceRoot":"","sources":["../../src/tools/serviceCreate.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 register(server: McpServer): void;
3
+ //# sourceMappingURL=serviceInspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceInspect.d.ts","sourceRoot":"","sources":["../../src/tools/serviceInspect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiBhD"}
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ service: z.string().min(1).describe("Service name or ID"),
5
+ pretty: z.boolean().optional().default(false).describe("Print in human-readable format"),
6
+ };
7
+ export function register(server) {
8
+ server.tool("docker_serviceInspect", "Display detailed information on a Docker Swarm service", inputSchema, async (args) => {
9
+ try {
10
+ const cmdArgs = ["service", "inspect"];
11
+ if (args.pretty)
12
+ cmdArgs.push("--pretty");
13
+ cmdArgs.push(args.service);
14
+ const output = await execDocker(cmdArgs);
15
+ return { content: [{ type: "text", text: output.trim() }] };
16
+ }
17
+ catch (error) {
18
+ return errorResponse(error);
19
+ }
20
+ });
21
+ }
22
+ //# sourceMappingURL=serviceInspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceInspect.js","sourceRoot":"","sources":["../../src/tools/serviceInspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACzD,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;CACzF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,wDAAwD,EACxD,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=serviceLogs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceLogs.d.ts","sourceRoot":"","sources":["../../src/tools/serviceLogs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmBhD"}
@@ -0,0 +1,28 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ service: z.string().min(1).describe("Service name or ID"),
5
+ tail: z.number().optional().describe("Number of lines from the end of the logs"),
6
+ since: z.string().optional().describe("Show logs since timestamp (e.g. '2024-01-01T00:00:00' or '10m')"),
7
+ timestamps: z.boolean().optional().default(false).describe("Show timestamps"),
8
+ };
9
+ export function register(server) {
10
+ server.tool("docker_serviceLogs", "Fetch logs from a Docker Swarm service or task", inputSchema, async (args) => {
11
+ try {
12
+ const cmdArgs = ["service", "logs", "--no-task-ids"];
13
+ if (args.tail !== undefined)
14
+ cmdArgs.push("--tail", String(args.tail));
15
+ if (args.since)
16
+ cmdArgs.push("--since", args.since);
17
+ if (args.timestamps)
18
+ cmdArgs.push("--timestamps");
19
+ cmdArgs.push(args.service);
20
+ const output = await execDocker(cmdArgs, { timeout: 30_000 });
21
+ return { content: [{ type: "text", text: output.trim() || "No logs available" }] };
22
+ }
23
+ catch (error) {
24
+ return errorResponse(error);
25
+ }
26
+ });
27
+ }
28
+ //# sourceMappingURL=serviceLogs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceLogs.js","sourceRoot":"","sources":["../../src/tools/serviceLogs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAChF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;IACxG,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;CAC9E,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,gDAAgD,EAChD,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;YACrD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACvE,IAAI,IAAI,CAAC,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,mBAAmB,EAAE,CAAC,EAAE,CAAC;QAC9F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=serviceLs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceLs.d.ts","sourceRoot":"","sources":["../../src/tools/serviceLs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgBhD"}
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ filter: z.array(z.string()).optional().describe("Filters (e.g. ['name=web', 'mode=replicated'])"),
5
+ format: z.string().optional().default("json").describe("Output format (default: json)"),
6
+ };
7
+ export function register(server) {
8
+ server.tool("docker_serviceLs", "List Docker Swarm services", inputSchema, async (args) => {
9
+ try {
10
+ const cmdArgs = ["service", "ls", "--format", args.format ?? "json"];
11
+ if (args.filter)
12
+ for (const f of args.filter)
13
+ cmdArgs.push("--filter", f);
14
+ const output = await execDocker(cmdArgs);
15
+ return { content: [{ type: "text", text: output.trim() || "No services found" }] };
16
+ }
17
+ catch (error) {
18
+ return errorResponse(error);
19
+ }
20
+ });
21
+ }
22
+ //# sourceMappingURL=serviceLs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceLs.js","sourceRoot":"","sources":["../../src/tools/serviceLs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;IACjG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CACxF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,4BAA4B,EAC5B,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;YACrE,IAAI,IAAI,CAAC,MAAM;gBAAE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM;oBAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC1E,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,mBAAmB,EAAE,CAAC,EAAE,CAAC;QAC9F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=servicePs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servicePs.d.ts","sourceRoot":"","sources":["../../src/tools/servicePs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiBhD"}
@@ -0,0 +1,24 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ service: z.string().min(1).describe("Service name or ID"),
5
+ filter: z.array(z.string()).optional().describe("Filters (e.g. ['desired-state=running'])"),
6
+ format: z.string().optional().default("json").describe("Output format (default: json)"),
7
+ };
8
+ export function register(server) {
9
+ server.tool("docker_servicePs", "List tasks (containers) of a Docker Swarm service", inputSchema, async (args) => {
10
+ try {
11
+ const cmdArgs = ["service", "ps", "--format", args.format ?? "json"];
12
+ if (args.filter)
13
+ for (const f of args.filter)
14
+ cmdArgs.push("--filter", f);
15
+ cmdArgs.push(args.service);
16
+ const output = await execDocker(cmdArgs);
17
+ return { content: [{ type: "text", text: output.trim() || "No tasks found" }] };
18
+ }
19
+ catch (error) {
20
+ return errorResponse(error);
21
+ }
22
+ });
23
+ }
24
+ //# sourceMappingURL=servicePs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servicePs.js","sourceRoot":"","sources":["../../src/tools/servicePs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACzD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC3F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CACxF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,mDAAmD,EACnD,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;YACrE,IAAI,IAAI,CAAC,MAAM;gBAAE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM;oBAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,gBAAgB,EAAE,CAAC,EAAE,CAAC;QAC3F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=serviceRm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceRm.d.ts","sourceRoot":"","sources":["../../src/tools/serviceRm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAchD"}
@@ -0,0 +1,17 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ services: z.array(z.string()).min(1).describe("Service names or IDs to remove"),
5
+ };
6
+ export function register(server) {
7
+ server.tool("docker_serviceRm", "Remove one or more Docker Swarm services", inputSchema, async (args) => {
8
+ try {
9
+ const output = await execDocker(["service", "rm", ...args.services]);
10
+ return { content: [{ type: "text", text: output.trim() || `Removed services: ${args.services.join(", ")}` }] };
11
+ }
12
+ catch (error) {
13
+ return errorResponse(error);
14
+ }
15
+ });
16
+ }
17
+ //# sourceMappingURL=serviceRm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceRm.js","sourceRoot":"","sources":["../../src/tools/serviceRm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;CAChF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,0CAA0C,EAC1C,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,qBAAqB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC1H,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=serviceRollback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceRollback.d.ts","sourceRoot":"","sources":["../../src/tools/serviceRollback.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiBhD"}
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ service: z.string().min(1).describe("Service name or ID"),
5
+ detach: z.boolean().optional().default(false).describe("Return immediately instead of waiting"),
6
+ };
7
+ export function register(server) {
8
+ server.tool("docker_serviceRollback", "Revert a Docker Swarm service to its previous configuration", inputSchema, async (args) => {
9
+ try {
10
+ const cmdArgs = ["service", "rollback"];
11
+ if (args.detach)
12
+ cmdArgs.push("--detach");
13
+ cmdArgs.push(args.service);
14
+ const output = await execDocker(cmdArgs, { timeout: 120_000 });
15
+ return { content: [{ type: "text", text: output.trim() || `Service '${args.service}' rolled back` }] };
16
+ }
17
+ catch (error) {
18
+ return errorResponse(error);
19
+ }
20
+ });
21
+ }
22
+ //# sourceMappingURL=serviceRollback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceRollback.js","sourceRoot":"","sources":["../../src/tools/serviceRollback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACzD,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CAChG,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,6DAA6D,EAC7D,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC,OAAO,eAAe,EAAE,CAAC,EAAE,CAAC;QAClH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=serviceScale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceScale.d.ts","sourceRoot":"","sources":["../../src/tools/serviceScale.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAchD"}
@@ -0,0 +1,17 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ scales: z.array(z.string()).min(1).describe("Scale specifications (e.g. ['web=5', 'api=3'])"),
5
+ };
6
+ export function register(server) {
7
+ server.tool("docker_serviceScale", "Scale one or more Docker Swarm services to a target replica count", inputSchema, async (args) => {
8
+ try {
9
+ const output = await execDocker(["service", "scale", ...args.scales], { timeout: 120_000 });
10
+ return { content: [{ type: "text", text: output.trim() }] };
11
+ }
12
+ catch (error) {
13
+ return errorResponse(error);
14
+ }
15
+ });
16
+ }
17
+ //# sourceMappingURL=serviceScale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceScale.js","sourceRoot":"","sources":["../../src/tools/serviceScale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gDAAgD,CAAC;CAC9F,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,mEAAmE,EACnE,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=serviceUpdate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceUpdate.d.ts","sourceRoot":"","sources":["../../src/tools/serviceUpdate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwBhD"}
@@ -0,0 +1,45 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ service: z.string().min(1).describe("Service name or ID"),
5
+ image: z.string().optional().describe("Update the service image"),
6
+ replicas: z.number().optional().describe("Update replica count"),
7
+ env: z.array(z.string()).optional().describe("Add or update environment variables"),
8
+ labels: z.array(z.string()).optional().describe("Add or update labels"),
9
+ force: z.boolean().optional().default(false).describe("Force update even if no changes"),
10
+ limitCpu: z.number().optional().describe("CPU limit"),
11
+ limitMemory: z.string().optional().describe("Memory limit"),
12
+ args: z.array(z.string()).optional().describe("Additional raw CLI flags for full flexibility"),
13
+ };
14
+ export function register(server) {
15
+ server.tool("docker_serviceUpdate", "Update a Docker Swarm service (image, replicas, resources, env)", inputSchema, async (args) => {
16
+ try {
17
+ const cmdArgs = ["service", "update"];
18
+ if (args.image)
19
+ cmdArgs.push("--image", args.image);
20
+ if (args.replicas !== undefined)
21
+ cmdArgs.push("--replicas", String(args.replicas));
22
+ if (args.env)
23
+ for (const e of args.env)
24
+ cmdArgs.push("--env-add", e);
25
+ if (args.labels)
26
+ for (const l of args.labels)
27
+ cmdArgs.push("--label-add", l);
28
+ if (args.force)
29
+ cmdArgs.push("--force");
30
+ if (args.limitCpu !== undefined)
31
+ cmdArgs.push("--limit-cpu", String(args.limitCpu));
32
+ if (args.limitMemory)
33
+ cmdArgs.push("--limit-memory", args.limitMemory);
34
+ if (args.args)
35
+ cmdArgs.push(...args.args);
36
+ cmdArgs.push(args.service);
37
+ const output = await execDocker(cmdArgs, { timeout: 120_000 });
38
+ return { content: [{ type: "text", text: output.trim() || `Service '${args.service}' updated` }] };
39
+ }
40
+ catch (error) {
41
+ return errorResponse(error);
42
+ }
43
+ });
44
+ }
45
+ //# sourceMappingURL=serviceUpdate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceUpdate.js","sourceRoot":"","sources":["../../src/tools/serviceUpdate.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 register(server: McpServer): void;
3
+ //# sourceMappingURL=stackConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stackConfig.d.ts","sourceRoot":"","sources":["../../src/tools/stackConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAchD"}