#!/usr/bin/env python3 """ Minimal A1D MCP Server with Gradio - Ultra-simple version to avoid all compatibility issues """ import gradio as gr import os from utils import A1DAPIClient, prepare_request_data, format_response_with_preview from config import TOOLS_CONFIG def get_api_client(): """Get API client with current API key""" api_key = os.getenv("A1D_API_KEY") if not api_key: raise ValueError("A1D_API_KEY environment variable is required") return A1DAPIClient(api_key) def process_remove_bg(image_url): """Remove background from images using AI""" try: if not image_url or not image_url.strip(): return "❌ Error: Please provide an image URL" client = get_api_client() data = prepare_request_data("remove_bg", image_url=image_url) response = client.make_request_with_result( TOOLS_CONFIG["remove_bg"]["api_endpoint"], data, timeout=120 ) message, media_url = format_response_with_preview(response, "remove_bg") return f"{message}\n\nResult URL: {media_url}" if media_url else message except Exception as e: return f"❌ Error: {str(e)}" def process_upscale(image_url, scale): """Upscale images using AI""" try: if not image_url or not image_url.strip(): return "❌ Error: Please provide an image URL" client = get_api_client() data = prepare_request_data("image_upscaler", image_url=image_url, scale=int(scale)) response = client.make_request_with_result( TOOLS_CONFIG["image_upscaler"]["api_endpoint"], data, timeout=120 ) message, media_url = format_response_with_preview(response, "image_upscaler") return f"{message}\n\nResult URL: {media_url}" if media_url else message except Exception as e: return f"❌ Error: {str(e)}" def process_generate(prompt): """Generate images using AI from text prompts""" try: if not prompt or not prompt.strip(): return "❌ Error: Please provide a text prompt" client = get_api_client() data = prepare_request_data("image_generator", prompt=prompt) response = client.make_request_with_result( TOOLS_CONFIG["image_generator"]["api_endpoint"], data, timeout=120 ) message, media_url = format_response_with_preview(response, "image_generator") return f"{message}\n\nResult URL: {media_url}" if media_url else message except Exception as e: return f"❌ Error: {str(e)}" # Create the minimal Gradio interface def create_minimal_interface(): """Create minimal interface with basic components only""" # Background Removal Interface bg_interface = gr.Interface( fn=process_remove_bg, inputs=gr.Textbox(label="Image URL", placeholder="https://example.com/image.jpg"), outputs=gr.Textbox(label="Result"), title="🎭 Background Removal", description="Remove background from images using AI" ) # Image Upscaler Interface upscale_interface = gr.Interface( fn=process_upscale, inputs=[ gr.Textbox(label="Image URL", placeholder="https://example.com/image.jpg"), gr.Radio(choices=["2", "4", "8", "16"], value="2", label="Scale Factor") ], outputs=gr.Textbox(label="Result"), title="🔍 Image Upscaler", description="Upscale images using AI" ) # Image Generator Interface gen_interface = gr.Interface( fn=process_generate, inputs=gr.Textbox(label="Text Prompt", placeholder="A beautiful sunset over mountains...", lines=3), outputs=gr.Textbox(label="Result"), title="🎨 Image Generator", description="Generate images using AI from text prompts" ) # Create tabbed interface demo = gr.TabbedInterface( [bg_interface, upscale_interface, gen_interface], ["Background Removal", "Image Upscaler", "Image Generator"], title="🤖 A1D MCP Server - Universal AI Tools" ) return demo if __name__ == "__main__": # Check for API key if not os.getenv("A1D_API_KEY"): print("❌ Error: A1D_API_KEY environment variable is required") print("Please set your API key in the Space settings") exit(1) print("🚀 Starting A1D MCP Server (Minimal Version)...") print("✅ API key found") print("🌐 Server will be available at: http://0.0.0.0:7860") # Create and launch the minimal app demo = create_minimal_interface() demo.launch( server_name="0.0.0.0", server_port=7860, share=False )