@tmhs/docker-mcp 0.6.0 → 0.8.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 (120) hide show
  1. package/README.md +42 -3
  2. package/dist/index.js +59 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/tools/builderPrune.d.ts +3 -0
  5. package/dist/tools/builderPrune.d.ts.map +1 -0
  6. package/dist/tools/builderPrune.js +43 -0
  7. package/dist/tools/builderPrune.js.map +1 -0
  8. package/dist/tools/buildxBuild.d.ts +3 -0
  9. package/dist/tools/buildxBuild.d.ts.map +1 -0
  10. package/dist/tools/buildxBuild.js +138 -0
  11. package/dist/tools/buildxBuild.js.map +1 -0
  12. package/dist/tools/buildxCreate.d.ts +3 -0
  13. package/dist/tools/buildxCreate.d.ts.map +1 -0
  14. package/dist/tools/buildxCreate.js +66 -0
  15. package/dist/tools/buildxCreate.js.map +1 -0
  16. package/dist/tools/buildxImagetools.d.ts +3 -0
  17. package/dist/tools/buildxImagetools.d.ts.map +1 -0
  18. package/dist/tools/buildxImagetools.js +48 -0
  19. package/dist/tools/buildxImagetools.js.map +1 -0
  20. package/dist/tools/buildxInspect.d.ts +3 -0
  21. package/dist/tools/buildxInspect.d.ts.map +1 -0
  22. package/dist/tools/buildxInspect.js +36 -0
  23. package/dist/tools/buildxInspect.js.map +1 -0
  24. package/dist/tools/buildxLs.d.ts +3 -0
  25. package/dist/tools/buildxLs.d.ts.map +1 -0
  26. package/dist/tools/buildxLs.js +17 -0
  27. package/dist/tools/buildxLs.js.map +1 -0
  28. package/dist/tools/buildxRm.d.ts +3 -0
  29. package/dist/tools/buildxRm.d.ts.map +1 -0
  30. package/dist/tools/buildxRm.js +42 -0
  31. package/dist/tools/buildxRm.js.map +1 -0
  32. package/dist/tools/buildxUse.d.ts +3 -0
  33. package/dist/tools/buildxUse.d.ts.map +1 -0
  34. package/dist/tools/buildxUse.js +42 -0
  35. package/dist/tools/buildxUse.js.map +1 -0
  36. package/dist/tools/composeConfig.d.ts +3 -0
  37. package/dist/tools/composeConfig.d.ts.map +1 -0
  38. package/dist/tools/composeConfig.js +30 -0
  39. package/dist/tools/composeConfig.js.map +1 -0
  40. package/dist/tools/composeCp.d.ts +3 -0
  41. package/dist/tools/composeCp.d.ts.map +1 -0
  42. package/dist/tools/composeCp.js +33 -0
  43. package/dist/tools/composeCp.js.map +1 -0
  44. package/dist/tools/composeCreate.d.ts +3 -0
  45. package/dist/tools/composeCreate.d.ts.map +1 -0
  46. package/dist/tools/composeCreate.js +36 -0
  47. package/dist/tools/composeCreate.js.map +1 -0
  48. package/dist/tools/composeEvents.d.ts +3 -0
  49. package/dist/tools/composeEvents.d.ts.map +1 -0
  50. package/dist/tools/composeEvents.js +31 -0
  51. package/dist/tools/composeEvents.js.map +1 -0
  52. package/dist/tools/composeImages.d.ts +3 -0
  53. package/dist/tools/composeImages.d.ts.map +1 -0
  54. package/dist/tools/composeImages.js +25 -0
  55. package/dist/tools/composeImages.js.map +1 -0
  56. package/dist/tools/composeKill.d.ts +3 -0
  57. package/dist/tools/composeKill.d.ts.map +1 -0
  58. package/dist/tools/composeKill.js +30 -0
  59. package/dist/tools/composeKill.js.map +1 -0
  60. package/dist/tools/composeLs.d.ts +3 -0
  61. package/dist/tools/composeLs.d.ts.map +1 -0
  62. package/dist/tools/composeLs.js +24 -0
  63. package/dist/tools/composeLs.js.map +1 -0
  64. package/dist/tools/composePause.d.ts +3 -0
  65. package/dist/tools/composePause.d.ts.map +1 -0
  66. package/dist/tools/composePause.js +27 -0
  67. package/dist/tools/composePause.js.map +1 -0
  68. package/dist/tools/composePort.d.ts +3 -0
  69. package/dist/tools/composePort.d.ts.map +1 -0
  70. package/dist/tools/composePort.js +30 -0
  71. package/dist/tools/composePort.js.map +1 -0
  72. package/dist/tools/composeRm.d.ts +3 -0
  73. package/dist/tools/composeRm.d.ts.map +1 -0
  74. package/dist/tools/composeRm.js +33 -0
  75. package/dist/tools/composeRm.js.map +1 -0
  76. package/dist/tools/composeRun.d.ts +3 -0
  77. package/dist/tools/composeRun.d.ts.map +1 -0
  78. package/dist/tools/composeRun.js +49 -0
  79. package/dist/tools/composeRun.js.map +1 -0
  80. package/dist/tools/composeScale.d.ts +3 -0
  81. package/dist/tools/composeScale.d.ts.map +1 -0
  82. package/dist/tools/composeScale.js +28 -0
  83. package/dist/tools/composeScale.js.map +1 -0
  84. package/dist/tools/composeStart.d.ts +3 -0
  85. package/dist/tools/composeStart.d.ts.map +1 -0
  86. package/dist/tools/composeStart.js +27 -0
  87. package/dist/tools/composeStart.js.map +1 -0
  88. package/dist/tools/composeStop.d.ts +3 -0
  89. package/dist/tools/composeStop.d.ts.map +1 -0
  90. package/dist/tools/composeStop.js +30 -0
  91. package/dist/tools/composeStop.js.map +1 -0
  92. package/dist/tools/composeTop.d.ts +3 -0
  93. package/dist/tools/composeTop.d.ts.map +1 -0
  94. package/dist/tools/composeTop.js +27 -0
  95. package/dist/tools/composeTop.js.map +1 -0
  96. package/dist/tools/composeUnpause.d.ts +3 -0
  97. package/dist/tools/composeUnpause.d.ts.map +1 -0
  98. package/dist/tools/composeUnpause.js +27 -0
  99. package/dist/tools/composeUnpause.js.map +1 -0
  100. package/dist/tools/manifestAnnotate.d.ts +3 -0
  101. package/dist/tools/manifestAnnotate.d.ts.map +1 -0
  102. package/dist/tools/manifestAnnotate.js +60 -0
  103. package/dist/tools/manifestAnnotate.js.map +1 -0
  104. package/dist/tools/manifestCreate.d.ts +3 -0
  105. package/dist/tools/manifestCreate.d.ts.map +1 -0
  106. package/dist/tools/manifestCreate.js +38 -0
  107. package/dist/tools/manifestCreate.js.map +1 -0
  108. package/dist/tools/manifestInspect.d.ts +3 -0
  109. package/dist/tools/manifestInspect.d.ts.map +1 -0
  110. package/dist/tools/manifestInspect.js +34 -0
  111. package/dist/tools/manifestInspect.js.map +1 -0
  112. package/dist/tools/manifestPush.d.ts +3 -0
  113. package/dist/tools/manifestPush.d.ts.map +1 -0
  114. package/dist/tools/manifestPush.js +34 -0
  115. package/dist/tools/manifestPush.js.map +1 -0
  116. package/dist/tools/manifestRm.d.ts +3 -0
  117. package/dist/tools/manifestRm.d.ts.map +1 -0
  118. package/dist/tools/manifestRm.js +25 -0
  119. package/dist/tools/manifestRm.js.map +1 -0
  120. package/package.json +2 -2
