Releases: dreamrec/ComfyPilot
ComfyPilot v1.8.1 - .mcp.json connectivity fix
Patch: .mcp.json now works in both plugin and project contexts
One-line fix to make the bundled .mcp.json load cleanly when the repo is checked out as a project, not just when loaded by Claude Code's plugin loader.
The bug
.mcp.json previously launched ComfyPilot with:
"args": ["run", "--directory", "${CLAUDE_PLUGIN_ROOT}", "comfypilot"]${CLAUDE_PLUGIN_ROOT} only substitutes inside Claude Code's plugin loader. When .mcp.json is picked up as a project-scope MCP config (which happens automatically when the repo dir is the cwd), the variable stays literal and uv fails because the directory doesn't exist.
Symptom: developers with the v1.8.0 plugin installed AND a local checkout saw
comfypilot: uv run --directory ${CLAUDE_PLUGIN_ROOT} comfypilot - ✗ Failed to connect
in claude mcp list when run from inside the repo. End-users on .mcpb / plugin marketplace never hit this.
The fix
- "args": [\"run\", \"--directory\", \"\${CLAUDE_PLUGIN_ROOT}\", \"comfypilot\"],
+ "args": [\"run\", \"comfypilot\"],uv run walks up from cwd looking for pyproject.toml. In plugin context cwd is the plugin install dir (which has pyproject.toml); in project context cwd is the repo root (also has pyproject.toml). Both succeed.
Also in this release
*.mcpbadded to.gitignoreso locally-built bundles don't dirtygit status.- All 7 release manifests bumped 1.8.0 → 1.8.1.
- CHANGELOG entry covering the fix and its symptom.
Stats unchanged from v1.8.0
| Metric | Value |
|---|---|
| Tools | 88 |
| Categories | 19 |
| Model families | 11 + 5 intent-overrides |
| Bundled blueprints | 13 |
| MCP resources | 6 + 4 |
| Validator passes | 6 |
| Tests passing | 770 |
| ComfyUI compat | v0.20+ |
Install
MCPB one-click (Claude Desktop): Download comfypilot-v1.8.1.mcpb below and drag into Settings → Extensions.
Claude Code plugin update:
claude plugin update comfypilot@dreamrec-ComfyPilot(if you're already on v1.8.0 the update is a one-line config change; no code or skill regeneration needed)
See CHANGELOG.md for the per-release breakdown.
ComfyPilot v1.8.0 - ComfyUI v0.20 alignment + operational toolkit (88 tools)
What's new
v1.8.0 brings ComfyPilot's surface up to ComfyUI v0.20.1 (was claiming v0.17+) and adds a substantial operational toolkit on top of the v1.6.0 structural foundation. Family-aware builder, snapshot/restore, technique memory, and blueprint library are unchanged - the new additions are strictly additive.
Tool count: 73 → 88
New families (1) + intent-overrides (5):
- Ernie Image — new image family (UNETLoader + Ernie CLIPLoader path)
- 5 family-agnostic intents that dispatch by intent name regardless of detected checkpoint:
super_resolution(SUPIR pipeline)interpolate_frames(RIFE / FILM frame interpolation)segment(SAM 3.1 prompt-based segmentation)train_lora(native LoRA trainer)txt2audio(Stable Audio 2.5)
Lifecycle (5 new tools — comfy-cli wrappers):
comfy_launch_server,comfy_stop_servercomfy_install_node,comfy_list_installed_nodescomfy_download_model(with optional CivitAI token)
Diagnostics (5 new tools):
comfy_extract_schema— workflow-level controllable params + dependency summarycomfy_fetch_logs— traceback retrieval from /history/{prompt_id}comfy_inspect_workflow— trust check (custom-node enumeration)comfy_recommend_runtime— hardware verdict (ok / marginal / cloud)comfy_suggest_timeout— per-workflow HTTP timeout based on output classes
Convenience (3 new tools):
comfy_install_workflow_deps— auto-install missing nodescomfy_run_with_inputs— upload + inject + queue in one callcomfy_randomize_seeds— replaceseed=-1sentinels
Other new tools:
comfy_sweep_grid— n-dim Cartesian-product sweepcomfy_list_partner_apis— curated catalog of vendor partner nodes
Validator: 5-pass → 6-pass
- Editor-format pre-pass: catches workflows still in the ComfyUI web UI's
nodes+linksshape and asks for an API-format re-export - Anti-cycle pass: mirrors ComfyUI v0.20's execution-side cycle detection
- Deprecated-model lint runs inside the environment pass
New MCP resources
comfy://api/openapi— ComfyUI OpenAPI 3.1 spec (v0.20.0+)comfy://docs/{node_class}— embedded node documentation
Capability awareness
capabilities.tier— Comfy Cloud subscription tier (free/standard/creator/pro/paid/null) via user-info probing with HTTP_403-specific classificationcapabilities.frontend_version— ComfyUI frontend package versioncapabilities.cache_provider— distributed-cache backend, when presentcapabilities.openapi_version— populated when OpenAPI spec is reachable
Hardening (two rounds of code review)
- Pydantic forward-ref fix in
comfy_get_run_result(output schema now resolves at decoration time) - Path-injection guard in
get_node_docsclass_type - Cloud tier probe distinguishes
HTTP_403from network errors and 404s (no more silent free-tier downgrades on transient blips) comfy_fetch_logsdeduplicates errors that appear in bothstatus.exec_info.errorsANDstatus.messagescomfy_run_with_inputsno longer overloadsauto_snapshot— dedicatedupload_mapfield onQueueAckcomfy_launch_serverwarns whenextra_argsoverrides--port/--listencomfy_randomize_seedsexcludes 0 (treated as sentinel by some custom nodes)auto_fix_depscloses the raw fd ifos.fdopenraises- Path-traversal regression tests (24 cases) pin output-routing safety
Install surface refresh
manifest.json(MCPB) andmcp/manifest.jsonboth exposeCOMFY_STRICT_CONFIRM(was missing on the MCP-registry path).claude-plugin/plugin.jsonenriched withhomepage,repository,license, and a 30-keyword list covering every new family / intent / capability.mcp.local.json.exampleupdated to list every supported env var.mcpbignorecleaned of dead paths
Stats
| Metric | v1.6.0 | v1.8.0 |
|---|---|---|
| Tools | 73 | 88 |
| Categories | 15 | 19 |
| Model families | 10 | 11 (+5 intent overrides) |
| Bundled blueprints | 9 | 13 |
| MCP resources | 5 + 3 | 6 + 4 |
| Validator passes | 5 | 6 |
| Tests passing | 541 | 770 |
| ComfyUI compat | v0.17+ | v0.20+ |
See CHANGELOG.md for the per-feature breakdown.
Install
MCPB one-click (Claude Desktop):
Download comfypilot-v1.8.0.mcpb (attached below) and drag into Claude Desktop's Settings → Extensions.
Claude Code plugin:
claude plugin add /path/to/ComfyPilotLocal dev runtime:
git clone https://github.com/dreamrec/ComfyPilot.git
cd ComfyPilot
uv sync
uv run comfypilotFor the lifecycle tools (comfy_install_node, comfy_install_workflow_deps, etc.) install comfy-cli on PATH:
pipx install comfy-cli # or: uvx --from comfy-cli comfyComfyPilot v1.6.0 - unified model discovery
[1.6.0] - 2026-04-20
Unified model discovery across the full ComfyUI folder taxonomy
This rewires every model-discovery tool to treat /models as the source of
truth for which folders exist, not a hardcoded 5-folder guess. Modern
UNETLoader-based families (Flux 2, Qwen-Image, Wan 2.2, LTX-2, HunyuanVideo,
Hunyuan3D) store their primary weights under diffusion_models/, not
checkpoints/. Pre-1.6 those installs were invisible to comfy_search_models
and comfy_refresh_models, which defaulted to checkpoint-centric folder sets.
-
feat (comfy_client.py): new
ComfyClient.get_model_folders()hits
GET /models(profile-aware, with/api/modelsfallback). Accepts both
list and{folders: [...]}/{models: [...]}dict shapes that different
ComfyUI wrappers return. Returns [] on error so callers can fall back. -
feat (tools/models.py):
comfy_list_model_foldersnow calls the live
endpoint. Response includessource: "live"when the live list succeeded
orsource: "fallback"when the 16-folder static list was used. Fallback
list covers: checkpoints, diffusion_models, unet, loras, vae, vae_approx,
clip, text_encoders, clip_vision, controlnet, upscale_models, style_models,
embeddings, hypernetworks, gligen, diffusers. -
feat (tools/models.py):
comfy_search_modelssearches EVERY discovered
folder by default (not just 5). Empty query returns a full inventory.
Response reportsfolders_source(live | fallback | caller) and
folders_scannedso callers can see exactly where the search ran. -
feat (tools/models.py):
comfy_refresh_modelsrefreshes per-folder and
returnscounts_by_folderplustotal_models. Individual folder errors
are captured in a dedicatederrorslist rather than aborting the whole
refresh. -
chore: tool count unchanged (73). Tests 533 -> 541 (+8 regression tests
covering live-folder discovery, fallback paths, caller-supplied folders,
per-folder refresh, and the client-level endpoint contract).
ComfyPilot v1.5.3 - code-review fixes + strict-confirm
[1.5.3] - 2026-04-20
Code-review fixes: builder / VRAM / capability / blueprint / batch + fail-closed option
-
P1 fix (builder.py): auto-detect now probes both
diffusion_models/andcheckpoints/folders. Modern families (Flux 2, Qwen, Wan 2.2, LTX-2, HunyuanVideo, Hunyuan3D) store weights underdiffusion_models/via UNETLoader; the old code only looked incheckpoints/so installs with onlydiffusion_models/wan2.2-...fell back to SD 1.5 and then rejectedtxt2video. Resolution strategy: collect candidates from both folders, pick the first whose family supports the requested intent; fall back to any recognised family, then any available file. -
P2 fix (vram_guard.py):
check_vramused to copyvram_used_pctfromdevices[0]while aggregatingstatusacross all devices. On multi-GPU rigs that produced contradictory snapshots likestatus=criticalwithvram_used_pct=10.0. Now reports the max used_pct across devices so the top-level number matches the worst device (and the overall status). -
P2 fix (comfy_client.py):
probe_capabilitiespreserves/featuresdict payloads (ComfyUI v0.17+ returns{"progress_text": "binary", ...}), not just lists. Also resolvesauth_methodfrom"auto"to the actual choice ("bearer"/"x-api-key"/"none") socomfy://server/capabilitiesno longer underreports. -
P2 fix (blueprints/store.py): blueprint name validation rejects
\(Windows path separator), null bytes, leading dots, and control characters in addition to/and... Matters because the MCPB manifest advertiseswin32support. -
P3 fix (images.py):
comfy_download_batchno longer downloads every full image body just to compute size. Now returns pure metadata (filename, subfolder, type, URL) by default. Passinclude_size=Trueto opt into per-filesize_bytes(still requires fetching). Individual size-fetch failures now surface assize_errorrather than aborting the whole batch. -
feat (safety/confirm.py): new
COMFY_STRICT_CONFIRM=1env var flips destructive-op confirmation to fail-closed. Default stays fail-open (backward compat with elicitation-unaware hosts). Strict mode blocks when no context, noctx.elicit, orctx.elicitraises - ensuring agents can't silently bypass confirmation on broken hosts. -
chore: tool count unchanged (73). Tests 516 -> 533 (17 new regression tests covering every fix above).
ComfyPilot v1.5.2 - MCPB one-click install
[1.5.2] - 2026-04-20
MCPB one-click install for Claude Desktop + GitHub releases for every tag
- feat: ships a ready-to-install
.mcpbbundle (Anthropic's MCP Bundle format) - downloadcomfypilot-v1.5.2.mcpbfrom the latest release and drag into Claude Desktop. Usestype: "uv"(manifest v0.4) so compiled deps like pydantic just work. User config (COMFY_URL, API key, dirs, etc.) renders as a GUI form. - feat:
manifest.jsonat repo root (MCPB spec) +.mcpbignoreto strip tests/docs/build artefacts from the bundle. - feat: README adds MCPB + GitHub-release badges; Quick Setup gains an "Option 1: MCPB (one-click)" section ahead of the dev-runtime and plugin paths.
- chore: create retroactive GitHub releases for every tag back to v1.1.0 so the Claude Code plugin update surface actually fires. Previously only v1.0.0 had a release published; v1.1.0 through v1.5.1 existed as tags but never as releases.
- chore: attach the
.mcpbartefact to the v1.5.2 release as a downloadable asset.
ComfyPilot v1.5.1
[1.5.1] - 2026-04-20
Docs refresh: full audit, drift repair, badge row
- audit: caught stale tool count (72 in 4 metadata files; actual is 73) - all fixed.
- chore: mcp/manifest.json categories list now includes
hub_search(14 -> 15 categories). - feat: README badge row beyond CI - Version, License (MIT), Python (3.10/3.11/3.12), MCP tools (73), MCP resources (5+3), Blueprints (9), Tests (516), MCP spec (2026-03-26), ComfyUI (v0.17+), Families (10), Transports (stdio / streamable-http).
- feat: README gains Model Families table (distinctive nodes per family) and Transports section documenting --transport streamable-http launch.
- docs: README Tool Map entry 11 now lists every intent including txt2video / img2video / image2_3d / txt2music.
- docs: README MCP Resources section expanded to 5 fixed + 3 resource templates with URI patterns.
- docs: README "What It Is Good At" mentions video, 3D, music, bundled blueprints, parameter sweeps, PNG round-trip, Mermaid, hub search.
- docs: README Environment Variables is now a table and includes
COMFY_SNAPSHOT_DIR+COMFY_BLUEPRINT_DIR. - docs: MANUAL.md rewritten. Accurate 73-tool reference (new sections: Blueprints, Viz+Ingest+Sweep, Hub Search, Structured Output, Elicitation, Transports, Model families). File structure diagram updated to current package layout. Architecture diagram reflects 13 subsystems. Snapshot persistence, atomic writes + manifests, Comfy Cloud example all documented.
- docs: skills/comfypilot-core/SKILL.md refreshed - 73 tools, 15 categories, 5+3 resources, structured output note, model families table, elicitation docs.
- chore: mcp/profiles/generic.json includes all 10 env vars.
- chore: server.json gains
COMFY_SNAPSHOT_DIRenv var and broader keywords (sdxl, sd3.5, qwen-image, wan2.2, ltx-2, hunyuan3d, image-to-3d, music-generation, subgraph-blueprints, mcp, mcp-server).
ComfyPilot v1.5.0
[1.5.0] - 2026-04-20
Cloud WS probe, hub search, bundled blueprints for every family
- feat: ComfyClient.probe_capabilities now actively probes the WebSocket endpoint with a 3s timeout instead of hardcoding ws_available=(profile==local). Cloud ComfyUI exposes wss://cloud.comfy.org/ws; that surface was being wrongly disabled. Headers (bearer / X-API-Key) flow through to the probe.
- feat: comfy_search_hub tool - searches HuggingFace (/api/models) or CivitAI (/api/v1/models) for public models. Normalized hit shape: {source, id, name, url, downloads, tags, + source-specific extras}. Tool count: 73.
- feat: bundled blueprint library grows from 1 -> 9 (one per supported family): flux2-txt2img, sd35-txt2img, sdxl-hires-fix, qwen-txt2img, wan22-txt2video, ltx2-txt2video, hunyuan-video-txt2video, hunyuan3d-image2_3d, acestep-txt2music. comfy_list_blueprints returns all of them.
ComfyPilot v1.4.0
[1.4.0] - 2026-04-20
Phase 2 Task 2: Full structured-output migration
Ten high-signal tools now return typed Pydantic models directly (FastMCP
auto-serializes). Agents get schema-introspectable JSON instead of opaque
strings. Each migration preserved the previous wire payload - no field
was lost in the shape change.
- comfy_check_vram -> VRAMStatus (with per-device VRAMDeviceInfo)
- comfy_list_models -> ModelList (pagination-aware)
- comfy_list_techniques -> TechniqueList (with TechniqueEntry items)
- comfy_list_snapshots -> SnapshotList (with SnapshotEntry items)
- comfy_describe_dynamics -> DynamicsReport (flattened queue + events + jobs)
- comfy_get_system_stats -> SystemStats (nested SystemInfo + GPUInfo list)
- comfy_get_run_result -> RunResult (new model for history entries)
- comfy_queue_prompt -> QueueAck (preserves prompt_id / queue_position / error / node_errors / auto_snapshot)
- comfy_validate_workflow -> ValidationReport (5-pass structured results)
- comfy_watch_progress -> WatchProgressFrame (status literal, numeric progress, elapsed_s)
This completes Phase 2 of the 2026 modernization roadmap. The remaining
deferred Phase 2 item (sampling-backed prompt expansion) still requires
Context.sample which is not yet in the installed FastMCP SDK.
ComfyPilot v1.3.1
[1.3.1] - 2026-04-20
Hotfix
- fix(ci): use tomli backport for Python 3.10 compatibility (tomllib is 3.11+ stdlib). pyproject.toml claims support for 3.10+; tests now honor it.
ComfyPilot v1.3.0
[1.3.0] - 2026-04-20
Phase 3: Polish and Differentiation
- feat: persistent snapshots via COMFY_SNAPSHOT_DIR env var. SnapshotManager now optionally persists to JSON on disk and reloads on restart. LRU eviction trims both memory and disk together.
- feat: output routing emits sidecar manifests (filename.json) alongside each saved image with schema_version, prompt_id, seeds, model_refs, dimensions, timestamp, size_bytes. Writes are atomic (temp file + os.replace).
- feat: comfy_send_to_disk, comfy_send_to_td, comfy_send_to_blender accept an optional prompt_id param that pulls seeds / model refs / dimensions from /history/{prompt_id} into the manifest.
- feat: comfy_visualize_workflow renders an API-format workflow as Mermaid flowchart TD source. Arrows trace input links with names.
- feat: comfy_import_workflow_from_png extracts embedded workflow JSON from ComfyUI-saved PNGs. Parses tEXt / zTXt / iTXt chunks using stdlib only (no Pillow dep). Prefers 'prompt' (API format) over 'workflow' (UI format).
- feat: comfy_sweep enqueues N variants of a workflow with a single parameter varying. Returns prompt_ids plus a square-ish grid layout hint. Each prompt auto-registers with the job tracker.
- chore: bump tool count 69 -> 72. Test count 460 -> 492.