comfyui-mcp 0.4.0 → 0.5.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 CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  Works on **macOS**, **Linux**, and **Windows**. Auto-detects your ComfyUI installation and port.
10
10
 
11
- **31 MCP tools** | **10 slash commands** | **4 knowledge skills** | **3 autonomous agents** | **3 hooks**
11
+ **46 MCP tools** | **10 slash commands** | **4 knowledge skills** | **3 autonomous agents** | **3 hooks**
12
12
 
13
13
  ---
14
14
 
@@ -104,7 +104,31 @@ claude plugin install comfyui-mcp
104
104
 
105
105
  ## MCP Tools
106
106
 
107
- 31 tools organized into 13 categories:
107
+ 46 tools across workflow execution, generation, iteration, composition, models, and more:
108
+
109
+ ### Image Generation (high-level)
110
+
111
+ | Tool | Description |
112
+ |------|-------------|
113
+ | `generate_image` | Generate from a text prompt — builds a txt2img workflow, fills unspecified params from your defaults, auto-selects a checkpoint |
114
+ | `generate_with_controlnet` | Generate conditioned by a ControlNet image (pose/depth/canny/normal) + prompt |
115
+ | `generate_with_ip_adapter` | Generate guided by a reference image's style/subject via IP-Adapter (needs ComfyUI_IPAdapter_plus) |
116
+
117
+ ### Assets & Iteration
118
+
119
+ | Tool | Description |
120
+ |------|-------------|
121
+ | `view_image` | Return a generated asset's bytes as an inline image so the agent can see the result |
122
+ | `regenerate` | Re-run the workflow that produced an `asset_id`, with optional parameter overrides |
123
+ | `list_assets` | Browse recently generated assets (newest-first) by `asset_id` |
124
+ | `get_asset_metadata` | Full provenance for an asset, including the originating workflow |
125
+
126
+ ### Defaults
127
+
128
+ | Tool | Description |
129
+ |------|-------------|
130
+ | `get_defaults` | Show merged generation defaults with per-source attribution |
131
+ | `set_defaults` | Update runtime defaults; `persist: true` writes the config file |
108
132
 
109
133
  ### Workflow Execution
110
134
 
@@ -379,6 +403,7 @@ The server auto-detects your ComfyUI installation and port. Override with enviro
379
403
 
380
404
  | Variable | Default | Description |
381
405
  |----------|---------|-------------|
406
+ | `COMFYUI_URL` | | Full ComfyUI URL, e.g. `https://comfy.example.com:8443` — overrides `COMFYUI_HOST`/`PORT`/`SSL` and skips auto-detection (use for remote ComfyUI) |
382
407
  | `COMFYUI_HOST` | `127.0.0.1` | ComfyUI server address |
383
408
  | `COMFYUI_PORT` | *(auto-detect)* | ComfyUI server port (tries 8188, then 8000) |
384
409
  | `COMFYUI_PATH` | *(auto-detect)* | Path to ComfyUI data directory |
@@ -387,6 +412,35 @@ The server auto-detects your ComfyUI installation and port. Override with enviro
387
412
  | `GITHUB_TOKEN` | | GitHub token for skill generation (avoids rate limits) |
388
413
  | `LOG_LEVEL` | `info` | Logging verbosity: `debug`, `info`, `warn`, `error` |
389
414
 
415
+ ### Transports
416
+
417
+ The server speaks **stdio by default** (what Claude Code, Claude Desktop, and the MCP Inspector expect — no flags needed). For MCP gateways, remote/hosted setups, or `fetch`-based clients, opt into **streamable-HTTP**:
418
+
419
+ ```bash
420
+ # stdio (default)
421
+ npx -y comfyui-mcp
422
+
423
+ # streamable-HTTP on http://127.0.0.1:9100/mcp
424
+ npx -y comfyui-mcp --http
425
+ npx -y comfyui-mcp --http --host 0.0.0.0 --port 9100 # bind/port overrides
426
+ ```
427
+
428
+ | Flag | Env | Default | Description |
429
+ |------|-----|---------|-------------|
430
+ | `--http` / `--transport http` | `MCP_TRANSPORT=http` | `stdio` | Serve streamable-HTTP at `/mcp` instead of stdio |
431
+ | `--host <h>` | `MCP_HOST` | `127.0.0.1` | HTTP bind host (use `0.0.0.0` to expose) |
432
+ | `--port <n>` | `MCP_PORT` | `9100` | HTTP port |
433
+ | `--comfyui-url <url>` | `COMFYUI_URL` | *(auto-detect)* | Target a specific (incl. remote) ComfyUI |
434
+
435
+ ### Remote ComfyUI
436
+
437
+ Point the server at a ComfyUI running anywhere — no local install required:
438
+
439
+ ```bash
440
+ npx -y comfyui-mcp --comfyui-url http://192.168.1.50:8188
441
+ npx -y comfyui-mcp --http --comfyui-url https://comfy.example.com:8443
442
+ ```
443
+
390
444
  ### Auto-detection
391
445
 
392
446
  **Port**: Probes `8188` (CLI default) then `8000` (Desktop app default) via `/system_stats`.
@@ -591,6 +645,18 @@ MIT — see [LICENSE](./LICENSE) for details.
591
645
 
592
646
  ## Changelog
593
647
 
