#!/usr/bin/env python3 """ Simple A1D MCP Server with Gradio - Minimal version to avoid type inference 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 remove_bg_simple(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", None 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 message, media_url except Exception as e: return f"❌ Error: {str(e)}", None def image_upscaler_simple(image_url, scale): """Upscale images using AI""" try: if not image_url or not image_url.strip(): return "❌ Error: Please provide an image URL", None client = get_api_client() data = prepare_request_data("image_upscaler", image_url=image_url, scale=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 message, media_url except Exception as e: return f"❌ Error: {str(e)}", None def image_generator_simple(prompt): """Generate images using AI from text prompts""" try: if not prompt or not prompt.strip(): return "❌ Error: Please provide a text prompt", None 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 message, media_url except Exception as e: return f"❌ Error: {str(e)}", None def create_simple_app(): """Create a simple Gradio app""" with gr.Blocks(title="A1D MCP Server - Universal AI Tools") as demo: gr.Markdown("# 🤖 A1D MCP Server - Universal AI Tools") gr.Markdown("Powerful AI image and video processing tools for any MCP-compatible client.") with gr.Tab("🎭 Background Removal"): with gr.Row(): with gr.Column(): bg_input = gr.Textbox( label="Image URL", placeholder="https://example.com/image.jpg" ) bg_button = gr.Button("Remove Background", variant="primary") with gr.Column(): bg_output = gr.Textbox(label="Result") bg_image = gr.Image(label="Preview") bg_button.click( fn=remove_bg_simple, inputs=[bg_input], outputs=[bg_output, bg_image] ) with gr.Tab("🔍 Image Upscaler"): with gr.Row(): with gr.Column(): up_input = gr.Textbox( label="Image URL", placeholder="https://example.com/image.jpg" ) up_scale = gr.Dropdown( choices=[2, 4, 8, 16], value=2, label="Scale Factor" ) up_button = gr.Button("Upscale Image", variant="primary") with gr.Column(): up_output = gr.Textbox(label="Result") up_image = gr.Image(label="Preview") up_button.click( fn=image_upscaler_simple, inputs=[up_input, up_scale], outputs=[up_output, up_image] ) with gr.Tab("🎨 Image Generator"): with gr.Row(): with gr.Column(): gen_input = gr.Textbox( label="Text Prompt", placeholder="A beautiful sunset over mountains...", lines=3 ) gen_button = gr.Button("Generate Image", variant="primary") with gr.Column(): gen_output = gr.Textbox(label="Result") gen_image = gr.Image(label="Preview") gen_button.click( fn=image_generator_simple, inputs=[gen_input], outputs=[gen_output, gen_image] ) gr.Markdown(""" ## 🔧 MCP Client Configuration Add this to your Claude Desktop configuration: ```json { "mcpServers": { "a1d-hosted": { "command": "npx", "args": [ "mcp-remote@latest", "https://aigchacker-a1d-mcp-server.hf.space/gradio_api/mcp/sse", "--header", "API_KEY:${MCP_API_KEY}" ], "env": { "MCP_API_KEY": "your_a1d_api_key_here" } } } } ``` """) 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 (Simple Version)...") print("✅ API key found") # Create and launch the app demo = create_simple_app() demo.launch( server_name="0.0.0.0", server_port=7860, share=False )