File size: 1,557 Bytes
089cc3a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from mcp.server.fastmcp import FastMCP
import json
import sys
import io
import time
from gradio_client import Client

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding="utf-8", errors="replace")

mcp = FastMCP("huggingface_spaces_image_display")


@mcp.tool()
async def generate_image(prompt: str, width: int = 512, height: int = 512) -> str:
    """Generate an image using SanaSprint model.

    Args:
        prompt: Text prompt describing the image to generate
        width: Image width (default: 512)
        height: Image height (default: 512)
    """
    client = Client("https://ysharma-sanasprint.hf.space/")

    try:
        result = client.predict(
            prompt, "0.6B", 0, True, width, height, 4.0, 2, api_name="/infer"
        )

        if isinstance(result, list) and len(result) >= 1:
            image_data = result[0]
            if isinstance(image_data, dict) and "url" in image_data:
                return json.dumps(
                    {
                        "type": "image",
                        "url": image_data["url"],
                        "message": f"Generated image for prompt: {prompt}",
                    }
                )

        return json.dumps({"type": "error", "message": "Failed to generate image"})

    except Exception as e:
        return json.dumps(
            {"type": "error", "message": f"Error generating image: {str(e)}"}
        )


if __name__ == "__main__":
    mcp.run(transport="stdio")