648
+ ### 0.5.0 — 2026-05-21
649
+
650
+ - **Streamable-HTTP transport** — opt in with `--http` (or `MCP_TRANSPORT=http`) to serve MCP over HTTP at `/mcp` for gateways, remote, and `fetch`-based clients. stdio remains the default; `--host`/`--port` configure the bind.
651
+ - **Remote ComfyUI** — `--comfyui-url` / `COMFYUI_URL` targets any (incl. remote) ComfyUI instance, overriding host/port/ssl and skipping auto-detection.
652
+ - **`generate_with_controlnet`** — ControlNet-conditioned generation (pose/depth/canny/normal) from a control image + prompt.
653
+ - **`generate_with_ip_adapter`** — reference-image style/subject guidance via IP-Adapter (requires ComfyUI_IPAdapter_plus).
654
+ - Two new `create_workflow` templates: `controlnet`, `ip_adapter`.
655
+
656
+ ### 0.4.1 — 2026-05-21
657
+
658
+ - Added `server.json` and an `mcpName` field to `package.json` for publishing to the official [MCP Registry](https://github.com/modelcontextprotocol/registry) (`io.github.artokun/comfyui-mcp`).
659
+
594
660
  ### 0.4.0 — 2026-05-20
595
661
 
596
662
  **Iteration & convenience tools** — closing the generate → see → iterate loop:
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuIxB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;EAQhB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,GAAG;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAgB7E,eAAO,MAAM,MAAM,EAAE,MAA0C,CAAC;AAEhE,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,OAAO,CAErD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwKxB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;EAQhB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,GAAG;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAmB7E,eAAO,MAAM,MAAM,EAAE,MAA0C,CAAC;AAEhE,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,OAAO,CAErD"}
package/dist/config.js CHANGED
@@ -4,6 +4,7 @@ import { fileURLToPath } from "url";
4
4
  import { dirname, resolve, join } from "path";
5
5
  import { existsSync, readdirSync } from "node:fs";
6
6
  import { homedir } from "node:os";
7
+ import { parseComfyUIUrl } from "./transport/comfyui-url.js";
7
8
  // Resolve .env from the package root, not process.cwd()
8
9
  const __filename = fileURLToPath(import.meta.url);
9
10
  const __dirname = dirname(__filename);
@@ -116,6 +117,35 @@ async function detectComfyUIPort(host) {
116
117
  console.error(`[comfyui-mcp] ComfyUI not detected on ports ${ports.join(", ")}. Defaulting to 8188.`);
117
118
  return 8188;
118
119
  }
120
+ /**
121
+ * Resolve a ComfyUI target from --comfyui-url (argv) or COMFYUI_URL (env).
122
+ * Takes precedence over COMFYUI_HOST/PORT/SSL and skips port auto-detection.
123
+ */
124
+ function resolveUrlOverride() {
125
+ const argv = process.argv.slice(2);
126
+ let raw;
127
+ for (let i = 0; i < argv.length; i++) {
128
+ const a = argv[i];
129
+ if (a === "--comfyui-url") {
130
+ raw = argv[i + 1];
131
+ break;
132
+ }
133
+ if (a.startsWith("--comfyui-url=")) {
134
+ raw = a.slice("--comfyui-url=".length);
135
+ break;
136
+ }
137
+ }
138
+ raw = raw ?? process.env.COMFYUI_URL;
139
+ if (!raw)
140
+ return undefined;
141
+ try {
142
+ return parseComfyUIUrl(raw);
143
+ }
144
+ catch (err) {
145
+ console.error(`[comfyui-mcp] Ignoring invalid --comfyui-url/COMFYUI_URL "${raw}": ${err instanceof Error ? err.message : err}`);
146
+ return undefined;
147
+ }
148
+ }
119
149
  const configSchema = z.object({
120
150
  comfyuiHost: z.string().default("127.0.0.1"),
121
151
  comfyuiPort: z.coerce.number().int().positive().optional(),
@@ -125,18 +155,20 @@ const configSchema = z.object({
125
155
  githubToken: z.string().optional(),
126
156
  civitaiApiToken: z.string().optional(),
127
157
  });
158
+ const urlOverride = resolveUrlOverride();
128
159
  const parsedConfig = configSchema.parse({
129
- comfyuiHost: process.env.COMFYUI_HOST,
130
- comfyuiPort: process.env.COMFYUI_PORT || undefined,
131
- comfyuiSsl: process.env.COMFYUI_SSL,
160
+ comfyuiHost: urlOverride?.host ?? process.env.COMFYUI_HOST,
161
+ comfyuiPort: urlOverride?.port ?? (process.env.COMFYUI_PORT || undefined),
162
+ comfyuiSsl: urlOverride?.ssl ?? process.env.COMFYUI_SSL,
132
163
  comfyuiPath: resolveComfyUIPath(process.env.COMFYUI_PATH),
133
164
  huggingfaceToken: process.env.HUGGINGFACE_TOKEN,
134
165
  githubToken: process.env.GITHUB_TOKEN,
135
166
  civitaiApiToken: process.env.CIVITAI_API_TOKEN,
136
167
  });
137
- // Resolve port: explicit env var wins, otherwise auto-detect
168
+ // Resolve port: explicit url/env wins, otherwise auto-detect.
169
+ // A --comfyui-url/COMFYUI_URL override always carries a port, so detection is skipped.
138
170
  const resolvedPort = parsedConfig.comfyuiPort
139
- ?? await detectComfyUIPort(parsedConfig.comfyuiHost);
171
+ ?? (urlOverride ? urlOverride.port : await detectComfyUIPort(parsedConfig.comfyuiHost));
140
172
  export const config = { ...parsedConfig, resolvedPort };
141
173
  export function getComfyUIApiHost() {
142
174
  return `${config.comfyuiHost}:${config.resolvedPort}`;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,18 +4,35 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
4
4
  import { registerAllTools } from "./tools/index.js";
5
5
  import { logger } from "./utils/logger.js";
6
6
  import { JobWatcher } from "./services/job-watcher.js";
7
- const server = new McpServer({
8
- name: "comfyui-mcp",
9
- version: "0.1.0",
10
- }, {
11
- capabilities: { tools: {} },
12
- });
13
- async function main() {
7
+ import { parseCliArgs } from "./transport/cli.js";
8
+ import { startHttpServer } from "./transport/http.js";
9
+ async function createConfiguredServer() {
10
+ const server = new McpServer({
11
+ name: "comfyui-mcp",
12
+ version: "0.1.0",
13
+ }, {
14
+ capabilities: { tools: {} },
15
+ });
14
16
  await registerAllTools(server);
17
+ return server;
18
+ }
19
+ async function main() {
20
+ const cli = parseCliArgs(process.argv);
15
21
  await JobWatcher.cleanupOldFiles();
16
- const transport = new StdioServerTransport();
17
- await server.connect(transport);
18
- logger.info("ComfyUI MCP server running on stdio");
22
+ if (cli.transport === "http") {
23
+ await startHttpServer({
24
+ host: cli.host,
25
+ port: cli.port,
26
+ createServer: createConfiguredServer,
27
+ });
28
+ logger.info(`ComfyUI MCP server running on http://${cli.host}:${cli.port}/mcp`);
29
+ }
30
+ else {
31
+ const server = await createConfiguredServer();
32
+ const transport = new StdioServerTransport();
33
+ await server.connect(transport);
34
+ logger.info("ComfyUI MCP server running on stdio");
35
+ }
19
36
  }
20
37
  main().catch((err) => {
21
38
  logger.error("Fatal error", err);
package/dist/index.js.map CHANGED
@@ -1 +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;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,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,KAAK,UAAU,IAAI;IACjB,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,UAAU,CAAC,eAAe,EAAE,CAAC;IACnC,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"}
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;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,KAAK,UAAU,sBAAsB;IACnC,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;KAC5B,CACF,CAAC;IACF,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,UAAU,CAAC,eAAe,EAAE,CAAC;IAEnC,IAAI,GAAG,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QAC7B,MAAM,eAAe,CAAC;YACpB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,YAAY,EAAE,sBAAsB;SACrC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,wCAAwC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC;IAClF,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;AACH,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,50 @@
1
+ import type { WorkflowJSON } from "../comfyui/types.js";
2
+ interface CommonArgs {
3
+ prompt: string;
4
+ negative_prompt?: string;
5
+ width?: number;
6
+ height?: number;
7
+ steps?: number;
8
+ cfg?: number;
9
+ sampler?: string;
10
+ scheduler?: string;
11
+ seed?: number;
12
+ checkpoint?: string;
13
+ }
14
+ export interface ControlNetArgs extends CommonArgs {
15
+ control_image: string;
16
+ controlnet_model?: string;
17
+ strength?: number;
18
+ }
19
+ export interface IpAdapterArgs extends CommonArgs {
20
+ reference_image: string;
21
+ weight?: number;
22
+ preset?: string;
23
+ }
24
+ export interface ConditionedDeps {
25
+ resolveCheckpoint: () => Promise<string | undefined>;
26
+ enqueue: (workflow: WorkflowJSON) => Promise<{
27
+ prompt_id: string;
28
+ queue_remaining?: number;
29
+ }>;
30
+ /** Optional: resolve a local ControlNet model when none is given/defaulted. */
31
+ resolveControlNetModel?: () => Promise<string | undefined>;
32
+ }
33
+ export interface ConditionedResult {
34
+ prompt_id: string;
35
+ queue_remaining?: number;
36
+ checkpoint: string;
37
+ }
38
+ /**
39
+ * Build + enqueue a ControlNet-conditioned txt2img workflow. `control_image`
40
+ * must already exist in ComfyUI's input dir (use upload_image first).
41
+ */
42
+ export declare function generateWithControlNet(args: ControlNetArgs, deps: ConditionedDeps): Promise<ConditionedResult>;
43
+ /**
44
+ * Build + enqueue an IP-Adapter-conditioned txt2img workflow. Requires the
45
+ * ComfyUI_IPAdapter_plus custom nodes. `reference_image` must already exist in
46
+ * ComfyUI's input dir (use upload_image first).
47
+ */
48
+ export declare function generateWithIpAdapter(args: IpAdapterArgs, deps: ConditionedDeps): Promise<ConditionedResult>;
49
+ export {};
50
+ //# sourceMappingURL=generate-conditioned.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-conditioned.d.ts","sourceRoot":"","sources":["../../src/services/generate-conditioned.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACrD,OAAO,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9F,+EAA+E;IAC/E,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AA0DD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,iBAAiB,CAAC,CA2B5B;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAgB5B"}
@@ -0,0 +1,95 @@
1
+ import { createWorkflow } from "./workflow-composer.js";
2
+ import { DefaultsManager } from "./defaults-manager.js";
3
+ import { ValidationError } from "../utils/errors.js";
4
+ const DEFAULTABLE_KEYS = [
5
+ "negative_prompt",
6
+ "width",
7
+ "height",
8
+ "steps",
9
+ "cfg",
10
+ "sampler",
11
+ "scheduler",
12
+ "seed",
13
+ "checkpoint",
14
+ ];
15
+ function withDefaults(args) {
16
+ const seed = {};
17
+ for (const key of DEFAULTABLE_KEYS) {
18
+ const v = args[key];
19
+ if (v !== undefined)
20
+ seed[key] = v;
21
+ }
22
+ return DefaultsManager.apply(seed);
23
+ }
24
+ async function resolveCheckpointOrThrow(explicit, resolved, resolveCheckpoint) {
25
+ let checkpoint = explicit ?? resolved.checkpoint;
26
+ if (!checkpoint)
27
+ checkpoint = await resolveCheckpoint();
28
+ if (!checkpoint) {
29
+ throw new ValidationError("No checkpoint specified, defaulted, or found locally. " +
30
+ "Pass `checkpoint`, set a default via set_defaults, or download one with download_model.");
31
+ }
32
+ return checkpoint;
33
+ }
34
+ function commonTemplateParams(args, resolved, checkpoint) {
35
+ return {
36
+ checkpoint,
37
+ positive_prompt: args.prompt,
38
+ negative_prompt: resolved.negative_prompt,
39
+ width: resolved.width,
40
+ height: resolved.height,
41
+ steps: resolved.steps,
42
+ cfg: resolved.cfg,
43
+ seed: resolved.seed,
44
+ sampler_name: resolved.sampler,
45
+ scheduler: resolved.scheduler,
46
+ };
47
+ }
48
+ /**
49
+ * Build + enqueue a ControlNet-conditioned txt2img workflow. `control_image`
50
+ * must already exist in ComfyUI's input dir (use upload_image first).
51
+ */
52
+ export async function generateWithControlNet(args, deps) {
53
+ if (!args.control_image) {
54
+ throw new ValidationError("control_image is required (upload it first with upload_image)");
55
+ }
56
+ const resolved = withDefaults(args);
57
+ const checkpoint = await resolveCheckpointOrThrow(args.checkpoint, resolved, deps.resolveCheckpoint);
58
+ let controlnetModel = args.controlnet_model;
59
+ if (!controlnetModel && deps.resolveControlNetModel) {
60
+ controlnetModel = await deps.resolveControlNetModel();
61
+ }
62
+ if (!controlnetModel) {
63
+ throw new ValidationError("No controlnet_model specified and none found locally. Pass `controlnet_model` " +
64
+ "(a file in models/controlnet/) or download one with download_model.");
65
+ }
66
+ const workflow = createWorkflow("controlnet", {
67
+ ...commonTemplateParams(args, resolved, checkpoint),
68
+ control_image: args.control_image,
69
+ controlnet_model: controlnetModel,
70
+ strength: args.strength,
71
+ });
72
+ const { prompt_id, queue_remaining } = await deps.enqueue(workflow);
73
+ return { prompt_id, queue_remaining, checkpoint };
74
+ }
75
+ /**
76
+ * Build + enqueue an IP-Adapter-conditioned txt2img workflow. Requires the
77
+ * ComfyUI_IPAdapter_plus custom nodes. `reference_image` must already exist in
78
+ * ComfyUI's input dir (use upload_image first).
79
+ */
80
+ export async function generateWithIpAdapter(args, deps) {
81
+ if (!args.reference_image) {
82
+ throw new ValidationError("reference_image is required (upload it first with upload_image)");
83
+ }
84
+ const resolved = withDefaults(args);
85
+ const checkpoint = await resolveCheckpointOrThrow(args.checkpoint, resolved, deps.resolveCheckpoint);
86
+ const workflow = createWorkflow("ip_adapter", {
87
+ ...commonTemplateParams(args, resolved, checkpoint),
88
+ reference_image: args.reference_image,
89
+ weight: args.weight,
90
+ preset: args.preset,
91
+ });
92
+ const { prompt_id, queue_remaining } = await deps.enqueue(workflow);
93
+ return { prompt_id, queue_remaining, checkpoint };
94
+ }
95
+ //# sourceMappingURL=generate-conditioned.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-conditioned.js","sourceRoot":"","sources":["../../src/services/generate-conditioned.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-composer.d.ts","sourceRoot":"","sources":["../../src/services/workflow-composer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,qBAAqB,CAAC;AAKtE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAG5D;AAoQD,eAAO,MAAM,cAAc,UAAyB,CAAC;AAErD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACnC,YAAY,CAQd;AAID,UAAU,UAAU;IAClB,EAAE,EAAE,WAAW,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,SAAS;IACjB,EAAE,EAAE,UAAU,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,UAAU,YAAY;IACpB,EAAE,EAAE,aAAa,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,SAAS;IACjB,EAAE,EAAE,SAAS,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,eAAe;IACvB,EAAE,EAAE,gBAAgB,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,SAAS,GACT,YAAY,GACZ,SAAS,GACT,eAAe,CAAC;AA+EpB,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,eAAe,EAAE,GAC5B;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAgCjD"}
1
+ {"version":3,"file":"workflow-composer.d.ts","sourceRoot":"","sources":["../../src/services/workflow-composer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,qBAAqB,CAAC;AAKtE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAG5D;AA2aD,eAAO,MAAM,cAAc,UAAyB,CAAC;AAErD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACnC,YAAY,CAQd;AAID,UAAU,UAAU;IAClB,EAAE,EAAE,WAAW,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,SAAS;IACjB,EAAE,EAAE,UAAU,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,UAAU,YAAY;IACpB,EAAE,EAAE,aAAa,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,SAAS;IACjB,EAAE,EAAE,SAAS,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,eAAe;IACvB,EAAE,EAAE,gBAAgB,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,SAAS,GACT,YAAY,GACZ,SAAS,GACT,eAAe,CAAC;AA+EpB,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,eAAe,EAAE,GAC5B;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAgCjD"}
@@ -214,11 +214,156 @@ function buildInpaint(p) {
214
214
  },
215
215
  };
216
216
  }
217
+ function buildControlNet(p) {
218
+ const ckpt = p.checkpoint ?? "sd_xl_base_1.0.safetensors";
219
+ const positive = p.positive_prompt ?? "";
220
+ const negative = p.negative_prompt ?? "";
221
+ const width = p.width ?? 1024;
222
+ const height = p.height ?? 1024;
223
+ const steps = p.steps ?? 20;
224
+ const cfg = p.cfg ?? 8.0;
225
+ const seed = p.seed ?? Math.floor(Math.random() * 2 ** 48);
226
+ const sampler = p.sampler_name ?? "euler";
227
+ const scheduler = p.scheduler ?? "normal";
228
+ const controlNet = p.controlnet_model ?? "control_v11p_sd15_canny.pth";
229
+ const controlImage = p.control_image ?? "control.png";
230
+ const strength = p.strength ?? 1.0;
231
+ return {
232
+ "1": { class_type: "CheckpointLoaderSimple", inputs: { ckpt_name: ckpt } },
233
+ "2": {
234
+ class_type: "LoadImage",
235
+ inputs: { image: controlImage },
236
+ _meta: { title: "Control Image" },
237
+ },
238
+ "3": { class_type: "ControlNetLoader", inputs: { control_net_name: controlNet } },
239
+ "4": {
240
+ class_type: "CLIPTextEncode",
241
+ inputs: { text: positive, clip: conn("1", 1) },
242
+ _meta: { title: "Positive Prompt" },
243
+ },
244
+ "5": {
245
+ class_type: "CLIPTextEncode",
246
+ inputs: { text: negative, clip: conn("1", 1) },
247
+ _meta: { title: "Negative Prompt" },
248
+ },
249
+ "6": {
250
+ class_type: "ControlNetApplyAdvanced",
251
+ inputs: {
252
+ positive: conn("4", 0),
253
+ negative: conn("5", 0),
254
+ control_net: conn("3", 0),
255
+ image: conn("2", 0),
256
+ strength,
257
+ start_percent: 0.0,
258
+ end_percent: 1.0,
259
+ },
260
+ },
261
+ "7": {
262
+ class_type: "EmptyLatentImage",
263
+ inputs: { width, height, batch_size: 1 },
264
+ },
265
+ "8": {
266
+ class_type: "KSampler",
267
+ inputs: {
268
+ model: conn("1", 0),
269
+ positive: conn("6", 0),
270
+ negative: conn("6", 1),
271
+ latent_image: conn("7", 0),
272
+ seed,
273
+ steps,
274
+ cfg,
275
+ sampler_name: sampler,
276
+ scheduler,
277
+ denoise: 1.0,
278
+ },
279
+ },
280
+ "9": { class_type: "VAEDecode", inputs: { samples: conn("8", 0), vae: conn("1", 2) } },
281
+ "10": {
282
+ class_type: "SaveImage",
283
+ inputs: { images: conn("9", 0), filename_prefix: "ComfyUI_controlnet" },
284
+ },
285
+ };
286
+ }
287
+ // Requires the ComfyUI_IPAdapter_plus custom node pack (IPAdapterUnifiedLoader, IPAdapter).
288
+ function buildIpAdapter(p) {
289
+ const ckpt = p.checkpoint ?? "sd_xl_base_1.0.safetensors";
290
+ const positive = p.positive_prompt ?? "";
291
+ const negative = p.negative_prompt ?? "";
292
+ const width = p.width ?? 1024;
293
+ const height = p.height ?? 1024;
294
+ const steps = p.steps ?? 20;
295
+ const cfg = p.cfg ?? 8.0;
296
+ const seed = p.seed ?? Math.floor(Math.random() * 2 ** 48);
297
+ const sampler = p.sampler_name ?? "euler";
298
+ const scheduler = p.scheduler ?? "normal";
299
+ const refImage = p.reference_image ?? "reference.png";
300
+ const weight = p.weight ?? 0.8;
301
+ const preset = p.preset ?? "PLUS (high strength)";
302
+ return {
303
+ "1": { class_type: "CheckpointLoaderSimple", inputs: { ckpt_name: ckpt } },
304
+ "2": {
305
+ class_type: "LoadImage",
306
+ inputs: { image: refImage },
307
+ _meta: { title: "Reference Image" },
308
+ },
309
+ "3": {
310
+ class_type: "IPAdapterUnifiedLoader",
311
+ inputs: { model: conn("1", 0), preset },
312
+ },
313
+ "4": {
314
+ class_type: "IPAdapter",
315
+ inputs: {
316
+ model: conn("3", 0),
317
+ ipadapter: conn("3", 1),
318
+ image: conn("2", 0),
319
+ weight,
320
+ start_at: 0.0,
321
+ end_at: 1.0,
322
+ },
323
+ },
324
+ "5": {
325
+ class_type: "CLIPTextEncode",
326
+ inputs: { text: positive, clip: conn("1", 1) },
327
+ _meta: { title: "Positive Prompt" },
328
+ },
329
+ "6": {
330
+ class_type: "CLIPTextEncode",
331
+ inputs: { text: negative, clip: conn("1", 1) },
332
+ _meta: { title: "Negative Prompt" },
333
+ },
334
+ "7": {
335
+ class_type: "EmptyLatentImage",
336
+ inputs: { width, height, batch_size: 1 },
337
+ },
338
+ "8": {
339
+ class_type: "KSampler",
340
+ inputs: {
341
+ model: conn("4", 0),
342
+ positive: conn("5", 0),
343
+ negative: conn("6", 0),
344
+ latent_image: conn("7", 0),
345
+ seed,
346
+ steps,
347
+ cfg,
348
+ sampler_name: sampler,
349
+ scheduler,
350
+ denoise: 1.0,
351
+ },
352
+ },
353
+ "9": { class_type: "VAEDecode", inputs: { samples: conn("8", 0), vae: conn("1", 2) } },
354
+ "10": {
355
+ class_type: "SaveImage",
356
+ inputs: { images: conn("9", 0), filename_prefix: "ComfyUI_ipadapter" },
357
+ },
358
+ };
359
+ }
217
360
  const TEMPLATES = {
218
361
  txt2img: (p) => buildTxt2Img(p),
219
362
  img2img: (p) => buildImg2Img(p),
220
363
  upscale: (p) => buildUpscale(p),
221
364
  inpaint: (p) => buildInpaint(p),
365
+ controlnet: (p) => buildControlNet(p),
366
+ ip_adapter: (p) => buildIpAdapter(p),
222
367
  };
223
368
  export const TEMPLATE_NAMES = Object.keys(TEMPLATES);
224
369
  export function createWorkflow(template, params = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-composer.js","sourceRoot":"","sources":["../../src/services/workflow-composer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-composer.js","sourceRoot":"","sources":["../../src/services/workflow-composer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerConditionedGenerationTools(server: McpServer): void;
3
+ //# sourceMappingURL=generate-conditioned.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-conditioned.d.ts","sourceRoot":"","sources":["../../src/tools/generate-conditioned.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2DzE,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsC1E"}
@@ -0,0 +1,78 @@
1
+ import { z } from "zod";
2
+ import { generateWithControlNet, generateWithIpAdapter, } from "../services/generate-conditioned.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 resolveFirstModel(type) {
7
+ try {
8
+ const models = await listLocalModels(type);
9
+ return models[0]?.name;
10
+ }
11
+ catch {
12
+ return undefined;
13
+ }
14
+ }
15
+ const deps = {
16
+ resolveCheckpoint: () => resolveFirstModel("checkpoints"),
17
+ resolveControlNetModel: () => resolveFirstModel("controlnet"),
18
+ enqueue: (workflow) => enqueueWorkflow(workflow),
19
+ };
20
+ const commonShape = {
21
+ negative_prompt: z.string().optional(),
22
+ width: z.number().int().positive().optional(),
23
+ height: z.number().int().positive().optional(),
24
+ steps: z.number().int().positive().optional(),
25
+ cfg: z.number().positive().optional(),
26
+ sampler: z.string().optional(),
27
+ scheduler: z.string().optional(),
28
+ seed: z.number().int().optional(),
29
+ checkpoint: z.string().optional().describe("Checkpoint filename; auto-selected if omitted"),
30
+ };
31
+ function enqueuedResult(result, tool) {
32
+ return {
33
+ content: [
34
+ {
35
+ type: "text",
36
+ text: JSON.stringify({
37
+ status: "enqueued",
38
+ tool,
39
+ prompt_id: result.prompt_id,
40
+ queue_remaining: result.queue_remaining,
41
+ checkpoint: result.checkpoint,
42
+ note: "asset_id will be available in the completion notification; use view_image or regenerate with it.",
43
+ }, null, 2),
44
+ },
45
+ ],
46
+ };
47
+ }
48
+ export function registerConditionedGenerationTools(server) {
49
+ server.tool("generate_with_controlnet", "Generate an image conditioned by a ControlNet preprocessed image (pose skeleton, depth, canny, normal, etc.) plus a text prompt. Upload the control image first with upload_image, then pass its filename as control_image. Unspecified params fall back to your defaults; checkpoint and controlnet_model auto-resolve from local models. Returns prompt_id immediately; asset_id arrives in the completion notification.", {
50
+ prompt: z.string().describe("Positive text prompt"),
51
+ control_image: z.string().describe("Filename of the (already-uploaded) control image in ComfyUI's input dir"),
52
+ controlnet_model: z.string().optional().describe("ControlNet model file (in models/controlnet/); auto-selected if omitted"),
53
+ strength: z.number().positive().optional().describe("ControlNet conditioning strength (default 1.0)"),
54
+ ...commonShape,
55
+ }, async (args) => {
56
+ try {
57
+ return enqueuedResult(await generateWithControlNet(args, deps), "generate_with_controlnet");
58
+ }
59
+ catch (err) {
60
+ return errorToToolResult(err);
61
+ }
62
+ });
63
+ server.tool("generate_with_ip_adapter", "Generate an image guided by a reference image's style/subject via IP-Adapter, plus a text prompt. Requires the ComfyUI_IPAdapter_plus custom nodes. Upload the reference first with upload_image, then pass its filename as reference_image. Unspecified params fall back to your defaults; checkpoint auto-resolves. Returns prompt_id immediately; asset_id arrives in the completion notification.", {
64
+ prompt: z.string().describe("Positive text prompt"),
65
+ reference_image: z.string().describe("Filename of the (already-uploaded) reference image in ComfyUI's input dir"),
66
+ weight: z.number().optional().describe("IP-Adapter weight (default 0.8)"),
67
+ preset: z.string().optional().describe("IPAdapterUnifiedLoader preset (default 'PLUS (high strength)')"),
68
+ ...commonShape,
69
+ }, async (args) => {
70
+ try {
71
+ return enqueuedResult(await generateWithIpAdapter(args, deps), "generate_with_ip_adapter");
72
+ }
73
+ catch (err) {
74
+ return errorToToolResult(err);
75
+ }
76
+ });
77
+ }
78
+ //# sourceMappingURL=generate-conditioned.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-conditioned.js","sourceRoot":"","sources":["../../src/tools/generate-conditioned.ts"],"names":[],"mappings":"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"}
@@ -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;AAqBzE,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBvE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBzE,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBvE"}
@@ -16,6 +16,7 @@ import { registerAssetTools } from "./assets.js";
16
16
  import { registerAutoloadedWorkflows } from "./workflow-autoload.js";
17
17
  import { registerDefaultsTools } from "./defaults.js";
18
18
  import { registerGenerateImageTool } from "./generate-image.js";
19
+ import { registerConditionedGenerationTools } from "./generate-conditioned.js";
19
20
  import { DefaultsManager } from "../services/defaults-manager.js";
20
21
  export async function registerAllTools(server) {
21
22
  // Hydrate persisted defaults before any tool registration so subsequent
@@ -38,6 +39,7 @@ export async function registerAllTools(server) {
38
39
  registerAssetTools(server);
39
40
  registerDefaultsTools(server);
40
41
  registerGenerateImageTool(server);
42
+ registerConditionedGenerationTools(server);
41
43
  await registerAutoloadedWorkflows(server);
42
44
  }
43
45
  //# sourceMappingURL=index.js.map
@@ -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;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"}
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,kCAAkC,EAAE,MAAM,2BAA2B,CAAC;AAC/E,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,kCAAkC,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,15 @@
1
+ export type TransportMode = "stdio" | "http";
2
+ export interface CliOptions {
3
+ transport: TransportMode;
4
+ host: string;
5
+ port: number;
6
+ }
7
+ /**
8
+ * Parse transport-related CLI flags and env vars. stdio is the default so
9
+ * existing Claude Code / Desktop users are unaffected; --http opts into the
10
+ * streamable-HTTP server. Supports both "--flag value" and "--flag=value".
11
+ *
12
+ * Precedence: explicit CLI flag > env var > built-in default.
13
+ */
14
+ export declare function parseCliArgs(argv: string[], env?: NodeJS.ProcessEnv): CliOptions;
15
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/transport/cli.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAKD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,UAAU,CAkCZ"}
@@ -0,0 +1,48 @@
1
+ const DEFAULT_HOST = "127.0.0.1";
2
+ const DEFAULT_PORT = 9100;
3
+ /**
4
+ * Parse transport-related CLI flags and env vars. stdio is the default so
5
+ * existing Claude Code / Desktop users are unaffected; --http opts into the
6
+ * streamable-HTTP server. Supports both "--flag value" and "--flag=value".
7
+ *
8
+ * Precedence: explicit CLI flag > env var > built-in default.
9
+ */
10
+ export function parseCliArgs(argv, env = process.env) {
11
+ const args = argv.slice(2);
12
+ let transport = env.MCP_TRANSPORT === "http" ? "http" : "stdio";
13
+ let host = env.MCP_HOST ?? DEFAULT_HOST;
14
+ let port = env.MCP_PORT ? Number(env.MCP_PORT) : DEFAULT_PORT;
15
+ const valueOf = (current, inline, i) => {
16
+ if (current.includes("="))
17
+ return [current.slice(current.indexOf("=") + 1), i];
18
+ return [args[i + 1] ?? "", i + 1];
19
+ };
20
+ for (let i = 0; i < args.length; i++) {
21
+ const a = args[i];
22
+ if (a === "--http") {
23
+ transport = "http";
24
+ }
25
+ else if (a === "--stdio") {
26
+ transport = "stdio";
27
+ }
28
+ else if (a === "--transport" || a.startsWith("--transport=")) {
29
+ const [v, ni] = valueOf(a, "--transport", i);
30
+ transport = v === "http" ? "http" : "stdio";
31
+ i = ni;
32
+ }
33
+ else if (a === "--host" || a.startsWith("--host=")) {
34
+ const [v, ni] = valueOf(a, "--host", i);
35
+ if (v)
36
+ host = v;
37
+ i = ni;
38
+ }
39
+ else if (a === "--port" || a.startsWith("--port=")) {
40
+ const [v, ni] = valueOf(a, "--port", i);
41
+ if (v)
42
+ port = Number(v);
43
+ i = ni;
44
+ }
45
+ }
46
+ return { transport, host, port };
47
+ }
48
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/transport/cli.ts"],"names":[],"mappings":"AAQA,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAc,EACd,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,SAAS,GAAkB,GAAG,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/E,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,IAAI,YAAY,CAAC;IACxC,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAE9D,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,MAAc,EAAE,CAAS,EAAoB,EAAE;QAC/E,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YACnB,SAAS,GAAG,MAAM,CAAC;QACrB,CAAC;aAAM,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,SAAS,GAAG,OAAO,CAAC;QACtB,CAAC;aAAM,IAAI,CAAC,KAAK,aAAa,IAAI,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/D,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;YAC7C,SAAS,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5C,CAAC,GAAG,EAAE,CAAC;QACT,CAAC;aAAM,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC;gBAAE,IAAI,GAAG,CAAC,CAAC;YAChB,CAAC,GAAG,EAAE,CAAC;QACT,CAAC;aAAM,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC;gBAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC,GAAG,EAAE,CAAC;QACT,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface ComfyUITarget {
2
+ host: string;
3
+ port: number;
4
+ ssl: boolean;
5
+ }
6
+ /**
7
+ * Parse a full ComfyUI URL (e.g. http://127.0.0.1:8188, https://comfy.example.com)
8
+ * into host/port/ssl. Used by --comfyui-url / COMFYUI_URL to target any (incl.
9
+ * remote) ComfyUI instance, overriding the COMFYUI_HOST/PORT/SSL env vars.
10
+ */
11
+ export declare function parseComfyUIUrl(url: string): ComfyUITarget;
12
+ //# sourceMappingURL=comfyui-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comfyui-url.d.ts","sourceRoot":"","sources":["../../src/transport/comfyui-url.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAQ1D"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Parse a full ComfyUI URL (e.g. http://127.0.0.1:8188, https://comfy.example.com)
3
+ * into host/port/ssl. Used by --comfyui-url / COMFYUI_URL to target any (incl.
4
+ * remote) ComfyUI instance, overriding the COMFYUI_HOST/PORT/SSL env vars.
5
+ */
6
+ export function parseComfyUIUrl(url) {
7
+ const u = new URL(url);
8
+ if (u.protocol !== "http:" && u.protocol !== "https:") {
9
+ throw new Error(`Unsupported protocol "${u.protocol}" in --comfyui-url (expected http or https)`);
10
+ }
11
+ const ssl = u.protocol === "https:";
12
+ const port = u.port ? Number(u.port) : ssl ? 443 : 80;
13
+ return { host: u.hostname, port, ssl };
14
+ }
15
+ //# sourceMappingURL=comfyui-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comfyui-url.js","sourceRoot":"","sources":["../../src/transport/comfyui-url.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,QAAQ,6CAA6C,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;IACpC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACzC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import http from "node:http";
2
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ export interface HttpServerOptions {
4
+ host: string;
5
+ port: number;
6
+ /** Factory invoked once per session to build a fully-configured McpServer. */
7
+ createServer: () => Promise<McpServer> | McpServer;
8
+ /** Path the MCP endpoint is served on (default /mcp). */
9
+ path?: string;
10
+ }
11
+ /**
12
+ * Start a streamable-HTTP MCP server using the canonical SDK session pattern:
13
+ * a new transport + McpServer is created on the initialize request and reused
14
+ * for subsequent requests carrying the mcp-session-id header.
15
+ */
16
+ export declare function startHttpServer(opts: HttpServerOptions): Promise<http.Server>;
17
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,YAAY,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IACnD,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA8BD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAwDnF"}
@@ -0,0 +1,95 @@
1
+ import http from "node:http";
2
+ import { randomUUID } from "node:crypto";
3
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
4
+ import { isInitializeRequest } from "@modelcontextprotocol/sdk/types.js";
5
+ import { logger } from "../utils/logger.js";
6
+ function readBody(req) {
7
+ return new Promise((resolve, reject) => {
8
+ const chunks = [];
9
+ req.on("data", (c) => chunks.push(c));
10
+ req.on("end", () => {
11
+ const raw = Buffer.concat(chunks).toString("utf-8");
12
+ if (raw.length === 0)
13
+ return resolve(undefined);
14
+ try {
15
+ resolve(JSON.parse(raw));
16
+ }
17
+ catch (err) {
18
+ reject(err);
19
+ }
20
+ });
21
+ req.on("error", reject);
22
+ });
23
+ }
24
+ function sendJsonError(res, status, message) {
25
+ res.writeHead(status, { "Content-Type": "application/json" });
26
+ res.end(JSON.stringify({
27
+ jsonrpc: "2.0",
28
+ error: { code: -32000, message },
29
+ id: null,
30
+ }));
31
+ }
32
+ /**
33
+ * Start a streamable-HTTP MCP server using the canonical SDK session pattern:
34
+ * a new transport + McpServer is created on the initialize request and reused
35
+ * for subsequent requests carrying the mcp-session-id header.
36
+ */
37
+ export async function startHttpServer(opts) {
38
+ const path = opts.path ?? "/mcp";
39
+ const transports = new Map();
40
+ const httpServer = http.createServer(async (req, res) => {
41
+ try {
42
+ const url = new URL(req.url ?? "/", `http://${req.headers.host ?? "localhost"}`);
43
+ if (url.pathname !== path) {
44
+ sendJsonError(res, 404, `Not found. MCP endpoint is ${path}`);
45
+ return;
46
+ }
47
+ const sessionId = req.headers["mcp-session-id"];
48
+ let transport = sessionId ? transports.get(sessionId) : undefined;
49
+ if (req.method === "POST") {
50
+ const body = await readBody(req);
51
+ if (!transport) {
52
+ if (!isInitializeRequest(body)) {
53
+ sendJsonError(res, 400, "No valid session: first request must be an initialize request");
54
+ return;
55
+ }
56
+ transport = new StreamableHTTPServerTransport({
57
+ sessionIdGenerator: () => randomUUID(),
58
+ onsessioninitialized: (sid) => {
59
+ transports.set(sid, transport);
60
+ logger.info("HTTP MCP session initialized", { session: sid });
61
+ },
62
+ });
63
+ transport.onclose = () => {
64
+ const sid = transport.sessionId;
65
+ if (sid)
66
+ transports.delete(sid);
67
+ };
68
+ const server = await opts.createServer();
69
+ await server.connect(transport);
70
+ }
71
+ await transport.handleRequest(req, res, body);
72
+ }
73
+ else if (req.method === "GET" || req.method === "DELETE") {
74
+ if (!transport) {
75
+ sendJsonError(res, 400, "Missing or unknown mcp-session-id");
76
+ return;
77
+ }
78
+ await transport.handleRequest(req, res);
79
+ }
80
+ else {
81
+ sendJsonError(res, 405, "Method not allowed");
82
+ }
83
+ }
84
+ catch (err) {
85
+ logger.error("HTTP MCP request error", {
86
+ error: err instanceof Error ? err.message : err,
87
+ });
88
+ if (!res.headersSent)
89
+ sendJsonError(res, 500, "Internal server error");
90
+ }
91
+ });
92
+ await new Promise((resolve) => httpServer.listen(opts.port, opts.host, resolve));
93
+ return httpServer;
94
+ }
95
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "comfyui-mcp",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
+ "mcpName": "io.github.artokun/comfyui-mcp",
4
5
  "description": "MCP server for ComfyUI — workflow execution, visualization, composition, registry, and skill generation",
5
6
  "type": "module",
6
7
  "main": "dist/index.js",
package/server.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
3
+ "name": "io.github.artokun/comfyui-mcp",
4
+ "description": "MCP server + Claude Code plugin for ComfyUI: run workflows, generate images, manage models & VRAM.",
5
+ "repository": {
6
+ "url": "https://github.com/artokun/comfyui-mcp",
7
+ "source": "github"
8
+ },
9
+ "version": "0.5.0",
10
+ "packages": [
11
+ {
12
+ "registryType": "npm",
13
+ "registryBaseUrl": "https://registry.npmjs.org",
14
+ "identifier": "comfyui-mcp",
15
+ "version": "0.5.0",
16
+ "transport": {
17
+ "type": "stdio"
18
+ }
19
+ }
20
+ ]
21
+ }