Skip to content

hawkymisc/stable-diffusion-mcp

Repository files navigation

StableDiffusion MCP サーバー

概要

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環境での使用

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.txt

使い方

サーバーの起動

標準入出力(stdio)を使用(Claude Desktopなどのクライアント向け)

python sdxl_mcp_server.py

SSEトランスポートを使用(Webアプリケーションなどから利用する場合)

python 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」などに変更することもできます。

MCPサーバーとしてClaudeに登録する

Claude Desktopなどのクライアントでは、MCPサーバーを登録する必要があります。例えば、Claude Desktopでは以下のように設定します:

  1. Claude Desktopの設定メニューを開く
  2. MCP設定を開く
  3. 新しいMCPサーバーを追加
  4. コマンドに python /path/to/sdxl_mcp_server.py を入力
  5. 保存して使用開始

使用例(Claudeでの会話)

ユーザー:夕日の海岸線の美しい写真を生成してください。波が打ち寄せるシーンがいいです。

Claude:夕日の海岸線の写真を生成します。波が打ち寄せるシーンですね。
[ツールを使用: generate_image_from_text]

夕日の海岸線の美しい写真を生成しました。金色に輝く夕日が海面を照らし、波が砂浜に打ち寄せている様子が表現されています。

使用可能なツールとリソース

ツール

  1. generate_image_from_text

    • テキストプロンプトから画像を生成
    • パラメータ:prompt, negative_prompt, width, height, num_inference_steps, guidance_scale, seed, model_id
    • 注意: サーバーがモデルのロード中または他の画像生成処理を実行中の場合、このツールはエラーを返します。リクエストをキューに入れて順番に処理させたい場合は、enqueue_image ツールを使用してください。
  2. transform_image_from_image

    • 既存の画像をもとに新しい画像を生成(img2img)
    • パラメータ:input_image, prompt, negative_prompt, strength, num_inference_steps, guidance_scale, seed, model_id
    • 注意: サーバーがモデルのロード中または他の画像生成処理を実行中の場合、このツールはエラーを返します。リクエストをキューに入れて順番に処理させたい場合は、enqueue_image ツールを使用してください。
  3. switch_model

    • 使用するStableDiffusionモデルを切り替え(バックグラウンドでロードを開始し、即時に応答を返します)
    • パラメータ:model_id
    • 注意:実際のロード進捗や完了状況は list_available_models ツールや check_loading_status ツールを呼び出して確認してください
  4. list_available_models

    • 利用可能なすべてのモデルとその情報を取得
  5. check_loading_status

    • 現在のモデルロード進捗を返します。
  6. check_system_status

    • サーバー全体の処理状態(IDLE, LOADING, GENERATING)を返します。
  7. enqueue_image

    • テキストプロンプトからの画像生成リクエストをキューに登録します。
    • パラメータ:prompt, negative_prompt, width, height, num_inference_steps, guidance_scale, seed, model_id
    • 戻り値:request_id と現在のキューサイズ
  8. get_queue_status

    • キュー内のリクエスト状況(pending, processing, completed, error)を返します。
  9. get_request_status

    • 指定した request_id のステータスと結果(完了またはエラー時)を返します。

リソース

  1. images/{image_id}

    • 指定されたIDの画像を取得
  2. images/{image_id}/metadata

    • 指定されたIDの画像のメタデータを取得
  3. images/{page}/list

    • 保存されている画像のリストを取得
    • パラメータ:page, limit, skip
  4. models/{filter}/list

    • 利用可能なすべてのモデル情報を取得
  5. 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ファイルを参照してください。

参考資料

About

StableDiffusion MCP Server - Image generation via Model Context Protocol for Claude and other LLMs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages