ImageGenMCP / mcp_client.py
tomo2chin2's picture
Upload 9 files
0b26f38 verified
"""
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}")