comfyui-mcp 0.1.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/.mcp.json +11 -0
- package/dist/comfyui/client.d.ts +16 -0
- package/dist/comfyui/client.d.ts.map +1 -0
- package/dist/comfyui/client.js +75 -0
- package/dist/comfyui/client.js.map +1 -0
- package/dist/comfyui/events.d.ts +9 -0
- package/dist/comfyui/events.d.ts.map +1 -0
- package/dist/comfyui/events.js +40 -0
- package/dist/comfyui/events.js.map +1 -0
- package/dist/comfyui/types.d.ts +66 -0
- package/dist/comfyui/types.d.ts.map +1 -0
- package/dist/comfyui/types.js +3 -0
- package/dist/comfyui/types.js.map +1 -0
- package/dist/config.d.ts +28 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +93 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/services/mermaid-converter.d.ts +8 -0
- package/dist/services/mermaid-converter.d.ts.map +1 -0
- package/dist/services/mermaid-converter.js +235 -0
- package/dist/services/mermaid-converter.js.map +1 -0
- package/dist/services/mermaid-parser.d.ts +31 -0
- package/dist/services/mermaid-parser.d.ts.map +1 -0
- package/dist/services/mermaid-parser.js +464 -0
- package/dist/services/mermaid-parser.js.map +1 -0
- package/dist/services/model-resolver.d.ts +25 -0
- package/dist/services/model-resolver.d.ts.map +1 -0
- package/dist/services/model-resolver.js +123 -0
- package/dist/services/model-resolver.js.map +1 -0
- package/dist/services/registry-client.d.ts +28 -0
- package/dist/services/registry-client.d.ts.map +1 -0
- package/dist/services/registry-client.js +32 -0
- package/dist/services/registry-client.js.map +1 -0
- package/dist/services/skill-generator.d.ts +33 -0
- package/dist/services/skill-generator.d.ts.map +1 -0
- package/dist/services/skill-generator.js +438 -0
- package/dist/services/skill-generator.js.map +1 -0
- package/dist/services/workflow-composer.d.ts +43 -0
- package/dist/services/workflow-composer.d.ts.map +1 -0
- package/dist/services/workflow-composer.js +333 -0
- package/dist/services/workflow-composer.js.map +1 -0
- package/dist/services/workflow-executor.d.ts +15 -0
- package/dist/services/workflow-executor.d.ts.map +1 -0
- package/dist/services/workflow-executor.js +63 -0
- package/dist/services/workflow-executor.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +15 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/model-management.d.ts +3 -0
- package/dist/tools/model-management.d.ts.map +1 -0
- package/dist/tools/model-management.js +97 -0
- package/dist/tools/model-management.js.map +1 -0
- package/dist/tools/registry-search.d.ts +3 -0
- package/dist/tools/registry-search.d.ts.map +1 -0
- package/dist/tools/registry-search.js +70 -0
- package/dist/tools/registry-search.js.map +1 -0
- package/dist/tools/skill-generator.d.ts +3 -0
- package/dist/tools/skill-generator.d.ts.map +1 -0
- package/dist/tools/skill-generator.js +42 -0
- package/dist/tools/skill-generator.js.map +1 -0
- package/dist/tools/workflow-compose.d.ts +3 -0
- package/dist/tools/workflow-compose.d.ts.map +1 -0
- package/dist/tools/workflow-compose.js +180 -0
- package/dist/tools/workflow-compose.js.map +1 -0
- package/dist/tools/workflow-execute.d.ts +3 -0
- package/dist/tools/workflow-execute.d.ts.map +1 -0
- package/dist/tools/workflow-execute.js +115 -0
- package/dist/tools/workflow-execute.js.map +1 -0
- package/dist/tools/workflow-visualize.d.ts +3 -0
- package/dist/tools/workflow-visualize.d.ts.map +1 -0
- package/dist/tools/workflow-visualize.js +111 -0
- package/dist/tools/workflow-visualize.js.map +1 -0
- package/dist/utils/errors.d.ts +24 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +65 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/image.d.ts +4 -0
- package/dist/utils/image.d.ts.map +1 -0
- package/dist/utils/image.js +10 -0
- package/dist/utils/image.js.map +1 -0
- package/dist/utils/logger.d.ts +7 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +22 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +34 -0
package/.mcp.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Client } from "@stable-canvas/comfyui-client";
|
|
2
|
+
import type { ObjectInfo, SystemStats, QueueStatus } from "./types.js";
|
|
3
|
+
export declare function getClient(): Client;
|
|
4
|
+
export declare function connectClient(): Promise<Client>;
|
|
5
|
+
export declare function getSystemStats(): Promise<SystemStats>;
|
|
6
|
+
export declare function getObjectInfo(): Promise<ObjectInfo>;
|
|
7
|
+
export declare function getQueue(): Promise<QueueStatus>;
|
|
8
|
+
export declare function interrupt(): Promise<void>;
|
|
9
|
+
export declare function getSamplers(): Promise<string[]>;
|
|
10
|
+
export declare function getSchedulers(): Promise<string[]>;
|
|
11
|
+
export declare function getCheckpoints(): Promise<string[]>;
|
|
12
|
+
export declare function getLoRAs(): Promise<string[]>;
|
|
13
|
+
export declare function getVAEs(): Promise<string[]>;
|
|
14
|
+
export declare function getUpscaleModels(): Promise<string[]>;
|
|
15
|
+
export declare function getComfyUIPath(): string | undefined;
|
|
16
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/comfyui/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAIvD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIvE,wBAAgB,SAAS,IAAI,MAAM,CAWlC;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAWrD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAI3D;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAIzD;AAED,wBAAsB,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,CAIrD;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAG/C;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAGrD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAGvD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAGxD;AAED,wBAAsB,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAGlD;AAED,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAGjD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAG1D;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnD"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Client } from "@stable-canvas/comfyui-client";
|
|
2
|
+
import { config, getComfyUIApiHost } from "../config.js";
|
|
3
|
+
import { logger } from "../utils/logger.js";
|
|
4
|
+
import { ConnectionError } from "../utils/errors.js";
|
|
5
|
+
let clientInstance = null;
|
|
6
|
+
export function getClient() {
|
|
7
|
+
if (!clientInstance) {
|
|
8
|
+
clientInstance = new Client({
|
|
9
|
+
api_host: getComfyUIApiHost(),
|
|
10
|
+
// Node 22+ provides global WebSocket
|
|
11
|
+
});
|
|
12
|
+
logger.info("ComfyUI client created", {
|
|
13
|
+
host: getComfyUIApiHost(),
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return clientInstance;
|
|
17
|
+
}
|
|
18
|
+
export async function connectClient() {
|
|
19
|
+
const client = getClient();
|
|
20
|
+
try {
|
|
21
|
+
await client.connect();
|
|
22
|
+
logger.info("Connected to ComfyUI via WebSocket");
|
|
23
|
+
return client;
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
throw new ConnectionError(`Failed to connect to ComfyUI at ${getComfyUIApiHost()}: ${err instanceof Error ? err.message : err}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export async function getSystemStats() {
|
|
30
|
+
const client = getClient();
|
|
31
|
+
const stats = await client.getSystemStats();
|
|
32
|
+
return stats;
|
|
33
|
+
}
|
|
34
|
+
export async function getObjectInfo() {
|
|
35
|
+
const client = getClient();
|
|
36
|
+
const info = await client.getNodeDefs();
|
|
37
|
+
return info;
|
|
38
|
+
}
|
|
39
|
+
export async function getQueue() {
|
|
40
|
+
const client = getClient();
|
|
41
|
+
const queue = await client.getQueue();
|
|
42
|
+
return queue;
|
|
43
|
+
}
|
|
44
|
+
export async function interrupt() {
|
|
45
|
+
const client = getClient();
|
|
46
|
+
await client.interrupt();
|
|
47
|
+
}
|
|
48
|
+
export async function getSamplers() {
|
|
49
|
+
const client = getClient();
|
|
50
|
+
return client.getSamplers();
|
|
51
|
+
}
|
|
52
|
+
export async function getSchedulers() {
|
|
53
|
+
const client = getClient();
|
|
54
|
+
return client.getSchedulers();
|
|
55
|
+
}
|
|
56
|
+
export async function getCheckpoints() {
|
|
57
|
+
const client = getClient();
|
|
58
|
+
return client.getSDModels();
|
|
59
|
+
}
|
|
60
|
+
export async function getLoRAs() {
|
|
61
|
+
const client = getClient();
|
|
62
|
+
return client.getLoRAs();
|
|
63
|
+
}
|
|
64
|
+
export async function getVAEs() {
|
|
65
|
+
const client = getClient();
|
|
66
|
+
return client.getVAEs();
|
|
67
|
+
}
|
|
68
|
+
export async function getUpscaleModels() {
|
|
69
|
+
const client = getClient();
|
|
70
|
+
return client.getUpscaleModels();
|
|
71
|
+
}
|
|
72
|
+
export function getComfyUIPath() {
|
|
73
|
+
return config.comfyuiPath;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/comfyui/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Client } from "@stable-canvas/comfyui-client";
|
|
2
|
+
import type { JobProgress } from "./types.js";
|
|
3
|
+
export interface ExecutionCallbacks {
|
|
4
|
+
onProgress?: (progress: JobProgress) => void;
|
|
5
|
+
onComplete?: (promptId: string) => void;
|
|
6
|
+
onError?: (promptId: string, error: string) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function attachExecutionListeners(client: Client, promptId: string, callbacks: ExecutionCallbacks): () => void;
|
|
9
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/comfyui/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,kBAAkB,GAC5B,MAAM,IAAI,CAwCZ"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { logger } from "../utils/logger.js";
|
|
2
|
+
export function attachExecutionListeners(client, promptId, callbacks) {
|
|
3
|
+
const unsubscribers = [];
|
|
4
|
+
if (callbacks.onProgress) {
|
|
5
|
+
const unsub = client.on("progress", (data) => {
|
|
6
|
+
if (data.prompt_id === promptId) {
|
|
7
|
+
callbacks.onProgress({
|
|
8
|
+
value: data.value,
|
|
9
|
+
max: data.max,
|
|
10
|
+
node: data.node,
|
|
11
|
+
prompt_id: data.prompt_id,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
unsubscribers.push(unsub);
|
|
16
|
+
}
|
|
17
|
+
if (callbacks.onComplete) {
|
|
18
|
+
const unsub = client.on("execution_success", (data) => {
|
|
19
|
+
if (data.prompt_id === promptId) {
|
|
20
|
+
logger.info(`Execution completed: ${promptId}`);
|
|
21
|
+
callbacks.onComplete(promptId);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
unsubscribers.push(unsub);
|
|
25
|
+
}
|
|
26
|
+
if (callbacks.onError) {
|
|
27
|
+
const unsub = client.on("execution_error", (data) => {
|
|
28
|
+
if (data.prompt_id === promptId) {
|
|
29
|
+
logger.error(`Execution error: ${promptId}`, data.exception_message);
|
|
30
|
+
callbacks.onError(promptId, data.exception_message);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
unsubscribers.push(unsub);
|
|
34
|
+
}
|
|
35
|
+
return () => {
|
|
36
|
+
for (const unsub of unsubscribers)
|
|
37
|
+
unsub();
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/comfyui/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAS5C,MAAM,UAAU,wBAAwB,CACtC,MAAc,EACd,QAAgB,EAChB,SAA6B;IAE7B,MAAM,aAAa,GAAsB,EAAE,CAAC;IAE5C,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3C,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAChC,SAAS,CAAC,UAAW,CAAC;oBACpB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE;YACpD,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;gBAChD,SAAS,CAAC,UAAW,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE;YAClD,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAChC,MAAM,CAAC,KAAK,CAAC,oBAAoB,QAAQ,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACrE,SAAS,CAAC,OAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,GAAG,EAAE;QACV,KAAK,MAAM,KAAK,IAAI,aAAa;YAAE,KAAK,EAAE,CAAC;IAC7C,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export interface ComfyUINodeDef {
|
|
2
|
+
input: {
|
|
3
|
+
required?: Record<string, NodeInputSpec>;
|
|
4
|
+
optional?: Record<string, NodeInputSpec>;
|
|
5
|
+
hidden?: Record<string, NodeInputSpec>;
|
|
6
|
+
};
|
|
7
|
+
input_order?: {
|
|
8
|
+
required?: string[];
|
|
9
|
+
optional?: string[];
|
|
10
|
+
};
|
|
11
|
+
output: string[];
|
|
12
|
+
output_is_list: boolean[];
|
|
13
|
+
output_name: string[];
|
|
14
|
+
name: string;
|
|
15
|
+
display_name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
category: string;
|
|
18
|
+
output_node: boolean;
|
|
19
|
+
python_module?: string;
|
|
20
|
+
}
|
|
21
|
+
export type NodeInputSpec = [string | string[], Record<string, unknown>?];
|
|
22
|
+
export type ObjectInfo = Record<string, ComfyUINodeDef>;
|
|
23
|
+
export interface WorkflowNode {
|
|
24
|
+
class_type: string;
|
|
25
|
+
inputs: Record<string, unknown>;
|
|
26
|
+
_meta?: {
|
|
27
|
+
title?: string;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export type WorkflowJSON = Record<string, WorkflowNode>;
|
|
31
|
+
export interface QueueStatus {
|
|
32
|
+
queue_running: QueueItem[];
|
|
33
|
+
queue_pending: QueueItem[];
|
|
34
|
+
}
|
|
35
|
+
export type QueueItem = [number, string, Record<string, unknown>, unknown, unknown];
|
|
36
|
+
export interface SystemStats {
|
|
37
|
+
system: {
|
|
38
|
+
os: string;
|
|
39
|
+
python_version: string;
|
|
40
|
+
embedded_python: boolean;
|
|
41
|
+
};
|
|
42
|
+
devices: Array<{
|
|
43
|
+
name: string;
|
|
44
|
+
type: string;
|
|
45
|
+
index: number;
|
|
46
|
+
vram_total: number;
|
|
47
|
+
vram_free: number;
|
|
48
|
+
torch_vram_total: number;
|
|
49
|
+
torch_vram_free: number;
|
|
50
|
+
}>;
|
|
51
|
+
}
|
|
52
|
+
export interface JobResult {
|
|
53
|
+
prompt_id: string;
|
|
54
|
+
images: Array<{
|
|
55
|
+
data: string;
|
|
56
|
+
mime: string;
|
|
57
|
+
}>;
|
|
58
|
+
node_outputs: Record<string, unknown>;
|
|
59
|
+
}
|
|
60
|
+
export interface JobProgress {
|
|
61
|
+
value: number;
|
|
62
|
+
max: number;
|
|
63
|
+
node?: string;
|
|
64
|
+
prompt_id?: string;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/comfyui/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACzC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;KACxC,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAE1E,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5B;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,aAAa,EAAE,SAAS,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEpF,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,OAAO,CAAC;KAC1B,CAAC;IACF,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/comfyui/types.ts"],"names":[],"mappings":"AAAA,wCAAwC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const configSchema: z.ZodObject<{
|
|
3
|
+
comfyuiHost: z.ZodDefault<z.ZodString>;
|
|
4
|
+
comfyuiPort: z.ZodDefault<z.ZodNumber>;
|
|
5
|
+
comfyuiPath: z.ZodOptional<z.ZodString>;
|
|
6
|
+
huggingfaceToken: z.ZodOptional<z.ZodString>;
|
|
7
|
+
githubToken: z.ZodOptional<z.ZodString>;
|
|
8
|
+
civitaiApiToken: z.ZodOptional<z.ZodString>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
comfyuiHost: string;
|
|
11
|
+
comfyuiPort: number;
|
|
12
|
+
comfyuiPath?: string | undefined;
|
|
13
|
+
huggingfaceToken?: string | undefined;
|
|
14
|
+
githubToken?: string | undefined;
|
|
15
|
+
civitaiApiToken?: string | undefined;
|
|
16
|
+
}, {
|
|
17
|
+
comfyuiHost?: string | undefined;
|
|
18
|
+
comfyuiPort?: number | undefined;
|
|
19
|
+
comfyuiPath?: string | undefined;
|
|
20
|
+
huggingfaceToken?: string | undefined;
|
|
21
|
+
githubToken?: string | undefined;
|
|
22
|
+
civitaiApiToken?: string | undefined;
|
|
23
|
+
}>;
|
|
24
|
+
export type Config = z.infer<typeof configSchema>;
|
|
25
|
+
export declare const config: Config;
|
|
26
|
+
export declare function getComfyUIApiHost(): string;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsFxB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;EAOhB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,eAAO,MAAM,MAAM,EAAE,MAOnB,CAAC;AAEH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import dotenv from "dotenv";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
import { dirname, resolve, join } from "path";
|
|
5
|
+
import { existsSync, readdirSync } from "node:fs";
|
|
6
|
+
import { homedir } from "node:os";
|
|
7
|
+
// Resolve .env from the package root, not process.cwd()
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
const __dirname = dirname(__filename);
|
|
10
|
+
const packageRoot = resolve(__dirname, "..");
|
|
11
|
+
dotenv.config({ path: resolve(packageRoot, ".env") });
|
|
12
|
+
/**
|
|
13
|
+
* Auto-detect ComfyUI installation directories.
|
|
14
|
+
* Checks common locations on macOS, Linux, and Windows.
|
|
15
|
+
* Returns all found paths sorted by preference.
|
|
16
|
+
*/
|
|
17
|
+
function detectComfyUIPaths() {
|
|
18
|
+
const home = homedir();
|
|
19
|
+
const candidates = [];
|
|
20
|
+
// macOS: ComfyUI Desktop app stores data here
|
|
21
|
+
candidates.push(join(home, "Documents", "ComfyUI"));
|
|
22
|
+
// macOS: Application Support
|
|
23
|
+
candidates.push(join(home, "Library", "Application Support", "ComfyUI"));
|
|
24
|
+
// Common manual install locations
|
|
25
|
+
candidates.push(join(home, "ComfyUI"));
|
|
26
|
+
candidates.push(join(home, "code", "ComfyUI"));
|
|
27
|
+
candidates.push(join(home, "projects", "ComfyUI"));
|
|
28
|
+
candidates.push(join(home, "src", "ComfyUI"));
|
|
29
|
+
// Linux common paths
|
|
30
|
+
candidates.push("/opt/ComfyUI");
|
|
31
|
+
candidates.push(join(home, ".local", "share", "ComfyUI"));
|
|
32
|
+
// Windows common paths (via WSL or native)
|
|
33
|
+
candidates.push(join(home, "AppData", "Local", "ComfyUI"));
|
|
34
|
+
candidates.push(join(home, "Desktop", "ComfyUI"));
|
|
35
|
+
// Also scan ~/Documents for any ComfyUI-named directories
|
|
36
|
+
const documentsDir = join(home, "Documents");
|
|
37
|
+
try {
|
|
38
|
+
if (existsSync(documentsDir)) {
|
|
39
|
+
const entries = readdirSync(documentsDir, { withFileTypes: true });
|
|
40
|
+
for (const entry of entries) {
|
|
41
|
+
if (entry.isDirectory() && entry.name.toLowerCase().includes("comfyui")) {
|
|
42
|
+
const fullPath = join(documentsDir, entry.name);
|
|
43
|
+
if (!candidates.includes(fullPath)) {
|
|
44
|
+
candidates.push(fullPath);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// Ignore permission errors
|
|
52
|
+
}
|
|
53
|
+
return candidates.filter((p) => existsSync(p));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolve the ComfyUI path, with auto-detection fallback.
|
|
57
|
+
* Priority: COMFYUI_PATH env var > auto-detected paths.
|
|
58
|
+
* Logs a warning if multiple installations found.
|
|
59
|
+
*/
|
|
60
|
+
function resolveComfyUIPath(envPath) {
|
|
61
|
+
if (envPath)
|
|
62
|
+
return envPath;
|
|
63
|
+
const detected = detectComfyUIPaths();
|
|
64
|
+
if (detected.length === 0)
|
|
65
|
+
return undefined;
|
|
66
|
+
if (detected.length > 1) {
|
|
67
|
+
console.error(`[comfyui-mcp] Multiple ComfyUI installations detected:\n` +
|
|
68
|
+
detected.map((p, i) => ` ${i + 1}. ${p}`).join("\n") +
|
|
69
|
+
`\nUsing: ${detected[0]}\n` +
|
|
70
|
+
`Set COMFYUI_PATH to override.`);
|
|
71
|
+
}
|
|
72
|
+
return detected[0];
|
|
73
|
+
}
|
|
74
|
+
const configSchema = z.object({
|
|
75
|
+
comfyuiHost: z.string().default("127.0.0.1"),
|
|
76
|
+
comfyuiPort: z.coerce.number().int().positive().default(8188),
|
|
77
|
+
comfyuiPath: z.string().optional(),
|
|
78
|
+
huggingfaceToken: z.string().optional(),
|
|
79
|
+
githubToken: z.string().optional(),
|
|
80
|
+
civitaiApiToken: z.string().optional(),
|
|
81
|
+
});
|
|
82
|
+
export const config = configSchema.parse({
|
|
83
|
+
comfyuiHost: process.env.COMFYUI_HOST,
|
|
84
|
+
comfyuiPort: process.env.COMFYUI_PORT,
|
|
85
|
+
comfyuiPath: resolveComfyUIPath(process.env.COMFYUI_PATH),
|
|
86
|
+
huggingfaceToken: process.env.HUGGINGFACE_TOKEN,
|
|
87
|
+
githubToken: process.env.GITHUB_TOKEN,
|
|
88
|
+
civitaiApiToken: process.env.CIVITAI_API_TOKEN,
|
|
89
|
+
});
|
|
90
|
+
export function getComfyUIApiHost() {
|
|
91
|
+
return `${config.comfyuiHost}:${config.comfyuiPort}`;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
+
import { registerAllTools } from "./tools/index.js";
|
|
5
|
+
import { logger } from "./utils/logger.js";
|
|
6
|
+
const server = new McpServer({
|
|
7
|
+
name: "comfyui-mcp",
|
|
8
|
+
version: "0.1.0",
|
|
9
|
+
}, {
|
|
10
|
+
capabilities: { tools: {} },
|
|
11
|
+
});
|
|
12
|
+
registerAllTools(server);
|
|
13
|
+
async function main() {
|
|
14
|
+
const transport = new StdioServerTransport();
|
|
15
|
+
await server.connect(transport);
|
|
16
|
+
logger.info("ComfyUI MCP server running on stdio");
|
|
17
|
+
}
|
|
18
|
+
main().catch((err) => {
|
|
19
|
+
logger.error("Fatal error", err);
|
|
20
|
+
process.exit(1);
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;IACE,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;CAC5B,CACF,CAAC;AAEF,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEzB,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;AACrD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { WorkflowJSON } from "../comfyui/types.js";
|
|
2
|
+
interface MermaidOptions {
|
|
3
|
+
showValues?: boolean;
|
|
4
|
+
direction?: "LR" | "TB";
|
|
5
|
+
}
|
|
6
|
+
export declare function convertToMermaid(workflow: WorkflowJSON, options?: MermaidOptions): string;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=mermaid-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaid-converter.d.ts","sourceRoot":"","sources":["../../src/services/mermaid-converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,qBAAqB,CAAC;AAUtE,UAAU,cAAc;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAqMD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,cAAmB,GAC3B,MAAM,CA0ER"}
|