@tmhs/docker-mcp 0.7.0 → 0.9.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 (124) hide show
  1. package/README.md +53 -3
  2. package/dist/index.js +61 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/tools/composeConfig.d.ts +3 -0
  5. package/dist/tools/composeConfig.d.ts.map +1 -0
  6. package/dist/tools/composeConfig.js +30 -0
  7. package/dist/tools/composeConfig.js.map +1 -0
  8. package/dist/tools/composeCp.d.ts +3 -0
  9. package/dist/tools/composeCp.d.ts.map +1 -0
  10. package/dist/tools/composeCp.js +33 -0
  11. package/dist/tools/composeCp.js.map +1 -0
  12. package/dist/tools/composeCreate.d.ts +3 -0
  13. package/dist/tools/composeCreate.d.ts.map +1 -0
  14. package/dist/tools/composeCreate.js +36 -0
  15. package/dist/tools/composeCreate.js.map +1 -0
  16. package/dist/tools/composeEvents.d.ts +3 -0
  17. package/dist/tools/composeEvents.d.ts.map +1 -0
  18. package/dist/tools/composeEvents.js +31 -0
  19. package/dist/tools/composeEvents.js.map +1 -0
  20. package/dist/tools/composeImages.d.ts +3 -0
  21. package/dist/tools/composeImages.d.ts.map +1 -0
  22. package/dist/tools/composeImages.js +25 -0
  23. package/dist/tools/composeImages.js.map +1 -0
  24. package/dist/tools/composeKill.d.ts +3 -0
  25. package/dist/tools/composeKill.d.ts.map +1 -0
  26. package/dist/tools/composeKill.js +30 -0
  27. package/dist/tools/composeKill.js.map +1 -0
  28. package/dist/tools/composeLs.d.ts +3 -0
  29. package/dist/tools/composeLs.d.ts.map +1 -0
  30. package/dist/tools/composeLs.js +24 -0
  31. package/dist/tools/composeLs.js.map +1 -0
  32. package/dist/tools/composePause.d.ts +3 -0
  33. package/dist/tools/composePause.d.ts.map +1 -0
  34. package/dist/tools/composePause.js +27 -0
  35. package/dist/tools/composePause.js.map +1 -0
  36. package/dist/tools/composePort.d.ts +3 -0
  37. package/dist/tools/composePort.d.ts.map +1 -0
  38. package/dist/tools/composePort.js +30 -0
  39. package/dist/tools/composePort.js.map +1 -0
  40. package/dist/tools/composeRm.d.ts +3 -0
  41. package/dist/tools/composeRm.d.ts.map +1 -0
  42. package/dist/tools/composeRm.js +33 -0
  43. package/dist/tools/composeRm.js.map +1 -0
  44. package/dist/tools/composeRun.d.ts +3 -0
  45. package/dist/tools/composeRun.d.ts.map +1 -0
  46. package/dist/tools/composeRun.js +49 -0
  47. package/dist/tools/composeRun.js.map +1 -0
  48. package/dist/tools/composeScale.d.ts +3 -0
  49. package/dist/tools/composeScale.d.ts.map +1 -0
  50. package/dist/tools/composeScale.js +28 -0
  51. package/dist/tools/composeScale.js.map +1 -0
  52. package/dist/tools/composeStart.d.ts +3 -0
  53. package/dist/tools/composeStart.d.ts.map +1 -0
  54. package/dist/tools/composeStart.js +27 -0
  55. package/dist/tools/composeStart.js.map +1 -0
  56. package/dist/tools/composeStop.d.ts +3 -0
  57. package/dist/tools/composeStop.d.ts.map +1 -0
  58. package/dist/tools/composeStop.js +30 -0
  59. package/dist/tools/composeStop.js.map +1 -0
  60. package/dist/tools/composeTop.d.ts +3 -0
  61. package/dist/tools/composeTop.d.ts.map +1 -0
  62. package/dist/tools/composeTop.js +27 -0
  63. package/dist/tools/composeTop.js.map +1 -0
  64. package/dist/tools/composeUnpause.d.ts +3 -0
  65. package/dist/tools/composeUnpause.d.ts.map +1 -0
  66. package/dist/tools/composeUnpause.js +27 -0
  67. package/dist/tools/composeUnpause.js.map +1 -0
  68. package/dist/tools/contextCreate.d.ts +3 -0
  69. package/dist/tools/contextCreate.d.ts.map +1 -0
  70. package/dist/tools/contextCreate.js +25 -0
  71. package/dist/tools/contextCreate.js.map +1 -0
  72. package/dist/tools/contextInspect.d.ts +3 -0
  73. package/dist/tools/contextInspect.d.ts.map +1 -0
  74. package/dist/tools/contextInspect.js +17 -0
  75. package/dist/tools/contextInspect.js.map +1 -0
  76. package/dist/tools/contextLs.d.ts +3 -0
  77. package/dist/tools/contextLs.d.ts.map +1 -0
  78. package/dist/tools/contextLs.js +17 -0
  79. package/dist/tools/contextLs.js.map +1 -0
  80. package/dist/tools/contextRm.d.ts +3 -0
  81. package/dist/tools/contextRm.d.ts.map +1 -0
  82. package/dist/tools/contextRm.js +22 -0
  83. package/dist/tools/contextRm.js.map +1 -0
  84. package/dist/tools/contextShow.d.ts +3 -0
  85. package/dist/tools/contextShow.d.ts.map +1 -0
  86. package/dist/tools/contextShow.js +14 -0
  87. package/dist/tools/contextShow.js.map +1 -0
  88. package/dist/tools/contextUse.d.ts +3 -0
  89. package/dist/tools/contextUse.d.ts.map +1 -0
  90. package/dist/tools/contextUse.js +17 -0
  91. package/dist/tools/contextUse.js.map +1 -0
  92. package/dist/tools/diff.d.ts +3 -0
  93. package/dist/tools/diff.d.ts.map +1 -0
  94. package/dist/tools/diff.js +17 -0
  95. package/dist/tools/diff.js.map +1 -0
  96. package/dist/tools/export.d.ts +3 -0
  97. package/dist/tools/export.d.ts.map +1 -0
  98. package/dist/tools/export.js +18 -0
  99. package/dist/tools/export.js.map +1 -0
  100. package/dist/tools/imageHistory.d.ts +3 -0
  101. package/dist/tools/imageHistory.d.ts.map +1 -0
  102. package/dist/tools/imageHistory.js +23 -0
  103. package/dist/tools/imageHistory.js.map +1 -0
  104. package/dist/tools/import.d.ts +3 -0
  105. package/dist/tools/import.d.ts.map +1 -0
  106. package/dist/tools/import.js +35 -0
  107. package/dist/tools/import.js.map +1 -0
  108. package/dist/tools/login.d.ts +3 -0
  109. package/dist/tools/login.d.ts.map +1 -0
  110. package/dist/tools/login.js +38 -0
  111. package/dist/tools/login.js.map +1 -0
  112. package/dist/tools/logout.d.ts +3 -0
  113. package/dist/tools/logout.d.ts.map +1 -0
  114. package/dist/tools/logout.js +20 -0
  115. package/dist/tools/logout.js.map +1 -0
  116. package/dist/tools/port.d.ts +3 -0
  117. package/dist/tools/port.d.ts.map +1 -0
  118. package/dist/tools/port.js +26 -0
  119. package/dist/tools/port.js.map +1 -0
  120. package/dist/tools/rename.d.ts +3 -0
  121. package/dist/tools/rename.d.ts.map +1 -0
  122. package/dist/tools/rename.js +18 -0
  123. package/dist/tools/rename.js.map +1 -0
  124. package/package.json +2 -2
