blob: aafc072499652464c2c9719fbd552540ab97c9e1 (
plain)
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
|
# mcp-sd15
ローカルの NVIDIA GPU と Stable Diffusion 1.x 互換 checkpoint を使う、stdio MCP
サーバです。Text-to-Image、Depth/Openpose 誘導生成、ControlNet Inpaint を公開します。
## セットアップ
1. NVIDIA driverがCUDA 13.2対応PyTorchを実行できることを`nvidia-smi`で確認します。
2. `config.example.toml` をコピーし、モデルの root とファイル名を設定します。
3. `uv sync` を実行します。PyTorchは専用indexからCUDA 13.2版が導入されます。
4. `uv run mcp-sd15 --config path/to/config.toml` で起動します。
トランスポートはTOMLの`[server]`で切り替えます。省略時は`stdio`です。
`streamable-http`を使う場合は次のように設定します。
```toml
[server]
transport = "streamable-http"
host = "127.0.0.1"
port = 8000
```
この場合、MCPクライアントは`http://127.0.0.1:8000/mcp`へ接続します。
全ツールで共通するbase promptを`[prompt]`で指定できます。プロンプトファイルは
`<root>/prompts/`に配置し、TOMLにはファイル名だけを記述します。
```toml
[prompt]
positive_file = "positive.txt"
negative_file = "negative.txt"
```
起動時にファイルを読み込み、LLMからのプロンプトと結合してpipelineへ渡します。
positiveは`base, user`の順でカンマ区切り、negativeは`base\nuser`の順で改行区切りです。
モデルは `<root>/checkpoints`、`vae`、`lora`、`controlnet` からだけ読み込みます。
VAE componentは生成に常に必要です。`model.vae`を省略した場合はcheckpoint内蔵VAEを使い、
指定した場合だけ外部VAEへ置き換えます。設定されたLoRAは起動時にすべてロードされ、3つの
生成ツールに共通して適用されます。MCP呼び出しごとのLoRA切替には対応しません。
Depth/Openpose の annotator 重みは `controlnet_aux` のローカルキャッシュに事前配置して
ください。推論時のダウンロードは行いません。
MCP の `input_image` / `mask_image` は PNG または JPEG の Base64(data URI も可)です。
mask は白い領域が再生成対象です。出力は PNG の画像 content で、seed 等は PNG metadata
にも記録されます。
GPU を使わないテストは `uv run pytest`、lint は `uv run ruff check .`、型検査は
`uv run pyright` で実行できます。実モデルの smoke test は環境依存のため自動テストには
含めていません。
実GPUとMCP経路を使う`generate_image` smoke testは次のように実行できます。
```powershell
uv run python script\smoke_generate_image.py `
--config data\config.generate-image.toml `
--output data\outputs\generate-image-mcp-512.png
```
|