Skip to main content
Glama

generate_flux_image

Generate images using the Flux model by submitting a text prompt via the Modal MCP Toolbox, designed for Python code execution and image creation in a sandbox environment.

Instructions

Let's you generate an image using the Flux model.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
promptYesThe prompt to generate an image for

Implementation Reference

  • The handler function for the 'generate_flux_image' tool. It ensures the Modal app is deployed, calls the remote inference method on the Model class with the prompt, and converts the resulting image bytes to ImageContent with annotations.
    async def generate_flux_image(prompt: Annotated[str, Field(description="The prompt to generate an image for")], ctx: Context) -> ImageContent: """Let's you generate an image using the Flux model.""" await _ensure_app_deployment_is_up_to_date(ctx) cls = modal.Cls.from_name(app_name, Model.__name__) image_bytes = await cls().inference.remote.aio(prompt) image_content = Image(data=image_bytes, format=IMAGE_FORMAT).to_image_content() image_content.annotations = Annotations(audience=["user", "assistant"], priority=0.5) return image_content
  • Registration of the 'generate_flux_image' tool with the FastMCP server.
    server.add_tool(generate_flux_image)
  • The Modal class 'Model' that loads the FluxPipeline, sets it up on GPU, and provides the 'inference' method to generate image bytes from a prompt using the Flux model.
    @app.cls( gpu="L40S", container_idle_timeout=5 * MINUTES, image=flux_image, volumes={ "/cache": modal.Volume.from_name("hf-hub-cache", create_if_missing=True), }, enable_memory_snapshot=True, ) class Model: @modal.enter(snap=True) def load(self): print("πŸ”„ loading model...") pipe = FluxPipeline.from_pretrained(f"black-forest-labs/FLUX.1-{VARIANT}", torch_dtype=torch.bfloat16) self.pipe = _optimize(pipe) @modal.enter(snap=False) def setup(self): print("πŸ”„ moving model to GPU...") self.pipe = self.pipe.to("cuda") @modal.method() def inference(self, prompt: str) -> bytes: print("🎨 generating image...") out = self.pipe( prompt, output_type="pil", num_inference_steps=NUM_INFERENCE_STEPS, ).images[0] byte_stream = BytesIO() out.save(byte_stream, format=IMAGE_FORMAT) return byte_stream.getvalue()
  • Helper function called by the handler to ensure the Modal app deployment is up to date by checking version and deploying if necessary.
    async def _ensure_app_deployment_is_up_to_date(ctx: Context): try: fn = modal.Function.from_name(app_name, "get_version") remote_version = await fn.remote.aio() if remote_version != version("modal_mcp_toolbox"): await ctx.info("App is out of date. Deploying ...") logger.info("App is out of date. Deploying ...") deploy_app(app) except NotFoundError: await ctx.info("App not found. Deploying...") logger.info("App not found. Deploying...") deploy_app(app)
  • Input schema definition via Annotated Field for the 'prompt' parameter.
    async def generate_flux_image(prompt: Annotated[str, Field(description="The prompt to generate an image for")], ctx: Context) -> ImageContent:

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/philipp-eisen/modal-mcp-toolbox'

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