Spaces:
Paused
Paused
| """ | |
| 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}") |