outsource_image
Generate images using external AI models like DALL-E 3 for high-quality visuals or DALL-E 2 for faster concepts. Provide a detailed prompt to create visual content.
Instructions
Delegate image generation to an external AI model. Use this when you need to create
visual content.
Args:
provider: The AI provider to use (currently only "openai" is supported)
model: The image model to use ("dall-e-3" for high quality, "dall-e-2" for faster/cheaper)
prompt: A detailed description of the image you want to generate
Returns:
The URL of the generated image, which can be shared with users or used in responses
Example usage:
For high-quality images: provider="openai", model="dall-e-3", prompt="A photorealistic rendering of..."
For quick concepts: provider="openai", model="dall-e-2", prompt="A simple sketch showing..."
Note: Only OpenAI currently supports image generation. Other providers will return an error.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| provider | Yes | ||
| model | Yes | ||
| prompt | Yes |
Implementation Reference
- server.py:111-175 (handler)The async handler function for the 'outsource_image' tool, registered via @mcp.tool(). It delegates image generation to OpenAI's DALL-E models (dall-e-3 or dall-e-2), returning the generated image URL. Supports only OpenAI provider currently, with detailed error handling.@mcp.tool() async def outsource_image(provider: str, model: str, prompt: str) -> str: """ Delegate image generation to an external AI model. Use this when you need to create visual content. Args: provider: The AI provider to use (currently only "openai" is supported) model: The image model to use ("dall-e-3" for high quality, "dall-e-2" for faster/cheaper) prompt: A detailed description of the image you want to generate Returns: The URL of the generated image, which can be shared with users or used in responses Example usage: For high-quality images: provider="openai", model="dall-e-3", prompt="A photorealistic rendering of..." For quick concepts: provider="openai", model="dall-e-2", prompt="A simple sketch showing..." Note: Only OpenAI currently supports image generation. Other providers will return an error. """ try: provider_lower = provider.lower() # Currently only OpenAI supports image generation through our integration if provider_lower == "openai": if model in ["dall-e-3", "dall-e-2"]: import openai # Use OpenAI directly for more control client = openai.AsyncOpenAI() # Generate image with appropriate parameters for each model try: if model == "dall-e-3": response = await client.images.generate( model=model, prompt=prompt, n=1, size="1024x1024", response_format="url" ) else: # dall-e-2 response = await client.images.generate( model=model, prompt=prompt, n=1, size="512x512", response_format="url" ) # Get the image URL image_url = response.data[0].url return image_url except openai.OpenAIError as e: return f"Error: OpenAI API error - {str(e)}" else: return f"Error: Model '{model}' is not a supported OpenAI image generation model. Supported models: dall-e-3, dall-e-2" else: return f"Error: Provider '{provider}' does not support image generation through this tool. Currently only 'openai' is supported." except Exception as e: return f"Error generating image: {str(e)}"