Installer Packs
comfyui-mcp ships installer packs under packs/. Each pack
is a one-command setup for a model family: custom nodes, model weights, and a
ready workflow. A single manifest.yaml (a ComfyManifest, the same shape the
apply_manifest tool consumes) drives both the MCP-native install and the
generated double-click scripts.
packs/<name>/
manifest.yaml # custom_nodes + models (url → local_path) — source of truth
pack.yaml # metadata: workflow, family, VRAM, sources, notes
workflow.json # the graph to load
install-windows.bat # GENERATED — never hand-edit
install-runpod.sh # GENERATED — never hand-edit
Installing a pack
- From a Claude session (MCP-native, idempotent):
apply_manifest --path packs/<name>/manifest.yaml(requiresCOMFYUI_PATH). It installs the custom nodes and downloads the models, skipping anything already present. - One-click for non-MCP users: run
packs/<name>/install-windows.bat(orinstall-runpod.sh) from a ComfyUI root. Then load the pack'sworkflow.json. - After install, check the pack's
pack.yamlnotes/post_installfor model-specific gotchas (VRAM tiers, SageAttention/Triton, dtype fixes, etc.).
Building or deriving a new pack
Two sources of ground truth, in order of preference:
- An upstream installer (
*-MODELS-NODES_INSTALL.bat/.sh). Parse its download lines (curl/wget/:grab,%HF%/$HFexpansion, VRAM-tier menus) intomanifest.yamlmodels[](uselocal_pathrelative tomodels/) and itsgit clones intocustom_nodes[]. Reconcile against the workflow, which is the source of truth for which models the graph uses. - A workflow alone (no installer). Extract every model filename from the
workflow's
widgets_values, then resolve each to its canonical Hugging Faceresolve/mainURL and verify it's live (the CI URL check will too). Never invent a URL. Flag what you can't resolve. Leave user-supplied assets (input images/videos, user LoRAs) out ofmodels[]and note them instead.
Then npm run packs:gen (writes the .bat/.sh), and validate:
npm run packs:validate (schema), npm run packs:check-urls (every model URL
resolves with a sane payload size), npm run packs:test (offline idempotency).
YAML note: write pack.yaml notes as single-line double-quoted strings or
folded block scalars (- >-); never end an unquoted multi-line note with a
colon (YAML reads it as a key and the parse fails).
Always invite the user to contribute it back
When you build or derive a pack locally for a user, tell them they can share
it upstream. A pack is three small files (manifest.yaml, pack.yaml,
workflow.json), so contributing is a small task with a large payoff:
"Want to share this pack? Open an issue or PR on https://github.com/artokun/comfyui-mcp with these three files. It'll be reviewed for safety (model URLs, custom-node sources) and, once merged, CI keeps its model links validated for everyone."
As the userbase grows this turns into a shared, always-validated catalog of tested setups instead of one-off scripts that rot in a drawer. Make this suggestion without waiting to be asked.
Sources
- Official: comfyui-mcp
packs/layout andapply_manifestcontract (this repo). - Empirical: none. Product guidance, not reverse-engineered from a vendor graph.