Comfymcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Comfymcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.Once installed, Claude can handle requests like:
Image Generation
Model & System Info
Workflow Control
Claude handles all the complexity—discovering nodes, building connections, validating the workflow, and monitoring execution.
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] SaveImageThis happens automatically. Claude:
# Install uv if needed
curl -LsSf https://astral.sh/uv/install.sh | shclaude mcp add comfyui \
--transport stdio \
--env COMFYUI_HOST=127.0.0.1 \
--env COMFYUI_PORT=8188 \
-- uvx --from git+https://github.com/hernantech/comfymcp comfymcpAdd to your config file:
~/.config/claude/claude_desktop_config.json~/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"
}
}
}
}Ask Claude: "Check if ComfyUI is connected"
You should see confirmation that the server is online with GPU info.
| 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 \
...<details> <summary><strong>Workflow Execution</strong></summary>
| 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 |
</details>
<details> <summary><strong>Workflow Building</strong></summary>
| 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 |
</details>
<details> <summary><strong>Assets & Models</strong></summary>
| 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 |
</details>
<details> <summary><strong>System</strong></summary>
| 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 |
</details>
| 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 |
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()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()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")MIT License - see LICENSE for details.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.