@tmhs/docker-mcp 0.5.0 → 0.7.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 (80) hide show
  1. package/README.md +36 -2
  2. package/dist/index.js +39 -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/cp.d.ts +3 -0
  37. package/dist/tools/cp.d.ts.map +1 -0
  38. package/dist/tools/cp.js +50 -0
  39. package/dist/tools/cp.js.map +1 -0
  40. package/dist/tools/events.d.ts +3 -0
  41. package/dist/tools/events.d.ts.map +1 -0
  42. package/dist/tools/events.js +48 -0
  43. package/dist/tools/events.js.map +1 -0
  44. package/dist/tools/manifestAnnotate.d.ts +3 -0
  45. package/dist/tools/manifestAnnotate.d.ts.map +1 -0
  46. package/dist/tools/manifestAnnotate.js +60 -0
  47. package/dist/tools/manifestAnnotate.js.map +1 -0
  48. package/dist/tools/manifestCreate.d.ts +3 -0
  49. package/dist/tools/manifestCreate.d.ts.map +1 -0
  50. package/dist/tools/manifestCreate.js +38 -0
  51. package/dist/tools/manifestCreate.js.map +1 -0
  52. package/dist/tools/manifestInspect.d.ts +3 -0
  53. package/dist/tools/manifestInspect.d.ts.map +1 -0
  54. package/dist/tools/manifestInspect.js +34 -0
  55. package/dist/tools/manifestInspect.js.map +1 -0
  56. package/dist/tools/manifestPush.d.ts +3 -0
  57. package/dist/tools/manifestPush.d.ts.map +1 -0
  58. package/dist/tools/manifestPush.js +34 -0
  59. package/dist/tools/manifestPush.js.map +1 -0
  60. package/dist/tools/manifestRm.d.ts +3 -0
  61. package/dist/tools/manifestRm.d.ts.map +1 -0
  62. package/dist/tools/manifestRm.js +25 -0
  63. package/dist/tools/manifestRm.js.map +1 -0
  64. package/dist/tools/stats.d.ts +3 -0
  65. package/dist/tools/stats.d.ts.map +1 -0
  66. package/dist/tools/stats.js +39 -0
  67. package/dist/tools/stats.js.map +1 -0
  68. package/dist/tools/top.d.ts +3 -0
  69. package/dist/tools/top.d.ts.map +1 -0
  70. package/dist/tools/top.js +35 -0
  71. package/dist/tools/top.js.map +1 -0
  72. package/dist/tools/update.d.ts +3 -0
  73. package/dist/tools/update.d.ts.map +1 -0
  74. package/dist/tools/update.js +64 -0
  75. package/dist/tools/update.js.map +1 -0
  76. package/dist/tools/wait.d.ts +3 -0
  77. package/dist/tools/wait.d.ts.map +1 -0
  78. package/dist/tools/wait.js +29 -0
  79. package/dist/tools/wait.js.map +1 -0
  80. package/package.json +2 -2
