generate_image_gemini
Generate images from text descriptions using Google's Gemini AI for contextual understanding, editing, composition, and iterative refinement.
Instructions
Generate images using Gemini 2.5 Flash Image (Nano Banana). Best for contextual understanding, image editing, multi-image composition, and iterative refinement. Free tier available.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Description of the image to generate (in English, max 480 tokens) | |
| numberOfImages | No | Number of images to generate (1-4, default: 1) |
Implementation Reference
- index.js:231-287 (handler)The handler function for the 'generate_image_gemini' tool. It uses the Gemini 2.5 Flash Image model to generate images based on the provided prompt, handles multiple images, saves them to 'generated_images' directory, and returns text summary with image data.if (name === "generate_image_gemini") { const { prompt, numberOfImages = 1 } = args; const model = genAI.getGenerativeModel({ model: "gemini-2.5-flash-image", }); const result = await model.generateContent({ contents: [{ role: "user", parts: [{ text: prompt }] }], generationConfig: { responseModalities: ["image"], }, }); const response = await result.response; const images = response.candidates?.[0]?.content?.parts?.filter( (part) => part.inlineData ); if (!images || images.length === 0) { throw new Error("No images were generated"); } // 이미지 저장 const outputDir = join(__dirname, "generated_images"); await mkdir(outputDir, { recursive: true }); const timestamp = new Date().toISOString().replace(/[:.]/g, "-"); const savedPaths = []; for (let i = 0; i < images.length; i++) { const img = images[i]; const ext = img.inlineData.mimeType.split("/")[1] || "png"; const filename = `gemini_${timestamp}_${i + 1}.${ext}`; const filepath = join(outputDir, filename); const buffer = Buffer.from(img.inlineData.data, "base64"); await writeFile(filepath, buffer); savedPaths.push(filepath); } return { content: [ { type: "text", text: `[Gemini 2.5 Flash Image (Nano Banana)]\n\nGenerated ${images.length} image(s) for: "${prompt}"\n\nSaved to:\n${savedPaths.map(p => `- ${p}`).join("\n")}`, }, ...images.map((img) => ({ type: "image", data: img.inlineData.data, mimeType: img.inlineData.mimeType, })), ], }; } if (name === "generate_image_imagen") {
- index.js:95-118 (registration)Registration of the 'generate_image_gemini' tool in the ListTools response, defining its name, description, and input schema.{ name: "generate_image_gemini", description: "Generate images using Gemini 2.5 Flash Image (Nano Banana). Best for contextual understanding, image editing, multi-image composition, and iterative refinement. Free tier available.", inputSchema: { type: "object", properties: { prompt: { type: "string", description: "Description of the image to generate (in English, max 480 tokens)", }, numberOfImages: { type: "number", description: "Number of images to generate (1-4, default: 1)", default: 1, minimum: 1, maximum: 4, }, }, required: ["prompt"], }, },