MCP-LOGO-GEN

  • tools
# tools/image_gen.py from typing import Optional import fal_client import asyncio import os async def generate_image(prompt: str, model: str = "fal-ai/ideogram/v2", aspect_ratio: str = "1:1", expand_prompt: bool = True, style: str = "auto", negative_prompt: str = "") -> str: """ Generate an image using FAL AI based on a text prompt. """ fal_key = os.getenv("FAL_KEY") print(f"FAL_KEY in environment: {fal_key[:4] if fal_key else 'Not set'}...") def on_queue_update(update): if isinstance(update, fal_client.InProgress): for log in update.logs: print(log["message"]) try: loop = asyncio.get_event_loop() result = await loop.run_in_executor( None, lambda: fal_client.subscribe( model, arguments={ "prompt": prompt, "aspect_ratio": aspect_ratio, "expand_prompt": expand_prompt, "style": style, "negative_prompt": negative_prompt }, with_logs=True, on_queue_update=on_queue_update, ) ) print(f"Raw FAL response: {result}") if result and isinstance(result, dict) and "images" in result and len(result["images"]) > 0: return result["images"][0]["url"] return "Image generation completed, but no URL returned." except Exception as e: return f"Error generating image: {str(e)}"