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/tools/generate.ts:80-101 (registration)Registration of the 'generate_image' MCP tool via server.tool(), with its handler that calls client.generate() and formats the result.
server.tool( "generate_image", "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.", generateImageSchema, async (args) => { const result = await client.generate({ prompt: args.prompt, negativePrompt: args.negative_prompt, width: args.width, height: args.height, steps: args.steps, cfg: args.cfg, seed: args.seed, checkpoint: args.checkpoint, }); return textResult( `Generated ${result.images.length} image(s) (prompt_id: ${result.promptId}):`, result.images, ); }, ); - 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/tools/generate.ts:6-44 (schema)Zod schema defining the input parameters for generate_image tool: prompt, negative_prompt, width, height, steps, cfg, seed, checkpoint.
const generateImageSchema = { prompt: z .string() .min(1) .describe("Text prompt describing the image to generate"), negative_prompt: z.string().optional().describe("What to avoid in the image"), width: z .number() .int() .min(64) .max(2048) .default(1024) .describe("Image width in pixels"), height: z .number() .int() .min(64) .max(2048) .default(1024) .describe("Image height in pixels"), steps: z .number() .int() .min(1) .max(150) .default(25) .describe("Number of diffusion steps"), cfg: z .number() .min(1) .max(30) .default(7) .describe("CFG / prompt adherence (1-30)"), seed: z.number().int().optional().describe("Seed for reproducibility"), checkpoint: z .string() .optional() .describe("Checkpoint filename (defaults to COMFYUI_DEFAULT_CKPT)"), }; - 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[]; }