Skip to main content
Glama
README.md6.25 kB
# ComfyMCP Studio ComfyMCP Studio is an MCP (Model Context Protocol) server for generating 2D game assets using AI workflows powered by ComfyUI. ## What you get - **ComfyUI-backed generation** - Production-quality SDXL/SD1.5 workflows - **High-quality outputs by default** - Render at preset resolution (SDXL-native) then downscale for cleaner details - **Consistent character animations (img2img)** - Generate multiple poses from a single reference image - **Viewpoint control with ControlNet (top-down / side / front / 3/4)** - Generate top-down assets with stronger camera-angle consistency - **Presets for common game styles** - Icon, character, tileset, top-down presets, pixel presets - **Post-processing** - Resize, remove background, add outline - **Unity export + batch generation** ## Requirements - **Python**: 3.10+ - **ComfyUI**: running locally (default `127.0.0.1:8188`) - **Stable Diffusion checkpoint** - SDXL recommended (default configured: `sd_xl_base_1.0.safetensors`) - **(Optional) ControlNet models** - Required only for `generate_with_viewpoint` / `generate_topdown_asset` ## Installation ```bash # Navigate to the project cd path/ComfyAI-MCP-GameAssets # Create virtual environment python -m venv venv venv\Scripts\activate # Install dependencies pip install -r requirements.txt ``` ## Configuration Copy `.env.example` to `.env` and configure: ```env BACKEND_TYPE=comfyui COMFYUI_HOST=127.0.0.1 COMFYUI_PORT=8188 COMFYUI_CHECKPOINT=sd_xl_base_1.0.safetensors OUTPUT_DIR=./output UNITY_ASSETS_DIR=C:/Projects/MyGame/Assets ``` ## ComfyUI setup - **Start ComfyUI** (example): ```bash python main.py --listen 0.0.0.0 --port 8188 ``` - **Checkpoint** - Make sure your checkpoint exists in ComfyUI (example: `ComfyUI/models/checkpoints/`). - This server reads `COMFYUI_CHECKPOINT` from `.env`. ## ControlNet setup (for viewpoint locking) If you use viewpoint tools, you must install a ControlNet model in: `ComfyUI/models/controlnet/` - **SDXL depth model (example)** - `diffusers_xl_depth_full.safetensors` Restart ComfyUI after adding models. If you see `HTTP 400 Bad Request` when calling `/prompt`, it usually means: - The `controlnet_model` name is wrong, or - The ControlNet nodes/models are not installed/available. ## Run as MCP server (Windsurf) Add this to your MCP settings (or copy from `mcp_config.json`): ```json { "mcpServers": { "comfymcp-studio": { "command": "python", "args": ["-m", "server.main"], "cwd": "path/ComfyAI-MCP-GameAssets", "env": { "BACKEND_TYPE": "comfyui", "COMFYUI_HOST": "127.0.0.1", "COMFYUI_PORT": "8188" } } } } ``` ## Tools - **`ping`** - Backend health check - **`list_available_presets`** - Lists preset names + configs - **`generate_sprite`** - Single image generation from prompt - **`generate_icons`** - Batch icons + optional atlas - **`generate_tileset`** - Tileable tiles by theme - **`generate_character`** - Character generation (prompt-driven) - **`generate_character_animations`** - Img2img multi-pose animations from a reference image - **`generate_with_viewpoint`** - ControlNet depth-guided generation for stable camera angle - **`generate_topdown_asset`** - Convenience wrapper for top-down assets (prop, character, creature, tile, effect) - **`process_image`** - Resize / remove background / add outline - **`create_sprite_atlas`** - Combine images to spritesheet - **`export_to_unity`** - Export output PNGs into a Unity project folder - **`batch_generate`** - Batch generation with prompts ## Presets You can list presets via `list_available_presets`. ### General - **`default`** - General purpose game asset - **`icon`** / **`icon_item`** - Game icons - **`character`** / **`character_portrait`** - Character sprites - **`tileset`** - Seamless tileable textures - **`environment`** - Background/environment art - **`prop`** - Game props (3/4 view) ### Top-down (ControlNet) - **`topdown_prop`** - Top-down props - **`topdown_character`** - Top-down characters - **`topdown_creature`** - Top-down creatures/enemies - **`topdown_tile`** - Top-down tiles ### Effects & UI - **`effect`** / **`magic_effect`** - VFX and spell effects - **`ui_button`** / **`ui_frame`** - UI elements ### Creatures - **`creature`** - Fantasy creatures/monsters ### Style-specific - **`handpainted`** - Hand-painted art style - **`flat_ui`** - Flat design UI - **`isometric`** - Isometric game assets - **`pixel_art`** / **`pixel_character`** - Pixel art style - **`pixel_16`** / **`pixel_32`** / **`pixel_64`** - Specific pixel sizes ## Testing ### Quick smoke test ```bash python test_generate.py --list-presets python test_generate.py --preset icon --size 256 --steps 20 --seed 42 --save ``` ### ControlNet viewpoint tests ```bash # Top-down prop (depth ControlNet) python test_controlnet.py --tests prop --size 512 --strength 0.95 --save # Top-down character (wrapper tool) python test_controlnet.py --tests character --size 512 --strength 1.0 --save # Multi-view for the same object python test_controlnet.py --tests multi --views topdown,side,front,3/4 --size 512 --strength 0.90 --save ``` ### Character animation tests (img2img) ```bash # Requires a local reference image python test_character_animation.py --ref path\\to\\reference.png --poses idle,walking,attacking --denoise 0.35 --seed 42 --save ``` ## Output Generated images are saved under `OUTPUT_DIR` when you call tools with `save_to_file=true`. Typical folders: - **`output/controlnet/`** - **`output/icons/`** - **`output/characters/`** - **`output/tilesets/`** ## Troubleshooting - **`HTTP 400 Bad Request` from ComfyUI `/prompt`** - Check ControlNet model file exists in `ComfyUI/models/controlnet/` - Verify the exact filename passed as `controlnet_model` - Restart ComfyUI after installing models - **Results still not top-down** - Increase `control_strength` (try `0.90` to `1.0`) - Use `preset=topdown_character/topdown_prop` - **Duplicated/fragmented weapons/armor** - Add explicit constraints to prompt: `single character`, `one sword`, `one shield` ## License MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tuannguyen14/ComfyAI-MCP-GameAssets'

If you have feedback or need assistance with the MCP directory API, please join our Discord server