@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.
- package/README.md +53 -3
- package/dist/index.js +61 -1
- package/dist/index.js.map +1 -1
- package/dist/tools/composeConfig.d.ts +3 -0
- package/dist/tools/composeConfig.d.ts.map +1 -0
- package/dist/tools/composeConfig.js +30 -0
- package/dist/tools/composeConfig.js.map +1 -0
- package/dist/tools/composeCp.d.ts +3 -0
- package/dist/tools/composeCp.d.ts.map +1 -0
- package/dist/tools/composeCp.js +33 -0
- package/dist/tools/composeCp.js.map +1 -0
- package/dist/tools/composeCreate.d.ts +3 -0
- package/dist/tools/composeCreate.d.ts.map +1 -0
- package/dist/tools/composeCreate.js +36 -0
- package/dist/tools/composeCreate.js.map +1 -0
- package/dist/tools/composeEvents.d.ts +3 -0
- package/dist/tools/composeEvents.d.ts.map +1 -0
- package/dist/tools/composeEvents.js +31 -0
- package/dist/tools/composeEvents.js.map +1 -0
- package/dist/tools/composeImages.d.ts +3 -0
- package/dist/tools/composeImages.d.ts.map +1 -0
- package/dist/tools/composeImages.js +25 -0
- package/dist/tools/composeImages.js.map +1 -0
- package/dist/tools/composeKill.d.ts +3 -0
- package/dist/tools/composeKill.d.ts.map +1 -0
- package/dist/tools/composeKill.js +30 -0
- package/dist/tools/composeKill.js.map +1 -0
- package/dist/tools/composeLs.d.ts +3 -0
- package/dist/tools/composeLs.d.ts.map +1 -0
- package/dist/tools/composeLs.js +24 -0
- package/dist/tools/composeLs.js.map +1 -0
- package/dist/tools/composePause.d.ts +3 -0
- package/dist/tools/composePause.d.ts.map +1 -0
- package/dist/tools/composePause.js +27 -0
- package/dist/tools/composePause.js.map +1 -0
- package/dist/tools/composePort.d.ts +3 -0
- package/dist/tools/composePort.d.ts.map +1 -0
- package/dist/tools/composePort.js +30 -0
- package/dist/tools/composePort.js.map +1 -0
- package/dist/tools/composeRm.d.ts +3 -0
- package/dist/tools/composeRm.d.ts.map +1 -0
- package/dist/tools/composeRm.js +33 -0
- package/dist/tools/composeRm.js.map +1 -0
- package/dist/tools/composeRun.d.ts +3 -0
- package/dist/tools/composeRun.d.ts.map +1 -0
- package/dist/tools/composeRun.js +49 -0
- package/dist/tools/composeRun.js.map +1 -0
- package/dist/tools/composeScale.d.ts +3 -0
- package/dist/tools/composeScale.d.ts.map +1 -0
- package/dist/tools/composeScale.js +28 -0
- package/dist/tools/composeScale.js.map +1 -0
- package/dist/tools/composeStart.d.ts +3 -0
- package/dist/tools/composeStart.d.ts.map +1 -0
- package/dist/tools/composeStart.js +27 -0
- package/dist/tools/composeStart.js.map +1 -0
- package/dist/tools/composeStop.d.ts +3 -0
- package/dist/tools/composeStop.d.ts.map +1 -0
- package/dist/tools/composeStop.js +30 -0
- package/dist/tools/composeStop.js.map +1 -0
- package/dist/tools/composeTop.d.ts +3 -0
- package/dist/tools/composeTop.d.ts.map +1 -0
- package/dist/tools/composeTop.js +27 -0
- package/dist/tools/composeTop.js.map +1 -0
- package/dist/tools/composeUnpause.d.ts +3 -0
- package/dist/tools/composeUnpause.d.ts.map +1 -0
- package/dist/tools/composeUnpause.js +27 -0
- package/dist/tools/composeUnpause.js.map +1 -0
- package/dist/tools/contextCreate.d.ts +3 -0
- package/dist/tools/contextCreate.d.ts.map +1 -0
- package/dist/tools/contextCreate.js +25 -0
- package/dist/tools/contextCreate.js.map +1 -0
- package/dist/tools/contextInspect.d.ts +3 -0
- package/dist/tools/contextInspect.d.ts.map +1 -0
- package/dist/tools/contextInspect.js +17 -0
- package/dist/tools/contextInspect.js.map +1 -0
- package/dist/tools/contextLs.d.ts +3 -0
- package/dist/tools/contextLs.d.ts.map +1 -0
- package/dist/tools/contextLs.js +17 -0
- package/dist/tools/contextLs.js.map +1 -0
- package/dist/tools/contextRm.d.ts +3 -0
- package/dist/tools/contextRm.d.ts.map +1 -0
- package/dist/tools/contextRm.js +22 -0
- package/dist/tools/contextRm.js.map +1 -0
- package/dist/tools/contextShow.d.ts +3 -0
- package/dist/tools/contextShow.d.ts.map +1 -0
- package/dist/tools/contextShow.js +14 -0
- package/dist/tools/contextShow.js.map +1 -0
- package/dist/tools/contextUse.d.ts +3 -0
- package/dist/tools/contextUse.d.ts.map +1 -0
- package/dist/tools/contextUse.js +17 -0
- package/dist/tools/contextUse.js.map +1 -0
- package/dist/tools/diff.d.ts +3 -0
- package/dist/tools/diff.d.ts.map +1 -0
- package/dist/tools/diff.js +17 -0
- package/dist/tools/diff.js.map +1 -0
- package/dist/tools/export.d.ts +3 -0
- package/dist/tools/export.d.ts.map +1 -0
- package/dist/tools/export.js +18 -0
- package/dist/tools/export.js.map +1 -0
- package/dist/tools/imageHistory.d.ts +3 -0
- package/dist/tools/imageHistory.d.ts.map +1 -0
- package/dist/tools/imageHistory.js +23 -0
- package/dist/tools/imageHistory.js.map +1 -0
- package/dist/tools/import.d.ts +3 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +35 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/login.d.ts +3 -0
- package/dist/tools/login.d.ts.map +1 -0
- package/dist/tools/login.js +38 -0
- package/dist/tools/login.js.map +1 -0
- package/dist/tools/logout.d.ts +3 -0
- package/dist/tools/logout.d.ts.map +1 -0
- package/dist/tools/logout.js +20 -0
- package/dist/tools/logout.js.map +1 -0
- package/dist/tools/port.d.ts +3 -0
- package/dist/tools/port.d.ts.map +1 -0
- package/dist/tools/port.js +26 -0
- package/dist/tools/port.js.map +1 -0
- package/dist/tools/rename.d.ts +3 -0
- package/dist/tools/rename.d.ts.map +1 -0
- package/dist/tools/rename.js +18 -0
- package/dist/tools/rename.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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.
|
|
4
|
-
"description": "MCP server for Docker CLI integration -
|
|
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": {
|