File size: 2,313 Bytes
e4603a2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0b26f38
e4603a2
 
 
 
 
 
 
0b26f38
e4603a2
 
 
 
 
 
 
 
 
 
 
 
0b26f38
 
 
 
 
e4603a2
0b26f38
e4603a2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0b26f38
e4603a2
 
0b26f38
e4603a2
 
 
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
"""
MCPクライアントのサンプルコード
ClaudeCodeからこのMCPサーバーを利用する際の参考実装
"""

import requests
import base64
from PIL import Image
import io

class ImageGenMCPClient:
    def __init__(self, base_url: str):
        """
        Args:
            base_url: MCPサーバーのベースURL (例: "https://your-space.hf.space")
        """
        self.base_url = base_url.rstrip('/')
    
    def list_tools(self):
        """利用可能なツールのリストを取得"""
        response = requests.post(f"{self.base_url}/mcp/list_tools")
        return response.json()
    
    def generate_image(self, prompt: str) -> tuple[Image.Image, str, str]:
        """
        画像を生成する
        
        Args:
            prompt: 生成したい画像の説明
            
        Returns:
            生成された画像、メッセージ、画像URL
        """
        payload = {
            "name": "generate_image",
            "arguments": {
                "prompt": prompt
            }
        }
        
        response = requests.post(f"{self.base_url}/mcp/call_tool", json=payload)
        result = response.json()
        
        if result.get("success"):
            # 画像URLから画像を取得
            image_url = result["image_url"]
            img_response = requests.get(image_url)
            image = Image.open(io.BytesIO(img_response.content))
            return image, result["message"], image_url
        else:
            return None, result["message"], None
    
    def health_check(self):
        """ヘルスチェック"""
        response = requests.get(f"{self.base_url}/health")
        return response.json()

# 使用例
if __name__ == "__main__":
    # MCPサーバーのURL
    client = ImageGenMCPClient("https://your-space.hf.space")
    
    # ヘルスチェック
    print("Health check:", client.health_check())
    
    # ツールリストの取得
    tools = client.list_tools()
    print("Available tools:", tools)
    
    # 画像生成
    image, message, image_url = client.generate_image("美しい夕日の風景")
    if image:
        print(f"Success: {message}")
        print(f"Image URL: {image_url}")
        image.save("generated_image.png")
    else:
        print(f"Error: {message}")