comfyui-mcp 0.3.1 → 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.
- package/.beads/README.md +81 -0
- package/.beads/config.yaml +54 -0
- package/.beads/metadata.json +7 -0
- package/AGENTS.md +84 -0
- package/CLAUDE.md +48 -0
- package/README.md +22 -0
- package/dist/comfyui/client.d.ts +17 -0
- package/dist/comfyui/client.d.ts.map +1 -1
- package/dist/comfyui/client.js +39 -0
- package/dist/comfyui/client.js.map +1 -1
- package/dist/comfyui/types.d.ts +52 -0
- package/dist/comfyui/types.d.ts.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -1
- package/dist/config.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/services/asset-registry.d.ts +64 -0
- package/dist/services/asset-registry.d.ts.map +1 -0
- package/dist/services/asset-registry.js +118 -0
- package/dist/services/asset-registry.js.map +1 -0
- package/dist/services/defaults-manager.d.ts +31 -0
- package/dist/services/defaults-manager.d.ts.map +1 -0
- package/dist/services/defaults-manager.js +128 -0
- package/dist/services/defaults-manager.js.map +1 -0
- package/dist/services/generate-image.d.ts +35 -0
- package/dist/services/generate-image.d.ts.map +1 -0
- package/dist/services/generate-image.js +63 -0
- package/dist/services/generate-image.js.map +1 -0
- package/dist/services/image-management.d.ts +16 -0
- package/dist/services/image-management.d.ts.map +1 -1
- package/dist/services/image-management.js +32 -0
- package/dist/services/image-management.js.map +1 -1
- package/dist/services/job-watcher.d.ts +5 -1
- package/dist/services/job-watcher.d.ts.map +1 -1
- package/dist/services/job-watcher.js +42 -3
- package/dist/services/job-watcher.js.map +1 -1
- package/dist/services/process-control.js +2 -2
- package/dist/services/process-control.js.map +1 -1
- package/dist/services/view-image.d.ts +17 -0
- package/dist/services/view-image.d.ts.map +1 -0
- package/dist/services/view-image.js +36 -0
- package/dist/services/view-image.js.map +1 -0
- package/dist/services/workflow-autoload.d.ts +41 -0
- package/dist/services/workflow-autoload.d.ts.map +1 -0
- package/dist/services/workflow-autoload.js +172 -0
- package/dist/services/workflow-autoload.js.map +1 -0
- package/dist/services/workflow-converter.d.ts +15 -0
- package/dist/services/workflow-converter.d.ts.map +1 -1
- package/dist/services/workflow-converter.js +333 -5
- package/dist/services/workflow-converter.js.map +1 -1
- package/dist/services/workflow-executor.d.ts.map +1 -1
- package/dist/services/workflow-executor.js +4 -2
- package/dist/services/workflow-executor.js.map +1 -1
- package/dist/services/workflow-sections.d.ts.map +1 -1
- package/dist/services/workflow-sections.js +41 -6
- package/dist/services/workflow-sections.js.map +1 -1
- package/dist/tools/assets.d.ts +3 -0
- package/dist/tools/assets.d.ts.map +1 -0
- package/dist/tools/assets.js +128 -0
- package/dist/tools/assets.js.map +1 -0
- package/dist/tools/defaults.d.ts +3 -0
- package/dist/tools/defaults.d.ts.map +1 -0
- package/dist/tools/defaults.js +57 -0
- package/dist/tools/defaults.js.map +1 -0
- package/dist/tools/diagnostics.d.ts.map +1 -1
- package/dist/tools/diagnostics.js +14 -3
- package/dist/tools/diagnostics.js.map +1 -1
- package/dist/tools/generate-image.d.ts +3 -0
- package/dist/tools/generate-image.d.ts.map +1 -0
- package/dist/tools/generate-image.js +61 -0
- package/dist/tools/generate-image.js.map +1 -0
- package/dist/tools/image-management.d.ts.map +1 -1
- package/dist/tools/image-management.js +99 -11
- package/dist/tools/image-management.js.map +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +13 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/workflow-autoload.d.ts +9 -0
- package/dist/tools/workflow-autoload.d.ts.map +1 -0
- package/dist/tools/workflow-autoload.js +64 -0
- package/dist/tools/workflow-autoload.js.map +1 -0
- package/package.json +1 -1
- package/plugin/scripts/monitor-progress.mjs +9 -5
- package/.github/workflows/ci.yml +0 -27
- package/.github/workflows/release.yml +0 -34
- package/docs/design/generation-tracker.md +0 -457
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { AssetRegistry, applyOverrides } from "../services/asset-registry.js";
|
|
3
|
+
import { enqueueWorkflow } from "../services/workflow-executor.js";
|
|
4
|
+
import { viewAssetImage } from "../services/view-image.js";
|
|
5
|
+
import { errorToToolResult } from "../utils/errors.js";
|
|
6
|
+
function summarizeRecord(record) {
|
|
7
|
+
if (!record)
|
|
8
|
+
return null;
|
|
9
|
+
return {
|
|
10
|
+
asset_id: record.assetId,
|
|
11
|
+
prompt_id: record.promptId,
|
|
12
|
+
node_id: record.nodeId,
|
|
13
|
+
filename: record.filename,
|
|
14
|
+
subfolder: record.subfolder,
|
|
15
|
+
type: record.type,
|
|
16
|
+
url: record.url,
|
|
17
|
+
created_at: new Date(record.createdAt).toISOString(),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function registerAssetTools(server) {
|
|
21
|
+
server.tool("view_image", "Fetch a registered asset's bytes and return them as an inline image so the agent can see the result. Use this after enqueue_workflow completes (asset_id is included in the completion notification) to inspect, critique, or compare generated images. Only supports image mime types (PNG/JPEG/WebP); audio/video assets must be saved to disk via get_image.", {
|
|
22
|
+
asset_id: z.string().describe("Asset id returned by list_assets or job completion"),
|
|
23
|
+
}, async ({ asset_id }) => {
|
|
24
|
+
try {
|
|
25
|
+
const result = await viewAssetImage(asset_id);
|
|
26
|
+
return {
|
|
27
|
+
content: result.content.map((block) => block.type === "image"
|
|
28
|
+
? { type: "image", data: block.data, mimeType: block.mimeType }
|
|
29
|
+
: { type: "text", text: block.text }),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
return errorToToolResult(err);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
server.tool("list_assets", "List recently generated assets from the in-memory registry, newest-first. Assets are registered automatically when a workflow completes successfully. The registry is ephemeral and clears on server restart; records expire after COMFYUI_ASSET_TTL_HOURS (default 24h).", {
|
|
37
|
+
limit: z
|
|
38
|
+
.number()
|
|
39
|
+
.int()
|
|
40
|
+
.positive()
|
|
41
|
+
.optional()
|
|
42
|
+
.describe("Max records to return (default: all)"),
|
|
43
|
+
since: z
|
|
44
|
+
.string()
|
|
45
|
+
.datetime()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe("ISO timestamp — only return assets created at or after this time"),
|
|
48
|
+
}, async (args) => {
|
|
49
|
+
try {
|
|
50
|
+
const since = args.since ? Date.parse(args.since) : undefined;
|
|
51
|
+
const records = AssetRegistry.list({ limit: args.limit, since });
|
|
52
|
+
return {
|
|
53
|
+
content: [
|
|
54
|
+
{
|
|
55
|
+
type: "text",
|
|
56
|
+
text: JSON.stringify({ count: records.length, assets: records.map(summarizeRecord) }, null, 2),
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
return errorToToolResult(err);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
server.tool("get_asset_metadata", "Get full provenance for a registered asset including the workflow snapshot that produced it. Use this to inspect the parameters that generated an image before calling regenerate with overrides.", {
|
|
66
|
+
asset_id: z.string().describe("Asset id returned by list_assets or job completion"),
|
|
67
|
+
}, async ({ asset_id }) => {
|
|
68
|
+
try {
|
|
69
|
+
const record = AssetRegistry.get(asset_id);
|
|
70
|
+
if (!record) {
|
|
71
|
+
return errorToToolResult(new Error(`No asset found for id "${asset_id}". It may have expired or never been registered.`));
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
content: [
|
|
75
|
+
{
|
|
76
|
+
type: "text",
|
|
77
|
+
text: JSON.stringify({
|
|
78
|
+
...summarizeRecord(record),
|
|
79
|
+
workflow: record.workflow,
|
|
80
|
+
}, null, 2),
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
return errorToToolResult(err);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
server.tool("regenerate", "Re-enqueue the workflow that produced an existing asset, optionally applying parameter overrides. Overrides are applied to any node input matching the key name (e.g. cfg, steps, sampler_name, scheduler, seed, denoise, text). Seeds are re-randomized by default so each regenerate yields a fresh image unless seed is explicitly passed in overrides.", {
|
|
90
|
+
asset_id: z.string().describe("Asset id of the source generation"),
|
|
91
|
+
overrides: z
|
|
92
|
+
.record(z.string(), z.any())
|
|
93
|
+
.optional()
|
|
94
|
+
.describe("Map of input-name → new value applied to every node that already has that input. " +
|
|
95
|
+
"Common keys: cfg, steps, sampler_name, scheduler, seed, denoise, text."),
|
|
96
|
+
disable_random_seed: z
|
|
97
|
+
.boolean()
|
|
98
|
+
.optional()
|
|
99
|
+
.describe("If true, do not randomize seed fields. Combine with `overrides.seed` to reproduce the exact original image."),
|
|
100
|
+
}, async ({ asset_id, overrides, disable_random_seed }) => {
|
|
101
|
+
try {
|
|
102
|
+
const record = AssetRegistry.get(asset_id);
|
|
103
|
+
if (!record) {
|
|
104
|
+
return errorToToolResult(new Error(`No asset found for id "${asset_id}". It may have expired or never been registered.`));
|
|
105
|
+
}
|
|
106
|
+
const next = applyOverrides(record.workflow, overrides);
|
|
107
|
+
const result = await enqueueWorkflow(next, { disable_random_seed });
|
|
108
|
+
return {
|
|
109
|
+
content: [
|
|
110
|
+
{
|
|
111
|
+
type: "text",
|
|
112
|
+
text: JSON.stringify({
|
|
113
|
+
status: "enqueued",
|
|
114
|
+
prompt_id: result.prompt_id,
|
|
115
|
+
queue_remaining: result.queue_remaining,
|
|
116
|
+
source_asset_id: asset_id,
|
|
117
|
+
overrides_applied: overrides ?? {},
|
|
118
|
+
}, null, 2),
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
return errorToToolResult(err);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/tools/assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/tools/defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqE7D"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { DefaultsManager } from "../services/defaults-manager.js";
|
|
3
|
+
import { errorToToolResult } from "../utils/errors.js";
|
|
4
|
+
export function registerDefaultsTools(server) {
|
|
5
|
+
server.tool("get_defaults", "Return the merged view of generation defaults with per-source attribution. " +
|
|
6
|
+
"Precedence (lowest → highest): config file → COMFYUI_DEFAULT_* env vars → runtime overrides via set_defaults. " +
|
|
7
|
+
"Per-call MCP tool args always win over these defaults when consumed by a workflow-construction tool.", {}, async () => {
|
|
8
|
+
try {
|
|
9
|
+
const resolved = DefaultsManager.getAll();
|
|
10
|
+
return {
|
|
11
|
+
content: [
|
|
12
|
+
{
|
|
13
|
+
type: "text",
|
|
14
|
+
text: JSON.stringify({
|
|
15
|
+
config_path: DefaultsManager.getConfigPath(),
|
|
16
|
+
defaults: resolved,
|
|
17
|
+
}, null, 2),
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
return errorToToolResult(err);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
server.tool("set_defaults", "Update generation defaults. By default updates the in-memory runtime layer (lost on restart). " +
|
|
27
|
+
"Pass persist=true to also write the change into the config file (~/.config/comfyui-mcp/config.json by default). " +
|
|
28
|
+
"Use this to avoid repeating common values like width, height, steps, cfg, sampler, checkpoint.", {
|
|
29
|
+
values: z
|
|
30
|
+
.record(z.string(), z.any())
|
|
31
|
+
.describe("Key/value map of defaults to set. Keys are typically lowercase (e.g. width, steps)."),
|
|
32
|
+
persist: z
|
|
33
|
+
.boolean()
|
|
34
|
+
.optional()
|
|
35
|
+
.describe("If true, write to the config file in addition to runtime."),
|
|
36
|
+
}, async ({ values, persist }) => {
|
|
37
|
+
try {
|
|
38
|
+
await DefaultsManager.set(values, { persist });
|
|
39
|
+
return {
|
|
40
|
+
content: [
|
|
41
|
+
{
|
|
42
|
+
type: "text",
|
|
43
|
+
text: JSON.stringify({
|
|
44
|
+
status: persist ? "updated_runtime_and_config" : "updated_runtime",
|
|
45
|
+
config_path: DefaultsManager.getConfigPath(),
|
|
46
|
+
defaults: DefaultsManager.getAll(),
|
|
47
|
+
}, null, 2),
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
return errorToToolResult(err);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/tools/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,IAAI,CACT,cAAc,EACd,6EAA6E;QAC3E,gHAAgH;QAChH,sGAAsG,EACxG,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,WAAW,EAAE,eAAe,CAAC,aAAa,EAAE;4BAC5C,QAAQ,EAAE,QAAQ;yBACnB,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,gGAAgG;QAC9F,kHAAkH;QAClH,gGAAgG,EAClG;QACE,MAAM,EAAE,CAAC;aACN,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;aAC3B,QAAQ,CAAC,qFAAqF,CAAC;QAClG,OAAO,EAAE,CAAC;aACP,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,2DAA2D,CAAC;KACzE,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,iBAAiB;4BAClE,WAAW,EAAE,eAAe,CAAC,aAAa,EAAE;4BAC5C,QAAQ,EAAE,eAAe,CAAC,MAAM,EAAE;yBACnC,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/tools/diagnostics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/tools/diagnostics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuGzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwFhE"}
|
|
@@ -53,15 +53,26 @@ function formatHistoryEntry(promptId, entry) {
|
|
|
53
53
|
lines.push("");
|
|
54
54
|
lines.push("**Execution was interrupted/cancelled**");
|
|
55
55
|
}
|
|
56
|
-
// Output nodes
|
|
57
56
|
const outputKeys = Object.keys(entry.outputs || {});
|
|
58
57
|
if (outputKeys.length > 0) {
|
|
59
58
|
lines.push("");
|
|
60
59
|
lines.push(`### Outputs (${outputKeys.length} nodes)`);
|
|
61
60
|
for (const nodeId of outputKeys) {
|
|
62
61
|
const output = entry.outputs[nodeId];
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
// Expand image filenames so callers can use get_image directly
|
|
63
|
+
if (Array.isArray(output.images)) {
|
|
64
|
+
const imgs = output.images;
|
|
65
|
+
const fileList = imgs
|
|
66
|
+
.map((img) => img.subfolder
|
|
67
|
+
? `${img.subfolder}/${img.filename}`
|
|
68
|
+
: img.filename)
|
|
69
|
+
.join(", ");
|
|
70
|
+
lines.push(`- Node ${nodeId}: images → **${fileList}**`);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
const outputTypes = Object.keys(output);
|
|
74
|
+
lines.push(`- Node ${nodeId}: ${outputTypes.join(", ")}`);
|
|
75
|
+
}
|
|
65
76
|
}
|
|
66
77
|
}
|
|
67
78
|
return lines.join("\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/tools/diagnostics.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/tools/diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-image.d.ts","sourceRoot":"","sources":["../../src/tools/generate-image.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqDjE"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { generateImage } from "../services/generate-image.js";
|
|
3
|
+
import { enqueueWorkflow } from "../services/workflow-executor.js";
|
|
4
|
+
import { listLocalModels } from "../services/model-resolver.js";
|
|
5
|
+
import { errorToToolResult } from "../utils/errors.js";
|
|
6
|
+
async function resolveCheckpoint() {
|
|
7
|
+
try {
|
|
8
|
+
const models = await listLocalModels("checkpoints");
|
|
9
|
+
return models[0]?.name;
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export function registerGenerateImageTool(server) {
|
|
16
|
+
server.tool("generate_image", "Generate an image from a text prompt — the high-level entry point. Builds a txt2img workflow, " +
|
|
17
|
+
"filling any unspecified parameter from your configured defaults (set_defaults / COMFYUI_DEFAULT_* / config file), " +
|
|
18
|
+
"auto-selecting a local checkpoint when none is given. Returns the prompt_id immediately; the resulting " +
|
|
19
|
+
"asset_id arrives in the completion notification and can be passed to view_image or regenerate. " +
|
|
20
|
+
"For full control over the node graph, use create_workflow + enqueue_workflow instead.", {
|
|
21
|
+
prompt: z.string().describe("Positive text prompt"),
|
|
22
|
+
negative_prompt: z.string().optional().describe("Negative prompt (default: empty / from defaults)"),
|
|
23
|
+
width: z.number().int().positive().optional().describe("Image width"),
|
|
24
|
+
height: z.number().int().positive().optional().describe("Image height"),
|
|
25
|
+
steps: z.number().int().positive().optional().describe("Sampling steps"),
|
|
26
|
+
cfg: z.number().positive().optional().describe("CFG scale"),
|
|
27
|
+
sampler: z.string().optional().describe("Sampler name (e.g. euler, dpmpp_2m)"),
|
|
28
|
+
scheduler: z.string().optional().describe("Scheduler (e.g. normal, karras)"),
|
|
29
|
+
seed: z.number().int().optional().describe("Seed (omit to randomize)"),
|
|
30
|
+
checkpoint: z
|
|
31
|
+
.string()
|
|
32
|
+
.optional()
|
|
33
|
+
.describe("Checkpoint filename; auto-selected from local models if omitted"),
|
|
34
|
+
batch_size: z.number().int().positive().optional().describe("Number of images to generate"),
|
|
35
|
+
}, async (args) => {
|
|
36
|
+
try {
|
|
37
|
+
const result = await generateImage(args, {
|
|
38
|
+
resolveCheckpoint,
|
|
39
|
+
enqueue: (workflow) => enqueueWorkflow(workflow),
|
|
40
|
+
});
|
|
41
|
+
return {
|
|
42
|
+
content: [
|
|
43
|
+
{
|
|
44
|
+
type: "text",
|
|
45
|
+
text: JSON.stringify({
|
|
46
|
+
status: "enqueued",
|
|
47
|
+
prompt_id: result.prompt_id,
|
|
48
|
+
queue_remaining: result.queue_remaining,
|
|
49
|
+
checkpoint: result.checkpoint,
|
|
50
|
+
note: "asset_id will be available in the completion notification; use view_image or regenerate with it.",
|
|
51
|
+
}, null, 2),
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
return errorToToolResult(err);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=generate-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-image.js","sourceRoot":"","sources":["../../src/tools/generate-image.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-management.d.ts","sourceRoot":"","sources":["../../src/tools/image-management.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"image-management.d.ts","sourceRoot":"","sources":["../../src/tools/image-management.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgOpE"}
|
|
@@ -1,32 +1,113 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { writeFile, mkdir } from "node:fs/promises";
|
|
3
|
+
import { join, basename } from "node:path";
|
|
4
|
+
import { uploadImage, extractWorkflowFromImage, listOutputImages, getOutputImage, uploadImageAuto, } from "../services/image-management.js";
|
|
3
5
|
import { errorToToolResult } from "../utils/errors.js";
|
|
4
6
|
export function registerImageManagementTools(server) {
|
|
5
|
-
|
|
7
|
+
// ── get_image ────────────────────────────────────────────────────────────
|
|
8
|
+
// Fetches a generated image from ComfyUI via HTTP /view.
|
|
9
|
+
// Works with remote ComfyUI — no COMFYUI_PATH required.
|
|
10
|
+
server.tool("get_image", "Fetch a generated image from ComfyUI and return it as an inline image. " +
|
|
11
|
+
"Works with remote ComfyUI instances — does not require COMFYUI_PATH. " +
|
|
12
|
+
"Use get_history first to obtain the filename.", {
|
|
13
|
+
filename: z
|
|
14
|
+
.string()
|
|
15
|
+
.describe("Output image filename, e.g. PulID_Klein_00001_.png"),
|
|
16
|
+
type: z
|
|
17
|
+
.enum(["output", "input", "temp"])
|
|
18
|
+
.optional()
|
|
19
|
+
.default("output")
|
|
20
|
+
.describe("Image directory: output (default), input, or temp"),
|
|
21
|
+
subfolder: z
|
|
22
|
+
.string()
|
|
23
|
+
.optional()
|
|
24
|
+
.default("")
|
|
25
|
+
.describe("Subfolder within the directory, if any"),
|
|
26
|
+
save_dir: z
|
|
27
|
+
.string()
|
|
28
|
+
.optional()
|
|
29
|
+
.describe("Local directory to save the image file. Defaults to /tmp/comfyui-images/."),
|
|
30
|
+
}, async (args) => {
|
|
31
|
+
try {
|
|
32
|
+
const { base64, mimeType } = await getOutputImage(args.filename, args.type ?? "output", args.subfolder ?? "");
|
|
33
|
+
// Save to local file
|
|
34
|
+
const saveDir = args.save_dir ?? process.cwd();
|
|
35
|
+
await mkdir(saveDir, { recursive: true });
|
|
36
|
+
const localFilename = basename(args.filename);
|
|
37
|
+
const savePath = join(saveDir, localFilename);
|
|
38
|
+
await writeFile(savePath, Buffer.from(base64, "base64"));
|
|
39
|
+
return {
|
|
40
|
+
content: [
|
|
41
|
+
{
|
|
42
|
+
type: "text",
|
|
43
|
+
text: `Saved to: ${savePath}`,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
type: "image",
|
|
47
|
+
data: base64,
|
|
48
|
+
mimeType,
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
return errorToToolResult(err);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
// ── upload_image ─────────────────────────────────────────────────────────
|
|
58
|
+
// Tries HTTP upload first (works remote), falls back to filesystem copy.
|
|
59
|
+
server.tool("upload_image", "Upload a local image file to ComfyUI's input/ directory so it can be " +
|
|
60
|
+
"referenced in LoadImage nodes. Tries HTTP upload first (works with " +
|
|
61
|
+
"remote ComfyUI), falls back to filesystem copy when COMFYUI_PATH is set.", {
|
|
6
62
|
source_path: z
|
|
7
63
|
.string()
|
|
8
64
|
.describe("Absolute path to the local image file to upload"),
|
|
9
65
|
filename: z
|
|
10
66
|
.string()
|
|
11
67
|
.optional()
|
|
12
|
-
.describe("Override the filename in ComfyUI's input/ directory.
|
|
68
|
+
.describe("Override the filename in ComfyUI's input/ directory. " +
|
|
69
|
+
"Auto-detected from source path if omitted."),
|
|
13
70
|
}, async (args) => {
|
|
14
71
|
try {
|
|
15
|
-
|
|
72
|
+
// Try HTTP upload first (works for remote ComfyUI)
|
|
73
|
+
const result = await uploadImageAuto(args.source_path, args.filename);
|
|
16
74
|
return {
|
|
17
75
|
content: [
|
|
18
76
|
{
|
|
19
77
|
type: "text",
|
|
20
|
-
text: `Image uploaded successfully.\n\
|
|
78
|
+
text: `Image uploaded successfully via HTTP.\n\n` +
|
|
79
|
+
`Filename: ${result.filename}\n\n` +
|
|
80
|
+
`Use "${result.filename}" as the \`image\` input in LoadImage nodes.`,
|
|
21
81
|
},
|
|
22
82
|
],
|
|
23
83
|
};
|
|
24
84
|
}
|
|
25
|
-
catch (
|
|
26
|
-
|
|
85
|
+
catch (httpErr) {
|
|
86
|
+
// Fall back to filesystem copy if HTTP fails and COMFYUI_PATH is set
|
|
87
|
+
try {
|
|
88
|
+
const result = await uploadImage(args.source_path, args.filename);
|
|
89
|
+
return {
|
|
90
|
+
content: [
|
|
91
|
+
{
|
|
92
|
+
type: "text",
|
|
93
|
+
text: `Image uploaded successfully via filesystem.\n\n` +
|
|
94
|
+
`Filename: ${result.filename}\nPath: ${result.path}\n\n` +
|
|
95
|
+
`Use "${result.filename}" as the \`image\` input in LoadImage nodes.`,
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
catch (fsErr) {
|
|
101
|
+
// Both failed — report both errors
|
|
102
|
+
return errorToToolResult(new Error(`HTTP upload failed: ${httpErr instanceof Error ? httpErr.message : httpErr}\n` +
|
|
103
|
+
`Filesystem fallback also failed: ${fsErr instanceof Error ? fsErr.message : fsErr}`));
|
|
104
|
+
}
|
|
27
105
|
}
|
|
28
106
|
});
|
|
29
|
-
|
|
107
|
+
// ── workflow_from_image ───────────────────────────────────────────────────
|
|
108
|
+
server.tool("workflow_from_image", "Extract embedded ComfyUI workflow metadata from a PNG file. " +
|
|
109
|
+
"ComfyUI stores the full workflow (API format) and prompt data in PNG tEXt chunks. " +
|
|
110
|
+
"Use this to reverse-engineer how any ComfyUI image was generated.", {
|
|
30
111
|
image_path: z
|
|
31
112
|
.string()
|
|
32
113
|
.describe("Absolute path to a ComfyUI-generated PNG file"),
|
|
@@ -35,10 +116,14 @@ export function registerImageManagementTools(server) {
|
|
|
35
116
|
const result = await extractWorkflowFromImage(args.image_path);
|
|
36
117
|
const sections = [];
|
|
37
118
|
if (result.prompt) {
|
|
38
|
-
sections.push("## API Format (prompt)\n\nThis is the executable workflow format:\n```json\n" +
|
|
119
|
+
sections.push("## API Format (prompt)\n\nThis is the executable workflow format:\n```json\n" +
|
|
120
|
+
JSON.stringify(result.prompt, null, 2) +
|
|
121
|
+
"\n```");
|
|
39
122
|
}
|
|
40
123
|
if (result.workflow) {
|
|
41
|
-
sections.push("## UI Format (workflow)\n\nThis is the ComfyUI web UI format with layout data:\n```json\n" +
|
|
124
|
+
sections.push("## UI Format (workflow)\n\nThis is the ComfyUI web UI format with layout data:\n```json\n" +
|
|
125
|
+
JSON.stringify(result.workflow, null, 2) +
|
|
126
|
+
"\n```");
|
|
42
127
|
}
|
|
43
128
|
return {
|
|
44
129
|
content: [
|
|
@@ -53,7 +138,10 @@ export function registerImageManagementTools(server) {
|
|
|
53
138
|
return errorToToolResult(err);
|
|
54
139
|
}
|
|
55
140
|
});
|
|
56
|
-
|
|
141
|
+
// ── list_output_images ────────────────────────────────────────────────────
|
|
142
|
+
server.tool("list_output_images", "List recently generated images from ComfyUI's output directory. " +
|
|
143
|
+
"Returns filenames sorted newest-first. Requires COMFYUI_PATH. " +
|
|
144
|
+
"For remote ComfyUI, use get_history to find filenames, then get_image to fetch them.", {
|
|
57
145
|
limit: z
|
|
58
146
|
.number()
|
|
59
147
|
.int()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-management.js","sourceRoot":"","sources":["../../src/tools/image-management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"image-management.js","sourceRoot":"","sources":["../../src/tools/image-management.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqBzE,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBvE"}
|
package/dist/tools/index.js
CHANGED
|
@@ -12,7 +12,15 @@ import { registerProcessControlTools } from "./process-control.js";
|
|
|
12
12
|
import { registerImageManagementTools } from "./image-management.js";
|
|
13
13
|
import { registerMemoryManagementTools } from "./memory-management.js";
|
|
14
14
|
import { registerGenerationTrackerTools } from "./generation-tracker.js";
|
|
15
|
-
|
|
15
|
+
import { registerAssetTools } from "./assets.js";
|
|
16
|
+
import { registerAutoloadedWorkflows } from "./workflow-autoload.js";
|
|
17
|
+
import { registerDefaultsTools } from "./defaults.js";
|
|
18
|
+
import { registerGenerateImageTool } from "./generate-image.js";
|
|
19
|
+
import { DefaultsManager } from "../services/defaults-manager.js";
|
|
20
|
+
export async function registerAllTools(server) {
|
|
21
|
+
// Hydrate persisted defaults before any tool registration so subsequent
|
|
22
|
+
// tools can consult DefaultsManager.apply() against a fully-resolved view.
|
|
23
|
+
await DefaultsManager.load();
|
|
16
24
|
registerWorkflowExecuteTools(server);
|
|
17
25
|
registerWorkflowVisualizeTools(server);
|
|
18
26
|
registerWorkflowComposeTools(server);
|
|
@@ -27,5 +35,9 @@ export function registerAllTools(server) {
|
|
|
27
35
|
registerImageManagementTools(server);
|
|
28
36
|
registerMemoryManagementTools(server);
|
|
29
37
|
registerGenerationTrackerTools(server);
|
|
38
|
+
registerAssetTools(server);
|
|
39
|
+
registerDefaultsTools(server);
|
|
40
|
+
registerGenerateImageTool(server);
|
|
41
|
+
await registerAutoloadedWorkflows(server);
|
|
30
42
|
}
|
|
31
43
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAiB;IACtD,wEAAwE;IACxE,2EAA2E;IAC3E,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;IAC7B,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
/**
|
|
3
|
+
* Discover workflow JSON files in COMFYUI_WORKFLOWS_DIR (default
|
|
4
|
+
* `~/.comfyui-mcp/workflows`) and register each as its own MCP tool with a
|
|
5
|
+
* schema derived from its PARAM_* placeholders. Failures are logged and do
|
|
6
|
+
* not abort startup.
|
|
7
|
+
*/
|
|
8
|
+
export declare function registerAutoloadedWorkflows(server: McpServer): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=workflow-autoload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-autoload.d.ts","sourceRoot":"","sources":["../../src/tools/workflow-autoload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DlF"}
|