Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
COMFYUI_URLNoComfyUI server URLhttp://127.0.0.1:8188
COMFYUI_AUDIT_FILENoPath to audit log file
COMFYUI_TLS_VERIFYNoTLS certificate verificationtrue
COMFYUI_EXTERNAL_URLNoOptional public URL for get_image URL responses
COMFYUI_TIMEOUT_READNoRead timeout in seconds300
COMFYUI_SECURITY_MODENoSecurity mode: 'audit' or 'enforce'audit
COMFYUI_CIVITAI_API_KEYNoCivitAI API key
COMFYUI_TIMEOUT_CONNECTNoConnection timeout in seconds30
COMFYUI_HUGGINGFACE_TOKENNoHuggingFace API token for gated models
COMFYUI_MAX_SEARCH_RESULTSNoMaximum number of search results10
COMFYUI_ALLOWED_DOWNLOAD_DOMAINSNoComma-separated list of allowed domains for model downloads

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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.
    

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hybridindie/comfyui_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server