@@ -0,0 +1,42 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ name: z
5
+ .string()
6
+ .min(1)
7
+ .describe("Builder instance name to remove"),
8
+ force: z
9
+ .boolean()
10
+ .optional()
11
+ .default(false)
12
+ .describe("Force removal even if the builder is running"),
13
+ allInactive: z
14
+ .boolean()
15
+ .optional()
16
+ .default(false)
17
+ .describe("Remove all inactive builders"),
18
+ };
19
+ export function register(server) {
20
+ server.tool("docker_buildxRm", "Remove a Docker buildx builder instance", inputSchema, async (args) => {
21
+ try {
22
+ const cmdArgs = ["buildx", "rm"];
23
+ if (args.force) {
24
+ cmdArgs.push("--force");
25
+ }
26
+ if (args.allInactive) {
27
+ cmdArgs.push("--all-inactive");
28
+ }
29
+ cmdArgs.push(args.name);
30
+ const output = await execDocker(cmdArgs);
31
+ return {
32
+ content: [
33
+ { type: "text", text: output.trim() || `Removed builder '${args.name}'` },
34
+ ],
35
+ };
36
+ }
37
+ catch (error) {
38
+ return errorResponse(error);
39
+ }
40
+ });
41
+ }
42
+ //# sourceMappingURL=buildxRm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildxRm.js","sourceRoot":"","sources":["../../src/tools/buildxRm.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;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,KAAK,EAAE,CAAC;SACL,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,8CAA8C,CAAC;IAC3D,WAAW,EAAE,CAAC;SACX,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,8BAA8B,CAAC;CAC5C,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,OAAO,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;YAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACjC,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YAEzC,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,oBAAoB,IAAI,CAAC,IAAI,GAAG,EAAE;iBACnF;aACF,CAAC;QACJ,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=buildxUse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildxUse.d.ts","sourceRoot":"","sources":["../../src/tools/buildxUse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoBzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+BhD"}
@@ -0,0 +1,42 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ name: z
5
+ .string()
6
+ .min(1)
7
+ .describe("Builder instance name to set as current"),
8
+ global: z
9
+ .boolean()
10
+ .optional()
11
+ .default(false)
12
+ .describe("Set builder as default for the current Docker context globally"),
13
+ setDefault: z
14
+ .boolean()
15
+ .optional()
16
+ .default(false)
17
+ .describe("Set builder as default for the Docker context"),
18
+ };
19
+ export function register(server) {
20
+ server.tool("docker_buildxUse", "Set the default Docker buildx builder instance", inputSchema, async (args) => {
21
+ try {
22
+ const cmdArgs = ["buildx", "use"];
23
+ if (args.global) {
24
+ cmdArgs.push("--global");
25
+ }
26
+ if (args.setDefault) {
27
+ cmdArgs.push("--default");
28
+ }
29
+ cmdArgs.push(args.name);
30
+ const output = await execDocker(cmdArgs);
31
+ return {
32
+ content: [
33
+ { type: "text", text: output.trim() || `Now using builder '${args.name}'` },
34
+ ],
35
+ };
36
+ }
37
+ catch (error) {
38
+ return errorResponse(error);
39
+ }
40
+ });
41
+ }
42
+ //# sourceMappingURL=buildxUse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildxUse.js","sourceRoot":"","sources":["../../src/tools/buildxUse.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;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,yCAAyC,CAAC;IACtD,MAAM,EAAE,CAAC;SACN,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,gEAAgE,CAAC;IAC7E,UAAU,EAAE,CAAC;SACV,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,+CAA+C,CAAC;CAC7D,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,gDAAgD,EAChD,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAElC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3B,CAAC;YAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5B,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YAEzC,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,CAAC,IAAI,GAAG,EAAE;iBACrF;aACF,CAAC;QACJ,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=composeConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeConfig.d.ts","sourceRoot":"","sources":["../../src/tools/composeConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqBhD"}
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ file: z.string().optional().describe("Path to compose file"),
5
+ projectDir: z.string().optional().describe("Working directory for the compose project"),
6
+ format: z.enum(["yaml", "json"]).optional().describe("Output format (default: yaml)"),
7
+ services: z.array(z.string()).optional().describe("Specific services to include"),
8
+ };
9
+ export function register(server) {
10
+ server.tool("docker_composeConfig", "Validate, resolve, and render a Docker Compose file in canonical format", inputSchema, async (args) => {
11
+ try {
12
+ const cmdArgs = ["compose"];
13
+ if (args.file)
14
+ cmdArgs.push("-f", args.file);
15
+ if (args.projectDir)
16
+ cmdArgs.push("--project-directory", args.projectDir);
17
+ cmdArgs.push("config");
18
+ if (args.format)
19
+ cmdArgs.push("--format", args.format);
20
+ if (args.services)
21
+ cmdArgs.push(...args.services);
22
+ const output = await execDocker(cmdArgs);
23
+ return { content: [{ type: "text", text: output.trim() }] };
24
+ }
25
+ catch (error) {
26
+ return errorResponse(error);
27
+ }
28
+ });
29
+ }
30
+ //# sourceMappingURL=composeConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeConfig.js","sourceRoot":"","sources":["../../src/tools/composeConfig.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,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACvF,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACrF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;CAClF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,yEAAyE,EACzE,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElD,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=composeCp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeCp.d.ts","sourceRoot":"","sources":["../../src/tools/composeCp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsBhD"}
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ file: z.string().optional().describe("Path to compose file"),
5
+ projectDir: z.string().optional().describe("Working directory for the compose project"),
6
+ source: z.string().min(1).describe("Source path - use 'service:/path' for container source or local path"),
7
+ destination: z.string().min(1).describe("Destination path - use 'service:/path' for container destination or local path"),
8
+ archive: z.boolean().optional().default(false).describe("Archive mode - copy all uid/gid information"),
9
+ index: z.number().optional().describe("Index of the container if service has multiple replicas"),
10
+ };
11
+ export function register(server) {
12
+ server.tool("docker_composeCp", "Copy files between a Docker Compose service container and the local filesystem", inputSchema, async (args) => {
13
+ try {
14
+ const cmdArgs = ["compose"];
15
+ if (args.file)
16
+ cmdArgs.push("-f", args.file);
17
+ if (args.projectDir)
18
+ cmdArgs.push("--project-directory", args.projectDir);
19
+ cmdArgs.push("cp");
20
+ if (args.archive)
21
+ cmdArgs.push("--archive");
22
+ if (args.index !== undefined)
23
+ cmdArgs.push("--index", String(args.index));
24
+ cmdArgs.push(args.source, args.destination);
25
+ const output = await execDocker(cmdArgs, { timeout: 120_000 });
26
+ return { content: [{ type: "text", text: output.trim() || `Copied ${args.source} to ${args.destination}` }] };
27
+ }
28
+ catch (error) {
29
+ return errorResponse(error);
30
+ }
31
+ });
32
+ }
33
+ //# sourceMappingURL=composeCp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeCp.js","sourceRoot":"","sources":["../../src/tools/composeCp.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,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACvF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sEAAsE,CAAC;IAC1G,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gFAAgF,CAAC;IACzH,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IACtG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;CACjG,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,gFAAgF,EAChF,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5C,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAE5C,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,UAAU,IAAI,CAAC,MAAM,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;QACzH,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=composeCreate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeCreate.d.ts","sourceRoot":"","sources":["../../src/tools/composeCreate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuBhD"}
@@ -0,0 +1,36 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ file: z.string().optional().describe("Path to compose file"),
5
+ projectDir: z.string().optional().describe("Working directory for the compose project"),
6
+ services: z.array(z.string()).optional().describe("Specific services to create (default: all)"),
7
+ build: z.boolean().optional().default(false).describe("Build images before creating containers"),
8
+ forceRecreate: z.boolean().optional().default(false).describe("Recreate containers even if unchanged"),
9
+ pull: z.string().optional().describe("Pull policy: 'always', 'missing', 'never'"),
10
+ };
11
+ export function register(server) {
12
+ server.tool("docker_composeCreate", "Create Docker Compose service containers without starting them", inputSchema, async (args) => {
13
+ try {
14
+ const cmdArgs = ["compose"];
15
+ if (args.file)
16
+ cmdArgs.push("-f", args.file);
17
+ if (args.projectDir)
18
+ cmdArgs.push("--project-directory", args.projectDir);
19
+ cmdArgs.push("create");
20
+ if (args.build)
21
+ cmdArgs.push("--build");
22
+ if (args.forceRecreate)
23
+ cmdArgs.push("--force-recreate");
24
+ if (args.pull)
25
+ cmdArgs.push("--pull", args.pull);
26
+ if (args.services)
27
+ cmdArgs.push(...args.services);
28
+ const output = await execDocker(cmdArgs, { timeout: 300_000 });
29
+ return { content: [{ type: "text", text: output.trim() || "Compose containers created" }] };
30
+ }
31
+ catch (error) {
32
+ return errorResponse(error);
33
+ }
34
+ });
35
+ }
36
+ //# sourceMappingURL=composeCreate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeCreate.js","sourceRoot":"","sources":["../../src/tools/composeCreate.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,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACvF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IAC/F,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAChG,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACtG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CAClF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,gEAAgE,EAChE,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,aAAa;gBAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElD,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,4BAA4B,EAAE,CAAC,EAAE,CAAC;QACvG,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=composeEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeEvents.d.ts","sourceRoot":"","sources":["../../src/tools/composeEvents.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwBhD"}
@@ -0,0 +1,31 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ file: z.string().optional().describe("Path to compose file"),
5
+ projectDir: z.string().optional().describe("Working directory for the compose project"),
6
+ services: z.array(z.string()).optional().describe("Specific services to watch"),
7
+ };
8
+ export function register(server) {
9
+ server.tool("docker_composeEvents", "Receive recent real-time events from Docker Compose containers (captures a snapshot)", inputSchema, async (args) => {
10
+ try {
11
+ const cmdArgs = ["compose"];
12
+ if (args.file)
13
+ cmdArgs.push("-f", args.file);
14
+ if (args.projectDir)
15
+ cmdArgs.push("--project-directory", args.projectDir);
16
+ cmdArgs.push("events", "--json");
17
+ if (args.services)
18
+ cmdArgs.push(...args.services);
19
+ const output = await execDocker(cmdArgs, { timeout: 5_000 });
20
+ return { content: [{ type: "text", text: output.trim() || "No events captured" }] };
21
+ }
22
+ catch (error) {
23
+ const err = error;
24
+ if (err.killed || err.message?.includes("timed out")) {
25
+ return { content: [{ type: "text", text: "Event stream timed out (expected - compose events is continuous). Any captured events are above." }] };
26
+ }
27
+ return errorResponse(error);
28
+ }
29
+ });
30
+ }
31
+ //# sourceMappingURL=composeEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeEvents.js","sourceRoot":"","sources":["../../src/tools/composeEvents.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,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACvF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CAChF,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,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,oBAAoB,EAAE,CAAC,EAAE,CAAC;QAC/F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAqC,CAAC;YAClD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kGAAkG,EAAE,CAAC,EAAE,CAAC;YAC5J,CAAC;YACD,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=composeImages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeImages.d.ts","sourceRoot":"","sources":["../../src/tools/composeImages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmBhD"}
@@ -0,0 +1,25 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ file: z.string().optional().describe("Path to compose file"),
5
+ projectDir: z.string().optional().describe("Working directory for the compose project"),
6
+ format: z.string().optional().default("json").describe("Output format (default: json)"),
7
+ };
8
+ export function register(server) {
9
+ server.tool("docker_composeImages", "List images used by Docker Compose service containers", inputSchema, async (args) => {
10
+ try {
11
+ const cmdArgs = ["compose"];
12
+ if (args.file)
13
+ cmdArgs.push("-f", args.file);
14
+ if (args.projectDir)
15
+ cmdArgs.push("--project-directory", args.projectDir);
16
+ cmdArgs.push("images", "--format", args.format ?? "json");
17
+ const output = await execDocker(cmdArgs);
18
+ return { content: [{ type: "text", text: output.trim() || "No images found" }] };
19
+ }
20
+ catch (error) {
21
+ return errorResponse(error);
22
+ }
23
+ });
24
+ }
25
+ //# sourceMappingURL=composeImages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeImages.js","sourceRoot":"","sources":["../../src/tools/composeImages.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,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACvF,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,sBAAsB,EACtB,uDAAuD,EACvD,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;YAE1D,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,iBAAiB,EAAE,CAAC,EAAE,CAAC;QAC5F,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=composeKill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeKill.d.ts","sourceRoot":"","sources":["../../src/tools/composeKill.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqBhD"}
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ file: z.string().optional().describe("Path to compose file"),
5
+ projectDir: z.string().optional().describe("Working directory for the compose project"),
6
+ services: z.array(z.string()).optional().describe("Specific services to kill (default: all)"),
7
+ signal: z.string().optional().describe("Signal to send (e.g. 'SIGKILL', 'SIGTERM')"),
8
+ };
9
+ export function register(server) {
10
+ server.tool("docker_composeKill", "Force stop Docker Compose service containers by sending a signal", inputSchema, async (args) => {
11
+ try {
12
+ const cmdArgs = ["compose"];
13
+ if (args.file)
14
+ cmdArgs.push("-f", args.file);
15
+ if (args.projectDir)
16
+ cmdArgs.push("--project-directory", args.projectDir);
17
+ cmdArgs.push("kill");
18
+ if (args.signal)
19
+ cmdArgs.push("-s", args.signal);
20
+ if (args.services)
21
+ cmdArgs.push(...args.services);
22
+ const output = await execDocker(cmdArgs);
23
+ return { content: [{ type: "text", text: output.trim() || "Services killed" }] };
24
+ }
25
+ catch (error) {
26
+ return errorResponse(error);
27
+ }
28
+ });
29
+ }
30
+ //# sourceMappingURL=composeKill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeKill.js","sourceRoot":"","sources":["../../src/tools/composeKill.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,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACvF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC7F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;CACrF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,kEAAkE,EAClE,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElD,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,iBAAiB,EAAE,CAAC,EAAE,CAAC;QAC5F,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=composeLs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeLs.d.ts","sourceRoot":"","sources":["../../src/tools/composeLs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkBhD"}
@@ -0,0 +1,24 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ all: z.boolean().optional().default(false).describe("Show all projects including stopped"),
5
+ format: z.string().optional().default("json").describe("Output format (default: json)"),
6
+ filter: z.string().optional().describe("Filter projects (e.g. 'status=running')"),
7
+ };
8
+ export function register(server) {
9
+ server.tool("docker_composeLs", "List running Docker Compose projects", inputSchema, async (args) => {
10
+ try {
11
+ const cmdArgs = ["compose", "ls", "--format", args.format ?? "json"];
12
+ if (args.all)
13
+ cmdArgs.push("--all");
14
+ if (args.filter)
15
+ cmdArgs.push("--filter", args.filter);
16
+ const output = await execDocker(cmdArgs);
17
+ return { content: [{ type: "text", text: output.trim() || "No compose projects found" }] };
18
+ }
19
+ catch (error) {
20
+ return errorResponse(error);
21
+ }
22
+ });
23
+ }
24
+ //# sourceMappingURL=composeLs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeLs.js","sourceRoot":"","sources":["../../src/tools/composeLs.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,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC1F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACvF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CAClF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,sCAAsC,EACtC,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,GAAG;gBAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAEvD,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,2BAA2B,EAAE,CAAC,EAAE,CAAC;QACtG,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=composePause.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composePause.d.ts","sourceRoot":"","sources":["../../src/tools/composePause.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoBhD"}
@@ -0,0 +1,27 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ file: z.string().optional().describe("Path to compose file"),
5
+ projectDir: z.string().optional().describe("Working directory for the compose project"),
6
+ services: z.array(z.string()).optional().describe("Specific services to pause (default: all)"),
7
+ };
8
+ export function register(server) {
9
+ server.tool("docker_composePause", "Pause Docker Compose services", inputSchema, async (args) => {
10
+ try {
11
+ const cmdArgs = ["compose"];
12
+ if (args.file)
13
+ cmdArgs.push("-f", args.file);
14
+ if (args.projectDir)
15
+ cmdArgs.push("--project-directory", args.projectDir);
16
+ cmdArgs.push("pause");
17
+ if (args.services)
18
+ cmdArgs.push(...args.services);
19
+ const output = await execDocker(cmdArgs);
20
+ return { content: [{ type: "text", text: output.trim() || "Services paused" }] };
21
+ }
22
+ catch (error) {
23
+ return errorResponse(error);
24
+ }
25
+ });
26
+ }
27
+ //# sourceMappingURL=composePause.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composePause.js","sourceRoot":"","sources":["../../src/tools/composePause.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,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACvF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CAC/F,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,+BAA+B,EAC/B,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElD,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,iBAAiB,EAAE,CAAC,EAAE,CAAC;QAC5F,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=composePort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composePort.d.ts","sourceRoot":"","sources":["../../src/tools/composePort.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqBhD"}
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ file: z.string().optional().describe("Path to compose file"),
5
+ projectDir: z.string().optional().describe("Working directory for the compose project"),
6
+ service: z.string().min(1).describe("Service name"),
7
+ privatePort: z.number().describe("Private port number to query"),
8
+ protocol: z.enum(["tcp", "udp"]).optional().describe("Protocol (default: tcp)"),
9
+ };
10
+ export function register(server) {
11
+ server.tool("docker_composePort", "Print the public port for a Docker Compose service port binding", inputSchema, async (args) => {
12
+ try {
13
+ const cmdArgs = ["compose"];
14
+ if (args.file)
15
+ cmdArgs.push("-f", args.file);
16
+ if (args.projectDir)
17
+ cmdArgs.push("--project-directory", args.projectDir);
18
+ cmdArgs.push("port");
19
+ if (args.protocol)
20
+ cmdArgs.push("--protocol", args.protocol);
21
+ cmdArgs.push(args.service, String(args.privatePort));
22
+ const output = await execDocker(cmdArgs);
23
+ return { content: [{ type: "text", text: output.trim() }] };
24
+ }
25
+ catch (error) {
26
+ return errorResponse(error);
27
+ }
28
+ });
29
+ }
30
+ //# sourceMappingURL=composePort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composePort.js","sourceRoot":"","sources":["../../src/tools/composePort.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,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACvF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;IACnD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAChE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CAChF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,iEAAiE,EACjE,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YAErD,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=composeRm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeRm.d.ts","sourceRoot":"","sources":["../../src/tools/composeRm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsBhD"}
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ file: z.string().optional().describe("Path to compose file"),
5
+ projectDir: z.string().optional().describe("Working directory for the compose project"),
6
+ services: z.array(z.string()).optional().describe("Specific services to remove (default: all stopped)"),
7
+ volumes: z.boolean().optional().default(false).describe("Remove anonymous volumes attached to containers"),
8
+ stop: z.boolean().optional().default(false).describe("Stop running containers before removing"),
9
+ };
10
+ export function register(server) {
11
+ server.tool("docker_composeRm", "Remove stopped Docker Compose service containers", inputSchema, async (args) => {
12
+ try {
13
+ const cmdArgs = ["compose"];
14
+ if (args.file)
15
+ cmdArgs.push("-f", args.file);
16
+ if (args.projectDir)
17
+ cmdArgs.push("--project-directory", args.projectDir);
18
+ cmdArgs.push("rm", "-f");
19
+ if (args.stop)
20
+ cmdArgs.push("--stop");
21
+ if (args.volumes)
22
+ cmdArgs.push("-v");
23
+ if (args.services)
24
+ cmdArgs.push(...args.services);
25
+ const output = await execDocker(cmdArgs);
26
+ return { content: [{ type: "text", text: output.trim() || "Stopped containers removed" }] };
27
+ }
28
+ catch (error) {
29
+ return errorResponse(error);
30
+ }
31
+ });
32
+ }
33
+ //# sourceMappingURL=composeRm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeRm.js","sourceRoot":"","sources":["../../src/tools/composeRm.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,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACvF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IACvG,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IAC1G,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CAChG,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,kDAAkD,EAClD,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElD,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,4BAA4B,EAAE,CAAC,EAAE,CAAC;QACvG,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=composeRun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeRun.d.ts","sourceRoot":"","sources":["../../src/tools/composeRun.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6BhD"}