ComfyPilot
Allows routing generated images to Blender project directories via the comfy_send_to_blender tool.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ComfyPilot generate an image of a sunset over mountains"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
██████╗ ██████╗ ███╗ ███╗███████╗██╗ ██╗██████╗ ██╗██╗ ██████╗ ████████╗
██╔════╝██╔═══██╗████╗ ████║██╔════╝╚██╗ ██╔╝██╔══██╗██║██║ ██╔═══██╗╚══██╔══╝
██║ ██║ ██║██╔████╔██║█████╗ ╚████╔╝ ██████╔╝██║██║ ██║ ██║ ██║
██║ ██║ ██║██║╚██╔╝██║██╔══╝ ╚██╔╝ ██╔═══╝ ██║██║ ██║ ██║ ██║
╚██████╗╚██████╔╝██║ ╚═╝ ██║██║ ██║ ██║ ██║███████╗╚██████╔╝ ██║
╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ComfyPilot v1.9.0
ComfyPilot is an MCP server for ComfyUI. It gives an AI agent a clean tool surface for workflow building, queueing, progress monitoring, image retrieval, snapshots, and VRAM safety.
Documentation
Production manual:
docs/MANUAL.mdComfyUI release compatibility audit:
docs/COMFYUI_COMPATIBILITY.mdRelease notes:
CHANGELOG.md
Related MCP server: ComfyUI MCP
What This Is
A practical bridge between AI agents and ComfyUI.
A 96-tool MCP surface for workflow building, modern job inspection/cancellation, model management, image upload/download, history, monitoring, snapshots, technique memory, VRAM safety, output routing, blueprints, Mermaid viz, PNG ingest, n-dim parameter sweeps, partner-API discovery, model-hub search, Desktop-aware instance control, generic artifacts, comfy-env workers, comfy-cli lifecycle, and diagnostics.
Live model-folder discovery:
diffusion_models/,text_encoders/,clip_vision/,style_models/,gligen/(and every other folder the connected ComfyUI actually exposes) are searched by default - no more checkpoint-centric blind spots.A workflow-oriented loop built for iteration, not one-shot guessing.
A small technique library for saving and replaying working patterns.
Core Thinking Model (How To Think With This MCP)
Use this loop for every non-trivial task:
Check system first - Read GPU state before loading models. Start with
comfy_get_system_stats,comfy_check_vram.Check memory - Before building from scratch, use
comfy_search_techniquesto check if a similar workflow already exists in the library.Build in small steps - Use
comfy_build_workflowfor any intent (txt2img, img2img, upscale, inpaint, controlnet, txt2video, img2video, image2_3d, txt2music, super_resolution, interpolate_frames, segment, train_lora, txt2audio). The family is auto-detected from the installed checkpoint for family-routed intents; family-agnostic intents (super_resolution, interpolate_frames, segment, train_lora, txt2audio) dispatch by intent name regardless of checkpoint. For common recipes, start fromcomfy_insert_blueprint(name="flux2-txt2img")or any of the 13 bundled blueprints. Validate withcomfy_validate_workflowbefore queueing (6-pass: schema, catalog, graph, anti-cycle, environment, execution-risk).Monitor and retrieve - Queue with
comfy_queue_prompt, watch withcomfy_watch_progress, retrieve withcomfy_get_output_image(returns image content blocks directly in chat).Snapshot before changes - Always
comfy_snapshot_workflowbefore modifying a working workflow. Usecomfy_diff_snapshotsandcomfy_restore_snapshotfor undo.Route outputs - Send generated images to disk, TouchDesigner, or Blender with
comfy_send_to_disk,comfy_send_to_td,comfy_send_to_blender.
Tool Map (96 Tools)
1) System + GPU
Use for connection health, GPU diagnostics, and VRAM management.
comfy_get_system_stats,comfy_get_gpu_info,comfy_get_featurescomfy_list_extensions,comfy_restart,comfy_free_vram
2) Models
Use for discovering and managing every model file ComfyUI exposes. Folder taxonomy is discovered live from /models so modern families whose weights live under diffusion_models/, text_encoders/, clip_vision/, style_models/, or gligen/ are covered by default.
comfy_list_models- Paginated listing inside a single folder (folder,limit,offset).comfy_get_model_info- Normalized node schema for a model-loader node class.comfy_list_model_folders- Live folder list fromGET /models, with fallback to a 16-folder static default when the endpoint is unreachable. Reportssource: live | fallback.comfy_search_models- Searches every discovered folder by default. Passfolders=["checkpoints", "loras"]to narrow. Empty query returns a full inventory.comfy_refresh_models- Re-fetches the cache across every folder; returns per-folder counts + atotal_modelsnumber.
3) Workflow Execution
Use for queueing, cancelling, and managing prompt execution.
comfy_queue_prompt,comfy_get_queue,comfy_cancel_runcomfy_list_jobs,comfy_get_job,comfy_cancel_jobscomfy_interrupt,comfy_clear_queuecomfy_validate_workflow,comfy_export_workflow,comfy_import_workflow
4) Nodes + Schema
Use for exploring ComfyUI's node catalog and understanding widget schemas.
comfy_list_node_types,comfy_get_node_info,comfy_search_nodescomfy_get_categories,comfy_get_embeddings,comfy_inspect_widget
5) Images + Visual Output
Use for retrieving generated images (returned as image content blocks in chat).
comfy_get_output_image,comfy_upload_image,comfy_list_output_imagescomfy_download_batch,comfy_get_image_url
6) History
Use for inspecting past generations and their outputs.
comfy_get_history,comfy_get_run_result,comfy_delete_historycomfy_clear_history,comfy_search_history
7) Monitoring + Progress
Use for tracking active jobs and observing workflow dynamics.
comfy_watch_progress,comfy_subscribe,comfy_unsubscribecomfy_get_events,comfy_describe_dynamics,comfy_get_status
8) Workflow Snapshots
Use for undo/restore and workflow version tracking.
comfy_snapshot_workflow,comfy_list_snapshots,comfy_diff_snapshotscomfy_restore_snapshot,comfy_delete_snapshot,comfy_auto_snapshot
9) Technique Memory
Use for learning, saving, and replaying reusable workflow patterns.
comfy_save_technique- Save a workflow as a reusable technique with tags and metadata.comfy_search_techniques- Search the library by text query and/or tags.comfy_list_techniques- List all saved techniques with metadata.comfy_replay_technique- Load a saved technique's workflow for immediate use.comfy_favorite_technique- Mark techniques as favorites and rate them (0-5).
Technique storage lives at ~/.comfypilot/techniques/ as individual JSON files.
10) Safety + VRAM Guard
Use for guardrails, pre-flight checks, and emergency control.
comfy_check_vram- Check GPU VRAM usage with status levels (ok/warn/critical).comfy_set_limits- Configure safety thresholds (warn %, block %, max queue size).comfy_detect_instability- Check for near-OOM conditions and stuck jobs.comfy_validate_before_queue- Pre-flight check: VRAM headroom + queue capacity.comfy_emergency_stop- Interrupt current job, clear queue, free all VRAM.
11) Workflow Builder
Use for family-aware template construction and node editing.
comfy_build_workflow- Family-aware: detects the checkpoint family (SD 1.5, SDXL, SD 3.5, Flux 2, Qwen-Image, Wan 2.2, LTX-2, HunyuanVideo, Hunyuan3D, ACE-Step) and dispatches to the right graph topology. Intents:txt2img,img2img,upscale,inpaint,controlnet,txt2video,img2video,image2_3d,txt2music.comfy_add_node- Add a node to a workflow-in-progress.comfy_connect_nodes- Wire node outputs to inputs.comfy_set_widget_value- Set widget values on nodes.comfy_apply_template- Alias forcomfy_build_workflow.
12) Output Routing
Use for agent-orchestrated cross-app delivery of generated images.
comfy_send_to_disk- Save output image to local filesystem.comfy_send_to_td- Route output to TouchDesigner project directory.comfy_send_to_blender- Route output to Blender project directory.comfy_list_destinations- List configured output destinations.
13) Subgraph Blueprints
Use for assembling workflows from named reusable macros.
comfy_list_blueprints- List all available blueprints (user + bundled).comfy_insert_blueprint- Materialize a blueprint into a workflow dict with optional per-node input overrides.comfy_publish_subgraph- Save a set of nodes as a reusable named blueprint.
Blueprint storage: user-published at ~/.comfypilot/blueprints/ (override via COMFY_BLUEPRINT_DIR); bundled examples ship in blueprints/ inside the repo.
14) Visualization + Ingest + Sweep
Use for rendering workflows, re-importing PNG outputs, and parameter sweeps.
comfy_visualize_workflow- Render an API-format workflow as a Mermaidflowchart TDsource.comfy_import_workflow_from_png- Extract the embedded workflow JSON from a ComfyUI-saved PNG (prefers 'prompt' API-format chunk, falls back to 'workflow' UI chunk).comfy_sweep- Enqueue N copies of a workflow with a single parameter varying acrossvalues; returns prompt_ids + grid layout hint.comfy_sweep_grid- N-dimensional Cartesian-product sweep over multiplenode_id.paramaxes. Capped at 64 combinations by default (override withmax_combinations).
15) Model Hub Search
Use for discovering models to download from public hubs.
comfy_search_hub- Search HuggingFace or CivitAI for models matching a query. Returns normalized hits (id, name, url, downloads, tags). Usesource="huggingface"orsource="civitai".
16) Partner APIs
Use for surfacing which vendor-hosted partner / API custom nodes are installed.
comfy_list_partner_apis- Intersects ComfyUI's installed-extensions list with a curated catalog (Veo, Kling, ByteDance Seedance/Seedream, GPT-Image, Topaz, Tripo3D, Rodin, Recraft, Ideogram, NanoBanana, Sonilo, ElevenLabs, etc.) and reports which are live on this server with vendor / category / homepage metadata.
17) Lifecycle (v1.8.0)
Use for full setup-to-server flow when ComfyUI isn't running yet. All five tools shell out to the official comfy-cli — install it via pipx install comfy-cli or uvx --from comfy-cli comfy ....
comfy_launch_server- Start ComfyUI (comfy launch --background --port N --listen H).comfy_stop_server- Stop the running server (comfy stop).comfy_install_node- Install a custom-node package by slug via Comfy Manager.comfy_list_installed_nodes- List currently-installed custom nodes.comfy_download_model- Download a model by URL into a chosenmodels/<folder>(supports CivitAI token).
18) Diagnostics (v1.8.0)
Use for workflow introspection, hardware verdicts, traceback extraction, and trust checks.
comfy_extract_schema- Workflow-level controllable param + dependency summary (parameter list, model deps, embedding refs, output nodes, withsummary_onlymode).comfy_fetch_logs- Extract just the error traceback + completed-nodes list from/history/{prompt_id}— handles bothstatus.exec_info.errorsandstatus.messagesshapes.comfy_inspect_workflow- Trust check: classify every class_type as stock / custom and surface warnings before queueing untrusted workflows.comfy_recommend_runtime- Hardware verdict (ok/marginal/cloud) + the rightcomfy-cliinstall flag for this hardware.comfy_suggest_timeout- Per-workflow HTTP timeout suggestion based on long-running output classes (default 300s, up to 3600s for training).
19) Convenience (v1.8.0)
Use to compress multi-step flows that an agent would otherwise script manually.
comfy_install_workflow_deps- Auto-install every missing custom-node package the workflow references (wrapscomfy node install-deps --workflow).comfy_run_with_inputs- Upload local images + inject as workflow inputs + queue — collapses the three-step img2img / inpaint flow into one call.comfy_randomize_seeds- Replaceseed=-1sentinels with cryptographic-grade random uint32 values;force=Truerandomises every seed widget.
20) Desktop Instance + Artifacts + Workers
Use for controlling the exact connected Desktop installation rather than guessing a workspace or port.
comfy_instance_doctor- Resolve the connected PID, owner/supervisor, port, code/data/user/input/output/model roots, Desktop installation, versions, and security warnings.comfy_list_artifacts- Inventory image, video, audio, mesh, and other outputs, with a local output-directory fallback after history resets.comfy_get_artifact- Resolve safe metadata for one output artifact without allowing path traversal.comfy_get_environment_status- Inspect configured/cached comfy-env environments and runtime health.comfy_list_workers- List active isolated workers, PIDs, environments, and health.
MCP Resources
Six fixed resources:
comfy://system/info- System stats, GPU info, ComfyUI versioncomfy://server/capabilities- Detected server profile, version, frontend version, auth method, WebSocket availability, OpenAPI version, cache providercomfy://nodes/catalog- Node catalog preview (first 100 names)comfy://models/{folder}- Model listing by folder (checkpoints, loras, vae, diffusion_models, text_encoders, etc.)comfy://embeddings- Available embeddingscomfy://api/openapi- Optional OpenAPI 3.1 ingestion when the connected deployment exposes/openapi.json; returns{"error": ...}otherwise.
Plus four resource templates (parameterized URIs):
comfy://nodes/catalog/{page}- Paginated node catalog, 100 nodes per page ({page}= 0, 1, 2, ...)comfy://nodes/by-category/{category}- Node class_types whose category starts with the given prefix (e.g.sampling,loaders/video)comfy://templates/catalog- Workflow templates advertised by ComfyUI core + custom nodes (via/workflow_templates)comfy://docs/{node_class}- Localized embedded Markdown from/docs/<class>/en.md, with structured-fork and object-info fallbacks.
How To Use It (Practical Workflow)
Connect MCP client to ComfyPilot.
Check system state and VRAM headroom.
Build a workflow (template or custom API JSON).
Validate, then queue the prompt.
Watch progress until complete.
Retrieve the output image (displayed inline in chat).
Route to disk/TD/Blender if needed. Snapshot at stable milestones.
What It Is Good At
Building and iterating on ComfyUI workflows through conversation.
Family-aware generation across 11 model families (SD 1.5, SDXL, SD 3.5, Flux 2, Qwen-Image, Wan 2.2, LTX-2, HunyuanVideo, Hunyuan3D, ACE-Step, Ernie Image) covering images, video, 3D meshes, and music. Plus 5 family-agnostic intents (super-resolution via SUPIR, frame interpolation via RIFE/FILM, segmentation via SAM 3.1, native LoRA training, text-to-audio via Stable Audio).
Starting from bundled blueprints for every family (13 ship in-repo) and customizing from there.
6-pass workflow validation (schema + catalog + graph + anti-cycle + environment + execution-risk) catching broken links, cycles, missing models, deprecated models, oversized latents before you hit ComfyUI.
Monitoring GPU resources and preventing OOM situations via VRAMGuard.
Returning generated images directly in the chat (image content blocks).
Cross-app output routing to TouchDesigner and Blender with atomic writes + sidecar manifests (prompt_id, seeds, model refs, dimensions).
Snapshot/restore for non-destructive workflow experimentation, now optionally persistent across restarts.
Learning and replaying reusable workflow patterns via the technique library.
Parameter sweeps (queue N variations of a single widget value).
Importing a workflow back from a saved PNG's embedded metadata.
Rendering any workflow as Mermaid for quick visual inspection.
Searching HuggingFace and CivitAI directly for models.
What It Is Not Good At
Replacing artistic direction by itself.
Streaming real-time video output (snapshots and polls, not live frames).
"One shot perfect generation" without iterative refinement.
Running without a working ComfyUI instance somewhere (cloud or local). The lifecycle tools (
comfy_launch_server,comfy_install_node,comfy_install_workflow_deps,comfy_download_model) can bring a local install from zero to ready, but they need comfy-cli onPATH— install viapipx install comfy-clioruvx --from comfy-cli comfy ...first.
Model Families
11 first-class model families plus 5 family-agnostic intent-overrides. Each family has a builder template (or several) that emits a workflow matched to the right graph topology. The family is detected from the checkpoint filename; you can override by passing checkpoint= in params. Intent-overrides skip family detection entirely and dispatch by intent name.
Family | Intents | Distinctive nodes |
SD 1.5 | txt2img, img2img, upscale, inpaint, controlnet |
|
SDXL | txt2img |
|
SD 3.5 | txt2img |
|
Flux 2 / Klein | txt2img |
|
Qwen-Image | txt2img |
|
Wan 2.2 | txt2video, img2video |
|
LTX-2 | txt2video |
|
HunyuanVideo 1.5 | txt2video, img2video |
|
Hunyuan3D 2.1 | image2_3d |
|
ACE-Step 1.5 XL | txt2music |
|
Ernie Image | txt2img |
|
Intent-overrides (family-agnostic; dispatched by intent name regardless of detected checkpoint family):
Intent | Purpose | Distinctive nodes | Origin |
| Image super-resolution / restoration (SUPIR) |
| ComfyUI v0.20.0+ |
| Frame interpolation (`method="rife" | "film"`) |
|
| SAM 3.1 prompt-based segmentation |
| ComfyUI v0.20.0+ |
| Native LoRA training |
| ComfyUI v0.3.41+ |
| Text-to-audio (Stable Audio 2.5) |
| ComfyUI v0.3.58+ |
Transports
stdio (default) - Best for local clients like Claude Code, Claude Desktop, Cursor.
streamable-http - Best for hosted / remote deployments. Enable with:
uv run comfypilot --transport streamable-http --host 0.0.0.0 --port 8765Support Matrix
Feature | Status | Notes |
Local ComfyUI (self-hosted) | Supported | Primary target |
Comfy Cloud API | Partial | Auth and route probing supported; progress depends on remote WS support |
stdio transport | Supported | Default |
Streamable HTTP transport | Supported |
|
Elicitation on destructive tools | Supported | clear_queue, clear_history, delete_history, delete_snapshot, emergency_stop gate on ctx.elicit when confirm=False |
Structured output | Supported | Top 10 tools return typed Pydantic models (SystemStats, ValidationReport, QueueAck, RunResult, ModelList, TechniqueList, SnapshotList, VRAMStatus, DynamicsReport, WatchProgressFrame) |
Paginated node catalog | Supported |
|
MCP Registry publishing | Manifest ready |
|
Workflow JSON (v0.20+ spec) | Supported | 6-pass validation: schema + catalog + graph + anti-cycle + environment + execution-risk |
ComfyUI compatibility | Tested | v0.20.0 through v0.31.1; newer versions are reported as |
Modern jobs API | Supported | list/get since v0.20; state-aware single/batch cancellation since v0.26; legacy queue fallback retained |
OpenAPI 3.1 spec | Optional |
|
Deprecated-model lint | Supported | Validator warns on retired partner models (seedream-3-0, seedance-1-0-lite, seededit, etc.) |
Native subgraph awareness | Supported |
|
V3 custom nodes | Supported | Normalizes V3-derived COMBO/COLOR/BOUNDING_BOX/CURVE/RANGE/dynamic widgets, socket flags, output metadata, and node lifecycle metadata |
Subgraph Blueprints | Supported | User + bundled store, list/insert/publish tools |
Model families (builder) | Supported | SD 1.5, SDXL, SD 3.5, Flux 2, Qwen-Image, Wan 2.2 (t2v/i2v), LTX-2, HunyuanVideo (t2v/i2v), Hunyuan3D, ACE-Step |
WebSocket progress events | Supported where | Binary preview frames are ignored safely |
Image content blocks | Supported | Inline image display in chat |
Cross-app routing | Filesystem only | Saves to disk with suggested commands |
| Supported | Exposed as |
comfy-cli lifecycle | Optional | 5 tools wrap |
Workflow diagnostics | Supported |
|
Cloud tier detection | Supported |
|
Quick Setup
Option 1: MCPB (one-click, Claude Desktop)
Easiest for Claude Desktop users:
Download
comfypilot-v1.9.0.mcpbfrom the latest release.Double-click the file (or drag it into Claude Desktop's Settings > Extensions panel).
Claude Desktop renders a form for
COMFY_URL,COMFY_API_KEY, and the other config fields — fill in what you need.Click Install. Restart is handled automatically.
MCPB uses the type: "uv" server mode, so Python dependencies (mcp, httpx, pydantic, websockets) are resolved by uv at first run. You need uv installed on the host — install uv.
The bundle ships manifest.json + pyproject.toml + the full src/comfy_mcp/ package + the 13 bundled blueprints. Manifest: manifest.json.
Option 2: Local development runtime
git clone https://github.com/dreamrec/ComfyPilot.git
cd ComfyPilot
uv sync
uv run comfypilotOption 3: Claude Code plugin
claude plugin add /path/to/ComfyPilotOption 4: Codex
Install the checkout and register its stdio server:
uv sync
codex mcp add comfypilot --env COMFY_URL=http://127.0.0.1:8188 -- uv run --directory /path/to/ComfyPilot comfypilotCodex stores MCP configuration in ~/.codex/config.toml; the CLI, IDE extension,
and desktop app share that configuration. Restart Codex after changing MCP servers.
Local override
If your ComfyUI instance lives somewhere other than 127.0.0.1:8188 (Tailscale, remote LAN, custom port), copy .mcp.local.json.example to .mcp.local.json and edit it. The .mcp.local.json file is gitignored so per-machine URLs and secrets never get committed.
MCP Bundle (Standardized)
ComfyPilot ships a standard MCP bundle in-repo:
mcp/manifest.jsonmcp/profiles/claude-desktop.json,cursor.json,generic.json
The bundled profile JSON files pin uv run with --directory; replace /path/to/ComfyPilot with your checkout path when copying them into a client config. If you're launching from inside this repo, .mcp.json already uses ${CLAUDE_PLUGIN_ROOT}.
Manual client configuration example (Claude Desktop):
{
"mcpServers": {
"comfypilot": {
"command": "uv",
"args": ["run", "--directory", "/path/to/ComfyPilot", "comfypilot"],
"env": {
"COMFY_URL": "http://127.0.0.1:8188",
"COMFY_API_KEY": ""
}
}
}
}Environment Variables
Variable | Default | Description |
|
| ComfyUI server URL |
| (empty) | Optional API key (Bearer for local, X-API-Key for Comfy Cloud) |
|
| Auth header style: |
|
| HTTP request timeout in seconds |
|
| Maximum workflow snapshots retained |
| (empty) | If set, persists snapshots to this directory. If empty, snapshots are in-memory only (pre-1.3 behavior). |
|
| User-published subgraph blueprints (bundled examples fall back automatically). |
|
| Destructive tools fail closed when elicitation is unavailable or errors. Set to |
|
| Image output directory for disk routing |
|
| TouchDesigner output path |
|
| Blender output path |
Test Suite
Run the test suite:
uv run pytest -vRun a specific category:
uv run pytest tests/test_builder.py -vFor a quick smoke run:
uv run pytest -qReliability Habit
Treat this as mandatory for every meaningful task: before generations check VRAM, before workflow changes snapshot, after builds validate, after errors check comfy_detect_instability.
License
MIT
dreamrec // ComfyPilot // live laugh diffuse
Available Tools
96 toolscomfy_add_nodeBRead-onlyIdempotent
Add a node to a workflow.
Args: workflow: The workflow dictionary to modify node_id: ID for the new node (string, e.g. "8") class_type: ComfyUI node class type inputs: Optional input values for the node
Inputs: node_id (required), workflow (required), class_type (required), inputs. Returns: result
comfy_apply_templateARead-onlyIdempotent
Apply a workflow template and return the resulting workflow.
Convenience alias for comfy_build_workflow.
Args: template: Template name (txt2img, img2img, upscale, inpaint, controlnet) params: Optional parameters to override template defaults
Inputs: template (required), params. Returns: result
comfy_auto_snapshotB
Toggle automatic snapshot creation on workflow execution.
Args: enabled: Whether to enable auto-snapshots
Returns: JSON confirming the new auto_snapshot flag state
Inputs: enabled (required). Returns: result
comfy_build_workflowARead-onlyIdempotent
Build a ComfyUI workflow for an intent, routed to the detected model family.
The checkpoint family is detected from params['checkpoint'] (or auto-detected from the first installed checkpoint if ctx is provided) and dispatched to a family-specific builder. SD 1.5 is the fallback when the family can't be determined.
Intents by family: SD 1.5: txt2img, img2img, upscale, inpaint, controlnet SDXL / SD 3.5: txt2img Flux 2 / Qwen: txt2img Wan 2.2: txt2video, img2video LTX-2: txt2video HunyuanVideo: txt2video, img2video Hunyuan3D: image2_3d ACE-Step: txt2music
Args: template: Intent name (e.g. 'txt2img', 'txt2video', 'image2_3d', 'txt2music'). params: Optional param overrides. If 'checkpoint' is set, family routing uses it; otherwise the first installed checkpoint is auto-detected.
Inputs: template (required), family, params. Returns: result
comfy_cancel_jobsADestructiveIdempotent
Cancel multiple running or queued jobs (v0.26+, with legacy fallback).
Inputs: job_ids (required). Returns: result
comfy_cancel_runADestructive
Cancel a running or queued prompt by ID.
Args: prompt_id: The prompt ID to cancel
Inputs: prompt_id (required). Returns: result
comfy_check_vramARead-onlyIdempotent
Check current GPU VRAM usage. Returns structured VRAMStatus with per-device detail.
Inputs: no named parameters. Returns: status, devices, message, gpu_processes, +2 more
comfy_clear_historyADestructiveIdempotent
Clear ALL execution history. Destructive and cannot be undone.
Args: confirm: If False, the tool asks for explicit confirmation via elicitation before proceeding. Pass True to skip the prompt.
Inputs: confirm. Returns: result
comfy_clear_queueADestructive
Clear all pending prompts from the queue. Destructive.
Args: confirm: If False, the tool asks for explicit confirmation via elicitation before proceeding. Pass True to skip the prompt.
Inputs: confirm. Returns: result
comfy_connect_nodesARead-onlyIdempotent
Connect two nodes in a workflow.
Args: workflow: The workflow dictionary source_node: ID of the source node source_output: Output index on the source node target_node: ID of the target node target_input: Input name on the target node
Inputs: workflow (required), source_node (required), target_node (required), target_input (required), +1 more. Returns: result
comfy_delete_historyADestructiveIdempotent
Delete a specific history entry. Destructive.
Args: prompt_id: The ID of the prompt execution to delete confirm: If False, the tool asks for explicit confirmation via elicitation before proceeding. Pass True to skip the prompt.
Inputs: prompt_id (required), confirm. Returns: result
comfy_delete_snapshotBDestructiveIdempotent
Delete a snapshot. Destructive.
Args: snapshot_id: The snapshot ID to delete confirm: If False, the tool asks for explicit confirmation via elicitation before proceeding. Pass True to skip the prompt.
Inputs: snapshot_id (required), confirm. Returns: result
comfy_describe_dynamicsARead-onlyIdempotent
One-shot snapshot of system dynamics (queue + recent events + active jobs).
Returns structured DynamicsReport with queue counts, recent event types, and active job summary.
Inputs: no named parameters. Returns: active_jobs, queue_pending, queue_running, active_job_count, +2 more
comfy_detect_instabilityBRead-onlyIdempotent
Check for stuck jobs, OOM patterns, and other instability signals.
Returns: JSON with stable flag, issues list, and queue counts
Inputs: no named parameters. Returns: result
comfy_diff_snapshotsARead-onlyIdempotent
Diff two snapshots or a snapshot vs current workflow.
Args: id_a: First snapshot ID id_b: Optional second snapshot ID current_workflow: Optional current workflow to diff against
Returns: JSON with added_nodes, removed_nodes, modified_nodes, total_changes
Inputs: id_a (required), id_b, current_workflow. Returns: result
comfy_download_batchARead-onlyIdempotent
Get lightweight metadata for multiple output images.
By default this is a pure metadata lookup - no image bytes cross the
wire. Each entry contains {filename, subfolder, type, url}.
Pass include_size=True to also populate size_bytes, which requires
downloading each image. That path should only be used for short lists.
Args: filenames: List of image filenames to query. subfolder: Optional subfolder within the output directory. include_size: If True, fetch each image to populate size_bytes. Default False - the tool advertised itself as "metadata only" but the pre-1.5.3 implementation downloaded every full body.
Inputs: filenames (required), subfolder, include_size. Returns: result
comfy_download_modelAIdempotent
Download a model via comfy model download --url ... --relative-path models/<folder>.
Args:
url: Direct download URL (HuggingFace, CivitAI, etc.). For
CivitAI links, also pass civitai_api_token.
folder: Subfolder under models/. Common values: checkpoints, loras,
vae, diffusion_models, text_encoders, controlnet, upscale_models.
civitai_api_token: Optional CivitAI API token for gated downloads.
workspace: Optional --workspace path.
confirm: Explicitly confirm the network download and filesystem write.
Inputs: url (required), folder, confirm, workspace, +1 more. Returns: result
comfy_emergency_stopADestructive
Emergency stop: interrupt current job, clear queue, and free VRAM. Destructive.
WARNING: This is destructive - it will cancel all running and pending jobs.
Args: confirm: If False, the tool asks for explicit confirmation via elicitation before proceeding. Pass True to skip the prompt (useful when firing from automated safety checks).
Inputs: confirm. Returns: result
comfy_export_workflowARead-onlyIdempotent
Export/serialize a workflow to JSON string.
Simply returns the workflow formatted nicely as JSON string.
Inputs: workflow (required). Returns: result
comfy_extract_schemaARead-onlyIdempotent
Extract the controllability / dependency surface of a workflow.
Returns a structured summary of every controllable widget input across all nodes, every model the workflow depends on (loader nodes), every embedding reference embedded in text inputs, and every output node. Lets an agent decide what to parameterise without walking the graph node-by-node.
Args:
workflow: API-format workflow dict.
summary_only: If True, return just the high-level counts/flags
(parameter_count, has_negative_prompt, has_seed,
model_count, node_count) without the per-parameter list.
Inputs: workflow (required), summary_only. Returns: result
comfy_favorite_techniqueA
Set favorite status and/or rating for a technique.
Args: technique_id: The technique ID to update favorite: Whether to mark as favorite (default True) rating: Rating from 0-5, or -1 to leave unchanged (default -1)
Inputs: technique_id (required), rating, favorite. Returns: result
comfy_fetch_logsARead-onlyIdempotent
Retrieve execution logs / error traceback for a specific prompt.
ComfyUI's /history/{prompt_id} response carries a status.messages
array with per-step execution events and status.exec_info.errors
with traceback strings on failure. This tool extracts just the
log-relevant fields (status, errors, per-node traceback, completed
nodes) so the caller doesn't have to walk the full response.
Args:
prompt_id: Prompt ID returned by comfy_queue_prompt.
Inputs: prompt_id (required). Returns: result
comfy_free_vramAIdempotent
Unload models and/or free VRAM memory.
Args: unload_models: Unload all loaded models from VRAM free_memory: Free cached memory allocations
Inputs: free_memory, unload_models. Returns: result
comfy_get_artifactARead-onlyIdempotent
Get safe metadata (and optionally base64 bytes) for one output file.
relative_path is always resolved beneath the connected local
instance's argv-derived output directory. Absolute paths, .. and
symlink escapes are rejected. Inline bytes are opt-in and capped at 25 MiB.
Inputs: relative_path (required), include_data, include_sha256, max_inline_bytes. Returns: result
comfy_get_categoriesARead-onlyIdempotent
Get all node categories.
Returns: JSON with sorted list of categories and their node counts
Inputs: no named parameters. Returns: result
comfy_get_embeddingsARead-onlyIdempotent
List available embeddings.
Returns: JSON with embeddings list and count
Inputs: no named parameters. Returns: result
comfy_get_environment_statusBRead-onlyIdempotent
Inspect Env Manager runtime, node environments, and workers.
Each endpoint is independent: a broken /env-manager/runtime response
is reported without hiding working environment/worker data. By default the
often very large environment list is reduced to configured or materialized
entries.
Inputs: limit, configured_only. Returns: result
comfy_get_eventsA
Drain buffered events from EventManager.
Args: event_type: Optional filter by event type limit: Maximum number of events to return (default 100)
Returns: JSON with events list and count
Inputs: limit, event_type. Returns: result
comfy_get_featuresARead-onlyIdempotent
List enabled ComfyUI features (v0.17+).
Inputs: no named parameters. Returns: result
comfy_get_gpu_infoARead-onlyIdempotent
Get detailed GPU info: VRAM total/free/used, torch version, device names.
Inputs: no named parameters. Returns: result
comfy_get_historyARead-onlyIdempotent
Get execution history with pagination.
Args: limit: Maximum number of entries to return (default 20)
Returns: JSON with entries list and total count
Inputs: limit. Returns: result
comfy_get_image_urlBRead-onlyIdempotent
Get the URL to view an image on the ComfyUI server.
Args: filename: Image filename subfolder: Optional subfolder image_type: Image type (output, input, temp)
Inputs: filename (required), subfolder, image_type. Returns: result
comfy_get_jobBRead-onlyIdempotent
Get a full modern job record, with a legacy history fallback.
Inputs: job_id (required). Returns: result
comfy_get_model_infoARead-onlyIdempotent
Get node schema for a model-related node type.
Returns the node's input/output definition from ComfyUI's object_info, not model file metadata.
Args: node_type: The node class type to inspect (e.g., "CheckpointLoaderSimple")
Inputs: node_type (required). Returns: result
comfy_get_node_infoARead-onlyIdempotent
Get detailed normalized info about a specific node type.
Returns a NodeSchema-shaped payload: class_type, category, description, inputs (with name/type/required/constraints/is_link_target per input), outputs, is_output_node, schema_version ('v1' or 'v3').
Args: node_type: The node type name to get info for
Inputs: node_type (required). Returns: result
comfy_get_output_imageARead-onlyIdempotent
Download an output image from ComfyUI and return it as an image content block.
Args: filename: Image filename (e.g. "ComfyUI_00001_.png") subfolder: Optional subfolder within the output directory
Inputs: filename (required), subfolder.
comfy_get_queueARead-onlyIdempotent
Get current queue state including running and pending prompts.
Inputs: no named parameters. Returns: result
comfy_get_run_resultARead-onlyIdempotent
Get result of a specific prompt execution. Returns structured RunResult.
Args: prompt_id: The ID of the prompt execution to retrieve
Inputs: prompt_id (required). Returns: Result of a completed prompt as returned by ComfyUI's /history/{id} endpoint.
comfy_get_statusARead-onlyIdempotent
One-shot status overview (queue + GPU + execution state + events).
Returns: Combined status JSON with queue info, system stats, and event health
Inputs: no named parameters. Returns: result
comfy_get_system_statsARead-onlyIdempotent
Get ComfyUI system stats: OS, GPU, VRAM, version info. Returns structured SystemStats.
Inputs: no named parameters. Returns: system, devices
comfy_import_workflowBRead-onlyIdempotent
Parse a JSON string into a workflow dict.
Parses the JSON string and validates basic structure. Returns the parsed workflow dict as JSON.
Inputs: workflow_json (required). Returns: result
comfy_import_workflow_from_pngARead-onlyIdempotent
Extract a workflow from a ComfyUI-saved PNG's tEXt metadata.
ComfyUI embeds the workflow JSON in the PNG on save:
'prompt' chunk: API format (directly queueable)
'workflow' chunk: UI format (with positions, widgets)
This tool prefers 'prompt' and falls back to 'workflow'. Returns {format: 'api' | 'ui' | 'none', workflow: dict, path: str}.
Args: png_path: Absolute path to the PNG file.
Inputs: png_path (required). Returns: result
comfy_insert_blueprintARead-onlyIdempotent
Materialize a blueprint into a workflow dict.
Args: name: Blueprint name (from comfy_list_blueprints). inputs: Optional {node_id: {input_name: value}} overrides applied to the blueprint's nodes when inserted.
Inputs: name (required), inputs. Returns: result
comfy_inspect_widgetARead-onlyIdempotent
Get widget/input details for a node type (normalized, V1/V3 transparent).
Returns: node_type: class name inputs: list of {name, type_name, required, constraints, is_link_target} widget_inputs: subset of inputs that are widgets (is_link_target=False) link_inputs: subset of inputs that expect links from other nodes
Args: node_type: The node type name to inspect
Inputs: node_type (required). Returns: result
comfy_inspect_workflowARead-onlyIdempotent
Enumerate custom (non-stock) node class types in a workflow.
Workflow JSON is arbitrary code - custom nodes run Python on the ComfyUI server. This tool surfaces which class_types are NOT in the set of ComfyUI core / first-party node patterns, so an agent can warn the user (or refuse to auto-queue) before submitting a workflow from an untrusted source.
Returns a JSON report with trust_level (stock | mixed | fully_custom),
the stock + custom class lists, and per-warning strings.
Inputs: workflow (required). Returns: result
comfy_install_nodeAIdempotent
Install a custom node via comfy node install <name>.
Uses Comfy Manager under the hood. Name format is typically the GitHub repo's slug (e.g. 'comfyui-impact-pack', 'comfyui-controlnet-aux', 'comfyui-animatediff-evolved').
Args: name: Custom-node package name. workspace: Explicit comfy-cli workspace path. confirm: Explicitly confirm package installation.
Inputs: name (required), confirm, workspace. Returns: result
comfy_install_workflow_depsAIdempotent
Auto-install every custom-node package the workflow references.
Wraps comfy node install-deps --workflow=<file>. The workflow is
serialised to a temp file (in API format), passed to comfy-cli, and
the temp file is removed after. Long-running call (each missing
package downloads + installs): default timeout 600 s.
Args: workflow: API-format workflow dict. workspace: Optional --workspace path passed to comfy-cli.
Inputs: workflow (required), workspace. Returns: result
comfy_instance_doctorARead-onlyIdempotent
Discover the connected instance, supervisor, paths, ports, and versions.
For a local Comfy Desktop endpoint, this correlates API argv, the listening PID/process tree, and Desktop's installation registry. It never starts, stops, or changes the instance.
Inputs: no named parameters. Returns: result
comfy_interruptADestructive
Interrupt the currently executing prompt.
Inputs: no named parameters. Returns: result
comfy_launch_serverAIdempotent
Start an explicitly selected ComfyUI workspace via comfy-cli.
This tool has no implicit 8188 fallback. workspace and port must
be explicit, and a healthy connected endpoint blocks launch unless the
caller deliberately sets allow_parallel=True. This prevents a Desktop
install on port 8000 from accidentally gaining a competing CLI process.
Args:
background: Run as a detached daemon (default True). False blocks
until the server exits.
port: Explicit port for ComfyUI's HTTP server.
host: Host to bind on. Default 127.0.0.1; use 0.0.0.0 for LAN access.
workspace: Optional --workspace path passed to comfy-cli (selects
which ComfyUI install to launch when multiple are present).
extra_args: Additional argv to forward verbatim after -- (e.g.
['--listen', '0.0.0.0', '--cpu']).
allow_parallel: Permit launch while the currently selected endpoint is
already healthy. Default False.
confirm: Explicitly confirm this process-start mutation.
Inputs: host, port, confirm, workspace, +3 more. Returns: result
comfy_list_artifactsARead-onlyIdempotent
List image, video, audio, mesh, or other output artifacts.
History is merged with the local output filesystem for loopback instances, so outputs remain discoverable after ComfyUI history is reset. Paths are constrained to the output root and filesystem symlinks cannot escape it.
Inputs: kind, limit, query, offset, +2 more. Returns: result
comfy_list_blueprintsARead-onlyIdempotent
List subgraph blueprints from the configured sources.
Sources:
"all" (default): user + bundled + native (everything available).
"user": only the user-published store (COMFY_BLUEPRINT_DIR).
"bundled": only the bundled examples shipping with ComfyPilot.
"native": only the global subgraphs ComfyUI itself publishes.
User blueprints shadow bundled ones when names collide. Native entries
are tagged with source: "native" so the caller can distinguish them
from ComfyPilot-managed blueprints.
Inputs: source. Returns: result
comfy_list_destinationsARead-onlyIdempotent
List configured output destinations and their paths.
Inputs: no named parameters. Returns: result
comfy_list_extensionsARead-onlyIdempotent
List all installed ComfyUI custom nodes and extensions.
Inputs: no named parameters. Returns: result
comfy_list_installed_nodesARead-onlyIdempotent
List custom-node packages, preferring the live Manager V2 API.
Manager V2 is dramatically faster and, unlike comfy-cli, is guaranteed to
describe the connected running installation. comfy-cli remains a
compatibility fallback when no Context/API is available.
Args:
workspace: Optional --workspace path passed to comfy-cli.
mode: Manager inventory mode (imported by default).
prefer_manager_api: Try /v2/customnode/installed first.
Returns: JSON with one of three shapes: - {status: "ok", raw_lines: [...], line_count: N} when the listing succeeded. line_count==0 means no custom nodes are installed (or only stock ComfyUI is present). - {status: "failed", comfy_cli_returncode, stderr} when the binary is present but the call exits non-zero. - {error: "...install hints..."} when comfy-cli is not on PATH.
Inputs: mode, workspace, prefer_manager_api. Returns: result
comfy_list_jobsARead-onlyIdempotent
List ComfyUI jobs using the v0.20+ canonical jobs API.
Args:
status: Optional job state filter
workflow_id: Optional workflow UUID filter
sort_by: Optional server-supported sort field
sort_order: asc or desc
limit: Maximum records to return (1-1000)
offset: Offset pagination when after is omitted
after: Cursor pagination token when supported
Inputs: after, limit, offset, status, +3 more. Returns: result
comfy_list_model_foldersARead-onlyIdempotent
List every model-folder name the connected ComfyUI exposes.
Uses ComfyUI's /models endpoint to discover folders live. Reports the
data source ("live" vs "fallback") so callers know whether the list
reflects their actual install.
Inputs: no named parameters. Returns: result
comfy_list_modelsARead-onlyIdempotent
List models in a folder with pagination. Returns structured ModelList.
Args: folder: Model folder name (e.g., "checkpoints", "diffusion_models", "loras", "vae", "text_encoders"). Call comfy_list_model_folders to see every folder the connected ComfyUI actually exposes. limit: Maximum number of results per page. offset: Starting position for pagination. include_non_model_files: Include caches, source files, lock metadata, archives, and unknown extensions returned by custom folders.
Inputs: folder (required), limit, offset, include_non_model_files. Returns: folder, models, has_more, next_offset, +1 more
comfy_list_node_typesARead-onlyIdempotent
List all available node types with pagination.
Args: limit: Maximum number of results per page offset: Starting position for pagination
Returns: JSON with node_types list, total_count, has_more, next_offset
Inputs: limit, offset. Returns: result
comfy_list_output_imagesARead-onlyIdempotent
List output images from history with a local filesystem fallback.
Args: subfolder: Optional subfolder to filter by limit: Maximum number of filenames to return
Inputs: limit, subfolder. Returns: result
comfy_list_partner_apisARead-onlyIdempotent
List partner-API custom nodes installed on the connected ComfyUI.
Intersects the installed extensions list (from ComfyUI's /extensions endpoint) with ComfyPilot's curated KNOWN_PARTNER_APIS catalog. Useful before suggesting workflows that depend on cloud-backed nodes - tells the agent which vendors (Veo, Kling, Seedream, GPT-Image, etc.) are actually wired up on this server.
Returns:
JSON with installed (list of detected partners) and available
(full catalog) so the agent can suggest installs when needed.
Inputs: no named parameters. Returns: result
comfy_list_snapshotsARead-onlyIdempotent
List workflow snapshots (newest first). Returns structured SnapshotList.
Args: limit: Maximum number of snapshots to return (default 20)
Inputs: limit. Returns: count, snapshots
comfy_list_techniquesARead-onlyIdempotent
List all saved workflow techniques (newest first). Returns structured TechniqueList.
Args: limit: Maximum number of techniques to return (default 50)
Inputs: limit. Returns: count, techniques
comfy_list_workersARead-onlyIdempotent
List active comfy-env subprocess workers, PIDs, Python, and generation.
Inputs: no named parameters. Returns: result
comfy_publish_subgraphAIdempotent
Save a set of nodes as a reusable blueprint.
Args: name: Blueprint name (must not contain '/' or '..'). nodes: Dict of {node_id: node_spec} forming the blueprint graph. description: Free-text description for discoverability. tags: Optional tags for search/filter.
Inputs: name (required), nodes (required), tags, description. Returns: result
comfy_queue_promptA
Queue a workflow for execution. Returns structured QueueAck.
Args: workflow: Workflow dict to queue front: If True, insert at front of queue instead of back workflow_id: Optional stable workflow UUID for ComfyUI job metadata workflow_version_id: Optional workflow-version UUID partial_execution_targets: Optional output node IDs to execute extra_data: Optional metadata to attach to the queued prompt
Inputs: workflow (required), front, extra_data, workflow_id, +2 more. Returns: error, prompt_id, upload_map, node_errors, +3 more
comfy_randomize_seedsA
Replace seed sentinels (-1) with fresh random uint32 values.
By default, only widgets currently set to -1 are randomised; this lets
a caller "opt in" by writing -1 for the seeds they want fresh while
pinning the others to specific values. Set force=True to randomise
every seed widget in the workflow regardless of its current value.
Uses secrets.randbelow(2**32) for cryptographic-grade randomness -
avoids the seeded global random module so concurrent randomisation
calls don't share a stream.
Args: workflow: API-format workflow dict (deep-copied; caller's dict stays unchanged). force: Randomise every seed widget regardless of current value.
Returns:
JSON with workflow (patched copy) and assignments mapping
node_id.field -> new_seed.
Inputs: workflow (required), force. Returns: result
comfy_recommend_runtimeARead-onlyIdempotent
Inspect connected GPU and recommend local vs Comfy Cloud routing.
Returns one of three verdicts:
ok- run everything locally (>=8 GB discrete VRAM or >=32 GB unified Apple Silicon)marginal- SD 1.5 OK, SDXL tight, Flux/video unlikely. Cloud recommended for heavy workloads.cloud- no usable GPU, <6 GB VRAM, <16 GB unified, Intel Mac, or Rosetta Python. Route to Comfy Cloud.
Also reports the appropriate comfy-cli install flag (--nvidia,
--amd, --m-series, --cpu) so the caller can pass it to
comfy_install_node / comfy_launch_server flows.
Inputs: no named parameters. Returns: result
comfy_refresh_modelsARead-onlyIdempotent
Re-fetch the model list from ComfyUI across every known folder.
Note: this re-reads ComfyUI's current model cache. It does NOT trigger a server-side filesystem rescan. Returns per-folder counts so the caller can see where the installed weights live.
Inputs: no named parameters. Returns: result
comfy_replay_techniqueCRead-onlyIdempotent
Get the full technique data including workflow for re-use.
Args: technique_id: The technique ID to retrieve
Inputs: technique_id (required). Returns: result
comfy_restartADestructiveIdempotent
Safely restart the selected local instance through Manager V2.
First call comfy_instance_doctor and pass back either its
instance_id or listener PID. The selector is checked immediately before
the mutation. Desktop/Manager V2 is used when available; ComfyPilot never
falls back to launching a competing server on port 8188.
Inputs: confirm, expected_pid, timeout_seconds, wait_for_health, +1 more. Returns: result
comfy_restore_snapshotBRead-onlyIdempotent
Get a snapshot's workflow data for restoration.
Args: snapshot_id: The snapshot ID to restore
Returns: JSON with full snapshot data including workflow
Inputs: snapshot_id (required). Returns: result
comfy_run_with_inputsA
Upload local images, inject as workflow inputs, then queue.
Combines the three-step img2img / inpaint flow (upload + patch + queue)
into one tool call. Each entry in inputs is a (label, local_path)
pair: the file is uploaded to ComfyUI's input directory and the
workflow's matching input widget is set to the uploaded filename.
Args: workflow: API-format workflow dict (will be deep-copied before patching - the caller's dict is not mutated). inputs: Mapping of label -> local file path. Labels may be "node_id.input_name" for explicit targeting or just "input_name" to patch every matching widget. front: Insert at the front of the queue (default False).
Returns:
QueueAck (typed) with prompt_id, queue_number, plus an
auto_snapshot field listing the upload mapping that was applied.
Inputs: inputs (required), workflow (required), front. Returns: error, prompt_id, upload_map, node_errors, +3 more
comfy_save_techniqueB
Save a workflow as a reusable technique.
Args: workflow: The workflow dictionary to save name: Name for the technique description: Optional description tags: Optional list of tags for categorization
Inputs: name (required), workflow (required), tags, description. Returns: result
comfy_search_historyARead-onlyIdempotent
Search history for prompts containing specific node types.
Args: query: Search term (case-insensitive substring match on node class_type) limit: Maximum number of matches to return (default 20)
Returns: JSON with matching history entries
Inputs: query (required), limit. Returns: result
comfy_search_hubARead-only
Search a public model hub for models matching a query.
Args: query: Free-text search, e.g. "flux2 klein" or "sdxl anime". source: "huggingface" or "civitai". Default huggingface. limit: Max results (1-50). Default 10.
Inputs: query (required), limit, source. Returns: result
comfy_search_modelsARead-onlyIdempotent
Search for models by name across folders.
By default searches every folder ComfyUI exposes (discovered live via
/models). Pass folders=["checkpoints", "loras"] to narrow.
Args: query: Case-insensitive substring match against filenames. Empty string returns every model in every folder (useful for a full inventory). folders: Explicit folder list to restrict the search. None means search all discovered folders. include_non_model_files: Include cache locks, Python sources, wheels, archives, and unknown file types. Default False.
Inputs: query (required), folders, include_non_model_files. Returns: result
comfy_search_nodesARead-onlyIdempotent
Search for nodes by name (case-insensitive substring match).
Args: query: Search query string limit: Maximum number of results to return
Returns: JSON with matches list and total match count
Inputs: query (required), limit. Returns: result
comfy_search_techniquesARead-onlyIdempotent
Search workflow techniques by text query and/or tags.
Args: query: Text to search in name, description, and tags tags: Optional list of tags to filter by limit: Maximum number of results to return (default 20)
Inputs: tags, limit, query. Returns: result
comfy_send_to_blenderAIdempotent
Download image and save for Blender consumption atomically with sidecar manifest.
Args: filename: The image filename in ComfyUI outputs subfolder: Optional subfolder in ComfyUI outputs prompt_id: Optional prompt_id to enrich the manifest with history metadata
Inputs: filename (required), prompt_id, subfolder. Returns: result
comfy_send_to_diskAIdempotent
Download an image from ComfyUI and save to local disk atomically with a sidecar manifest.
Args: filename: The image filename in ComfyUI outputs subfolder: Optional subfolder in ComfyUI outputs output_dir: Optional override for output directory (default: COMFY_OUTPUT_DIR env var) prompt_id: Optional prompt_id to enrich the manifest with history metadata
Inputs: filename (required), prompt_id, subfolder, output_dir. Returns: result
comfy_send_to_tdAIdempotent
Download image and save for TouchDesigner consumption atomically with sidecar manifest.
Args: filename: The image filename in ComfyUI outputs subfolder: Optional subfolder in ComfyUI outputs prompt_id: Optional prompt_id to enrich the manifest with history metadata
Inputs: filename (required), prompt_id, subfolder. Returns: result
comfy_set_limitsA
Update VRAMGuard safety thresholds.
Args: warn_pct: VRAM percentage to trigger warn status (default 80.0) block_pct: VRAM percentage to trigger critical/block status (default 95.0) max_queue: Maximum queue depth before blocking (default 10) timeout: Job timeout in seconds (default 300)
Returns: JSON with updated threshold values
Inputs: timeout, warn_pct, block_pct, max_queue. Returns: result
comfy_set_widget_valueCRead-onlyIdempotent
Set a widget value on a workflow node.
Args: workflow: The workflow dictionary node_id: ID of the node to modify widget_name: Name of the widget/input to set value: Value to set
Inputs: node_id (required), workflow (required), widget_name (required), value. Returns: result
comfy_snapshot_workflowA
Create a snapshot of the current workflow state.
Args: workflow: The workflow dictionary to snapshot name: Optional name for the snapshot
Returns: JSON with snapshot id, name, timestamp, and node_count
Inputs: workflow (required), name. Returns: result
comfy_stop_serverADestructiveIdempotent
Stop an explicitly selected non-Desktop ComfyUI server via comfy-cli.
Desktop-supervised instances are never handed to comfy stop because
that can target a different comfy-cli workspace. Use Comfy Desktop itself
for a full stop, or comfy_restart for Manager V2 restart.
Args:
workspace: Optional --workspace path passed to comfy-cli (selects
which ComfyUI install to stop when multiple are present).
expected_instance_id: Optional Desktop instance selector from
comfy_instance_doctor.
expected_pid: Optional listener PID selector.
confirm: Explicit confirmation; otherwise MCP elicitation is used.
Returns: JSON with one of three shapes: - {status: "stopped", comfy_cli_returncode: 0, stdout, stderr} on successful shutdown. - {status: "failed", comfy_cli_returncode: N, stdout, stderr} when the binary is present but the call exits non-zero (most commonly: no server was running to stop). - {error: "...install hints..."} when comfy-cli is not on PATH.
Inputs: confirm, workspace, expected_pid, expected_instance_id. Returns: result
comfy_subscribeB
Register interest in an event type.
Args: event_type: The event type to subscribe to (e.g., 'progress', 'error', 'complete')
Returns: JSON confirming subscription
Inputs: event_type (required). Returns: result
comfy_suggest_timeoutARead-onlyIdempotent
Recommend an HTTP timeout for a workflow based on its output nodes.
Default ComfyPilot timeout is 300 s. Video / audio / 3D / training workflows routinely exceed that. This tool walks the workflow, finds every output-producing node, and returns the largest matching timeout plus the node that drove the decision.
Args: workflow: API-format workflow dict.
Inputs: workflow (required). Returns: result
comfy_sweepA
Enqueue N copies of workflow, each with a different value for one widget.
Useful for seed sweeps, CFG sweeps, step sweeps, denoise sweeps. Every queued prompt is also registered with the job tracker so the returned prompt_ids can be fed into comfy_watch_progress.
Args: workflow: Base API-format workflow. node_id: Node id whose input to vary (e.g. "5" for KSampler). param: Input name to vary (e.g. "seed", "cfg", "steps"). values: List of values to substitute. Each produces one queued prompt.
Inputs: param (required), values (required), node_id (required), workflow (required). Returns: result
comfy_sweep_gridA
N-dimensional parameter sweep over a Cartesian product of axes.
Where comfy_sweep varies one widget across a list, this enqueues every combination across multiple axes. E.g. seed x cfg x steps with 3 values on each axis produces 27 queued prompts.
Args: workflow: Base API-format workflow. axes: Mapping of 'node_id.param' -> list of values. At least 1 axis; order is preserved for the returned grid_shape. max_combinations: Hard cap on total queued prompts. Reject the call when the Cartesian product would exceed this. Default 64.
Returns: JSON with prompt_ids list (length = product of axis sizes), the grid_shape (e.g. [3, 3, 3] for 3x3x3), and a per-prompt assignment map so the caller can label each output.
Inputs: axes (required), workflow (required), max_combinations. Returns: result
comfy_unsubscribeA
Remove subscription to an event type.
Args: event_type: The event type to unsubscribe from
Returns: JSON confirming removal
Inputs: event_type (required). Returns: result
comfy_upload_imageA
Upload an image to ComfyUI.
Args: image_data: Base64-encoded image data filename: Destination filename subfolder: Optional subfolder within the input directory overwrite: Whether to overwrite an existing file with the same name
Inputs: filename (required), image_data (required), overwrite, subfolder. Returns: result
comfy_validate_before_queueARead-onlyIdempotent
Pre-flight safety check before queueing a prompt.
Checks VRAM headroom and current queue depth.
Returns: JSON with safe_to_queue flag, VRAM status, queue counts, and any issues
Inputs: no named parameters. Returns: result
comfy_validate_workflowARead-onlyIdempotent
Validate a workflow with a 6-pass check. Returns structured ValidationReport.
Passes: schema -> catalog -> graph -> anti_cycle -> environment -> execution_risk.
A pre-pass detects ComfyUI editor-format (top-level nodes/links arrays)
and short-circuits with a specific re-export instruction.
Inputs: workflow (required). Returns: valid, errors, passes, warnings, +1 more
comfy_visualize_workflowARead-onlyIdempotent
Render an API-format workflow as a Mermaid flowchart.
The returned string is valid Mermaid source (flowchart TD). Paste into any Mermaid renderer (GitHub, mermaid.ink, mermaid-cli).
Args: workflow: API-format {node_id: {class_type, inputs}} dict. title: Optional title string inserted as a diagram comment.
Inputs: workflow (required), title. Returns: result
comfy_watch_progressARead-onlyIdempotent
Poll EventManager for a prompt's execution progress. Returns structured WatchProgressFrame.
Args: prompt_id: The prompt ID to watch
Inputs: prompt_id (required). Returns: status, progress, elapsed_s, prompt_id, +2 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 96 tools
The tool set has several near-overlapping clusters: comfy_get_status and comfy_describe_dynamics both return queue/event/execution snapshots; list_output_images, list_artifacts, and download_batch all cover output metadata listing; list_extensions and list_installed_nodes are redundant. With 96 tools, an agent will frequently struggle to pick the precise tool for a task despite good individual descriptions.
Almost all tools share the comfy_ prefix and snake_case convention, and the majority follow a clear verb_noun pattern such as list_models, get_queue, and upload_image. However, there are notable deviations like comfy_instance_doctor, comfy_interrupt, comfy_sweep, and get_model_info, whose name misleadingly suggests model file metadata rather than node schema.
96 tools is far beyond a manageable MCP surface and reflects extreme scope creep rather than disciplined coverage. Many tools handle narrow sub-tasks that could be merged or moved into separate focused servers, and the count alone will overwhelm an agent's tool-selection process.
The server covers nearly every major ComfyUI lifecycle area: instance discovery, queue/job management, workflow build/validate/queue, model and node inspection, image and artifact handling, snapshots, techniques, blueprints, and safety controls. Minor gaps remain, such as no delete/update operations for techniques or blueprints and some redundant history/job APIs, but no critical dead-end prevents the core workflow.
Maintenance
Related MCP Connectors
Open-source Zapier/n8n alternative as an MCP server: agents build, run and debug your workflows.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA lightweight MCP server that bridges AI agents with a local ComfyUI instance to generate and iteratively refine images, audio, and video through conversational tool calls.30 npmMIT
- FlicenseNot gradedqualityDmaintenanceMCP server that connects local ComfyUI to AI agents, enabling natural language control of ComfyUI for creating workflows, generating images, and managing the queue.1-
- AlicenseAqualityBmaintenanceThe MCP server that drafts ComfyUI workflows a human can actually read. It lets coding agents build, repair, port, validate, and run ComfyUI workflows against your own ComfyUI instance, delivering clean, organized, fully-labeled workflows.2966 PyPI2MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables AI agents to control a local ComfyUI instance for image generation, allowing workflow understanding, parameter modification, execution, and model discovery.16 npm3Apache 2.0