generate_image
Create custom images from text prompts using Kling AI. Supports multiple aspect ratios, character reference images, and adjustable parameters for precise creative output.
Instructions
Generate images from text prompts using Kling AI. Create high-quality images with multiple aspect ratios and optional character reference support. Supports models v1, v1.5, and v2 with customizable parameters for creative control.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| aspect_ratio | No | Image aspect ratio (default: 1:1) | |
| model_name | No | Model version to use (default: kling-v2-master) | |
| negative_prompt | No | Text describing what to avoid in the image (optional) | |
| num_images | No | Number of images to generate (default: 1) | |
| prompt | Yes | Text prompt describing the image to generate | |
| ref_image_url | No | Optional reference image URL for character consistency | |
| ref_image_weight | No | Weight of reference image influence (0-1, default: 0.5) |
Implementation Reference
- src/index.ts:626-647 (handler)The MCP tool handler for 'generate_image'. Parses arguments, constructs ImageGenerationRequest, calls klingClient.generateImage(), and returns task_id with instructions.case 'generate_image': { const imageRequest: ImageGenerationRequest = { prompt: args.prompt as string, negative_prompt: args.negative_prompt as string | undefined, model_name: (args.model_name as 'kling-v1' | 'kling-v1.5' | 'kling-v1.6' | 'kling-v2-master' | undefined) || 'kling-v2-master', aspect_ratio: (args.aspect_ratio as '16:9' | '9:16' | '1:1' | '4:3' | '3:4' | '2:3' | '3:2') || '1:1', num_images: (args.num_images as number) || 1, ref_image_url: args.ref_image_url as string | undefined, ref_image_weight: (args.ref_image_weight as number) ?? 0.5, }; const result = await klingClient.generateImage(imageRequest); return { content: [ { type: 'text', text: `Image generation started successfully!\nTask ID: ${result.task_id}\n\nGenerating ${imageRequest.num_images} image(s) with aspect ratio ${imageRequest.aspect_ratio}.\nUse the check_image_status tool with this task ID to check the progress.`, }, ], }; }
- src/index.ts:330-369 (schema)Input schema definition for the 'generate_image' tool, defining parameters like prompt, model_name, aspect_ratio, etc.inputSchema: { type: 'object', properties: { prompt: { type: 'string', description: 'Text prompt describing the image to generate', }, negative_prompt: { type: 'string', description: 'Text describing what to avoid in the image (optional)', }, model_name: { type: 'string', enum: ['kling-v1', 'kling-v1.5', 'kling-v1.6', 'kling-v2-master'], description: 'Model version to use (default: kling-v2-master)', }, aspect_ratio: { type: 'string', enum: ['16:9', '9:16', '1:1', '4:3', '3:4', '2:3', '3:2'], description: 'Image aspect ratio (default: 1:1)', }, num_images: { type: 'number', description: 'Number of images to generate (default: 1)', minimum: 1, maximum: 4, }, ref_image_url: { type: 'string', description: 'Optional reference image URL for character consistency', }, ref_image_weight: { type: 'number', description: 'Weight of reference image influence (0-1, default: 0.5)', minimum: 0, maximum: 1, }, }, required: ['prompt'], },
- src/index.ts:328-370 (registration)Tool registration in the TOOLS array used by ListToolsRequestHandler.name: 'generate_image', description: 'Generate images from text prompts using Kling AI. Create high-quality images with multiple aspect ratios and optional character reference support. Supports models v1, v1.5, and v2 with customizable parameters for creative control.', inputSchema: { type: 'object', properties: { prompt: { type: 'string', description: 'Text prompt describing the image to generate', }, negative_prompt: { type: 'string', description: 'Text describing what to avoid in the image (optional)', }, model_name: { type: 'string', enum: ['kling-v1', 'kling-v1.5', 'kling-v1.6', 'kling-v2-master'], description: 'Model version to use (default: kling-v2-master)', }, aspect_ratio: { type: 'string', enum: ['16:9', '9:16', '1:1', '4:3', '3:4', '2:3', '3:2'], description: 'Image aspect ratio (default: 1:1)', }, num_images: { type: 'number', description: 'Number of images to generate (default: 1)', minimum: 1, maximum: 4, }, ref_image_url: { type: 'string', description: 'Optional reference image URL for character consistency', }, ref_image_weight: { type: 'number', description: 'Weight of reference image influence (0-1, default: 0.5)', minimum: 0, maximum: 1, }, }, required: ['prompt'], }, },
- src/kling-client.ts:376-403 (helper)Core implementation of image generation: constructs API request body and calls Kling AI /v1/images/generation endpoint.async generateImage(request: ImageGenerationRequest): Promise<{ task_id: string }> { const path = '/v1/images/generation'; // Process reference image URL if provided const ref_image_url = await this.processImageUrl(request.ref_image_url); const body: any = { prompt: request.prompt, negative_prompt: request.negative_prompt || '', aspect_ratio: request.aspect_ratio || '1:1', num_images: request.num_images || 1, ...(ref_image_url && { ref_image_url }), ...(request.ref_image_weight && { ref_image_weight: request.ref_image_weight }), }; // Always add model_name body.model_name = request.model_name || 'kling-v2-master'; try { const response = await this.axiosInstance.post(path, body); return response.data.data; } catch (error) { if (axios.isAxiosError(error)) { throw new Error(`Kling API error: ${error.response?.data?.message || error.message}`); } throw error; } }
- src/kling-client.ts:80-88 (schema)TypeScript interface defining the ImageGenerationRequest used by the handler and helper.export interface ImageGenerationRequest { prompt: string; negative_prompt?: string; model_name?: 'kling-v1' | 'kling-v1.5' | 'kling-v1.6' | 'kling-v2-master'; aspect_ratio?: '16:9' | '9:16' | '1:1' | '4:3' | '3:4' | '2:3' | '3:2'; num_images?: number; ref_image_url?: string; ref_image_weight?: number; }