comfyui-mcp 0.16.0 → 0.17.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 +1 -0
- package/package.json +9 -1
- package/.beads/README.md +0 -81
- package/.beads/config.yaml +0 -54
- package/.beads/hooks/post-checkout +0 -24
- package/.beads/hooks/post-merge +0 -24
- package/.beads/hooks/pre-commit +0 -24
- package/.beads/hooks/pre-push +0 -24
- package/.beads/hooks/prepare-commit-msg +0 -24
- package/.beads/metadata.json +0 -7
- package/.codex/hooks.json +0 -15
- package/.dockerignore +0 -24
- package/.gitattributes +0 -4
- package/AGENTS.md +0 -84
- package/CHANGELOG.md +0 -755
- package/CLAUDE.md +0 -76
- package/CONTRIBUTING.md +0 -137
- package/Dockerfile +0 -61
- package/PACK-SPLIT-STATUS.md +0 -87
- package/ROADMAP.md +0 -135
- package/TODO.md +0 -75
- package/assets/controlnet_demo.png +0 -0
- package/assets/ideogram_demo.png +0 -0
- package/assets/ltx_sharp_demo.png +0 -0
- package/assets/ltx_t2v_demo.png +0 -0
- package/assets/qwen_edit_demo.png +0 -0
- package/assets/sample_woman.png +0 -0
- package/assets/sample_woman_video.mp4 +0 -0
- package/assets/wan_demo.png +0 -0
- package/assets/wan_sharp_demo.png +0 -0
- package/assets/wan_transparent_demo.png +0 -0
- package/assets/wan_v2v_demo.png +0 -0
- package/blog/comfyui-mcp-tdqs-case-study.md +0 -102
- package/design/embedded-agent-panel.md +0 -172
- package/design/remote-and-cloud-modes.md +0 -113
- package/glama.json +0 -6
- package/infra/cloudflare/README.md +0 -75
- package/infra/cloudflare/docs-proxy.js +0 -45
- package/infra/cloudflare/wrangler.jsonc +0 -19
- package/llms-install.md +0 -139
- package/model-settings.user.jsonc +0 -97
- package/scripts/check-model-urls.mjs +0 -160
- package/scripts/check-pack-models.mjs +0 -155
- package/scripts/gen-pack-installers.mjs +0 -151
- package/scripts/gen-tool-docs.ts +0 -363
- package/scripts/generation-stats.mjs +0 -136
- package/scripts/mock-panel.mjs +0 -156
- package/scripts/panel-sim.mjs +0 -56
- package/scripts/postinstall.mjs +0 -29
- package/scripts/probe-bridge.mjs +0 -39
- package/scripts/probe-models.mjs +0 -18
- package/scripts/slice-pipeline.mjs +0 -79
- package/scripts/test-agent.mjs +0 -313
- package/scripts/test-packs.sh +0 -87
- package/scripts/validate-manifests.mjs +0 -29
- package/scripts/verify-render.mjs +0 -103
- package/server.json +0 -21
- package/web/extensions/comfyui-mcp-agent-panel/README.md +0 -105
- package/web/extensions/comfyui-mcp-agent-panel/comfyui-mcp-agent-panel.js +0 -604
package/CHANGELOG.md
DELETED
|
@@ -1,755 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project are documented here. This project adheres to
|
|
4
|
-
[Semantic Versioning](https://semver.org/) and the format follows
|
|
5
|
-
[Keep a Changelog](https://keepachangelog.com/).
|
|
6
|
-
|
|
7
|
-
## Unreleased
|
|
8
|
-
|
|
9
|
-
## [0.16.0] - 2026-06-19
|
|
10
|
-
|
|
11
|
-
### Added
|
|
12
|
-
|
|
13
|
-
- **Conversation rewind (`forkSession`).** The orchestrator can fork the panel
|
|
14
|
-
agent's session at a chosen turn anchor, dropping everything after it from the
|
|
15
|
-
agent's memory — the backend for the panel's per-message rollback (code /
|
|
16
|
-
conversation / both) and double-Esc rewind.
|
|
17
|
-
- **Reorder queued messages.** A new `reorder` bridge frame lets the panel set the
|
|
18
|
-
flush order of still-queued messages; the orchestrator stable-sorts its queue to
|
|
19
|
-
match (a turn already in flight is untouched).
|
|
20
|
-
- **Destructive-op confirmation (#46).** `panel_clear` and `panel_restart_comfyui`
|
|
21
|
-
now pop a yes/no card in the panel and only act on an explicit "yes" (gated
|
|
22
|
-
in-tool, since `canUseTool` is bypassed under `bypassPermissions`).
|
|
23
|
-
- **Workflow layout tools + skill.** Graph reads now include node `pos`/`size` and
|
|
24
|
-
subgraph I/O rail positions; new `panel_move_rail`, group create/edit,
|
|
25
|
-
`panel_set_node_collapsed`, `panel_set_node_color`, and `panel_screenshot` (a
|
|
26
|
-
visual verify loop) give the agent spatial control. Ships a `workflow-layout`
|
|
27
|
-
skill (incl. the "expose inputs/outputs" rule).
|
|
28
|
-
- **ComfyUI extra search-path config tools.** Added `list_extra_paths`,
|
|
29
|
-
`add_extra_path`, and `remove_extra_path` to inspect and edit standalone
|
|
30
|
-
`<ComfyUI>/extra_model_paths.yaml` or ComfyUI Desktop's app-data
|
|
31
|
-
`extra_models_config.yaml`. Categories are generic ComfyUI search-path keys,
|
|
32
|
-
so model folders (`checkpoints`, `loras`, `vae`, etc.) and `custom_nodes`
|
|
33
|
-
entries can both be managed when supported by the running ComfyUI build.
|
|
34
|
-
- **Queue payload inspection and pending-job edits.** `get_queue` can now include
|
|
35
|
-
queued workflow payloads, `get_queued_workflow` returns one pending job's
|
|
36
|
-
payload, and `move_queued_job` / `edit_queued_job` requeue pending jobs at the
|
|
37
|
-
front/back with patched node inputs or a replacement workflow. Requeued jobs
|
|
38
|
-
receive a new `prompt_id`; running jobs are still interrupt-only.
|
|
39
|
-
- **Wan Blackwell (fp16) pack tiers.** Added `-96gb` siblings for i2v / v2v /
|
|
40
|
-
transparent and `wan-longer-videos-t2v-96gb` for RTX PRO 6000 Blackwell.
|
|
41
|
-
|
|
42
|
-
### Fixed
|
|
43
|
-
|
|
44
|
-
- **The panel agent never lingers as a zombie.** A wedged orchestrator used to stay
|
|
45
|
-
alive but stop serving the bridge, so reloads — and even a full ComfyUI restart —
|
|
46
|
-
reattached to a dead process ("the panel agent will no longer reconnect"). The
|
|
47
|
-
bridge now exits on a post-startup server error, an `uncaughtException` exits
|
|
48
|
-
instead of being swallowed, and Connect reclaims a lockfile-less orchestrator
|
|
49
|
-
zombie that still holds the port.
|
|
50
|
-
- **Rewind correctness** (post-review): reset the last-assistant anchor on each
|
|
51
|
-
session (re)start so a fork can't report a stale pre-fork anchor; dropped a dead
|
|
52
|
-
`text` parameter from the rewind path.
|
|
53
|
-
- **Workflow converter robustness:** translate rgthree Power Lora Loader loras to
|
|
54
|
-
`lora_N` inputs, detect `control_after_generate` on seed-named INT widgets,
|
|
55
|
-
default invalid combo values, and drop type-mismatched links.
|
|
56
|
-
- **Wan packs:** use the official lightx2v 4-step lightning loras (2+2 split),
|
|
57
|
-
switch A14B unets Q8_0 → Q4_K_S for speed, ModelSamplingSD3 shift 8 → 5 to match
|
|
58
|
-
the official Wan2.2 template, and VRAM-fit settings for 24GB cards.
|
|
59
|
-
|
|
60
|
-
## [0.15.0] - 2026-06-19
|
|
61
|
-
|
|
62
|
-
### Added
|
|
63
|
-
|
|
64
|
-
- **Live-streaming panel chat.** The orchestrator streams extended-thinking and
|
|
65
|
-
reply deltas to the sidebar (collapsible "see thinking" + typewriter reveal),
|
|
66
|
-
with a live thinking-token counter.
|
|
67
|
-
- **SDK slash commands in the composer.** The orchestrator probes
|
|
68
|
-
`query.supportedCommands()` and surfaces the useful built-ins — `/compact`,
|
|
69
|
-
`/context`, `/usage`, `/loop`, `/goal`, `/clear` — in the panel's `/` menu
|
|
70
|
-
(the user's unrelated skills/plugins are filtered out).
|
|
71
|
-
- **Subgraph authoring + canvas tools** — `panel_promote_widget` (expose/retract
|
|
72
|
-
an inner subgraph widget on the parent node), plus the live-graph tool surface
|
|
73
|
-
(subgraph enter/exit/create, node-title rename, workflow tabs, built-in Manager
|
|
74
|
-
install→restart→resume).
|
|
75
|
-
- **Live model-download progress** streamed to the panel's status tray; **loop
|
|
76
|
-
mode** drives a `panel_set_todo` checklist to completion.
|
|
77
|
-
- **Workflow-converter robustness** — a de-virtualization pre-pass (strips
|
|
78
|
-
Get/Set + Reroute), subgraph→subgraph edge relink, top-level virtual
|
|
79
|
-
`PrimitiveNode` resolution, V3 dynamic-combo recognition, default-fill of
|
|
80
|
-
required inputs, and VHS object-form widgets. Packs render-verified: ideogram,
|
|
81
|
-
z-image (turbo/base) ControlNets, qwen-image-edit, ltx-2.3.
|
|
82
|
-
|
|
83
|
-
### Changed
|
|
84
|
-
|
|
85
|
-
- **Removed the legacy `--channels` mode entirely.** The panel runs only on the
|
|
86
|
-
autonomous orchestrator (`--panel-orchestrator`, dedicated bridge **9180**).
|
|
87
|
-
The `--channels` flag/env, the in-session `panel_*` tools (`panel_say`,
|
|
88
|
-
`panel_inbox`, `panel_status`), and their docs are gone; the shared UI bridge
|
|
89
|
-
stays. A stray session can no longer steal the panel's bridge port.
|
|
90
|
-
- **Panel display name → "ComfyUI Agent Panel"** (registry slug
|
|
91
|
-
`comfyui-agent-panel`); docs and the full `panel_*` tool reference updated.
|
|
92
|
-
|
|
93
|
-
### Fixed
|
|
94
|
-
|
|
95
|
-
- **Pid-reuse-safe orchestrator kill.** The pack re-verifies a pid's identity
|
|
96
|
-
(cmdline + recorded creation time) immediately before every terminate/kill, and
|
|
97
|
-
records `pidStartedAt` in the lockfile — so a recycled pid can never be mistaken
|
|
98
|
-
for the orchestrator and a user's unrelated process is never signalled.
|
|
99
|
-
- **Race-free turn gate.** Replaced the resolver gate (which could deadlock and
|
|
100
|
-
strand queued messages) with monotonic counters; serialized the input queue
|
|
101
|
-
(one turn per batch, no SDK read-ahead) with true read-receipts.
|
|
102
|
-
- **Installers** target the ComfyUI venv and resolve each custom node's
|
|
103
|
-
`requirements.txt` after clone (was using system Python / skipping deps).
|
|
104
|
-
|
|
105
|
-
## [0.14.0] - 2026-06-17
|
|
106
|
-
|
|
107
|
-
### Added
|
|
108
|
-
|
|
109
|
-
- **Autonomous panel orchestrator — drive the ComfyUI sidebar with a background
|
|
110
|
-
agent on your Claude subscription (no API key).** `comfyui-mcp --panel-orchestrator`
|
|
111
|
-
owns the loopback bridge and spawns one persistent Claude Agent SDK session per
|
|
112
|
-
panel tab, so the sidebar works on its own and your interactive Claude session
|
|
113
|
-
stays free. Agents authenticate via the on-disk Claude login (`apiKeySource=none`)
|
|
114
|
-
and load the bundled plugin's skills, so they're ComfyUI experts out of the box.
|
|
115
|
-
Replaces the unshippable `--sdk-url`/CCR-v2 path (guarded on current Claude
|
|
116
|
-
Code). The panel pack auto-starts the orchestrator on ComfyUI load, and a
|
|
117
|
-
parent-PID beacon shuts it down when ComfyUI exits. See
|
|
118
|
-
`docs/blog/panel-agent-subscription`.
|
|
119
|
-
|
|
120
|
-
- **`installer-packs` skill.** Teaches agents how to use, build, and derive
|
|
121
|
-
packs (manifest → generated install scripts) and to **proactively invite users
|
|
122
|
-
to contribute new packs upstream** — an issue/PR with `manifest.yaml` +
|
|
123
|
-
`pack.yaml` + `workflow.json`, reviewed for safety and CI-validated on merge.
|
|
124
|
-
|
|
125
|
-
- **`ai-toolkit-trainer` skill (renamed from `wan-lora-trainer`).** Generalized
|
|
126
|
-
the ostris AI-Toolkit trainer skill to cover **Z-Image** (Turbo & Base, low-VRAM
|
|
127
|
-
image LoRAs) alongside WAN 2.2 — Z-Image is single-stream (no hi/lo multi-stage),
|
|
128
|
-
plus the V2 embedded-Python installer and the `No module named 'torchaudio'` fix.
|
|
129
|
-
|
|
130
|
-
- **Eight more installer packs + a WAN LoRA-trainer skill.** New `packs/`: WAN
|
|
131
|
-
(`wan-animate`, `wan-longer-videos`, `wan-transparent`), Qwen (`qwen-image`,
|
|
132
|
-
`qwen-image-edit`) and Z-Image (`z-image-turbo`, `z-image-base`,
|
|
133
|
-
`z-image-xy-plot`), plus `cozy-flow` (AI-influencer image+video, derived from
|
|
134
|
-
its workflow with no upstream installer) — bringing the catalog to **13 packs**, each manifest-driven
|
|
135
|
-
with generated `install-windows.bat` / `install-runpod.sh` and CI URL+size
|
|
136
|
-
validation. New `wan-lora-trainer` skill (ostris AI-Toolkit) for training WAN
|
|
137
|
-
2.2 LoRAs. The LTX pack ships its kornia import fix as both `.bat` and `.sh`.
|
|
138
|
-
|
|
139
|
-
- **Blog — "Installer packs that can't rot."** Why the packs are a single
|
|
140
|
-
manifest driving both the double-click scripts and an MCP-native install, with
|
|
141
|
-
CI that fails the build the moment a model link dies
|
|
142
|
-
(`docs/blog/installer-packs-that-cant-rot`).
|
|
143
|
-
|
|
144
|
-
- **Five new model-family skills.** `ideogram-ultra` (Ideogram 4 — open-weight
|
|
145
|
-
text-to-image with area prompting, logos, posters, readable text),
|
|
146
|
-
`ernie-image` (ERNIE-Image — fast text-to-image with precise multilingual text
|
|
147
|
-
rendering, runs on <8GB VRAM), `anima-base` (ANIMA 1.0 — ~2B anime/illustration
|
|
148
|
-
model, Danbooru tags + natural language, anime inpainting, <6GB VRAM), and
|
|
149
|
-
`anima-lora-trainer` (kohya `sd-scripts` Gradio trainer for custom anime
|
|
150
|
-
LoRAs). Each frontmatter `description` is tuned as an agent routing signal so
|
|
151
|
-
Claude picks the right model per task (anime → ANIMA, typography/control →
|
|
152
|
-
Ideogram, fast text-render → ERNIE, editing → Qwen-Edit, video → LTX).
|
|
153
|
-
|
|
154
|
-
- **Installer packs (`packs/`) — manifest-driven, one-command ComfyUI setups.**
|
|
155
|
-
Each pack (`anima`, `ideogram`, `ltx-2.3`, `ernie`) is a `manifest.yaml` (a
|
|
156
|
-
pure `ComfyManifest` consumable by `apply_manifest`) plus `pack.yaml` metadata
|
|
157
|
-
and the workflow, with cross-platform `install-windows.bat` /
|
|
158
|
-
`install-runpod.sh` generated from the manifest by
|
|
159
|
-
`scripts/gen-pack-installers.mjs` (`npm run packs:gen`). Validation tooling:
|
|
160
|
-
`npm run packs:validate` (schema), `packs:test` (offline idempotency dry-run
|
|
161
|
-
with `git`/`curl` stubbed), and `packs:check-urls` (HEAD/range check that every
|
|
162
|
-
model URL resolves and its payload size is sane for the model type — no full
|
|
163
|
-
downloads). A `.github/workflows/packs.yml` CI job runs all of these on
|
|
164
|
-
`ubuntu-latest`.
|
|
165
|
-
|
|
166
|
-
### Changed
|
|
167
|
-
|
|
168
|
-
- **Migrated to zod 4.** Lets the Claude Agent SDK be a clean optional
|
|
169
|
-
dependency (its zod 4 peer is now satisfied); `gen-tool-docs` uses zod's native
|
|
170
|
-
`toJSONSchema`, and tool schemas use the two-arg `z.record(key, value)` form.
|
|
171
|
-
|
|
172
|
-
- **The plugin now ships in the npm package.** A stale `.npmignore` rule was
|
|
173
|
-
excluding `plugin/` (skills, agents, commands, hooks); anchored those patterns
|
|
174
|
-
to repo root so the bundled plugin is published — which is what lets the
|
|
175
|
-
orchestrator's agents load skills and be experts out of the box.
|
|
176
|
-
|
|
177
|
-
- **`ltxv2-video` skill upgraded to LTX-2.3.** GGUF UNet via `UnetLoaderGGUF`,
|
|
178
|
-
separate video/audio VAEs + text-projection, the spatial upscaler and new
|
|
179
|
-
LoRAs, the kornia 0.8.3+ import fix (`fix-ltxvideo-kornia.{bat,sh}`), and
|
|
180
|
-
guidance for swapping in alternate / GGUF base models (incl. the community
|
|
181
|
-
"sulphur" LTX-2.3 finetune).
|
|
182
|
-
|
|
183
|
-
### Fixed
|
|
184
|
-
|
|
185
|
-
- **Windows dev: the full test suite is green.** Fixed 27 tests that assumed
|
|
186
|
-
POSIX paths/commands (`/fake` separators, `which` vs `where`) — test-only
|
|
187
|
-
changes; the product itself was already cross-platform.
|
|
188
|
-
|
|
189
|
-
- **UI bridge survives fast `/mcp` reconnects.** The `--channels` WebSocket
|
|
190
|
-
bridge now retries binding `127.0.0.1:9101` with exponential backoff
|
|
191
|
-
(5 attempts, ~6s) when a previous session hasn't released the port yet,
|
|
192
|
-
instead of failing with `-32000`. It logs "listening" only once truly bound,
|
|
193
|
-
uses a cross-platform port-in-use hint, and clears the retry timer on `stop()`.
|
|
194
|
-
|
|
195
|
-
## [0.13.0] - 2026-06-15
|
|
196
|
-
|
|
197
|
-
### Added
|
|
198
|
-
|
|
199
|
-
- **`generate_audio` tool — audio generation from text prompts.** Supports ACE Step 1.5 (music with lyrics/structure/ key/language) and Stable Audio 3 (music, instruments, SFX). Builds the appropriate workflow graph, auto-selects local models (`diffusion_models`, `vae`, `text_encoders`, `checkpoints`), and enqueues via the existing pipeline. Two new `create_workflow` templates: `ace_step_15` and `stable_audio_3`. Requires a ComfyUI build with built-in audio nodes (`EmptyLatentAudio`, `VAEDecodeAudio`, `SaveAudioMP3`, etc.) — included in ComfyUI ≥0.11.1. Now covered by a `generate-audio` smoke-test suite (graph construction + model auto-resolution + validation for both families) and the generated tool docs (89/89 tools documented).
|
|
200
|
-
|
|
201
|
-
- **Plugin bundles the Civitai MCP — headless pairing.** `plugin/.mcp.json`
|
|
202
|
-
now declares the official [Civitai MCP](https://mcp.civitai.com/mcp) remote
|
|
203
|
-
server (streamable HTTP) alongside comfyui, so `/plugin install comfy`
|
|
204
|
-
auto-wires `mcp__civitai__*` with no `claude mcp add` and no API key for
|
|
205
|
-
browsing — the `Authorization` header defaults to an empty Bearer
|
|
206
|
-
(`Bearer ${CIVITAI_API_TOKEN:-}`), which Civitai accepts for its read tools
|
|
207
|
-
(verified: `tools/list` + `search_models` both work unauthenticated). Set
|
|
208
|
-
`CIVITAI_API_TOKEN` to unlock gated downloads and account context — the same
|
|
209
|
-
variable comfyui-mcp already uses for `download_civitai_model`.
|
|
210
|
-
|
|
211
|
-
- **`requireLocalComfyUI()` guard in client.** New assertion that blocks tools
|
|
212
|
-
needing local ComfyUI filesystem access when using `--comfyui-url` with a
|
|
213
|
-
non-loopback host and when `COMFYUI_PATH` is unset.
|
|
214
|
-
|
|
215
|
-
- **`RemoteModeError` error class.** Dedicated error type for operations that
|
|
216
|
-
are incompatible with remote ComfyUI targets.
|
|
217
|
-
|
|
218
|
-
- **Remote mode guard for install/start/stop/restart tools.** `install_comfyui`,
|
|
219
|
-
`start_comfyui`, `stop_comfyui`, and `restart_comfyui` now throw a clear error
|
|
220
|
-
when `--comfyui-url` points at a remote (non-loopback) host.
|
|
221
|
-
|
|
222
|
-
_The `generate_audio` tool and the remote-mode guards / Windows test fixes in
|
|
223
|
-
this release were contributed by [@x-yahya997](https://github.com/x-yahya997)
|
|
224
|
-
(`x-yahya997/comfyui-mcp@c2ff7a9`, `@27e7f02`) — thank you._
|
|
225
|
-
|
|
226
|
-
### Fixed
|
|
227
|
-
|
|
228
|
-
- **Warn when COMFYUI_URL and COMFYUI_PATH conflict.** Config now prints a
|
|
229
|
-
warning to stderr when both variables are set simultaneously.
|
|
230
|
-
|
|
231
|
-
- **process-control tests pass on Windows.** Port-detection mocks now handle
|
|
232
|
-
both `netstat` (Windows) and `lsof` (Unix) commands, and the config mock
|
|
233
|
-
exports `isRemoteMode`.
|
|
234
|
-
|
|
235
|
-
## [0.12.0] - 2026-06-13
|
|
236
|
-
|
|
237
|
-
### Fixed
|
|
238
|
-
|
|
239
|
-
- **Panel messages now push into Claude Code for real.** The server now
|
|
240
|
-
declares the experimental `claude/channel` capability and sends
|
|
241
|
-
`notifications/claude/channel` with the host's expected
|
|
242
|
-
`{ content, meta }` shape — previously the capability was missing and
|
|
243
|
-
the params were a flat custom object, so Claude Code silently dropped
|
|
244
|
-
every panel message and only `panel_inbox` polling worked.
|
|
245
|
-
|
|
246
|
-
### Added
|
|
247
|
-
|
|
248
|
-
- **`civitai` plugin skill (16 skills total).** Pairs the official
|
|
249
|
-
[Civitai MCP](https://mcp.civitai.com/mcp) with comfyui-mcp instead of
|
|
250
|
-
proxying it: Claude discovers models on Civitai, hands the returned
|
|
251
|
-
model-version id to `download_civitai_model`, and installs/wires/generates
|
|
252
|
-
locally — falling back to HuggingFace search when the Civitai MCP isn't
|
|
253
|
-
connected. The `comfy-researcher` agent now prefers Civitai discovery for
|
|
254
|
-
model (not node-pack) requests when those tools are present. Docs gained a
|
|
255
|
-
"Pairs with the official Civitai MCP" section.
|
|
256
|
-
- **Multi-tab panel bridge.** Each ComfyUI browser tab now holds its own
|
|
257
|
-
identified bridge connection — the panel sends a `hello` frame with a
|
|
258
|
-
per-tab session id and the open workflow's title, `panel_status` lists
|
|
259
|
-
every connected tab, and all graph tools accept an optional `tab_id`
|
|
260
|
-
(full id or 8-char prefix). Routing default when omitted: the only
|
|
261
|
-
connected tab → the tab the user most recently typed in → an error
|
|
262
|
-
listing the tabs. `panel_say` broadcasts unless targeted; inbox entries
|
|
263
|
-
and channel notifications carry which tab/workflow spoke. Previously a
|
|
264
|
-
second tab silently stole the single connection.
|
|
265
|
-
- **`panel_clear` tool** — remove every node from the open graph in one
|
|
266
|
-
step; the whole wipe is a single Ctrl+Z undo (panel pack executes it
|
|
267
|
-
inside one `beforeChange`/`afterChange` pair).
|
|
268
|
-
- **Six more panel tools — full control of the open ComfyUI tab:**
|
|
269
|
-
`panel_move_node`, `panel_canvas` (fit / center-on-node / pan / zoom),
|
|
270
|
-
`panel_run` (queue the open workflow with live widget values),
|
|
271
|
-
`panel_get_errors` (last execution error + node validation errors),
|
|
272
|
-
`panel_save_workflow` (Ctrl+S or save-as/duplicate), and
|
|
273
|
-
`panel_get_subgraph` (drill into a subgraph node). `panel_get_graph` now
|
|
274
|
-
reports which graph the user is viewing and summarizes subgraph nodes
|
|
275
|
-
shallowly (boundary slots + inner count). Panel user messages carry the
|
|
276
|
-
opened subgraph in channel-event meta and inbox entries.
|
|
277
|
-
- **Panel v0.3 (in progress, [comfyui-mcp-panel](https://github.com/artokun/comfyui-mcp-panel)):**
|
|
278
|
-
native ComfyUI design-system restyle (PrimeVue semantic tokens, theme-
|
|
279
|
-
tracking), activity cards for every agent graph edit, empty-state
|
|
280
|
-
onboarding, "Claude is working…" typing indicator. Polished registry
|
|
281
|
-
release **coming soon**.
|
|
282
|
-
|
|
283
|
-
[0.13.0]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.13.0
|
|
284
|
-
[0.12.0]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.12.0
|
|
285
|
-
|
|
286
|
-
## [0.11.1] - 2026-06-12
|
|
287
|
-
|
|
288
|
-
### Added
|
|
289
|
-
|
|
290
|
-
- **`model-registry` plugin skill** — one curated table of download URLs +
|
|
291
|
-
target `models/` subdirs for every model the skills reference (Flux, WAN,
|
|
292
|
-
LTX, Qwen, Z-Image, shared VAEs/text-encoders), consolidating rows that
|
|
293
|
-
were scattered across `model-settings.json` and individual skills. Grows
|
|
294
|
-
each release. Plugin is now **15 skills**.
|
|
295
|
-
- **Plugin ships channels mode by default** — `plugin/.mcp.json` now passes
|
|
296
|
-
`--channels`, so plugin users get the panel bridge + `panel_*` tools
|
|
297
|
-
automatically (pair with the
|
|
298
|
-
[comfyui-mcp-panel](https://github.com/artokun/comfyui-mcp-panel) pack).
|
|
299
|
-
|
|
300
|
-
### Changed
|
|
301
|
-
|
|
302
|
-
- **Discoverability:** README leads with "the Claude Code plugin for
|
|
303
|
-
ComfyUI" and the real asset counts (88 tools / 15 skills / 11 commands /
|
|
304
|
-
4 agents / 4 hooks — previously undersold as 6 skills / 10 commands);
|
|
305
|
-
corrected the plugin install command (`/plugin marketplace add` +
|
|
306
|
-
`/plugin install comfy`); npm description + keywords expanded; GitHub
|
|
307
|
-
repo topics added (both repos had zero); new docs page
|
|
308
|
-
[`/plugin`](https://comfyui-mcp.artokun.io/docs/plugin) documenting the
|
|
309
|
-
full skill/command/agent/hook surface.
|
|
310
|
-
|
|
311
|
-
## [0.11.0] - 2026-06-12
|
|
312
|
-
|
|
313
|
-
### Added
|
|
314
|
-
|
|
315
|
-
- **Channels mode (`--channels`) — your own agent session drives the ComfyUI
|
|
316
|
-
sidebar panel. No LLM API keys.** The server hosts a loopback WebSocket
|
|
317
|
-
bridge (`COMFYUI_MCP_BRIDGE_PORT`, default 9101) that the
|
|
318
|
-
[comfyui-mcp-panel](https://github.com/artokun/comfyui-mcp-panel) pack
|
|
319
|
-
connects to, and registers nine `panel_*` MCP tools (`status`, `get_graph`,
|
|
320
|
-
`add_node`, `remove_node`, `connect`, `disconnect`, `set_widget`, `say`,
|
|
321
|
-
`inbox`). The agent — your existing Claude Code (or any MCP client) session,
|
|
322
|
-
subscription-billed — edits the user's live graph through its MCP
|
|
323
|
-
connection; every mutation is Ctrl+Z-undoable. Messages typed into the panel
|
|
324
|
-
queue for `panel_inbox` and are pushed as `notifications/claude/channel`
|
|
325
|
-
events on hosts that surface them. Bridge design (rid-correlated
|
|
326
|
-
request/reply, loopback-only, last-writer-wins) ported from the author's
|
|
327
|
-
node-lab project. New dependency: `ws`.
|
|
328
|
-
- **Live graph edits for the agent panel** (superseded same-day by channels
|
|
329
|
-
mode above, retained as the legacy API-key path). The experimental
|
|
330
|
-
`/api/chat` backend declares six client-side `graph_*` tools that the
|
|
331
|
-
sidebar panel executes against the user's open LiteGraph graph. The panel
|
|
332
|
-
ships as the **comfyui-mcp-panel** pack (the manual drop-in under
|
|
333
|
-
`web/extensions/` is deprecated and will be removed next minor). Epic B
|
|
334
|
-
step 4, built on v1 LiteGraph shims instead of waiting for
|
|
335
|
-
`@comfyorg/extension-api` v2.
|
|
336
|
-
|
|
337
|
-
## [0.10.1] - 2026-06-12
|
|
338
|
-
|
|
339
|
-
### Fixed
|
|
340
|
-
|
|
341
|
-
- **Long jobs no longer killed at 10 minutes.** The job watcher's completion
|
|
342
|
-
timeout was hardcoded to 10 minutes — a 15-minute LTX/WAN video render lost
|
|
343
|
-
its completion notification mid-run. The timeout is now `COMFYUI_JOB_TIMEOUT_S`
|
|
344
|
-
(default 1800 s = 30 min) and the poll cadence is
|
|
345
|
-
`COMFYUI_JOB_POLL_INTERVAL_S` (default 2 s). Gap flagged by
|
|
346
|
-
[josephoibrahim/comfy-cozy](https://github.com/josephoibrahim/comfy-cozy).
|
|
347
|
-
|
|
348
|
-
### Changed
|
|
349
|
-
|
|
350
|
-
- **`/object_info` is now memoized for the life of the server process.**
|
|
351
|
-
`validate_workflow`, dependency extraction, and `lock_workflow` each
|
|
352
|
-
triggered a fresh 300–800 ms `/object_info` fetch; repeat validations now
|
|
353
|
-
serve from cache (comfy-cozy reports the same change took their re-validate
|
|
354
|
-
from ~7 s to ~0.5 s). The cache resets automatically on
|
|
355
|
-
`stop_comfyui` / `restart_comfyui` (the only paths that change the node
|
|
356
|
-
set), with in-flight coalescing on the first fetch. Cloud mode is
|
|
357
|
-
unaffected. Idea from
|
|
358
|
-
[josephoibrahim/comfy-cozy](https://github.com/josephoibrahim/comfy-cozy).
|
|
359
|
-
|
|
360
|
-
## [0.10.0] - 2026-06-11
|
|
361
|
-
|
|
362
|
-
### Added
|
|
363
|
-
|
|
364
|
-
- **`lock_workflow` + `verify_workflow_lock`** — provenance sidecars for
|
|
365
|
-
saved workflows. `lock_workflow` walks a workflow's model loaders
|
|
366
|
-
(`CheckpointLoaderSimple`, `UNETLoader`, `VAELoader`, `LoraLoader`,
|
|
367
|
-
`ControlNetLoader`, `CLIPLoader`/`DualCLIPLoader`, `UpscaleModelLoader`,
|
|
368
|
-
…), SHA-256s every referenced model, records the git commit currently
|
|
369
|
-
checked out for every custom node pack the workflow's `class_type`s
|
|
370
|
-
resolve to, captures ComfyUI's reported version, and writes
|
|
371
|
-
`<filename>.lock.json` next to the workflow in ComfyUI's user library.
|
|
372
|
-
`verify_workflow_lock` re-computes the lock and surfaces structured drift
|
|
373
|
-
(changed model SHA-256s, packs on different commits, ComfyUI version
|
|
374
|
-
bumps). Local install required for v1 (SHA-256 needs file bytes;
|
|
375
|
-
commits come from `custom_nodes/*/.git/HEAD`). Idea from
|
|
376
|
-
[josephoibrahim/comfy-cozy](https://github.com/josephoibrahim/comfy-cozy).
|
|
377
|
-
- **Resumable model downloads.** Big-model fetches (10–40 GB checkpoints over
|
|
378
|
-
flaky connections to HuggingFace / CivitAI / S3) used to start from byte 0
|
|
379
|
-
every retry. The download cache now writes to a deterministic
|
|
380
|
-
`~/.comfyui-mcp/cache/.<hash>.<ext>.partial` file, sends `Range: bytes=N-`
|
|
381
|
-
on the next attempt, appends on `206 Partial Content`, and falls back
|
|
382
|
-
cleanly to a full overwrite when the server replies `200` (Range
|
|
383
|
-
unsupported). Idea from
|
|
384
|
-
[josephoibrahim/comfy-cozy](https://github.com/josephoibrahim/comfy-cozy).
|
|
385
|
-
|
|
386
|
-
### Fixed
|
|
387
|
-
|
|
388
|
-
- **`list_local_models` now sees `extra_model_paths.yaml` redirects + works
|
|
389
|
-
remotely.** The tool previously did only a filesystem scan of
|
|
390
|
-
`${COMFYUI_PATH}/models/`, so models the user had pointed at via
|
|
391
|
-
`extra_model_paths.yaml` (symlinked to a shared drive, mounted from a NAS,
|
|
392
|
-
etc.) were invisible — a common setup for serious rigs. It also threw
|
|
393
|
-
`ModelError: COMFYUI_PATH is not configured` against remote/cloud
|
|
394
|
-
ComfyUI. We now query ComfyUI's `/models/<dir>` REST endpoint first
|
|
395
|
-
(which reports what's actually available to workflows), fall back to the
|
|
396
|
-
filesystem scan only when the HTTP path yields nothing, and return an
|
|
397
|
-
empty list rather than throwing when neither is available. Size and
|
|
398
|
-
modified time are only populated when the filesystem path is taken.
|
|
399
|
-
Originally contributed by [@joaolvivas](https://github.com/joaolvivas) in
|
|
400
|
-
[`joaolvivas/comfyui-mcp-byjlucas@e2ae39c8`](https://github.com/joaolvivas/comfyui-mcp-byjlucas/commit/e2ae39c8).
|
|
401
|
-
|
|
402
|
-
## [0.9.5] - 2026-06-11
|
|
403
|
-
|
|
404
|
-
Interoperability + paperwork.
|
|
405
|
-
|
|
406
|
-
### Added
|
|
407
|
-
|
|
408
|
-
- **MIT `LICENSE` file** at the repo root — `package.json` and the npm registry
|
|
409
|
-
have always declared MIT, but the file itself was absent and downstream
|
|
410
|
-
paperwork checks flagged it. Reported by
|
|
411
|
-
[@ductiletoaster](https://github.com/ductiletoaster) in
|
|
412
|
-
[#27](https://github.com/artokun/comfyui-mcp/issues/27).
|
|
413
|
-
|
|
414
|
-
### Fixed
|
|
415
|
-
|
|
416
|
-
- **Federation timeouts on `resources/list` / `prompts/list`** — federating
|
|
417
|
-
clients (LiteLLM, etc.) probe every standard list endpoint on `initialize`
|
|
418
|
-
fan-out regardless of advertised capabilities. We don't expose resources or
|
|
419
|
-
prompts today, so those calls hit the SDK's default "Method not found" path
|
|
420
|
-
and each downstream paid a per-server timeout (~30 s default). We now
|
|
421
|
-
declare both capabilities and answer with empty lists from
|
|
422
|
-
`resources/list`, `resources/templates/list`, and `prompts/list`. No
|
|
423
|
-
behavioral change for clients that only use `tools/*`. Reported by
|
|
424
|
-
[@ductiletoaster](https://github.com/ductiletoaster) in
|
|
425
|
-
[#29](https://github.com/artokun/comfyui-mcp/issues/29).
|
|
426
|
-
|
|
427
|
-
## [0.9.4] - 2026-06-03
|
|
428
|
-
|
|
429
|
-
### Fixed
|
|
430
|
-
|
|
431
|
-
- **TS2742 portability error on pnpm builds (e.g. Glama)** — `tsc` previously
|
|
432
|
-
failed to emit `dist/experimental/provider-registry.d.ts` under pnpm because
|
|
433
|
-
the inferred return type of `getRegistry()` referenced a transitive type from
|
|
434
|
-
`@ai-sdk/provider`, whose pnpm store path (`.pnpm/@ai-sdk+provider@…`) TS
|
|
435
|
-
considers non-portable. We're a CLI/executable, not a library, so declaration
|
|
436
|
-
emission was useless overhead — disabled `declaration` + `declarationMap` in
|
|
437
|
-
`tsconfig.json`. `dist/` now contains only `.js` + `.js.map`; builds pass
|
|
438
|
-
under both `npm` and `pnpm`.
|
|
439
|
-
|
|
440
|
-
## [0.9.3] - 2026-06-01
|
|
441
|
-
|
|
442
|
-
### Added
|
|
443
|
-
|
|
444
|
-
- **`llms-install.md`** — agent-focused install guide at the repo root, what
|
|
445
|
-
Cline and similar agents read preferentially over `README.md` when setting up
|
|
446
|
-
the MCP server. Covers the Node ≥ 22 prerequisite, the three deployment modes
|
|
447
|
-
(local/remote/Comfy Cloud), Claude Code / Cline / Cursor settings recipes,
|
|
448
|
-
optional env vars, verification, and common issues.
|
|
449
|
-
- **400×400 marketplace logo** at `docs/logo/mcpmarket-icon-400.png` for the
|
|
450
|
-
Cline MCP Marketplace listing.
|
|
451
|
-
|
|
452
|
-
## [0.9.2] - 2026-06-01
|
|
453
|
-
|
|
454
|
-
### Fixed
|
|
455
|
-
|
|
456
|
-
- **Docker build hang on rate-limited CI (e.g. Glama)** — `npm ci` in the
|
|
457
|
-
Dockerfile no longer runs the `cloudflared` postinstall, which fetches a
|
|
458
|
-
~40 MB binary from GitHub releases over an `https.get()` call with no
|
|
459
|
-
timeout. On networks where GitHub rate-limits (or otherwise stalls)
|
|
460
|
-
unauthenticated requests, that fetch hung indefinitely and blocked image
|
|
461
|
-
builds. Install scripts are now skipped with `--ignore-scripts` and the
|
|
462
|
-
two native deps we actually need (`better-sqlite3`, `sharp`) are rebuilt
|
|
463
|
-
explicitly. The runtime tunnel helper already downloads the cloudflared
|
|
464
|
-
binary lazily on first use, so no functionality is lost.
|
|
465
|
-
|
|
466
|
-
## [0.9.1] - 2026-06-01
|
|
467
|
-
|
|
468
|
-
### Added
|
|
469
|
-
|
|
470
|
-
- **`get_job_status` cloud-mode coverage** — when `COMFYUI_API_KEY` is set,
|
|
471
|
-
`get_job_status` now dispatches to `cloud-client.getJobStatus` (which calls
|
|
472
|
-
`/api/job/<id>/status`) and maps the cloud
|
|
473
|
-
`{ pending | in_progress | completed | failed }` shape to the existing
|
|
474
|
-
local `JobStatus`. Completed jobs are still enriched from history when
|
|
475
|
-
available; failed jobs surface the cloud's error string via
|
|
476
|
-
`error.exception_message`. Closes part of `comfyui-mcp-eik`.
|
|
477
|
-
|
|
478
|
-
### Changed
|
|
479
|
-
|
|
480
|
-
- Refined the `CLOUD_UNSUPPORTED` error message surfaced by tools that need
|
|
481
|
-
a direct ComfyUI session (workflow library, memory management, etc.). The
|
|
482
|
-
message no longer leaks the internal `getClient` function name and clearly
|
|
483
|
-
tells the user to unset `COMFYUI_API_KEY` to target a local or remote
|
|
484
|
-
ComfyUI.
|
|
485
|
-
- **Upgraded vitest to ^4.1.0** (dev-only). Clears
|
|
486
|
-
[GHSA-5xrq-8626-4rwp](https://github.com/advisories/GHSA-5xrq-8626-4rwp)
|
|
487
|
-
(Vitest UI server arbitrary file read/exec). Test infrastructure tweaks:
|
|
488
|
-
S3 mock now uses a `function` declaration (vitest 4 invokes mocked
|
|
489
|
-
constructors via `new`) and manager-config fallback tests call
|
|
490
|
-
`vi.clearAllMocks()` explicitly (vitest 4's `restoreAllMocks` no longer
|
|
491
|
-
resets `.mock.calls`). Closes `comfyui-mcp-g6e`.
|
|
492
|
-
|
|
493
|
-
## [0.9.0] - 2026-06-01
|
|
494
|
-
|
|
495
|
-
Three deployment modes, slimmer install footprint, and first-class
|
|
496
|
-
[Comfy Cloud](https://cloud.comfy.org) support — built from a survey of
|
|
497
|
-
forks and a port of the cloud-dispatch architecture from
|
|
498
|
-
[@picoSols](https://github.com/picoSols)'s `comfyui-cloud-mcp` fork.
|
|
499
|
-
|
|
500
|
-
### Added
|
|
501
|
-
|
|
502
|
-
- **Comfy Cloud mode** — set `COMFYUI_API_KEY` to route HTTP-backed primitives
|
|
503
|
-
(enqueue, history, system stats, queue, view, upload) to `cloud.comfy.org`
|
|
504
|
-
with `X-API-Key` authentication. WebSocket-bound and local-FS/process
|
|
505
|
-
tools throw a clear `CLOUD_UNSUPPORTED` error in this mode. New
|
|
506
|
-
`src/comfyui/cloud-client.ts` mirrors the local client interface so the
|
|
507
|
-
rest of the server is transparent to which backend it's talking to.
|
|
508
|
-
Architecture and dispatcher pattern originally shipped by
|
|
509
|
-
[@picoSols](https://github.com/picoSols) in
|
|
510
|
-
[`picoSols/comfyui-cloud-mcp@7a812069`](https://github.com/picoSols/comfyui-cloud-mcp/commit/7a812069).
|
|
511
|
-
- **Explicit remote mode + smart-detect** — when `--comfyui-url` points at a
|
|
512
|
-
non-loopback host (anything other than `127.0.0.1` / `localhost` / `::1` /
|
|
513
|
-
`0.0.0.0`), the server skips `COMFYUI_PATH` auto-detection. This closes
|
|
514
|
-
the root cause behind the 0.8.1 `upload_*` fix — a stale local install can
|
|
515
|
-
no longer silently absorb uploads/downloads the agent intended for the
|
|
516
|
-
remote target. An explicit `COMFYUI_PATH` env var still wins.
|
|
517
|
-
- **`isCloudMode()` / `isRemoteMode()` / `isLocalMode()`** config helpers and
|
|
518
|
-
`COMFYUI_CLOUD_URL` (defaults to `https://cloud.comfy.org`).
|
|
519
|
-
|
|
520
|
-
### Changed
|
|
521
|
-
|
|
522
|
-
- **Slim install** — moved seven heavy/feature-gated packages out of
|
|
523
|
-
`dependencies` into `optionalDependencies` and dynamic-import them lazily
|
|
524
|
-
via a new `requireOptionalDep` helper:
|
|
525
|
-
`@aws-sdk/client-s3`, `@azure/storage-blob`, `cloudflared`,
|
|
526
|
-
`ai`, `@ai-sdk/anthropic`, `@ai-sdk/google`, `@ai-sdk/openai`. A
|
|
527
|
-
`npm install --no-optional comfyui-mcp` now yields a working core server;
|
|
528
|
-
features that need a missing optional dep surface a clear
|
|
529
|
-
`OPTIONAL_DEP_MISSING` error with the exact `npm install <pkg>` hint.
|
|
530
|
-
|
|
531
|
-
### Documentation
|
|
532
|
-
|
|
533
|
-
- New "Deployment modes" section in `docs/configuration.mdx` covering the
|
|
534
|
-
local / remote / cloud feature parity matrix and the `COMFYUI_API_KEY` /
|
|
535
|
-
`COMFYUI_CLOUD_URL` env vars.
|
|
536
|
-
|
|
537
|
-
## [0.8.1] - 2026-06-01
|
|
538
|
-
|
|
539
|
-
Bug-fix release picking up upstream contributions from
|
|
540
|
-
[@joaolvivas](https://github.com/joaolvivas)'s fork of comfyui-mcp.
|
|
541
|
-
|
|
542
|
-
### Added
|
|
543
|
-
|
|
544
|
-
- **`health_check`** — single-call pre-flight diagnostic that reports
|
|
545
|
-
ComfyUI/Python/PyTorch versions, GPU + VRAM, queue depth, per-category
|
|
546
|
-
`/models` populations (catches empty-dropdown surprises from a
|
|
547
|
-
misconfigured `extra_model_paths.yaml`), and recent errors from
|
|
548
|
-
`/internal/logs`. Read-only. Useful before a long batch or when triaging an
|
|
549
|
-
unexplained failure. Originally contributed by
|
|
550
|
-
[@joaolvivas](https://github.com/joaolvivas) in
|
|
551
|
-
[`joaolvivas/comfyui-mcp-byjlucas@de82ecda`](https://github.com/joaolvivas/comfyui-mcp-byjlucas/commit/de82ecda).
|
|
552
|
-
|
|
553
|
-
### Fixed
|
|
554
|
-
|
|
555
|
-
- **`search_custom_nodes`** — `api.comfy.org/nodes` accepts a `search` query
|
|
556
|
-
parameter but ignores it server-side, returning the same paginated default
|
|
557
|
-
list regardless of query. We now fetch a larger window (limit=100) and
|
|
558
|
-
rank-filter client-side by id / name / author / description with a
|
|
559
|
-
popularity boost, so query-relevant packs actually appear. Diagnosed and
|
|
560
|
-
patched by [@joaolvivas](https://github.com/joaolvivas) in
|
|
561
|
-
[`joaolvivas/comfyui-mcp-byjlucas@f066b597`](https://github.com/joaolvivas/comfyui-mcp-byjlucas/commit/f066b597);
|
|
562
|
-
port adds a guard so popularity no longer inflates non-matching packs.
|
|
563
|
-
- **`upload_image` / `upload_video` / `upload_audio`** — HTTP-only.
|
|
564
|
-
Previously these tools fell back to a local filesystem copy if HTTP upload
|
|
565
|
-
failed and `COMFYUI_PATH` was set. When `COMFYUI_PATH` was auto-detected to
|
|
566
|
-
an unrelated install (common for users targeting a remote `--comfyui-url`),
|
|
567
|
-
the fallback wrote the file to the wrong tree and reported success, while
|
|
568
|
-
the remote ComfyUI never received it — the next `LoadImage` then failed
|
|
569
|
-
mysteriously. Now HTTP-only against the connected ComfyUI's
|
|
570
|
-
`/upload/image` endpoint, which works for both local and remote. Diagnosed
|
|
571
|
-
and patched by [@joaolvivas](https://github.com/joaolvivas) in
|
|
572
|
-
[`joaolvivas/comfyui-mcp-byjlucas@089180ad`](https://github.com/joaolvivas/comfyui-mcp-byjlucas/commit/089180ad).
|
|
573
|
-
|
|
574
|
-
## [0.8.0] - 2026-05-26
|
|
575
|
-
|
|
576
|
-
Completes the custom-node authoring lifecycle, adds cloud storage I/O and
|
|
577
|
-
declarative setup, and adds node discovery — all built and reviewed in a
|
|
578
|
-
codex implement→review→fix loop.
|
|
579
|
-
|
|
580
|
-
### Added
|
|
581
|
-
|
|
582
|
-
- **`apply_manifest`** — declarative environment setup from an inline object or
|
|
583
|
-
a JSON/YAML manifest: `pip` packages, `custom_nodes` (registry ids or git URLs
|
|
584
|
-
with `@ref`), and `models`. Idempotent, per-item structured report; `apt`
|
|
585
|
-
entries are accepted but skipped (manual/root). Local-only.
|
|
586
|
-
- **`verify_custom_node`** — the "test" step of the author loop: restarts ComfyUI
|
|
587
|
-
(with a bounded readiness wait) and confirms a pack's `NODE_CLASS_MAPPINGS`
|
|
588
|
-
class_types registered in `/object_info` (a failed import simply never appears).
|
|
589
|
-
- **`scaffold_custom_node`** now also emits `.comfyignore`/`.gitignore` and, with
|
|
590
|
-
`with_ci`, a `.github/workflows/publish_action.yml` (Comfy-Org/publish-node-action).
|
|
591
|
-
- **`convert_image`** — re-encode a generated image (by `asset_id` or output-dir
|
|
592
|
-
path) to PNG/JPEG/WebP via `sharp`; returns inline base64 + optional file write
|
|
593
|
-
(output-dir confined), and reports bytes saved.
|
|
594
|
-
- **Cloud storage** — model downloads may be `s3://` or Azure Blob URLs
|
|
595
|
-
(`download_model` gains `s3` auth); new **`upload_output`** pushes a generated
|
|
596
|
-
output to S3 / Azure / HTTP / Hugging Face and returns URL(s).
|
|
597
|
-
- **`download_model` `auth`** — per-request `bearer`/`basic`/`header`/`query`
|
|
598
|
-
authentication for gated/private hosts (carried over and extended).
|
|
599
|
-
- **`comfy-researcher` agent** — turns a problem statement into ranked custom-node
|
|
600
|
-
pack recommendations (searches the Registry, evaluates, delegates deep dives to
|
|
601
|
-
`comfy-explorer`).
|
|
602
|
-
- **Cached `generate_node_skill`** — read-through cache keyed by source@version
|
|
603
|
-
(`COMFYUI_SKILL_CACHE_DIR`; `refresh` to bypass), so repeat analyses are instant.
|
|
604
|
-
|
|
605
|
-
### Security
|
|
606
|
-
|
|
607
|
-
- `apply_manifest` rejects pip argv-option injection; realpath/symlink-safe path
|
|
608
|
-
containment for manifest model paths, `convert_image`, and upload sources;
|
|
609
|
-
`convert_image` caps source size + sharp pixels.
|
|
610
|
-
- Cloud storage: Azure SAS / AWS presigned secrets redacted from logs/errors;
|
|
611
|
-
Azure URL-vs-env account mismatch rejected; HF-CLI remote-path argv hardening;
|
|
612
|
-
manual redirect handling (no cross-origin auth replay or upload-redirect SSRF).
|
|
613
|
-
|
|
614
|
-
### Fixed
|
|
615
|
-
|
|
616
|
-
- `generate_node_skill` cache resolves the current pack version before lookup
|
|
617
|
-
(no stale docs served after a pack updates) and writes atomically (temp +
|
|
618
|
-
rename with a content-hash check).
|
|
619
|
-
|
|
620
|
-
### Dependencies
|
|
621
|
-
|
|
622
|
-
- Added `yaml` (manifest parsing), `sharp` (image conversion), `@aws-sdk/client-s3`
|
|
623
|
-
and `@azure/storage-blob` (cloud storage). `npm audit`: 0 high vulnerabilities.
|
|
624
|
-
|
|
625
|
-
## [0.7.0] - 2026-05-25
|
|
626
|
-
|
|
627
|
-
Stability + authoring release: hardens model downloads and the ComfyUI process
|
|
628
|
-
lifecycle, makes failures actionable, and adds a custom-node authoring/publishing
|
|
629
|
-
lifecycle. Plus a hosted docs site and an experimental embedded-agent backend.
|
|
630
|
-
|
|
631
|
-
### Added
|
|
632
|
-
|
|
633
|
-
- **Custom-node authoring** — `scaffold_custom_node` (generate a Python node pack
|
|
634
|
-
from a template) and `publish_custom_node` (publish to the Comfy Registry via
|
|
635
|
-
comfy-cli; key via `REGISTRY_ACCESS_TOKEN`, never logged) (#24).
|
|
636
|
-
- **`install_custom_node` ref pinning** — pin a pack to a commit/branch/tag, parsed
|
|
637
|
-
from GitHub/GitLab/Bitbucket URLs or `repo@ref`, or an explicit `ref` arg.
|
|
638
|
-
- **`download_model` auth** — per-request `bearer` / `basic` / `header` / `query`
|
|
639
|
-
authentication for gated/private model hosts.
|
|
640
|
-
- **Model download cache** — content-addressed dedup, concurrent-download coalescing,
|
|
641
|
-
and optional LRU eviction (`COMFYUI_DOWNLOAD_CACHE_DIR`, `COMFYUI_LRU_CACHE_SIZE_GB`).
|
|
642
|
-
- **ComfyUI process supervision** — bounded startup readiness checks
|
|
643
|
-
(`COMFYUI_STARTUP_CHECK_INTERVAL_S`/`_MAX_TRIES`) and opt-in bounded
|
|
644
|
-
auto-restart-on-crash (`COMFYUI_ALWAYS_RESTART`, `COMFYUI_RESTART_MAX_ATTEMPTS`,
|
|
645
|
-
`COMFYUI_RESTART_WINDOW_S`).
|
|
646
|
-
- **Plugin skills** — `comfyui-frontend-extensions` (v2 `@comfyorg/extension-api`
|
|
647
|
-
authoring + v1→v2 migration) and `comfyui-node-registry` (node authoring/publishing).
|
|
648
|
-
- **Hosted docs** — Mintlify site with a schema-generated tool reference at
|
|
649
|
-
[comfyui-mcp.artokun.io/docs](https://comfyui-mcp.artokun.io/docs).
|
|
650
|
-
|
|
651
|
-
### Changed
|
|
652
|
-
|
|
653
|
-
- **`get_job_status` + completion notifications** now surface ComfyUI
|
|
654
|
-
`execution_error` detail (node id/type, exception type/message, truncated traceback,
|
|
655
|
-
`current_inputs`, OOM flag) and optional per-node + total execution timing.
|
|
656
|
-
Additive and backward-compatible.
|
|
657
|
-
|
|
658
|
-
### Security
|
|
659
|
-
|
|
660
|
-
- `download_model` auth inputs are validated (reject CR/LF/control chars; HTTP-token
|
|
661
|
-
header names); query-auth secrets are redacted from logs and error details.
|
|
662
|
-
- `install_custom_node` git refs are validated and run via `git checkout
|
|
663
|
-
--end-of-options <ref>`, closing an argv-option-injection vector.
|
|
664
|
-
- Spawned ComfyUI children now have `error` listeners so a missing/failed executable
|
|
665
|
-
can't crash the MCP server.
|
|
666
|
-
|
|
667
|
-
### Experimental
|
|
668
|
-
|
|
669
|
-
- **Embedded-agent backend POC** (flag-gated via `COMFYUI_MCP_AGENT_POC`): a cloudflared
|
|
670
|
-
quick-tunnel helper + an AI SDK `/api/chat` endpoint with bearer auth, a request body
|
|
671
|
-
cap, and a server-side model allowlist. Not part of default startup. See
|
|
672
|
-
`design/embedded-agent-panel.md` and `ROADMAP.md`.
|
|
673
|
-
|
|
674
|
-
### Dependencies
|
|
675
|
-
|
|
676
|
-
- Added `ai` + `@ai-sdk/anthropic`/`openai`/`google` + `cloudflared` (experimental POC)
|
|
677
|
-
and declared `zod-to-json-schema` (docs generation). `npm audit`: 0 high vulnerabilities.
|
|
678
|
-
|
|
679
|
-
## [0.6.1] - 2026-05-25
|
|
680
|
-
|
|
681
|
-
### Added
|
|
682
|
-
|
|
683
|
-
- **Media upload** — `upload_video` and `upload_audio` copy local video/audio
|
|
684
|
-
files into ComfyUI's input directory so they can be referenced as workflow
|
|
685
|
-
inputs, mirroring the existing `upload_image` (closes #12).
|
|
686
|
-
|
|
687
|
-
## [0.6.0] - 2026-05-25
|
|
688
|
-
|
|
689
|
-
A large feature release that ports much of the [`comfy-cli`](https://github.com/Comfy-Org/comfy-cli)
|
|
690
|
-
workflow into MCP tools. New tools operate on the connected ComfyUI (local or a
|
|
691
|
-
remote `--comfyui-url` target), preferring the ComfyUI-Manager HTTP API with a
|
|
692
|
-
subprocess fallback where the API can't do the job.
|
|
693
|
-
|
|
694
|
-
### Added — comfy-cli capability port
|
|
695
|
-
|
|
696
|
-
- **Custom-node management** — `install_custom_node`, `update_custom_node`,
|
|
697
|
-
`reinstall_custom_node`, `fix_custom_node`, `list_installed_nodes`,
|
|
698
|
-
`sync_node_dependencies` (#15)
|
|
699
|
-
- **Node snapshots** — `save_node_snapshot`, `restore_node_snapshot`,
|
|
700
|
-
`list_node_snapshots`; honors comfy-cli's `.json`/`.yaml` snapshot contract (#13)
|
|
701
|
-
- **Node bisect** — `bisect_start`, `bisect_good`, `bisect_bad`, `bisect_reset`,
|
|
702
|
-
`bisect_status` to isolate a faulty custom node; never re-enables packs you had
|
|
703
|
-
disabled before the session (#14)
|
|
704
|
-
- **Workflow dependencies** — `extract_workflow_dependencies`,
|
|
705
|
-
`install_workflow_dependencies` (handles API- and UI-format workflows) (#16)
|
|
706
|
-
- **Install ComfyUI** — `install_comfyui`: clones ComfyUI (+ ComfyUI-Manager) and
|
|
707
|
-
installs requirements into a dedicated workspace virtualenv (#17)
|
|
708
|
-
- **Update** — `update_comfyui` (core) and `update_all` (all custom nodes) (#18)
|
|
709
|
-
- **Models** — `remove_model` (path-safe) and `download_civitai_model` (#19)
|
|
710
|
-
- **Workspace & environment** — `get_workspace`, `set_default_workspace`,
|
|
711
|
-
`list_workspaces`, `get_environment` (#20)
|
|
712
|
-
- **API / partner nodes** — `list_api_nodes`, `get_api_node_schema`,
|
|
713
|
-
`generate_with_api_node` (#21)
|
|
714
|
-
- **ComfyUI-Manager configuration** — `configure_manager` (#22)
|
|
715
|
-
|
|
716
|
-
### Changed
|
|
717
|
-
|
|
718
|
-
- Rewrote tool descriptions and parameter docs across the core tool set for
|
|
719
|
-
clearer purpose, usage guidance, and behavioral transparency — improving agent
|
|
720
|
-
tool-selection quality (#23).
|
|
721
|
-
- Added a `Dockerfile`, `.dockerignore`, `glama.json`, and Glama quality badges
|
|
722
|
-
for the [glama.ai](https://glama.ai) listing.
|
|
723
|
-
|
|
724
|
-
### Security
|
|
725
|
-
|
|
726
|
-
- CivitAI authentication is now sent as an `Authorization: Bearer` header instead
|
|
727
|
-
of a `?token=` query parameter, so the API token no longer leaks into logs,
|
|
728
|
-
errors, or redirect URLs. Model-download filenames are validated to stay within
|
|
729
|
-
the models directory (closes a path-traversal hole shared with `download_model`) (#19).
|
|
730
|
-
- `COMFY_API_KEY` is delivered to API nodes via the `/prompt` `extra_data` payload
|
|
731
|
-
rather than being placed in the workflow (#21).
|
|
732
|
-
|
|
733
|
-
### Notes
|
|
734
|
-
|
|
735
|
-
- Local-management tools (install/update ComfyUI, custom-node installs, model
|
|
736
|
-
removal) require a local install (`COMFYUI_PATH`) and return a clear error when
|
|
737
|
-
targeting a remote instance where the operation cannot apply.
|
|
738
|
-
|
|
739
|
-
Earlier releases predate this changelog.
|
|
740
|
-
|
|
741
|
-
[0.11.1]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.11.1
|
|
742
|
-
[0.11.0]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.11.0
|
|
743
|
-
[0.10.1]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.10.1
|
|
744
|
-
[0.10.0]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.10.0
|
|
745
|
-
[0.9.5]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.9.5
|
|
746
|
-
[0.9.4]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.9.4
|
|
747
|
-
[0.9.3]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.9.3
|
|
748
|
-
[0.9.2]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.9.2
|
|
749
|
-
[0.9.1]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.9.1
|
|
750
|
-
[0.9.0]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.9.0
|
|
751
|
-
[0.8.1]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.8.1
|
|
752
|
-
[0.8.0]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.8.0
|
|
753
|
-
[0.7.0]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.7.0
|
|
754
|
-
[0.6.1]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.6.1
|
|
755
|
-
[0.6.0]: https://github.com/artokun/comfyui-mcp/releases/tag/v0.6.0
|