| comfyui_list_modelsA | List available models in a folder (checkpoints, loras, vae, etc.). Args:
folder: Model folder type (checkpoints, loras, vae, etc.)
limit: Maximum number of results to return (default: 25, max: 100)
offset: Starting index for pagination (default: 0)
|
| comfyui_list_nodesA | List all available ComfyUI node types. Args:
limit: Maximum number of results to return (default: 25, max: 100)
offset: Starting index for pagination (default: 0)
|
| comfyui_get_node_infoA | Get the input/output schema and metadata for a single ComfyUI node type. Returns a dict with keys: input, input_order, is_input_list, output,
output_is_list, output_name, name, display_name, description, python_module,
category, output_node, search_aliases, plus optional flags like deprecated,
experimental, and api_node when set on the node.
|
| comfyui_list_workflowsA | List workflow templates registered on the ComfyUI server (the
/workflow_templates endpoint, populated by installed front-end packages). This is distinct from ``comfyui_create_workflow``'s built-in template names
(txt2img, img2img, etc.) which are hard-coded in the MCP for graph generation.
Returns a paginated envelope: ``{items, total, offset, limit, has_more}``.
Each item is ``{"package": str, "templates": [...]}`` from the server.
|
| comfyui_list_extensionsA | List installed ComfyUI extensions (front-end / back-end JavaScript modules
registered with the ComfyUI server). Returns a paginated envelope: ``{items, total, offset, limit, has_more}``.
Each item is the extension's URL/path string.
|
| comfyui_get_server_featuresA | Get the feature flags advertised by the ComfyUI server. Returns the raw ``/features`` response — typically a dict of
{feature_name: bool}. Useful for capability-based branching, e.g.
checking ``supports_preview_metadata`` before requesting preview-format
images via ``comfyui_get_image``.
|
| comfyui_list_model_foldersA | List the model-folder types ComfyUI recognizes (checkpoints, loras, vae,
controlnet, etc.). Pass any returned name as the folder argument to
comfyui_list_models or comfyui_get_model_metadata. Returns a paginated envelope: ``{items, total, offset, limit, has_more}``.
|
| comfyui_get_model_metadataB | Get metadata for a model file. Args:
folder: Model folder type (checkpoints, loras, vae, etc.)
filename: Name of the model file
|
| comfyui_audit_dangerous_nodesA | Audit all installed nodes to identify potentially dangerous ones. Scans for nodes that could execute arbitrary code, run shell commands,
or access the file system. Useful for building a dangerous node blacklist.
Returns:
Dictionary with dangerous and suspicious node counts and lists
|
| comfyui_get_system_infoA | Return sanitized ComfyUI system information. Returns a whitelist-filtered subset of system stats useful for making
generation decisions: GPU VRAM, queue depth, and ComfyUI version.
Sensitive fields (hostname, OS, CPU details, file paths, Python version,
network interfaces) are deliberately excluded.
Returns:
Dictionary with keys: comfyui_version, devices (list of GPU info),
queue (running/pending counts).
|
| comfyui_get_model_presetsA | Get recommended generation presets for a model family. The presets are static data baked into this MCP — they reflect
community best-practice defaults, not anything the connected ComfyUI
server reports. At least one of ``model_name`` or ``model_family``
must be supplied; if both are given, ``model_family`` takes
precedence and ``model_name`` is ignored.
Args:
model_name (required if ``model_family`` is omitted): Model
filename to auto-detect the family from (e.g.
``sd_xl_base_1.0.safetensors`` → ``sdxl``). Used as a
fallback when ``model_family`` is empty.
model_family (required if ``model_name`` is omitted): Explicit
family identifier. Valid values: ``sd15``, ``sdxl``,
``flux``, ``sd3``, ``cascade`` (aliases like ``sd1.5``,
``stable-diffusion-xl``, ``flux.1``, ``sd3.5``,
``stable-cascade`` are also accepted).
Returns:
Dict ``{"family": "<id>", "recommended": {<settings>}}`` where
``recommended`` always contains the keys ``sampler`` (str),
``scheduler`` (str), ``steps`` (int), ``cfg`` (float),
``resolution`` (str like ``"1024x1024"``), ``clip_skip`` (int),
and ``notes`` (str). Callers that only need the settings can
read ``result["recommended"]`` directly.
|
| comfyui_get_prompting_guideA | Get the prompting guide for a model family. The guide is static data baked into this MCP — it gives stylistic
and structural advice tuned to each family (prompt structure,
weighting syntax conventions, recommended quality tags, negative
prompt tips). It does not reflect the connected ComfyUI server's
installed models or state.
Args:
model_family (required): Family identifier. Valid values:
``sd15``, ``sdxl``, ``flux``, ``sd3``, ``cascade`` (aliases
like ``sd1.5``, ``stable-diffusion-xl``, ``flux.1``,
``sd3.5``, ``stable-cascade`` are also accepted).
Returns:
Dict ``{"family": "<id>", "guide": {<advice>}}`` where ``guide``
always contains the keys ``prompt_structure`` (str),
``weight_syntax`` (str), ``quality_tags`` (list[str]), and
``negative_prompt_tips`` (str). Callers that only need the
advice can read ``result["guide"]`` directly.
|
| comfyui_get_historyA | Browse ComfyUI execution history (read-only). Uses server-side `/history?offset=N&max_items=M` so callers can page
arbitrarily far back. The tool requests one extra entry per page so it
can set ``has_more`` without an additional round-trip.
Args:
limit: Maximum number of results to return (default: 25, max: 100)
offset: Zero-based starting index (default: 0)
Returns:
Envelope with keys ``items``, ``count`` (items in this page),
``offset``, ``limit``, ``has_more``, and ``total``.
``total`` is set only when we can prove the true count:
- ``offset + count`` on the last page when ``count > 0``
(the upstream returned at most ``limit`` entries, so we've seen
everything from ``offset`` onward).
- ``0`` when ``offset == 0`` and the upstream returned nothing
(history is genuinely empty).
- ``None`` otherwise (``has_more`` is True, OR we paged past the
end and got back an empty result — in the latter case the true
count is somewhere in ``[0, offset]`` and we can't tell which).
``has_more`` is the canonical end-of-history signal.
|
| comfyui_get_queueA | Get the current ComfyUI execution queue state. |
| comfyui_get_jobA | Look up a single job by prompt_id across queue + history. Returns a flat unified job object with top-level keys: prompt_id, status
(pending/in_progress/completed/failed/cancelled), timing fields (created_at,
started_at, completed_at, execution_duration), outputs (when completed),
and error (when failed). Use this to check on a job that may be queued,
running, or already finished.
Note: this replaces the previous /history/{prompt_id} envelope shape
(`{prompt_id: {...}}`); callers should index fields directly on the
returned object.
|
| comfyui_list_jobsA | List jobs across queue and history with filtering, sorting, and pagination. Returns {"jobs": [...], "pagination": {"offset", "limit", "total", "has_more"}}.
Each job includes prompt_id, status (pending/in_progress/completed/failed/cancelled),
timing, and outputs (when completed).
|
| comfyui_cancel_jobA | Cancel a running or queued job by its prompt_id. |
| comfyui_interruptA | Interrupt the currently executing workflow. Without prompt_id: global interrupt — stops whatever is running now.
With prompt_id: targeted — only interrupts if that prompt is the
running one. ComfyUI silently no-ops if prompt_id is queued but
not yet running.
|
| comfyui_get_queue_statusA | Get detailed queue status including currently running and pending prompts. |
| comfyui_clear_queueA | Clear items from the execution queue. Args:
clear_running: Stop the currently running workflow
clear_pending: Remove pending workflows from the queue
|
| comfyui_get_progressA | Get the current execution progress for a workflow via HTTP. Returns status (queued/running/completed/error/unknown), queue position,
and output files when available. Step progress and current node are only
available when using wait=True on run_workflow/generate_image (WebSocket).
Args:
prompt_id: The prompt_id returned by run_workflow or generate_image.
|
| comfyui_upload_imageA | Upload an image to ComfyUI. Defaults to ComfyUI's input directory (the destination workflows read from).
Set destination='output' or 'temp' only if you have a specific reason. |
| comfyui_get_imageA | Download a generated image from ComfyUI or return a direct view URL. Returns:
Base64-encoded image data with content type prefix, or a direct image URL.
When response_format='data_uri' and preview_format is set, ComfyUI re-encodes
the image server-side as a smaller webp or jpeg thumbnail.
|
| comfyui_list_outputsA | List output files from ComfyUI's execution history. Args:
limit: Maximum number of results to return (default: 25, max: 100)
offset: Starting index for pagination (default: 0)
Returns:
JSON envelope with paginated list of objects with 'filename' and
'subfolder' keys. Pass these values to comfyui_get_image to retrieve files.
|
| comfyui_upload_maskA | Upload a mask image to ComfyUI. The mask's alpha channel is merged into the original image's alpha channel
by the ComfyUI server. The original image must already exist in ComfyUI.
Defaults to ComfyUI's input directory. |
| comfyui_get_workflow_from_imageA | Extract embedded workflow and prompt metadata from a ComfyUI-generated PNG. ComfyUI embeds the full workflow JSON and prompt data in PNG text chunks.
This enables extracting the exact settings used to generate an image
for inspection or re-execution.
Args:
filename: Name of the PNG file to extract metadata from
subfolder: Subfolder within ComfyUI's output directory (default: empty)
Returns:
Dict with 'workflow' (parsed JSON or None), 'prompt' (parsed JSON or None),
and 'message' (human-readable status).
|
| comfyui_run_workflowA | Submit an arbitrary ComfyUI workflow for execution. See also: comfyui_run_workflow_stream for a streaming variant that emits
per-node progress events while the workflow executes.
Args:
workflow: JSON string of a ComfyUI workflow (API format).
Each key is a node ID, each value has 'class_type' and 'inputs'.
wait: If True, block until execution completes and return structured result
with status, outputs, and elapsed time. If False (default), return
immediately with just the prompt_id.
|
| comfyui_run_workflow_streamA | Submit a ComfyUI workflow and return websocket stream events plus final status. Uses ComfyUI's websocket stream endpoint internally to capture per-event
execution updates (for example, `progress`, `executing`, `executed`).
Events are filtered by `prompt_id` when that field is present in the
websocket payload.
See also: comfyui_run_workflow for a non-streaming variant. Use this
streaming version when you need real-time per-node progress events
(intended for tooling that surfaces progress to a user); use the
non-streaming variant for fire-and-forget submission or when you only
need the final result.
Args:
workflow: JSON string of a ComfyUI workflow (API format).
|
| comfyui_generate_imageA | Generate an image from a text prompt using a default txt2img workflow. |
| comfyui_summarize_workflowA | Summarize a ComfyUI workflow's structure, data flow, and key parameters. Parses the workflow graph, extracts models, parameters, and execution flow.
Enriches with display names from the ComfyUI server when available. |
| comfyui_transform_imageA | Transform an existing image using a text prompt (img2img). The input image must already be uploaded to ComfyUI via comfyui_upload_image.
|
| comfyui_inpaint_imageA | Inpaint regions of an image using a mask and text prompt. Both the input image and mask must already be uploaded via
comfyui_upload_image/comfyui_upload_mask.
White regions in the mask indicate areas to regenerate.
|
| comfyui_upscale_imageA | Upscale an image using a model-based upscaler. The input image must already be uploaded to ComfyUI via comfyui_upload_image.
The scale factor is determined by the upscale model (e.g. RealESRGAN_x4plus = 4x).
|
| comfyui_create_workflowA | Create a ComfyUI workflow from a template with optional parameter overrides. Available templates: ``txt2img``, ``img2img``, ``upscale``, ``inpaint``,
``txt2vid_animatediff``, ``txt2vid_wan``, ``controlnet_canny``,
``controlnet_depth``, ``controlnet_openpose``, ``ip_adapter``,
``lora_stack``, ``face_restore``, ``flux_txt2img``, ``sdxl_txt2img``.
Args:
template (required): Template name from the list above.
params (optional): JSON string of parameter overrides. Defaults to
an empty string, meaning "use template defaults". Pass either
``""`` or ``"{}"`` for no overrides. Common keys:
``prompt``, ``negative_prompt``, ``width``, ``height``,
``steps``, ``cfg``, ``model``, ``denoise``, ``controlnet_model``,
``control_strength``, ``lora_name``, ``lora_strength``.
Example:
``comfyui_create_workflow(template="txt2img",
params='{"prompt": "a sunset", "width": 768, "steps": 30}')``
|
| comfyui_modify_workflowA | Apply batch operations to a ComfyUI workflow. Operations execute sequentially in array order. If any operation fails,
the call raises ``ValueError`` and the input workflow is left
unmodified (atomic — operations are applied to a deep copy).
Args:
workflow (required): JSON string of the workflow to modify.
operations (required): JSON string of an array of operation objects.
Operation reference:
- ``add_node`` — append a new node. Fields:
``{"op": "add_node", "class_type": "<NodeType>",
"node_id": "<id>" (optional, auto-assigned if omitted),
"inputs": {...} (optional default inputs)}``
- ``remove_node`` — drop a node. Fields:
``{"op": "remove_node", "node_id": "<id>"}``
- ``set_input`` — set or replace a single input value. Fields:
``{"op": "set_input", "node_id": "<id>",
"input_name": "<key>", "value": <any>}``
- ``connect`` — wire one node's output into another's input. Fields:
``{"op": "connect", "from_node": "<id>", "from_output": <int>,
"to_node": "<id>", "to_input": "<key>"}``
- ``disconnect`` — clear an existing input connection. Fields:
``{"op": "disconnect", "node_id": "<id>", "input_name": "<key>"}``
Example:
``operations='[{"op": "set_input", "node_id": "3",
"input_name": "steps", "value": 50},
{"op": "add_node", "class_type": "LoraLoader"}]'``
|
| comfyui_analyze_workflowA | Analyze a ComfyUI workflow and return its structured shape. Unlike ``comfyui_summarize_workflow`` (which formats a human-readable
text or Mermaid summary), this tool returns the raw analysis as a dict
so callers can read individual fields directly without parsing prose.
Args:
workflow (required): JSON string of the workflow to analyze. The
workflow JSON is a dict keyed by node ID; each value has
``class_type`` and ``inputs``.
Returns:
Dict with keys:
- ``node_count`` (int): number of nodes in the workflow.
- ``class_types`` (list[str]): every ``class_type`` in topological
order.
- ``flow`` (list[dict]): per-node info — ``node_id``, ``class_type``,
``display_name``, ``inputs`` — in topological order.
- ``models`` (list[dict]): single-field loader values, e.g.
``[{"name": "v1-5-pruned.safetensors", "type": "checkpoints"}]``.
- ``parameters`` (dict): flat key/value of common sampler/latent
parameters extracted from the graph (``steps``, ``cfg``, ``width``,
``height``, etc.).
- ``pipeline`` (str): coarse type — one of ``txt2img``,
``img2img``, ``upscale``, ``img2img -> upscale``,
``txt2img -> upscale``, or ``unknown``.
- ``prompt_nodes`` (list[str]): ids of ``CLIPTextEncode`` nodes
that are NOT wired into any sampler's ``negative`` input
(the analyzer treats every non-negative CLIPTextEncode as
a positive prompt — it does not separately verify that it
is wired into a sampler's positive input).
- ``negative_nodes`` (list[str]): ids of ``CLIPTextEncode`` nodes
wired into a sampler's ``negative`` input.
Display-name enrichment is best-effort via ComfyUI's ``/object_info``
endpoint; if the server is unreachable, ``display_name`` falls back to
the bare ``class_type``.
|
| comfyui_validate_workflowA | Validate a ComfyUI workflow for structural correctness and security. Checks: node structure, connection references, installed node types,
available models, dangerous nodes, and suspicious inputs.
Args:
workflow (required): JSON string of the workflow to validate.
Returns:
Dict with keys:
- ``valid`` (bool): True only if there are zero entries in ``errors``.
- ``errors`` (list[str]): blocking issues — invalid structure,
connections that reference nonexistent nodes, ``class_type``
not installed on the connected server, missing required
inputs, security blocks, etc. Each entry is a human-readable
string identifying the offending node id and what's wrong.
- ``warnings`` (list[str]): non-blocking concerns — missing model
files, dangerous node names, suspicious input patterns
(e.g. ``__import__``), or a server-unreachable note when the
installed-class_type check has to be skipped.
- ``node_count`` (int): number of nodes in the workflow.
- ``pipeline`` (str): coarse type — one of ``txt2img``,
``img2img``, ``upscale``, ``img2img -> upscale``,
``txt2img -> upscale``, or ``unknown``. (For the full
structural breakdown, use ``comfyui_analyze_workflow``.)
|
| comfyui_search_modelsA | Search for models on HuggingFace or CivitAI. Returns:
JSON with search results including name, download URL, size, and stats.
Use comfyui_download_model with the URL to install a model.
|
| comfyui_download_modelA | Download a model from HuggingFace or CivitAI via ComfyUI-Model-Manager. Returns:
JSON with download task status. Use comfyui_get_download_tasks to check progress.
|
| comfyui_get_download_tasksA | Check the status of active model downloads. Returns:
JSON with list of download tasks including progress, speed, and status.
|
| comfyui_cancel_downloadA | Cancel and remove a model download task. Args:
task_id: ID of the download task to cancel
|
| comfyui_search_custom_nodesA | Search installed custom node packs by name, description, or author. Args:
query: Search term to match against installed node pack metadata.
limit: Maximum number of results to return (default: 10, max: 25)
offset: Starting index for pagination (default: 0)
Returns:
JSON with matching node packs including name, description, author,
install status, version, and ID.
|
| comfyui_install_custom_nodeA | Install a custom node pack from the ComfyUI Manager registry. Args:
node_id: Node pack ID from the registry (use search_custom_nodes to find IDs).
version: Specific version to install (empty string = latest).
restart: If True, restart ComfyUI after install and run a security audit
on all installed nodes. If False, manual restart is needed.
Returns:
Status message. If restart=True, includes security audit results.
|
| comfyui_uninstall_custom_nodeA | Uninstall a custom node pack. Args:
node_id: Node pack ID to uninstall.
restart: If True, restart ComfyUI after uninstall.
Returns:
Status message.
|
| comfyui_update_custom_nodeA | Update a custom node pack to the latest version. Args:
node_id: Node pack ID to update.
restart: If True, restart ComfyUI after update and run a security audit
on all installed nodes.
Returns:
Status message. If restart=True, includes security audit results.
|
| comfyui_get_custom_node_statusA | Check the custom node operation queue status. Returns:
JSON with queue status: total tasks, completed, in progress, and
whether the queue is currently processing.
|