Skip to main content
Glama
elhombrejd

BFL MCP Server

by elhombrejd

generate_image

Create custom images via text prompts on the BFL MCP Server using the FLUX.1 Kontext model. Specify aspect ratio, seed, safety tolerance, and output format for tailored results.

Instructions

Generate an image using FLUX.1 Kontext model based on a text prompt

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
aspect_ratioNoAspect ratio of the image (e.g., "1:1", "16:9", "9:16")1:1
output_formatNoOutput image formatjpeg
promptYesText description of the image to generate
safety_toleranceNoSafety tolerance level (0-6)
seedNoSeed for reproducible generation

Implementation Reference

  • MCP tool handler case for 'generate_image': extracts input arguments, calls bflClient.generateImage, and returns the generated image URL in the response.
    case 'generate_image': { const imageUrl = await bflClient.generateImage({ prompt: args.prompt as string, aspect_ratio: args.aspect_ratio as string | undefined, seed: args.seed as number | undefined, safety_tolerance: args.safety_tolerance as number | undefined, output_format: args.output_format as 'jpeg' | 'png' | undefined, }); return { content: [ { type: 'text', text: `Image generated successfully! URL: ${imageUrl}\n\nNote: The URL is valid for 10 minutes.`, }, ], }; }
  • TypeScript interface defining the input parameters for generateImage request.
    export interface GenerateImageRequest { prompt: string; aspect_ratio?: string; seed?: number; safety_tolerance?: number; output_format?: 'jpeg' | 'png'; }
  • src/index.ts:38-72 (registration)
    Tool registration definition including name, description, and input schema for 'generate_image'.
    { name: 'generate_image', description: 'Generate an image using FLUX.1 Kontext model based on a text prompt', inputSchema: { type: 'object', properties: { prompt: { type: 'string', description: 'Text description of the image to generate', }, aspect_ratio: { type: 'string', description: 'Aspect ratio of the image (e.g., "1:1", "16:9", "9:16")', default: '1:1', }, seed: { type: 'number', description: 'Seed for reproducible generation', }, safety_tolerance: { type: 'number', description: 'Safety tolerance level (0-6)', minimum: 0, maximum: 6, }, output_format: { type: 'string', enum: ['jpeg', 'png'], description: 'Output image format', default: 'jpeg', }, }, required: ['prompt'], }, },
  • Core implementation of image generation: submits API request to BFL endpoint and polls for completion using pollForResult.
    async generateImage(request: GenerateImageRequest): Promise<string> { try { // Step 1: Submit generation request const response = await this.makeRequest('/v1/flux-kontext-pro', { prompt: request.prompt, aspect_ratio: request.aspect_ratio || '1:1', seed: request.seed, safety_tolerance: request.safety_tolerance, output_format: request.output_format || 'jpeg', }); if (!response.id) { throw new Error('No request ID received from BFL API'); } // Log the polling URL if provided if (response.polling_url) { console.log(`[BFL] Using polling URL: ${response.polling_url}`); } // Step 2: Poll for result const result = await this.pollForResult(response.id, response.polling_url); if (!result.result?.sample) { throw new Error('No image URL in response'); } return result.result.sample; } catch (error) { throw new Error(`Image generation failed: ${error instanceof Error ? error.message : 'Unknown error'}`); } }

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/elhombrejd/bfl_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server