generate_image
Generate images from text prompts using ComfyUI, with full control over size, steps, CFG scale, and seed for reproducible results.
Instructions
Generate an image from a text prompt using ComfyUI's default txt2img workflow. Returns one or more image URLs served directly by the ComfyUI instance.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Text prompt describing the image to generate | |
| negative_prompt | No | What to avoid in the image | |
| width | No | Image width in pixels | |
| height | No | Image height in pixels | |
| steps | No | Number of diffusion steps | |
| cfg | No | CFG / prompt adherence (1-30) | |
| seed | No | Seed for reproducibility | |
| checkpoint | No | Checkpoint filename (defaults to COMFYUI_DEFAULT_CKPT) |
Implementation Reference
- src/comfyui/client.ts:47-59 (handler)ComfyUIClient.generate() method — the core handler that builds the txt2img workflow and runs it via runWorkflow().
async generate(params: GenerateParams): Promise<GenerateResult> { const workflow = txt2img({ prompt: params.prompt, negativePrompt: params.negativePrompt ?? "", width: params.width ?? 1024, height: params.height ?? 1024, steps: params.steps ?? 25, cfg: params.cfg ?? 7, seed: params.seed ?? Math.floor(Math.random() * 2 ** 32), checkpoint: params.checkpoint ?? DEFAULT_CHECKPOINT, }); return this.runWorkflow(workflow); } - src/comfyui/workflows.ts:30-72 (helper)The txt2img workflow builder — constructs the ComfyUI node graph (KSampler, CheckpointLoader, EmptyLatentImage, CLIPTextEncode, VAEDecode, SaveImage) used by generate_image.
export function txt2img(params: Txt2ImgParams): Workflow { return { "3": { class_type: "KSampler", inputs: { seed: params.seed, steps: params.steps, cfg: params.cfg, sampler_name: "euler", scheduler: "normal", denoise: 1, model: ["4", 0], positive: ["6", 0], negative: ["7", 0], latent_image: ["5", 0], }, }, "4": { class_type: "CheckpointLoaderSimple", inputs: { ckpt_name: params.checkpoint }, }, "5": { class_type: "EmptyLatentImage", inputs: { width: params.width, height: params.height, batch_size: 1 }, }, "6": { class_type: "CLIPTextEncode", inputs: { text: params.prompt, clip: ["4", 1] }, }, "7": { class_type: "CLIPTextEncode", inputs: { text: params.negativePrompt, clip: ["4", 1] }, }, "8": { class_type: "VAEDecode", inputs: { samples: ["3", 0], vae: ["4", 2] }, }, "9": { class_type: "SaveImage", inputs: { filename_prefix: "comfyui-mcp", images: ["8", 0] }, }, }; } - src/comfyui/types.ts:26-40 (schema)Type definitions for GenerateParams (input to client.generate()) and GenerateResult (output with image URLs).
export interface GenerateParams { prompt: string; negativePrompt?: string; width?: number; height?: number; steps?: number; cfg?: number; seed?: number; checkpoint?: string; } export interface GenerateResult { promptId: string; images: string[]; }