Skip to main content
Glama

ComfyMCP

Give Claude the ability to generate images with ComfyUI. Just ask for what you want in natural language.

You: "Generate an image of a robot painting a sunset"

Claude: I'll create that image for you.
        [builds 7-node workflow, executes it]
        Done! Generated robot_painting_00001.png in 2.3 seconds.

What You Can Ask

Once installed, Claude can handle requests like:

Image Generation

  • "Generate an image of a cat astronaut floating in space"

  • "Create a 1024x1024 fantasy landscape using SDXL"

  • "Make a portrait with negative prompt 'blurry, low quality'"

Model & System Info

  • "What checkpoint models do I have?"

  • "Show me the available samplers"

  • "What's my GPU memory usage?"

Workflow Control

  • "Use 30 steps instead of 20 for better quality"

  • "Generate 4 variations with different seeds"

  • "What's the status of my last generation?"

Claude handles all the complexity—discovering nodes, building connections, validating the workflow, and monitoring execution.

Related MCP server: ComfyUI MCP Server

How It Works

When you ask Claude to generate an image, it builds a complete ComfyUI workflow:

[1] CheckpointLoaderSimple ─────────────────────────────┐
     ├── MODEL ──────────────────────────────────────────┤
     ├── CLIP ───┬──→ [3] CLIPTextEncode (positive) ────┤
     │           └──→ [4] CLIPTextEncode (negative) ────┤
     └── VAE ────────────────────────────────────────────┤
                                                         ▼
[2] EmptyLatentImage ──────────────────────────→ [5] KSampler
                                                         │
                                                         ▼
                                                 [6] VAEDecode
                                                         │
                                                         ▼
                                                 [7] SaveImage

This happens automatically. Claude:

  1. Discovers available nodes and their inputs/outputs

  2. Builds the workflow with proper connections

  3. Validates everything before execution

  4. Queues the job and monitors completion

  5. Reports the output filename

Installation

Prerequisites

  • ComfyUI running (default: localhost:8188)

  • uv package manager

# Install uv if needed
curl -LsSf https://astral.sh/uv/install.sh | sh

Claude Code (CLI)

claude mcp add comfyui \
  --transport stdio \
  --env COMFYUI_HOST=127.0.0.1 \
  --env COMFYUI_PORT=8188 \
  -- uvx --from git+https://github.com/hernantech/comfymcp comfymcp

Claude Desktop

Add to your config file:

  • Linux: ~/.config/claude/claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "comfyui": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/hernantech/comfymcp", "comfymcp"],
      "env": {
        "COMFYUI_HOST": "127.0.0.1",
        "COMFYUI_PORT": "8188"
      }
    }
  }
}

Verify Installation

Ask Claude: "Check if ComfyUI is connected"

You should see confirmation that the server is online with GPU info.

Configuration

Environment Variable

Description

Default

COMFYUI_HOST

ComfyUI server address

127.0.0.1

COMFYUI_PORT

ComfyUI server port

8188

COMFYUI_API_KEY

API key (if required)

None

For remote ComfyUI servers, update the host:

claude mcp add comfyui \
  --env COMFYUI_HOST=192.168.1.100 \
  ...

Reference

Available MCP Tools

Tool

Description

queue_prompt

Submit a workflow for execution

get_queue_status

Check running/pending jobs

get_job_status

Get status of a specific job

get_history

View execution history

interrupt_execution

Stop current generation

clear_queue

Clear pending jobs

Tool

Description

create_workflow

Start a new workflow session

add_node

Add a node with inputs

build_workflow

Finalize and validate

validate_workflow

Check for errors

list_nodes

Search available nodes

get_node_info

Get node specifications

refresh_nodes

Reload node definitions

Tool

Description

list_models

List checkpoints, LoRAs, VAEs, etc.

list_embeddings

List textual inversions

list_output_images

List generated images

get_image

Retrieve an image

upload_image

Upload for img2img

Tool

Description

check_connection

Verify ComfyUI is reachable

get_system_stats

GPU memory, system info

free_memory

Unload models, clear cache

get_extensions

List installed extensions

MCP Resources

URI

Description

comfyui://nodes

All available nodes

comfyui://nodes/categories

Node categories

comfyui://nodes/{class_type}

Specific node definition

comfyui://outputs

Recent outputs

comfyui://images/{filename}

Retrieve image


Python API

For programmatic use outside of MCP:

from comfymcp.workflow import WorkflowBuilder

builder = WorkflowBuilder()

# Nodes return refs with named outputs
checkpoint = builder.add_node("CheckpointLoaderSimple",
    ckpt_name="sd_turbo.safetensors")

latent = builder.add_node("EmptyLatentImage",
    width=512, height=512, batch_size=1)

positive = builder.add_node("CLIPTextEncode",
    clip=checkpoint.CLIP,  # Named output connection
    text="a beautiful sunset")

negative = builder.add_node("CLIPTextEncode",
    clip=checkpoint.CLIP,
    text="ugly, blurry")

sampler = builder.add_node("KSampler",
    model=checkpoint.MODEL,
    positive=positive.CONDITIONING,
    negative=negative.CONDITIONING,
    latent_image=latent.LATENT,
    seed=42, steps=4, cfg=1.0,
    sampler_name="euler", scheduler="normal", denoise=1.0)

decode = builder.add_node("VAEDecode",
    samples=sampler.LATENT,
    vae=checkpoint.VAE)

builder.add_node("SaveImage",
    images=decode.IMAGE,
    filename_prefix="output")

workflow = builder.build()

Templates

from comfymcp.templates import Text2ImgTemplate, Img2ImgTemplate

# Text to image
txt2img = Text2ImgTemplate(
    checkpoint="sd_turbo.safetensors",
    positive_prompt="a majestic mountain",
    negative_prompt="ugly, blurry",
    width=512, height=512,
    steps=4, cfg=1.0
)
workflow = txt2img.build()

# Image to image
img2img = Img2ImgTemplate(
    checkpoint="sd_turbo.safetensors",
    image="input.png",
    positive_prompt="enhance details",
    denoise=0.6
)
workflow = img2img.build()

Direct Client Usage

from comfymcp.client import ComfyUIClient

async with ComfyUIClient(host="127.0.0.1", port=8188) as client:
    # Queue workflow
    result = await client.queue_prompt(workflow)

    # Check status
    history = await client.get_history(prompt_id=result.prompt_id)

    # List models
    checkpoints = await client.get_models("checkpoints")

Requirements

  • Python 3.10+

  • ComfyUI server running

  • MCP-compatible client (Claude Code, Claude Desktop, Cursor, etc.)

License

MIT License - see LICENSE for details.

Related MCP Connectors

Related MCP Servers