@tmhs/docker-mcp 0.4.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 (159) hide show
  1. package/LICENSE +31 -0
  2. package/README.md +111 -0
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +88 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/tools/build.d.ts +3 -0
  8. package/dist/tools/build.d.ts.map +1 -0
  9. package/dist/tools/build.js +90 -0
  10. package/dist/tools/build.js.map +1 -0
  11. package/dist/tools/commit.d.ts +3 -0
  12. package/dist/tools/commit.d.ts.map +1 -0
  13. package/dist/tools/commit.js +66 -0
  14. package/dist/tools/commit.js.map +1 -0
  15. package/dist/tools/composeBuild.d.ts +3 -0
  16. package/dist/tools/composeBuild.d.ts.map +1 -0
  17. package/dist/tools/composeBuild.js +59 -0
  18. package/dist/tools/composeBuild.js.map +1 -0
  19. package/dist/tools/composeDown.d.ts +3 -0
  20. package/dist/tools/composeDown.d.ts.map +1 -0
  21. package/dist/tools/composeDown.js +58 -0
  22. package/dist/tools/composeDown.js.map +1 -0
  23. package/dist/tools/composeExec.d.ts +3 -0
  24. package/dist/tools/composeExec.d.ts.map +1 -0
  25. package/dist/tools/composeExec.js +68 -0
  26. package/dist/tools/composeExec.js.map +1 -0
  27. package/dist/tools/composeLogs.d.ts +3 -0
  28. package/dist/tools/composeLogs.d.ts.map +1 -0
  29. package/dist/tools/composeLogs.js +65 -0
  30. package/dist/tools/composeLogs.js.map +1 -0
  31. package/dist/tools/composePs.d.ts +3 -0
  32. package/dist/tools/composePs.d.ts.map +1 -0
  33. package/dist/tools/composePs.js +51 -0
  34. package/dist/tools/composePs.js.map +1 -0
  35. package/dist/tools/composePull.d.ts +3 -0
  36. package/dist/tools/composePull.d.ts.map +1 -0
  37. package/dist/tools/composePull.js +43 -0
  38. package/dist/tools/composePull.js.map +1 -0
  39. package/dist/tools/composeRestart.d.ts +3 -0
  40. package/dist/tools/composeRestart.d.ts.map +1 -0
  41. package/dist/tools/composeRestart.js +50 -0
  42. package/dist/tools/composeRestart.js.map +1 -0
  43. package/dist/tools/composeUp.d.ts +3 -0
  44. package/dist/tools/composeUp.d.ts.map +1 -0
  45. package/dist/tools/composeUp.js +83 -0
  46. package/dist/tools/composeUp.js.map +1 -0
  47. package/dist/tools/containerLogs.d.ts +3 -0
  48. package/dist/tools/containerLogs.d.ts.map +1 -0
  49. package/dist/tools/containerLogs.js +56 -0
  50. package/dist/tools/containerLogs.js.map +1 -0
  51. package/dist/tools/create.d.ts +3 -0
  52. package/dist/tools/create.d.ts.map +1 -0
  53. package/dist/tools/create.js +91 -0
  54. package/dist/tools/create.js.map +1 -0
  55. package/dist/tools/diskUsage.d.ts +3 -0
  56. package/dist/tools/diskUsage.d.ts.map +1 -0
  57. package/dist/tools/diskUsage.js +19 -0
  58. package/dist/tools/diskUsage.js.map +1 -0
  59. package/dist/tools/exec.d.ts +3 -0
  60. package/dist/tools/exec.d.ts.map +1 -0
  61. package/dist/tools/exec.js +56 -0
  62. package/dist/tools/exec.js.map +1 -0
  63. package/dist/tools/inspectContainer.d.ts +3 -0
  64. package/dist/tools/inspectContainer.d.ts.map +1 -0
  65. package/dist/tools/inspectContainer.js +30 -0
  66. package/dist/tools/inspectContainer.js.map +1 -0
  67. package/dist/tools/inspectImage.d.ts +3 -0
  68. package/dist/tools/inspectImage.d.ts.map +1 -0
  69. package/dist/tools/inspectImage.js +30 -0
  70. package/dist/tools/inspectImage.js.map +1 -0
  71. package/dist/tools/kill.d.ts +3 -0
  72. package/dist/tools/kill.d.ts.map +1 -0
  73. package/dist/tools/kill.js +36 -0
  74. package/dist/tools/kill.js.map +1 -0
  75. package/dist/tools/listContainers.d.ts +3 -0
  76. package/dist/tools/listContainers.d.ts.map +1 -0
  77. package/dist/tools/listContainers.js +63 -0
  78. package/dist/tools/listContainers.js.map +1 -0
  79. package/dist/tools/listImages.d.ts +3 -0
  80. package/dist/tools/listImages.d.ts.map +1 -0
  81. package/dist/tools/listImages.js +44 -0
  82. package/dist/tools/listImages.js.map +1 -0
  83. package/dist/tools/listNetworks.d.ts +3 -0
  84. package/dist/tools/listNetworks.d.ts.map +1 -0
  85. package/dist/tools/listNetworks.js +37 -0
  86. package/dist/tools/listNetworks.js.map +1 -0
  87. package/dist/tools/listVolumes.d.ts +3 -0
  88. package/dist/tools/listVolumes.d.ts.map +1 -0
  89. package/dist/tools/listVolumes.js +37 -0
  90. package/dist/tools/listVolumes.js.map +1 -0
  91. package/dist/tools/load.d.ts +3 -0
  92. package/dist/tools/load.d.ts.map +1 -0
  93. package/dist/tools/load.js +25 -0
  94. package/dist/tools/load.js.map +1 -0
  95. package/dist/tools/pause.d.ts +3 -0
  96. package/dist/tools/pause.d.ts.map +1 -0
  97. package/dist/tools/pause.js +27 -0
  98. package/dist/tools/pause.js.map +1 -0
  99. package/dist/tools/pull.d.ts +3 -0
  100. package/dist/tools/pull.d.ts.map +1 -0
  101. package/dist/tools/pull.js +41 -0
  102. package/dist/tools/pull.js.map +1 -0
  103. package/dist/tools/push.d.ts +3 -0
  104. package/dist/tools/push.d.ts.map +1 -0
  105. package/dist/tools/push.js +34 -0
  106. package/dist/tools/push.js.map +1 -0
  107. package/dist/tools/restart.d.ts +3 -0
  108. package/dist/tools/restart.d.ts.map +1 -0
  109. package/dist/tools/restart.js +38 -0
  110. package/dist/tools/restart.js.map +1 -0
  111. package/dist/tools/rm.d.ts +3 -0
  112. package/dist/tools/rm.d.ts.map +1 -0
  113. package/dist/tools/rm.js +45 -0
  114. package/dist/tools/rm.js.map +1 -0
  115. package/dist/tools/rmi.d.ts +3 -0
  116. package/dist/tools/rmi.d.ts.map +1 -0
  117. package/dist/tools/rmi.js +42 -0
  118. package/dist/tools/rmi.js.map +1 -0
  119. package/dist/tools/run.d.ts +3 -0
  120. package/dist/tools/run.d.ts.map +1 -0
  121. package/dist/tools/run.js +99 -0
  122. package/dist/tools/run.js.map +1 -0
  123. package/dist/tools/save.d.ts +3 -0
  124. package/dist/tools/save.d.ts.map +1 -0
  125. package/dist/tools/save.js +32 -0
  126. package/dist/tools/save.js.map +1 -0
  127. package/dist/tools/searchHub.d.ts +3 -0
  128. package/dist/tools/searchHub.d.ts.map +1 -0
  129. package/dist/tools/searchHub.js +59 -0
  130. package/dist/tools/searchHub.js.map +1 -0
  131. package/dist/tools/start.d.ts +3 -0
  132. package/dist/tools/start.d.ts.map +1 -0
  133. package/dist/tools/start.js +27 -0
  134. package/dist/tools/start.js.map +1 -0
  135. package/dist/tools/stop.d.ts +3 -0
  136. package/dist/tools/stop.d.ts.map +1 -0
  137. package/dist/tools/stop.js +38 -0
  138. package/dist/tools/stop.js.map +1 -0
  139. package/dist/tools/systemInfo.d.ts +3 -0
  140. package/dist/tools/systemInfo.d.ts.map +1 -0
  141. package/dist/tools/systemInfo.js +18 -0
  142. package/dist/tools/systemInfo.js.map +1 -0
  143. package/dist/tools/tag.d.ts +3 -0
  144. package/dist/tools/tag.d.ts.map +1 -0
  145. package/dist/tools/tag.js +31 -0
  146. package/dist/tools/tag.js.map +1 -0
  147. package/dist/tools/unpause.d.ts +3 -0
  148. package/dist/tools/unpause.d.ts.map +1 -0
  149. package/dist/tools/unpause.js +27 -0
  150. package/dist/tools/unpause.js.map +1 -0
  151. package/dist/utils/docker-api.d.ts +15 -0
  152. package/dist/utils/docker-api.d.ts.map +1 -0
  153. package/dist/utils/docker-api.js +82 -0
  154. package/dist/utils/docker-api.js.map +1 -0
  155. package/dist/utils/errors.d.ts +23 -0
  156. package/dist/utils/errors.d.ts.map +1 -0
  157. package/dist/utils/errors.js +45 -0
  158. package/dist/utils/errors.js.map +1 -0
  159. package/package.json +47 -0