@@ -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=cp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cp.d.ts","sourceRoot":"","sources":["../../src/tools/cp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4BzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoChD"}
@@ -0,0 +1,50 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ source: z
5
+ .string()
6
+ .min(1)
7
+ .describe("Source path - 'container:/path' for container source or local path"),
8
+ destination: z
9
+ .string()
10
+ .min(1)
11
+ .describe("Destination path - 'container:/path' for container destination or local path"),
12
+ archive: z
13
+ .boolean()
14
+ .optional()
15
+ .default(false)
16
+ .describe("Archive mode - copy all uid/gid information"),
17
+ followLink: z
18
+ .boolean()
19
+ .optional()
20
+ .default(false)
21
+ .describe("Always follow symbolic links in source"),
22
+ };
23
+ export function register(server) {
24
+ server.tool("docker_cp", "Copy files or directories between a container and the local filesystem", inputSchema, async (args) => {
25
+ try {
26
+ const cmdArgs = ["cp"];
27
+ if (args.archive) {
28
+ cmdArgs.push("--archive");
29
+ }
30
+ if (args.followLink) {
31
+ cmdArgs.push("--follow-link");
32
+ }
33
+ cmdArgs.push(args.source, args.destination);
34
+ const output = await execDocker(cmdArgs, { timeout: 120_000 });
35
+ return {
36
+ content: [
37
+ {
38
+ type: "text",
39
+ text: output.trim() ||
40
+ `Copied ${args.source} to ${args.destination}`,
41
+ },
42
+ ],
43
+ };
44
+ }
45
+ catch (error) {
46
+ return errorResponse(error);
47
+ }
48
+ });
49
+ }
50
+ //# sourceMappingURL=cp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cp.js","sourceRoot":"","sources":["../../src/tools/cp.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;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,oEAAoE,CACrE;IACH,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,8EAA8E,CAC/E;IACH,OAAO,EAAE,CAAC;SACP,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,UAAU,EAAE,CAAC;SACV,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,wCAAwC,CAAC;CACtD,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,WAAW,EACX,wEAAwE,EACxE,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;YAEvB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5B,CAAC;YAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAChC,CAAC;YAED,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;YAE/D,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EACF,MAAM,CAAC,IAAI,EAAE;4BACb,UAAU,IAAI,CAAC,MAAM,OAAO,IAAI,CAAC,WAAW,EAAE;qBACjD;iBACF;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=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoBzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsChD"}
@@ -0,0 +1,48 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ since: z
5
+ .string()
6
+ .optional()
7
+ .describe("Show events since timestamp or relative (e.g. '10m', '2024-01-01T00:00:00')"),
8
+ until: z
9
+ .string()
10
+ .optional()
11
+ .describe("Show events until timestamp or relative (defaults to 'now' to prevent blocking)"),
12
+ filter: z
13
+ .array(z.string())
14
+ .optional()
15
+ .describe("Event filters (e.g. 'type=container', 'event=start', 'container=myapp')"),
16
+ };
17
+ export function register(server) {
18
+ server.tool("docker_events", "Stream real-time events from the Docker daemon (returns recent event snapshot)", inputSchema, async (args) => {
19
+ try {
20
+ const cmdArgs = ["events", "--format", "json"];
21
+ if (args.since) {
22
+ cmdArgs.push("--since", args.since);
23
+ }
24
+ else {
25
+ cmdArgs.push("--since", "1h");
26
+ }
27
+ cmdArgs.push("--until", args.until ?? "0s");
28
+ if (args.filter) {
29
+ for (const f of args.filter) {
30
+ cmdArgs.push("--filter", f);
31
+ }
32
+ }
33
+ const output = await execDocker(cmdArgs, { timeout: 30_000 });
34
+ return {
35
+ content: [
36
+ {
37
+ type: "text",
38
+ text: output.trim() || "No events in the specified time range",
39
+ },
40
+ ],
41
+ };
42
+ }
43
+ catch (error) {
44
+ return errorResponse(error);
45
+ }
46
+ });
47
+ }
48
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/tools/events.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,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,6EAA6E,CAAC;IAC1F,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iFAAiF,CAAC;IAC9F,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,yEAAyE,CAC1E;CACJ,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,eAAe,EACf,gFAAgF,EAChF,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YAE/C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAChC,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;YAE5C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAE9D,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,uCAAuC;qBAC/D;iBACF;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=manifestAnnotate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifestAnnotate.d.ts","sourceRoot":"","sources":["../../src/tools/manifestAnnotate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8BzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyChD"}
@@ -0,0 +1,60 @@
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("Manifest list name"),
8
+ image: z
9
+ .string()
10
+ .min(1)
11
+ .describe("Image reference within the manifest list to annotate"),
12
+ os: z
13
+ .string()
14
+ .optional()
15
+ .describe("Override OS (e.g. 'linux', 'windows')"),
16
+ arch: z
17
+ .string()
18
+ .optional()
19
+ .describe("Override architecture (e.g. 'amd64', 'arm64', 'arm')"),
20
+ variant: z
21
+ .string()
22
+ .optional()
23
+ .describe("Override variant (e.g. 'v7', 'v8')"),
24
+ osFeatures: z
25
+ .array(z.string())
26
+ .optional()
27
+ .describe("Override OS features"),
28
+ };
29
+ export function register(server) {
30
+ server.tool("docker_manifestAnnotate", "Add platform information to a manifest list entry", inputSchema, async (args) => {
31
+ try {
32
+ const cmdArgs = ["manifest", "annotate"];
33
+ if (args.os) {
34
+ cmdArgs.push("--os", args.os);
35
+ }
36
+ if (args.arch) {
37
+ cmdArgs.push("--arch", args.arch);
38
+ }
39
+ if (args.variant) {
40
+ cmdArgs.push("--variant", args.variant);
41
+ }
42
+ if (args.osFeatures) {
43
+ for (const f of args.osFeatures) {
44
+ cmdArgs.push("--os-features", f);
45
+ }
46
+ }
47
+ cmdArgs.push(args.name, args.image);
48
+ const output = await execDocker(cmdArgs);
49
+ return {
50
+ content: [
51
+ { type: "text", text: output.trim() || `Annotated '${args.image}' in manifest '${args.name}'` },
52
+ ],
53
+ };
54
+ }
55
+ catch (error) {
56
+ return errorResponse(error);
57
+ }
58
+ });
59
+ }
60
+ //# sourceMappingURL=manifestAnnotate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifestAnnotate.js","sourceRoot":"","sources":["../../src/tools/manifestAnnotate.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,oBAAoB,CAAC;IACjC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,sDAAsD,CAAC;IACnE,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,uCAAuC,CAAC;IACpD,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,sDAAsD,CAAC;IACnE,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oCAAoC,CAAC;IACjD,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,sBAAsB,CAAC;CACpC,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,mDAAmD,EACnD,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAEzC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAEpC,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,cAAc,IAAI,CAAC,KAAK,kBAAkB,IAAI,CAAC,IAAI,GAAG,EAAE;iBACzG;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=manifestCreate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifestCreate.d.ts","sourceRoot":"","sources":["../../src/tools/manifestCreate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2BhD"}
@@ -0,0 +1,38 @@
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("Manifest list name (e.g. 'myregistry/myapp:latest')"),
8
+ images: z
9
+ .array(z.string())
10
+ .min(1)
11
+ .describe("Constituent image references to include in the manifest list"),
12
+ amend: z
13
+ .boolean()
14
+ .optional()
15
+ .default(false)
16
+ .describe("Amend an existing manifest list instead of creating a new one"),
17
+ };
18
+ export function register(server) {
19
+ server.tool("docker_manifestCreate", "Create a local manifest list for multi-architecture Docker images", inputSchema, async (args) => {
20
+ try {
21
+ const cmdArgs = ["manifest", "create"];
22
+ if (args.amend) {
23
+ cmdArgs.push("--amend");
24
+ }
25
+ cmdArgs.push(args.name, ...args.images);
26
+ const output = await execDocker(cmdArgs);
27
+ return {
28
+ content: [
29
+ { type: "text", text: output.trim() || `Created manifest list '${args.name}'` },
30
+ ],
31
+ };
32
+ }
33
+ catch (error) {
34
+ return errorResponse(error);
35
+ }
36
+ });
37
+ }
38
+ //# sourceMappingURL=manifestCreate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifestCreate.js","sourceRoot":"","sources":["../../src/tools/manifestCreate.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,qDAAqD,CAAC;IAClE,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,8DAA8D,CAAC;IAC3E,KAAK,EAAE,CAAC;SACL,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,+DAA+D,CAAC;CAC7E,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,mEAAmE,EACnE,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAEvC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YAExC,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,0BAA0B,IAAI,CAAC,IAAI,GAAG,EAAE;iBACzF;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=manifestInspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifestInspect.d.ts","sourceRoot":"","sources":["../../src/tools/manifestInspect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2BhD"}
@@ -0,0 +1,34 @@
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("Manifest list or image name to inspect"),
8
+ verbose: z
9
+ .boolean()
10
+ .optional()
11
+ .default(false)
12
+ .describe("Output additional info including layers and platform details"),
13
+ };
14
+ export function register(server) {
15
+ server.tool("docker_manifestInspect", "Display an image manifest or manifest list", inputSchema, async (args) => {
16
+ try {
17
+ const cmdArgs = ["manifest", "inspect"];
18
+ if (args.verbose) {
19
+ cmdArgs.push("--verbose");
20
+ }
21
+ cmdArgs.push(args.name);
22
+ const output = await execDocker(cmdArgs);
23
+ return {
24
+ content: [
25
+ { type: "text", text: output.trim() },
26
+ ],
27
+ };
28
+ }
29
+ catch (error) {
30
+ return errorResponse(error);
31
+ }
32
+ });
33
+ }
34
+ //# sourceMappingURL=manifestInspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifestInspect.js","sourceRoot":"","sources":["../../src/tools/manifestInspect.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,wCAAwC,CAAC;IACrD,OAAO,EAAE,CAAC;SACP,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,8DAA8D,CAAC;CAC5E,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,4CAA4C,EAC5C,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAExC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,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,EAAE;iBAC/C;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=manifestPush.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifestPush.d.ts","sourceRoot":"","sources":["../../src/tools/manifestPush.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2BhD"}
@@ -0,0 +1,34 @@
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("Manifest list name to push"),
8
+ purge: z
9
+ .boolean()
10
+ .optional()
11
+ .default(false)
12
+ .describe("Remove the local manifest list after push"),
13
+ };
14
+ export function register(server) {
15
+ server.tool("docker_manifestPush", "Push a manifest list to a registry", inputSchema, async (args) => {
16
+ try {
17
+ const cmdArgs = ["manifest", "push"];
18
+ if (args.purge) {
19
+ cmdArgs.push("--purge");
20
+ }
21
+ cmdArgs.push(args.name);
22
+ const output = await execDocker(cmdArgs, { timeout: 120_000 });
23
+ return {
24
+ content: [
25
+ { type: "text", text: output.trim() || `Pushed manifest list '${args.name}'` },
26
+ ],
27
+ };
28
+ }
29
+ catch (error) {
30
+ return errorResponse(error);
31
+ }
32
+ });
33
+ }
34
+ //# sourceMappingURL=manifestPush.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifestPush.js","sourceRoot":"","sources":["../../src/tools/manifestPush.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,4BAA4B,CAAC;IACzC,KAAK,EAAE,CAAC;SACL,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,2CAA2C,CAAC;CACzD,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,oCAAoC,EACpC,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAErC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAE/D,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,yBAAyB,IAAI,CAAC,IAAI,GAAG,EAAE;iBACxF;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=manifestRm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifestRm.d.ts","sourceRoot":"","sources":["../../src/tools/manifestRm.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,25 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ names: z
5
+ .array(z.string())
6
+ .min(1)
7
+ .describe("Manifest list names to remove"),
8
+ };
9
+ export function register(server) {
10
+ server.tool("docker_manifestRm", "Remove local manifest lists", inputSchema, async (args) => {
11
+ try {
12
+ const cmdArgs = ["manifest", "rm", ...args.names];
13
+ const output = await execDocker(cmdArgs);
14
+ return {
15
+ content: [
16
+ { type: "text", text: output.trim() || `Removed manifest list(s): ${args.names.join(", ")}` },
17
+ ],
18
+ };
19
+ }
20
+ catch (error) {
21
+ return errorResponse(error);
22
+ }
23
+ });
24
+ }
25
+ //# sourceMappingURL=manifestRm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifestRm.js","sourceRoot":"","sources":["../../src/tools/manifestRm.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,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,+BAA+B,CAAC;CAC7C,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,6BAA6B,EAC7B,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAElD,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,6BAA6B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;iBACvG;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=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/tools/stats.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgChD"}
@@ -0,0 +1,39 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ containers: z
5
+ .array(z.string())
6
+ .optional()
7
+ .describe("Container IDs or names to show stats for (omit for all running containers)"),
8
+ noStream: z
9
+ .boolean()
10
+ .optional()
11
+ .default(true)
12
+ .describe("Disable streaming and return a single snapshot (default true)"),
13
+ };
14
+ export function register(server) {
15
+ server.tool("docker_stats", "Show live resource usage statistics for containers (CPU, memory, network I/O)", inputSchema, async (args) => {
16
+ try {
17
+ const cmdArgs = ["stats", "--format", "json"];
18
+ if (args.noStream !== false) {
19
+ cmdArgs.push("--no-stream");
20
+ }
21
+ if (args.containers && args.containers.length > 0) {
22
+ cmdArgs.push(...args.containers);
23
+ }
24
+ const output = await execDocker(cmdArgs, { timeout: 30_000 });
25
+ return {
26
+ content: [
27
+ {
28
+ type: "text",
29
+ text: output.trim() || "No running containers",
30
+ },
31
+ ],
32
+ };
33
+ }
34
+ catch (error) {
35
+ return errorResponse(error);
36
+ }
37
+ });
38
+ }
39
+ //# sourceMappingURL=stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/tools/stats.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,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,4EAA4E,CAC7E;IACH,QAAQ,EAAE,CAAC;SACR,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,+DAA+D,CAAC;CAC7E,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,cAAc,EACd,+EAA+E,EAC/E,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YAE9C,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC9B,CAAC;YAED,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YACnC,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAE9D,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,uBAAuB;qBAC/C;iBACF;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=top.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"top.d.ts","sourceRoot":"","sources":["../../src/tools/top.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4BhD"}
@@ -0,0 +1,35 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ containerId: z
5
+ .string()
6
+ .min(1)
7
+ .describe("Container ID or name"),
8
+ psArgs: z
9
+ .string()
10
+ .optional()
11
+ .describe("Arguments to pass to ps (e.g. 'aux', '-ef')"),
12
+ };
13
+ export function register(server) {
14
+ server.tool("docker_top", "Show running processes in a container", inputSchema, async (args) => {
15
+ try {
16
+ const cmdArgs = ["top", args.containerId];
17
+ if (args.psArgs) {
18
+ cmdArgs.push(args.psArgs);
19
+ }
20
+ const output = await execDocker(cmdArgs);
21
+ return {
22
+ content: [
23
+ {
24
+ type: "text",
25
+ text: output.trim() || "No processes found",
26
+ },
27
+ ],
28
+ };
29
+ }
30
+ catch (error) {
31
+ return errorResponse(error);
32
+ }
33
+ });
34
+ }
35
+ //# sourceMappingURL=top.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"top.js","sourceRoot":"","sources":["../../src/tools/top.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,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,sBAAsB,CAAC;IACnC,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,6CAA6C,CAAC;CAC3D,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,uCAAuC,EACvC,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAE1C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YAEzC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,oBAAoB;qBAC5C;iBACF;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=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/tools/update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgCzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8ChD"}
@@ -0,0 +1,64 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ containerId: z
5
+ .string()
6
+ .min(1)
7
+ .describe("Container ID or name to update"),
8
+ cpus: z
9
+ .number()
10
+ .optional()
11
+ .describe("Number of CPUs (e.g. 1.5)"),
12
+ memory: z
13
+ .string()
14
+ .optional()
15
+ .describe("Memory limit (e.g. '512m', '1g')"),
16
+ memorySwap: z
17
+ .string()
18
+ .optional()
19
+ .describe("Total memory + swap limit (e.g. '1g', '-1' for unlimited)"),
20
+ cpuShares: z
21
+ .number()
22
+ .optional()
23
+ .describe("CPU shares (relative weight)"),
24
+ restartPolicy: z
25
+ .string()
26
+ .optional()
27
+ .describe("Restart policy - 'no', 'always', 'unless-stopped', 'on-failure[:max-retries]'"),
28
+ };
29
+ export function register(server) {
30
+ server.tool("docker_update", "Update resource configuration of a running container (CPU, memory, restart policy)", inputSchema, async (args) => {
31
+ try {
32
+ const cmdArgs = ["update"];
33
+ if (args.cpus !== undefined) {
34
+ cmdArgs.push("--cpus", String(args.cpus));
35
+ }
36
+ if (args.memory) {
37
+ cmdArgs.push("--memory", args.memory);
38
+ }
39
+ if (args.memorySwap) {
40
+ cmdArgs.push("--memory-swap", args.memorySwap);
41
+ }
42
+ if (args.cpuShares !== undefined) {
43
+ cmdArgs.push("--cpu-shares", String(args.cpuShares));
44
+ }
45
+ if (args.restartPolicy) {
46
+ cmdArgs.push("--restart", args.restartPolicy);
47
+ }
48
+ cmdArgs.push(args.containerId);
49
+ const output = await execDocker(cmdArgs);
50
+ return {
51
+ content: [
52
+ {
53
+ type: "text",
54
+ text: output.trim() || `Updated container ${args.containerId}`,
55
+ },
56
+ ],
57
+ };
58
+ }
59
+ catch (error) {
60
+ return errorResponse(error);
61
+ }
62
+ });
63
+ }
64
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/tools/update.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,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,gCAAgC,CAAC;IAC7C,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2BAA2B,CAAC;IACxC,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kCAAkC,CAAC;IAC/C,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACxE,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,8BAA8B,CAAC;IAC3C,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,+EAA+E,CAChF;CACJ,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,eAAe,EACf,oFAAoF,EACpF,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE3B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5C,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAChD,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE/B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YAEzC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,qBAAqB,IAAI,CAAC,WAAW,EAAE;qBAC/D;iBACF;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=wait.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../src/tools/wait.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwBhD"}