StableDiffusion MCP サーバーは、Model Context Protocol (MCP)を使用して、StableDiffusionなどの画像生成モデルをClaudeなどのLLMから利用できるようにするサーバーです。このサーバーを使用することで、LLMは自然言語での指示からリアルタイムに画像を生成できるようになります。
- テキストから画像を生成 (Text-to-Image)
- 既存画像から新しい画像を生成 (Image-to-Image)
- 複数のStableDiffusionモデルのサポート(SD1.5からSD3.5まで)
- Stable Diffusion 3/3.5モデルの対応
- モデルの動的切り替えと進捗表示
- 高速起動モード(軽量モデルで起動し、後から重いモデルを読み込み)
- 生成画像の保存と管理
- MCPプロトコルを通じたLLMとの連携
- Python 3.10以上
- CUDA対応グラフィックカード(推奨)、Apple Siliconのニューラルエンジン(MPS)、またはCPU
- 依存パッケージ:
- fastmcp >= 2.0.0
- diffusers >= 0.28.0(SD3/3.5モデルサポートのため)
- transformers >= 4.36.0
- torch >= 2.0.0
- pillow >= 10.0.0
- accelerate >= 0.25.0
WSL(Windows Subsystem for Linux)でこのサーバーを使用する場合、大規模なStable Diffusionモデル(SD3.5など)をロードするために十分なメモリを割り当てることを推奨します。
.wslconfig ファイル(C:\Users\<ユーザー名>\.wslconfig)を作成または編集して、メモリとスワップのサイズを増やします:
[wsl2]
memory=48GB
swap=8GB推奨設定:
- メモリ: 32GB以上(大規模モデルの場合は48GB以上を推奨)
- スワップ: 8GB以上
設定を変更した後は、PowerShellまたはコマンドプロンプトで以下のコマンドを実行してWSLを再起動してください:
wsl --shutdown次回WSLを起動すると、新しい設定が適用されます。
# リポジトリをクローン
git clone https://github.com/hawkymisc/stable-diffusion-mcp.git
cd stable-diffusion-mcp
# 依存パッケージのインストール
pip install -r requirements.txtpython sdxl_mcp_server.pypython sdxl_mcp_server.py --transport sse --host 0.0.0.0 --port 8080サーバーはデフォルトでクイック起動モードが有効になっています。これにより、起動時には軽量な「SD-1.5」モデルが最初にロードされ、システムがアクセス可能になった後、設定されたデフォルトモデル(同じく「SD-1.5」)が非同期でロードされます。この機能はconfig.pyで設定可能です:
QUICK_STARTUP = True # 高速起動モードを有効化/無効化
STARTUP_MODEL = "sd-1.5" # 起動時に使用する軽量モデル
DEFAULT_MODEL = "sd-1.5" # 最終的にロードするデフォルトモデルデフォルトモデルはより高性能な「sd3.5-large-turbo」などに変更することもできます。
Claude Desktopなどのクライアントでは、MCPサーバーを登録する必要があります。例えば、Claude Desktopでは以下のように設定します:
- Claude Desktopの設定メニューを開く
- MCP設定を開く
- 新しいMCPサーバーを追加
- コマンドに
python /path/to/sdxl_mcp_server.pyを入力 - 保存して使用開始
ユーザー:夕日の海岸線の美しい写真を生成してください。波が打ち寄せるシーンがいいです。
Claude:夕日の海岸線の写真を生成します。波が打ち寄せるシーンですね。
[ツールを使用: generate_image_from_text]
夕日の海岸線の美しい写真を生成しました。金色に輝く夕日が海面を照らし、波が砂浜に打ち寄せている様子が表現されています。
-
generate_image_from_text
- テキストプロンプトから画像を生成
- パラメータ:prompt, negative_prompt, width, height, num_inference_steps, guidance_scale, seed, model_id
- 注意: サーバーがモデルのロード中または他の画像生成処理を実行中の場合、このツールはエラーを返します。リクエストをキューに入れて順番に処理させたい場合は、
enqueue_imageツールを使用してください。
-
transform_image_from_image
- 既存の画像をもとに新しい画像を生成(img2img)
- パラメータ:input_image, prompt, negative_prompt, strength, num_inference_steps, guidance_scale, seed, model_id
- 注意: サーバーがモデルのロード中または他の画像生成処理を実行中の場合、このツールはエラーを返します。リクエストをキューに入れて順番に処理させたい場合は、
enqueue_imageツールを使用してください。
-
switch_model
- 使用するStableDiffusionモデルを切り替え(バックグラウンドでロードを開始し、即時に応答を返します)
- パラメータ:model_id
- 注意:実際のロード進捗や完了状況は list_available_models ツールや check_loading_status ツールを呼び出して確認してください
-
list_available_models
- 利用可能なすべてのモデルとその情報を取得
-
check_loading_status
- 現在のモデルロード進捗を返します。
-
check_system_status
- サーバー全体の処理状態(IDLE, LOADING, GENERATING)を返します。
-
enqueue_image
- テキストプロンプトからの画像生成リクエストをキューに登録します。
- パラメータ:prompt, negative_prompt, width, height, num_inference_steps, guidance_scale, seed, model_id
- 戻り値:
request_idと現在のキューサイズ
-
get_queue_status
- キュー内のリクエスト状況(pending, processing, completed, error)を返します。
-
get_request_status
- 指定した
request_idのステータスと結果(完了またはエラー時)を返します。
- 指定した
-
images/{image_id}
- 指定されたIDの画像を取得
-
images/{image_id}/metadata
- 指定されたIDの画像のメタデータを取得
-
images/{page}/list
- 保存されている画像のリストを取得
- パラメータ:page, limit, skip
-
models/{filter}/list
- 利用可能なすべてのモデル情報を取得
-
models/{model_id}/current
- 現在使用中のモデル情報を取得
現在、以下のモデルをサポートしています:
- SD-1.5: 軽量で高速な基本モデル(デフォルトの起動モデル)
- SD-2.1: バランスの良い画質と速度のモデル
- SDXL-Base: 高品質画像生成が可能なXLモデル
- SD3-Medium: Stable Diffusion 3系の中間モデル
- SD3.5-Medium: Stable Diffusion 3.5 Mediumモデル(高品質画像生成)
- SD3.5-Large-Turbo: 最新のSD3.5系の高速モデル(デフォルトのメインモデル)
config.pyファイルを編集することで、利用可能なモデルや各種設定を変更できます。
# モデル関連の設定
MODELS = {
"sdxl-base": {
"name": "stabilityai/stable-diffusion-xl-base-1.0",
"description": "Stable Diffusion XL Base 1.0 モデル",
"type": "txt2img",
"width": 1024,
"height": 1024,
},
"sd3.5-medium": {
"name": "stabilityai/stable-diffusion-3.5-medium",
"description": "Stable Diffusion 3.5 Medium モデル",
"type": "txt2img_img2img",
"width": 1024,
"height": 1024,
"recommended_dtype": "bfloat16",
},
"sd3.5-large-turbo": {
"name": "stabilityai/stable-diffusion-3.5-large-turbo",
"description": "Stable Diffusion 3.5 Large Turbo モデル",
"type": "txt2img",
"width": 1024,
"height": 1024,
"recommended_dtype": "bfloat16",
},
# 他のモデルを追加
}このプロジェクトはMITライセンスの下で提供されています。詳細はLICENSEファイルを参照してください。