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