@@ -0,0 +1,82 @@
1
+ import { execFile } from "node:child_process";
2
+ import { promisify } from "node:util";
3
+ import { DockerError, DockerNotFoundError, DockerNotRunningError, ContainerNotFoundError, ImageNotFoundError, PermissionDeniedError, } from "./errors.js";
4
+ const execFileAsync = promisify(execFile);
5
+ const EXEC_TIMEOUT_MS = 30_000;
6
+ export async function checkDockerAvailable() {
7
+ try {
8
+ await execFileAsync("docker", ["version", "--format", "json"], {
9
+ timeout: EXEC_TIMEOUT_MS,
10
+ });
11
+ }
12
+ catch (error) {
13
+ const err = error;
14
+ if (err.code === "ENOENT") {
15
+ throw new DockerNotFoundError();
16
+ }
17
+ if (err.stderr?.includes("Cannot connect") ||
18
+ err.stderr?.includes("Is the docker daemon running")) {
19
+ throw new DockerNotRunningError();
20
+ }
21
+ if (err.stderr?.includes("permission denied") ||
22
+ err.stderr?.includes("Permission denied")) {
23
+ throw new PermissionDeniedError();
24
+ }
25
+ throw new DockerError(`Docker check failed: ${err.message}`);
26
+ }
27
+ }
28
+ export async function execDocker(args, options = {}) {
29
+ const { timeout = EXEC_TIMEOUT_MS } = options;
30
+ try {
31
+ const { stdout, stderr } = await execFileAsync("docker", args, {
32
+ timeout,
33
+ maxBuffer: 10 * 1024 * 1024,
34
+ });
35
+ if (stderr && !stdout) {
36
+ throw new DockerError(stderr.trim());
37
+ }
38
+ return stdout;
39
+ }
40
+ catch (error) {
41
+ const err = error;
42
+ if (err.code === "ENOENT") {
43
+ throw new DockerNotFoundError();
44
+ }
45
+ const stderr = err.stderr ?? err.message ?? "";
46
+ if (stderr.includes("Cannot connect") ||
47
+ stderr.includes("Is the docker daemon running")) {
48
+ throw new DockerNotRunningError();
49
+ }
50
+ if (stderr.includes("permission denied") ||
51
+ stderr.includes("Permission denied")) {
52
+ throw new PermissionDeniedError();
53
+ }
54
+ if (stderr.includes("No such container")) {
55
+ const match = stderr.match(/No such container:\s*(\S+)/);
56
+ throw new ContainerNotFoundError(match?.[1] ?? "unknown");
57
+ }
58
+ if (stderr.includes("No such image") ||
59
+ stderr.includes("reference does not exist")) {
60
+ const match = stderr.match(/No such image:\s*(\S+)/);
61
+ throw new ImageNotFoundError(match?.[1] ?? "unknown");
62
+ }
63
+ throw new DockerError(stderr.trim() || err.message, undefined, args[0]);
64
+ }
65
+ }
66
+ export function parseJsonLines(output) {
67
+ const lines = output.trim().split("\n").filter(Boolean);
68
+ return lines.map((line) => JSON.parse(line));
69
+ }
70
+ export function errorResponse(error) {
71
+ if (error instanceof Error) {
72
+ return {
73
+ content: [{ type: "text", text: error.message }],
74
+ isError: true,
75
+ };
76
+ }
77
+ return {
78
+ content: [{ type: "text", text: "An unknown error occurred." }],
79
+ isError: true,
80
+ };
81
+ }
82
+ //# sourceMappingURL=docker-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker-api.js","sourceRoot":"","sources":["../../src/utils/docker-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export declare class DockerError extends Error {
2
+ readonly statusCode?: number;
3
+ readonly command?: string;
4
+ constructor(message: string, statusCode?: number, command?: string);
5
+ }
6
+ export declare class DockerNotFoundError extends DockerError {
7
+ constructor();
8
+ }
9
+ export declare class DockerNotRunningError extends DockerError {
10
+ constructor();
11
+ }
12
+ export declare class ContainerNotFoundError extends DockerError {
13
+ readonly containerId: string;
14
+ constructor(containerId: string);
15
+ }
16
+ export declare class ImageNotFoundError extends DockerError {
17
+ readonly imageRef: string;
18
+ constructor(imageRef: string);
19
+ }
20
+ export declare class PermissionDeniedError extends DockerError {
21
+ constructor();
22
+ }
23
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAY,SAAQ,KAAK;IACpC,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpC,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC;gBAErB,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAMnE;AAED,qBAAa,mBAAoB,SAAQ,WAAW;;CAOnD;AAED,qBAAa,qBAAsB,SAAQ,WAAW;;CAOrD;AAED,qBAAa,sBAAuB,SAAQ,WAAW;IACrD,SAAgB,WAAW,EAAE,MAAM,CAAC;gBAExB,WAAW,EAAE,MAAM;CAKhC;AAED,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAErB,QAAQ,EAAE,MAAM;CAK7B;AAED,qBAAa,qBAAsB,SAAQ,WAAW;;CAOrD"}
@@ -0,0 +1,45 @@
1
+ export class DockerError extends Error {
2
+ statusCode;
3
+ command;
4
+ constructor(message, statusCode, command) {
5
+ super(message);
6
+ this.name = "DockerError";
7
+ this.statusCode = statusCode;
8
+ this.command = command;
9
+ }
10
+ }
11
+ export class DockerNotFoundError extends DockerError {
12
+ constructor() {
13
+ super("Docker CLI not found. Make sure Docker is installed and the 'docker' command is available on your PATH.");
14
+ this.name = "DockerNotFoundError";
15
+ }
16
+ }
17
+ export class DockerNotRunningError extends DockerError {
18
+ constructor() {
19
+ super("Docker daemon is not running. Start Docker Desktop or the Docker service and try again.");
20
+ this.name = "DockerNotRunningError";
21
+ }
22
+ }
23
+ export class ContainerNotFoundError extends DockerError {
24
+ containerId;
25
+ constructor(containerId) {
26
+ super(`Container not found: ${containerId}`);
27
+ this.name = "ContainerNotFoundError";
28
+ this.containerId = containerId;
29
+ }
30
+ }
31
+ export class ImageNotFoundError extends DockerError {
32
+ imageRef;
33
+ constructor(imageRef) {
34
+ super(`Image not found: ${imageRef}`);
35
+ this.name = "ImageNotFoundError";
36
+ this.imageRef = imageRef;
37
+ }
38
+ }
39
+ export class PermissionDeniedError extends DockerError {
40
+ constructor() {
41
+ super("Permission denied. You may need to run Docker with elevated privileges or add your user to the 'docker' group.");
42
+ this.name = "PermissionDeniedError";
43
+ }
44
+ }
45
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpB,UAAU,CAAU;IACpB,OAAO,CAAU;IAEjC,YAAY,OAAe,EAAE,UAAmB,EAAE,OAAgB;QAChE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IAClD;QACE,KAAK,CACH,yGAAyG,CAC1G,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IACpD;QACE,KAAK,CACH,yFAAyF,CAC1F,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,WAAW;IACrC,WAAW,CAAS;IAEpC,YAAY,WAAmB;QAC7B,KAAK,CAAC,wBAAwB,WAAW,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjC,QAAQ,CAAS;IAEjC,YAAY,QAAgB;QAC1B,KAAK,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IACpD;QACE,KAAK,CACH,gHAAgH,CACjH,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@tmhs/docker-mcp",
3
+ "version": "0.4.0",
4
+ "description": "MCP server for Docker CLI integration - 36 tools for containers, images, compose, volumes, networks, and system info. Full container lifecycle, image pipeline, and Compose V2 management.",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "docker-mcp": "dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "engines": {
16
+ "node": ">= 20.0.0"
17
+ },
18
+ "scripts": {
19
+ "build": "tsc",
20
+ "dev": "tsx watch src/index.ts",
21
+ "start": "node dist/index.js",
22
+ "test": "vitest run",
23
+ "test:watch": "vitest",
24
+ "prepublishOnly": "npm run build"
25
+ },
26
+ "dependencies": {
27
+ "@modelcontextprotocol/sdk": "^1.12.1",
28
+ "zod": "^3.24.4"
29
+ },
30
+ "devDependencies": {
31
+ "@types/node": "^22.15.3",
32
+ "tsx": "^4.19.4",
33
+ "typescript": "^5.8.3",
34
+ "vitest": "^4.1.2"
35
+ },
36
+ "license": "CC-BY-NC-ND-4.0",
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "https://github.com/TMHSDigital/Docker-Developer-Tools.git",
40
+ "directory": "mcp-server"
41
+ },
42
+ "homepage": "https://github.com/TMHSDigital/Docker-Developer-Tools",
43
+ "bugs": {
44
+ "url": "https://github.com/TMHSDigital/Docker-Developer-Tools/issues"
45
+ },
46
+ "author": "TMHSDigital"
47
+ }