@tmhs/docker-mcp 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -3
- package/dist/index.js +59 -1
- package/dist/index.js.map +1 -1
- package/dist/tools/builderPrune.d.ts +3 -0
- package/dist/tools/builderPrune.d.ts.map +1 -0
- package/dist/tools/builderPrune.js +43 -0
- package/dist/tools/builderPrune.js.map +1 -0
- package/dist/tools/buildxBuild.d.ts +3 -0
- package/dist/tools/buildxBuild.d.ts.map +1 -0
- package/dist/tools/buildxBuild.js +138 -0
- package/dist/tools/buildxBuild.js.map +1 -0
- package/dist/tools/buildxCreate.d.ts +3 -0
- package/dist/tools/buildxCreate.d.ts.map +1 -0
- package/dist/tools/buildxCreate.js +66 -0
- package/dist/tools/buildxCreate.js.map +1 -0
- package/dist/tools/buildxImagetools.d.ts +3 -0
- package/dist/tools/buildxImagetools.d.ts.map +1 -0
- package/dist/tools/buildxImagetools.js +48 -0
- package/dist/tools/buildxImagetools.js.map +1 -0
- package/dist/tools/buildxInspect.d.ts +3 -0
- package/dist/tools/buildxInspect.d.ts.map +1 -0
- package/dist/tools/buildxInspect.js +36 -0
- package/dist/tools/buildxInspect.js.map +1 -0
- package/dist/tools/buildxLs.d.ts +3 -0
- package/dist/tools/buildxLs.d.ts.map +1 -0
- package/dist/tools/buildxLs.js +17 -0
- package/dist/tools/buildxLs.js.map +1 -0
- package/dist/tools/buildxRm.d.ts +3 -0
- package/dist/tools/buildxRm.d.ts.map +1 -0
- package/dist/tools/buildxRm.js +42 -0
- package/dist/tools/buildxRm.js.map +1 -0
- package/dist/tools/buildxUse.d.ts +3 -0
- package/dist/tools/buildxUse.d.ts.map +1 -0
- package/dist/tools/buildxUse.js +42 -0
- package/dist/tools/buildxUse.js.map +1 -0
- 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/manifestAnnotate.d.ts +3 -0
- package/dist/tools/manifestAnnotate.d.ts.map +1 -0
- package/dist/tools/manifestAnnotate.js +60 -0
- package/dist/tools/manifestAnnotate.js.map +1 -0
- package/dist/tools/manifestCreate.d.ts +3 -0
- package/dist/tools/manifestCreate.d.ts.map +1 -0
- package/dist/tools/manifestCreate.js +38 -0
- package/dist/tools/manifestCreate.js.map +1 -0
- package/dist/tools/manifestInspect.d.ts +3 -0
- package/dist/tools/manifestInspect.d.ts.map +1 -0
- package/dist/tools/manifestInspect.js +34 -0
- package/dist/tools/manifestInspect.js.map +1 -0
- package/dist/tools/manifestPush.d.ts +3 -0
- package/dist/tools/manifestPush.d.ts.map +1 -0
- package/dist/tools/manifestPush.js +34 -0
- package/dist/tools/manifestPush.js.map +1 -0
- package/dist/tools/manifestRm.d.ts +3 -0
- package/dist/tools/manifestRm.d.ts.map +1 -0
- package/dist/tools/manifestRm.js +25 -0
- package/dist/tools/manifestRm.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { execDocker, errorResponse } from "../utils/docker-api.js";
|
|
3
|
+
const inputSchema = {
|
|
4
|
+
file: z.string().optional().describe("Path to compose file"),
|
|
5
|
+
projectDir: z.string().optional().describe("Working directory for the compose project"),
|
|
6
|
+
service: z.string().min(1).describe("Service to run the command on"),
|
|
7
|
+
command: z.array(z.string()).optional().describe("Command and arguments to run"),
|
|
8
|
+
rm: z.boolean().optional().default(true).describe("Remove container after exit (default: true)"),
|
|
9
|
+
detach: z.boolean().optional().default(false).describe("Run in background"),
|
|
10
|
+
user: z.string().optional().describe("Run as specified user (e.g. 'root', '1000:1000')"),
|
|
11
|
+
env: z.array(z.string()).optional().describe("Environment variables (e.g. ['KEY=value'])"),
|
|
12
|
+
workdir: z.string().optional().describe("Working directory inside the container"),
|
|
13
|
+
noDeps: z.boolean().optional().default(false).describe("Don't start linked services"),
|
|
14
|
+
};
|
|
15
|
+
export function register(server) {
|
|
16
|
+
server.tool("docker_composeRun", "Run a one-off command on a Docker Compose service", inputSchema, async (args) => {
|
|
17
|
+
try {
|
|
18
|
+
const cmdArgs = ["compose"];
|
|
19
|
+
if (args.file)
|
|
20
|
+
cmdArgs.push("-f", args.file);
|
|
21
|
+
if (args.projectDir)
|
|
22
|
+
cmdArgs.push("--project-directory", args.projectDir);
|
|
23
|
+
cmdArgs.push("run", "--no-TTY");
|
|
24
|
+
if (args.rm)
|
|
25
|
+
cmdArgs.push("--rm");
|
|
26
|
+
if (args.detach)
|
|
27
|
+
cmdArgs.push("-d");
|
|
28
|
+
if (args.user)
|
|
29
|
+
cmdArgs.push("--user", args.user);
|
|
30
|
+
if (args.env) {
|
|
31
|
+
for (const e of args.env)
|
|
32
|
+
cmdArgs.push("-e", e);
|
|
33
|
+
}
|
|
34
|
+
if (args.workdir)
|
|
35
|
+
cmdArgs.push("-w", args.workdir);
|
|
36
|
+
if (args.noDeps)
|
|
37
|
+
cmdArgs.push("--no-deps");
|
|
38
|
+
cmdArgs.push(args.service);
|
|
39
|
+
if (args.command)
|
|
40
|
+
cmdArgs.push(...args.command);
|
|
41
|
+
const output = await execDocker(cmdArgs, { timeout: 300_000 });
|
|
42
|
+
return { content: [{ type: "text", text: output.trim() || "Command completed" }] };
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
return errorResponse(error);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=composeRun.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composeRun.js","sourceRoot":"","sources":["../../src/tools/composeRun.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composeScale.d.ts","sourceRoot":"","sources":["../../src/tools/composeScale.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsBhD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { execDocker, errorResponse } from "../utils/docker-api.js";
|
|
3
|
+
const inputSchema = {
|
|
4
|
+
file: z.string().optional().describe("Path to compose file"),
|
|
5
|
+
projectDir: z.string().optional().describe("Working directory for the compose project"),
|
|
6
|
+
scales: z.array(z.string()).min(1).describe("Scale specifications (e.g. ['web=3', 'worker=2'])"),
|
|
7
|
+
};
|
|
8
|
+
export function register(server) {
|
|
9
|
+
server.tool("docker_composeScale", "Scale Docker Compose services to a specified number of replicas", inputSchema, async (args) => {
|
|
10
|
+
try {
|
|
11
|
+
const cmdArgs = ["compose"];
|
|
12
|
+
if (args.file)
|
|
13
|
+
cmdArgs.push("-f", args.file);
|
|
14
|
+
if (args.projectDir)
|
|
15
|
+
cmdArgs.push("--project-directory", args.projectDir);
|
|
16
|
+
cmdArgs.push("up", "-d");
|
|
17
|
+
for (const s of args.scales) {
|
|
18
|
+
cmdArgs.push("--scale", s);
|
|
19
|
+
}
|
|
20
|
+
const output = await execDocker(cmdArgs, { timeout: 300_000 });
|
|
21
|
+
return { content: [{ type: "text", text: output.trim() || `Scaled services: ${args.scales.join(", ")}` }] };
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return errorResponse(error);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=composeScale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composeScale.js","sourceRoot":"","sources":["../../src/tools/composeScale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACvF,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;CACjG,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,iEAAiE,EACjE,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACzB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC7B,CAAC;YAED,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,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACvH,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":"composeStart.d.ts","sourceRoot":"","sources":["../../src/tools/composeStart.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoBhD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { execDocker, errorResponse } from "../utils/docker-api.js";
|
|
3
|
+
const inputSchema = {
|
|
4
|
+
file: z.string().optional().describe("Path to compose file"),
|
|
5
|
+
projectDir: z.string().optional().describe("Working directory for the compose project"),
|
|
6
|
+
services: z.array(z.string()).optional().describe("Specific services to start (default: all)"),
|
|
7
|
+
};
|
|
8
|
+
export function register(server) {
|
|
9
|
+
server.tool("docker_composeStart", "Start existing Docker Compose service containers", inputSchema, async (args) => {
|
|
10
|
+
try {
|
|
11
|
+
const cmdArgs = ["compose"];
|
|
12
|
+
if (args.file)
|
|
13
|
+
cmdArgs.push("-f", args.file);
|
|
14
|
+
if (args.projectDir)
|
|
15
|
+
cmdArgs.push("--project-directory", args.projectDir);
|
|
16
|
+
cmdArgs.push("start");
|
|
17
|
+
if (args.services)
|
|
18
|
+
cmdArgs.push(...args.services);
|
|
19
|
+
const output = await execDocker(cmdArgs);
|
|
20
|
+
return { content: [{ type: "text", text: output.trim() || "Services started" }] };
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
return errorResponse(error);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=composeStart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composeStart.js","sourceRoot":"","sources":["../../src/tools/composeStart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACvF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CAC/F,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,kDAAkD,EAClD,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,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":"composeStop.d.ts","sourceRoot":"","sources":["../../src/tools/composeStop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqBhD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { execDocker, errorResponse } from "../utils/docker-api.js";
|
|
3
|
+
const inputSchema = {
|
|
4
|
+
file: z.string().optional().describe("Path to compose file"),
|
|
5
|
+
projectDir: z.string().optional().describe("Working directory for the compose project"),
|
|
6
|
+
services: z.array(z.string()).optional().describe("Specific services to stop (default: all)"),
|
|
7
|
+
timeout: z.number().optional().describe("Seconds to wait for graceful stop before killing"),
|
|
8
|
+
};
|
|
9
|
+
export function register(server) {
|
|
10
|
+
server.tool("docker_composeStop", "Stop Docker Compose services without removing containers", inputSchema, async (args) => {
|
|
11
|
+
try {
|
|
12
|
+
const cmdArgs = ["compose"];
|
|
13
|
+
if (args.file)
|
|
14
|
+
cmdArgs.push("-f", args.file);
|
|
15
|
+
if (args.projectDir)
|
|
16
|
+
cmdArgs.push("--project-directory", args.projectDir);
|
|
17
|
+
cmdArgs.push("stop");
|
|
18
|
+
if (args.timeout !== undefined)
|
|
19
|
+
cmdArgs.push("-t", String(args.timeout));
|
|
20
|
+
if (args.services)
|
|
21
|
+
cmdArgs.push(...args.services);
|
|
22
|
+
const output = await execDocker(cmdArgs);
|
|
23
|
+
return { content: [{ type: "text", text: output.trim() || "Services stopped" }] };
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
return errorResponse(error);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=composeStop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composeStop.js","sourceRoot":"","sources":["../../src/tools/composeStop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACvF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC7F,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;CAC5F,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,0DAA0D,EAC1D,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACzE,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,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":"composeTop.d.ts","sourceRoot":"","sources":["../../src/tools/composeTop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoBhD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { execDocker, errorResponse } from "../utils/docker-api.js";
|
|
3
|
+
const inputSchema = {
|
|
4
|
+
file: z.string().optional().describe("Path to compose file"),
|
|
5
|
+
projectDir: z.string().optional().describe("Working directory for the compose project"),
|
|
6
|
+
services: z.array(z.string()).optional().describe("Specific services to display processes for (default: all)"),
|
|
7
|
+
};
|
|
8
|
+
export function register(server) {
|
|
9
|
+
server.tool("docker_composeTop", "Display running processes in Docker Compose service containers", inputSchema, async (args) => {
|
|
10
|
+
try {
|
|
11
|
+
const cmdArgs = ["compose"];
|
|
12
|
+
if (args.file)
|
|
13
|
+
cmdArgs.push("-f", args.file);
|
|
14
|
+
if (args.projectDir)
|
|
15
|
+
cmdArgs.push("--project-directory", args.projectDir);
|
|
16
|
+
cmdArgs.push("top");
|
|
17
|
+
if (args.services)
|
|
18
|
+
cmdArgs.push(...args.services);
|
|
19
|
+
const output = await execDocker(cmdArgs);
|
|
20
|
+
return { content: [{ type: "text", text: output.trim() || "No running processes found" }] };
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
return errorResponse(error);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=composeTop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composeTop.js","sourceRoot":"","sources":["../../src/tools/composeTop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACvF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;CAC/G,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,gEAAgE,EAChE,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,4BAA4B,EAAE,CAAC,EAAE,CAAC;QACvG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composeUnpause.d.ts","sourceRoot":"","sources":["../../src/tools/composeUnpause.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoBhD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { execDocker, errorResponse } from "../utils/docker-api.js";
|
|
3
|
+
const inputSchema = {
|
|
4
|
+
file: z.string().optional().describe("Path to compose file"),
|
|
5
|
+
projectDir: z.string().optional().describe("Working directory for the compose project"),
|
|
6
|
+
services: z.array(z.string()).optional().describe("Specific services to unpause (default: all)"),
|
|
7
|
+
};
|
|
8
|
+
export function register(server) {
|
|
9
|
+
server.tool("docker_composeUnpause", "Unpause Docker Compose services", inputSchema, async (args) => {
|
|
10
|
+
try {
|
|
11
|
+
const cmdArgs = ["compose"];
|
|
12
|
+
if (args.file)
|
|
13
|
+
cmdArgs.push("-f", args.file);
|
|
14
|
+
if (args.projectDir)
|
|
15
|
+
cmdArgs.push("--project-directory", args.projectDir);
|
|
16
|
+
cmdArgs.push("unpause");
|
|
17
|
+
if (args.services)
|
|
18
|
+
cmdArgs.push(...args.services);
|
|
19
|
+
const output = await execDocker(cmdArgs);
|
|
20
|
+
return { content: [{ type: "text", text: output.trim() || "Services unpaused" }] };
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
return errorResponse(error);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=composeUnpause.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composeUnpause.js","sourceRoot":"","sources":["../../src/tools/composeUnpause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACvF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;CACjG,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,iCAAiC,EACjC,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,mBAAmB,EAAE,CAAC,EAAE,CAAC;QAC9F,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":"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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|
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.8.0",
|
|
4
|
+
"description": "MCP server for Docker CLI integration - 84 tools for containers, images, compose, volumes, networks, cleanup, observability, buildx, manifests, and system info. Full lifecycle, image pipeline, complete Compose V2, volume/network CRUD, resource pruning, live monitoring, multi-platform builds, and manifest management.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|