Skip to content

v0.5.0

Choose a tag to compare

@mattmillerai mattmillerai released this 31 Jul 18:22
1fe7ee3

Thin MCP wrapper over comfy-cli for driving a local ComfyUI.

42 commits since v0.4.0. Tool count 39 to 50.

Breaking changes

Read this section before upgrading.

  • The package is now comfy-mcp (#152). The distribution, the import package, the console script and the failure-log directory all move off comfy-local-mcp / comfy_local_mcp. pip install . will not finish this for you, because comfy-mcp is a new name and the old install stays on your PATH pointing at a package that no longer exists: run pip uninstall comfy-local-mcp first, reinstall, then change "command" to comfy-mcp in every MCP client config. The README carries the full migration table.
  • Relicensed from Apache-2.0 to AGPL-3.0-or-later OR LicenseRef-Comfy-Commercial (#135), the same dual license Comfy Desktop is moving to. Commercial terms via licensing@comfy.org.
  • Requires MCP Python SDK 2.x (mcp>=2,<3, #111). SDK 2.0 deleted mcp.server.fastmcp outright with no shim, and the elicitation types behind the spend-confirmation interlock moved with it.
  • comfy-cli floor raised to >= 1.13.0 (#106), the first release carrying the login_url event auth_login blocks on. On 1.12.0 that tool started a login, sat there, and only then reported failure. Now the version guard says no on the first call instead.
  • fetch_template returns {path, local_check} rather than a bare path string (#104).
  • discover defaults to --schemas-only (#112). The full surface was 181 KB against a client output cap of 25k tokens, and the cap truncates rather than rejects, so the tool had been handing back JSON cut mid-structure that would not parse. It is now roughly 35 KB and actually usable.

New tools

Eleven of them, taking the surface from 39 to 50.

  • node_dependencies (#155) reports each custom node pack's declared Python requirements against what is installed in the workspace venv, including for a registry pack you have not installed yet, so conflicts can be checked before installing rather than after.
  • emit_partner_workflow (#113) lets the local ComfyUI execute partner nodes.
  • list_partner_models and partner_model_schema (#118) discover partner models and their parameters.
  • system_stats and free_memory (#116) for VRAM coordination.
  • list_workflow_notes (#117) reads a template's authored notes.
  • switch_comfyui_version (#126), consent gated.
  • download_status, wait_for_download and cancel_download (#105), the background half of the download rework below.

Downloads stop reporting false failures

download_model now submits comfy model download --background and polls, instead of holding the MCP request open for the whole byte transfer (#105). A multi-GB checkpoint outlasts a typical client's 120s request deadline, so the client fired a timeout while the download was quietly succeeding, with no handle to check the real outcome. Bound expiry now returns {timed_out: true, download_id, status} rather than raising, because a slow download is progress, not an error. A comfy-cli without the background verbs falls back to the old synchronous path; #132 makes that fallback honor the caller's timeout and die on cancel.

Consent gates

  • Network-exposing launch flags (#131). launch_comfyui and restart_comfyui forwarded extra_args verbatim, so --listen 0.0.0.0 or --enable-cors-header published an unauthenticated ComfyUI, meaning arbitrary workflow execution plus file reads and writes under the ComfyUI directory, to anything that could route to the machine. Those specific arguments now require confirmation. An ordinary launch is untouched.
  • run_workflow(confirm_spend=True) (#133) forwards --allow-spend, matching partner_generate and run_template.
  • switch_comfyui_version (#126) prompts on every call, since comfy-cli does not gate it at all.

Also in this release

get_template and fetch_template cross-check a template against the live install and tell you before you run it that a node class or model option is missing, which was previously a successful fetch followed by a mystifying runtime failure (#104). get_logs gained a port hint plus source and staleness metadata (#119). Server instructions now route off server_info's hardware block (#114). emit_partner_workflow gates on a comfy-cli that actually has --emit-workflow (#115).

Docs: the COMFYUI_URL / COMFY_LOCAL_URL collision is resolved (#154), SECURITY.md documents the threat model (#129), subgraph templates are written down as fully supported so agents stop refusing to run them (#107), and every catalog tool states a per-surface freshness policy (#134).

Plus routine maintenance: secret-scanning jobs (#143, #144, #145), CI pins and the groom sweep (#109, #110, #149, #150, #151), CODEOWNERS (#127, #141), and docs (#125, #128, #130, #142, #146, #147, #148, #153).

Requirements

comfy-cli >= 1.13.0, Python >= 3.10, MCP Python SDK >= 2, < 3.

Full changelog: v0.4.0...v0.5.0