generate_icon
Generate app icons, favicons, and UI elements in multiple sizes and formats from a text description.
Instructions
Generate app icons, favicons, and UI elements in multiple sizes and formats
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Description of the icon or UI element to generate | |
| sizes | No | Array of icon sizes in pixels (16, 32, 64, 128, 256, 512, 1024) | |
| type | No | Type of icon to generate | app-icon |
| style | No | Visual style of the icon | modern |
| format | No | Output format | png |
| background | No | Background type: transparent, white, black, or color name | transparent |
| corners | No | Corner style for app icons | rounded |
| preview | No | Automatically open generated images in default viewer |
Implementation Reference
- mcp-server/src/server.ts:222-279 (registration)Tool 'generate_icon' is registered in ListToolsRequestSchema handler with its name, description, and inputSchema defining parameters like prompt, sizes, type, style, format, background, corners, and preview.
{ name: "generate_icon", description: "Generate app icons, favicons, and UI elements in multiple sizes and formats", inputSchema: { type: "object", properties: { prompt: { type: "string", description: "Description of the icon or UI element to generate", }, sizes: { type: "array", items: { type: "number" }, description: "Array of icon sizes in pixels (16, 32, 64, 128, 256, 512, 1024)", }, type: { type: "string", enum: ["app-icon", "favicon", "ui-element"], description: "Type of icon to generate", default: "app-icon", }, style: { type: "string", enum: ["flat", "skeuomorphic", "minimal", "modern"], description: "Visual style of the icon", default: "modern", }, format: { type: "string", enum: ["png", "jpeg"], description: "Output format", default: "png", }, background: { type: "string", description: "Background type: transparent, white, black, or color name", default: "transparent", }, corners: { type: "string", enum: ["rounded", "sharp"], description: "Corner style for app icons", default: "rounded", }, preview: { type: "boolean", description: "Automatically open generated images in default viewer", default: false, }, }, required: ["prompt"], }, }, - mcp-server/src/server.ts:531-548 (handler)The 'generate_icon' tool handler in CallToolRequestSchema: builds an icon prompt via this.buildIconPrompt(args), creates an ImageGenerationRequest, and calls this.imageGenerator.generateTextToImage().
case "generate_icon": { const prompt = this.buildIconPrompt(args); const imageRequest: ImageGenerationRequest = { prompt, outputCount: Array.isArray(args?.sizes) && args?.sizes.length > 0 ? args.sizes.length : 1, mode: "generate", preview: args?.preview as boolean, noPreview: (args?.noPreview as boolean) || (args?.["no-preview"] as boolean), }; response = await this.imageGenerator.generateTextToImage(imageRequest); break; } - mcp-server/src/server.ts:625-645 (helper)The buildIconPrompt helper method constructs a detailed prompt string from IconPromptArgs (prompt, type, style, background, corners) for icon generation.
private buildIconPrompt(args?: IconPromptArgs): string { const basePrompt = args?.prompt || "app icon"; const type = args?.type || "app-icon"; const style = args?.style || "modern"; const background = args?.background || "transparent"; const corners = args?.corners || "rounded"; let prompt = `${basePrompt}, ${style} style ${type}`; if (type === "app-icon") { prompt += `, ${corners} corners`; } if (background !== "transparent") { prompt += `, ${background} background`; } prompt += ", clean design, high quality, professional"; return prompt; } - mcp-server/src/types.ts:47-53 (schema)IconPromptArgs interface defines the typed input parameters used by buildIconPrompt: prompt, type, style, background, and corners.
export interface IconPromptArgs { prompt?: string; type?: string; style?: string; background?: string; corners?: string; }