@@ -0,0 +1,23 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ image: z.string().min(1).describe("Image name or ID"),
5
+ noTrunc: z.boolean().optional().default(false).describe("Don't truncate output"),
6
+ format: z.string().optional().default("json").describe("Output format (default: json)"),
7
+ };
8
+ export function register(server) {
9
+ server.tool("docker_imageHistory", "Show the layer history of a Docker image (commands, sizes, timestamps)", inputSchema, async (args) => {
10
+ try {
11
+ const cmdArgs = ["history", "--format", args.format ?? "json"];
12
+ if (args.noTrunc)
13
+ cmdArgs.push("--no-trunc");
14
+ cmdArgs.push(args.image);
15
+ const output = await execDocker(cmdArgs);
16
+ return { content: [{ type: "text", text: output.trim() || "No history found" }] };
17
+ }
18
+ catch (error) {
19
+ return errorResponse(error);
20
+ }
21
+ });
22
+ }
23
+ //# sourceMappingURL=imageHistory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageHistory.js","sourceRoot":"","sources":["../../src/tools/imageHistory.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,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACrD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAChF,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,qBAAqB,EACrB,wEAAwE,EACxE,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,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=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/tools/import.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyBhD"}
@@ -0,0 +1,35 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ source: z.string().min(1).describe("Source file path, URL, or '-' for stdin"),
5
+ repository: z.string().optional().describe("Repository name for the imported image"),
6
+ tag: z.string().optional().describe("Tag for the imported image"),
7
+ message: z.string().optional().describe("Commit message for the imported image"),
8
+ changes: z.array(z.string()).optional().describe("Dockerfile instructions to apply (e.g. ['CMD /bin/bash', 'ENV FOO=bar'])"),
9
+ };
10
+ export function register(server) {
11
+ server.tool("docker_import", "Import a tarball to create a Docker filesystem image", inputSchema, async (args) => {
12
+ try {
13
+ const cmdArgs = ["import"];
14
+ if (args.message)
15
+ cmdArgs.push("--message", args.message);
16
+ if (args.changes) {
17
+ for (const c of args.changes)
18
+ cmdArgs.push("--change", c);
19
+ }
20
+ cmdArgs.push(args.source);
21
+ if (args.repository) {
22
+ let ref = args.repository;
23
+ if (args.tag)
24
+ ref += `:${args.tag}`;
25
+ cmdArgs.push(ref);
26
+ }
27
+ const output = await execDocker(cmdArgs, { timeout: 300_000 });
28
+ return { content: [{ type: "text", text: output.trim() || "Image imported" }] };
29
+ }
30
+ catch (error) {
31
+ return errorResponse(error);
32
+ }
33
+ });
34
+ }
35
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/tools/import.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,yCAAyC,CAAC;IAC7E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IACpF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACjE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAChF,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;CAC7H,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,eAAe,EACf,sDAAsD,EACtD,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO;oBAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC1B,IAAI,IAAI,CAAC,GAAG;oBAAE,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACpC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,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,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=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/tools/login.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+BhD"}
@@ -0,0 +1,38 @@
1
+ import { z } from "zod";
2
+ import { errorResponse } from "../utils/docker-api.js";
3
+ import { spawn } from "node:child_process";
4
+ const inputSchema = {
5
+ server: z.string().optional().describe("Registry server (default: Docker Hub)"),
6
+ username: z.string().min(1).describe("Username"),
7
+ password: z.string().min(1).describe("Password or access token"),
8
+ };
9
+ export function register(server) {
10
+ server.tool("docker_login", "Authenticate to a Docker container registry", inputSchema, async (args) => {
11
+ try {
12
+ const cmdArgs = ["login", "-u", args.username, "--password-stdin"];
13
+ if (args.server)
14
+ cmdArgs.push(args.server);
15
+ const output = await new Promise((resolve, reject) => {
16
+ const proc = spawn("docker", cmdArgs, { stdio: ["pipe", "pipe", "pipe"] });
17
+ let stdout = "";
18
+ let stderr = "";
19
+ proc.stdout.on("data", (d) => { stdout += d.toString(); });
20
+ proc.stderr.on("data", (d) => { stderr += d.toString(); });
21
+ proc.on("error", reject);
22
+ proc.on("close", (code) => {
23
+ if (code === 0)
24
+ resolve(stdout);
25
+ else
26
+ reject(new Error(stderr || `docker login exited with code ${code}`));
27
+ });
28
+ proc.stdin.write(args.password);
29
+ proc.stdin.end();
30
+ });
31
+ return { content: [{ type: "text", text: output.trim() || "Login Succeeded" }] };
32
+ }
33
+ catch (error) {
34
+ return errorResponse(error);
35
+ }
36
+ });
37
+ }
38
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/tools/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAC/E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;IAChD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;CACjE,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,cAAc,EACd,6CAA6C,EAC7C,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YACnE,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE3C,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC3E,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACzB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBACxB,IAAI,IAAI,KAAK,CAAC;wBAAE,OAAO,CAAC,MAAM,CAAC,CAAC;;wBAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,iCAAiC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC5E,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACnB,CAAC,CAAC,CAAC;YAEH,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=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/tools/logout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgBhD"}
@@ -0,0 +1,20 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ server: z.string().optional().describe("Registry server (default: Docker Hub)"),
5
+ };
6
+ export function register(server) {
7
+ server.tool("docker_logout", "Log out from a Docker container registry", inputSchema, async (args) => {
8
+ try {
9
+ const cmdArgs = ["logout"];
10
+ if (args.server)
11
+ cmdArgs.push(args.server);
12
+ const output = await execDocker(cmdArgs);
13
+ return { content: [{ type: "text", text: output.trim() || "Logged out" }] };
14
+ }
15
+ catch (error) {
16
+ return errorResponse(error);
17
+ }
18
+ });
19
+ }
20
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/tools/logout.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,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CAChF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,eAAe,EACf,0CAA0C,EAC1C,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3C,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,YAAY,EAAE,CAAC,EAAE,CAAC;QACvF,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=port.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../src/tools/port.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,26 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ containerId: z.string().min(1).describe("Container name or ID"),
5
+ privatePort: z.number().optional().describe("Private port number to query"),
6
+ protocol: z.enum(["tcp", "udp"]).optional().describe("Protocol (default: tcp)"),
7
+ };
8
+ export function register(server) {
9
+ server.tool("docker_port", "List port mappings or a specific mapping for a container", inputSchema, async (args) => {
10
+ try {
11
+ const cmdArgs = ["port", args.containerId];
12
+ if (args.privatePort !== undefined) {
13
+ let portSpec = String(args.privatePort);
14
+ if (args.protocol)
15
+ portSpec += `/${args.protocol}`;
16
+ cmdArgs.push(portSpec);
17
+ }
18
+ const output = await execDocker(cmdArgs);
19
+ return { content: [{ type: "text", text: output.trim() || "No port mappings found" }] };
20
+ }
21
+ catch (error) {
22
+ return errorResponse(error);
23
+ }
24
+ });
25
+ }
26
+ //# sourceMappingURL=port.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port.js","sourceRoot":"","sources":["../../src/tools/port.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,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC/D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC3E,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,aAAa,EACb,0DAA0D,EAC1D,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACnC,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACxC,IAAI,IAAI,CAAC,QAAQ;oBAAE,QAAQ,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;YACD,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,wBAAwB,EAAE,CAAC,EAAE,CAAC;QACnG,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=rename.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename.d.ts","sourceRoot":"","sources":["../../src/tools/rename.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAchD"}
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ import { execDocker, errorResponse } from "../utils/docker-api.js";
3
+ const inputSchema = {
4
+ containerId: z.string().min(1).describe("Container name or ID"),
5
+ newName: z.string().min(1).describe("New name for the container"),
6
+ };
7
+ export function register(server) {
8
+ server.tool("docker_rename", "Rename a Docker container", inputSchema, async (args) => {
9
+ try {
10
+ const output = await execDocker(["rename", args.containerId, args.newName]);
11
+ return { content: [{ type: "text", text: output.trim() || `Renamed ${args.containerId} to ${args.newName}` }] };
12
+ }
13
+ catch (error) {
14
+ return errorResponse(error);
15
+ }
16
+ });
17
+ }
18
+ //# sourceMappingURL=rename.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename.js","sourceRoot":"","sources":["../../src/tools/rename.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,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC/D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CAClE,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,eAAe,EACf,2BAA2B,EAC3B,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,WAAW,IAAI,CAAC,WAAW,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;QAC3H,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tmhs/docker-mcp",
3
- "version": "0.7.0",
4
- "description": "MCP server for Docker CLI integration - 68 tools for containers, images, compose, volumes, networks, cleanup, observability, buildx, manifests, and system info. Full lifecycle, image pipeline, Compose V2, volume/network CRUD, resource pruning, live monitoring, multi-platform builds, and manifest management.",
3
+ "version": "0.9.0",
4
+ "description": "MCP server for Docker CLI integration - 98 tools for containers, images, compose, volumes, networks, cleanup, observability, buildx, manifests, contexts, registry auth, and system info. Full lifecycle, image pipeline, complete Compose V2, volume/network CRUD, resource pruning, live monitoring, multi-platform builds, manifest management, remote host contexts, and registry login.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "bin": {