rerofumi/fm-mcp-comfyui-bridge
If you are the rightful owner of fm-mcp-comfyui-bridge and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
fm-mcp-comfyui-bridge is an MCP server implementation for accessing ComfyUI, providing image generation features through integration with ComfyUI's API.
fm-mcp-comfyui-bridge
ComfyUIã«ã¢ã¯ã»ã¹ããããã®MCPãµãŒããŒå®è£ ã§ããComfyUI ã® API ãšã®é£æºãè¡ããç»åçææ©èœãæäŸããŸãã
ð æ©èœ
- ðŒïž ComfyUIãå©çšããç»åçææ©èœ
- ð çæç»åã®ãã£ãã·ã§ã³çææ©èœ
- ð·ïž çæç»åã®ã¿ã°è§£ææ©èœ
- ð uvã«ããç°¡åãªã»ããã¢ãããšèµ·å
- ð MCPãµãŒããŒãšããŠAPIãšã³ããã€ã³ããæäŸ
ð§ èŠä»¶
- Python 3.13以äž
- ããŒã«ã«ã§åäœããComfyUIïŒããã©ã«ã: http://localhost:8188ïŒ
- uv ããã±ãŒãžãããŒãžã£
- ããŒã«ã«ã§åäœãã ollama ãšç»åèªèãã§ãã vision model
ð¥ ã€ã³ã¹ããŒã«
uv ãã€ã³ã¹ããŒã«ãããç°å¢ãçšæããŠãã ããã
uvã䜿çšããã€ã³ã¹ããŒã«
# ãªããžããªãã¯ããŒã³
git clone https://github.com/rerofumi/fm-mcp-comfyui-bridge.git
cd fm-mcp-comfyui-bridge
# uvã䜿çšããŠäŸåé¢ä¿ãã€ã³ã¹ããŒã«
uv pip install -e .
ComfyUI ã® workflow ãåäœããã確èª
src\fm_mcp_comfyui_bridge\config\workflow\ äžã«ãã json ãã¡ã€ã«ã ComfyUI ã«èªã¿èŸŒãŸããŠãããŒããšã©ãŒã«ãªã£ãŠããªãããšã確èªã
è¶³ããªãã«ã¹ã¿ã ããŒããšããã£ããã€ã³ã¹ããŒã«ããŠãããŠãã ããã
ð äœ¿çšæ¹æ³
MCPãµãŒããŒãšããŠèšå®
å©çšãããšãŒãžã§ã³ãããŒã«ã®MCPèšå®ã«ä»¥äžã®ããã«èšå®ããŠãã ãã
{
"mcpServers": {
"fm-mcp-comfyui-bridge": {
"command": "uv",
"args": [
"--directory",
"(ã€ã³ã¹ããŒã«ãããã£ã¬ã¯ããª)/fm-mcp-comfyui-bridge",
"run",
"fm-mcp-comfyui-bridge"
],
}
}
}
ComfyUIã®ãšã³ããã€ã³ãèšå®
ããã©ã«ãã§ã¯ãComfyUIã®ãšã³ããã€ã³ã㯠http://localhost:8188 ã«èšå®ãããŠããŸããå¿
èŠã«å¿ã㊠main.py å
ã®èšå®ã倿ŽããŠãã ããã
Loraã®èšå®
ç»åçæã«äœ¿çšããã¢ãã«èšå®ãã¡ã€ã«ãäœæããå¿ èŠããããŸãã以äžã®æé ã§èšå®ãè¡ã£ãŠãã ããïŒ
-
ãµã³ãã«èšå®ãã¡ã€ã«ãã³ããŒããŸãïŒ
cp src/fm_mcp_comfyui_bridge/config/sample_config.yaml src/fm_mcp_comfyui_bridge/config/config.yaml -
ã³ããŒãã
config.yamlãã¡ã€ã«ãç·šéããŠã䜿çšããã¢ãã«åãèšå®ããŸãïŒcheckpoint: (䜿ããããã§ãã¯ãã€ã³ãã¢ãã«å).safetensors image-size: height: 1024 width: 1024 lora: - enabled: false model: (䜿ãããLoRAã¢ãã«å).safetensors strength: 1.0 trigger: sampling: cfg: 5 steps: 24 vpred: true -
èšå®é ç®ã®èª¬æïŒ
checkpoint: 䜿çšããåºæ¬ã¢ãã«ã®ãã¡ã€ã«åïŒäŸïŒanimagine-xl-3.0.safetensorsïŒimage-size: çæããç»åã®ãµã€ãºèšå®lora: LoRAã¢ãã«ã®èšå®enabled: LoRAãæå¹ã«ãããã©ããïŒtrueãŸãã¯falseïŒmodel: 䜿çšããLoRAã¢ãã«ã®ãã¡ã€ã«åstrength: LoRAã®é©çšåŒ·åºŠïŒ0.0ã1.0ïŒtrigger: LoRAã®ããªã¬ãŒã¯ãŒã
sampling: ãµã³ããªã³ã°èšå®cfg: CFGã¹ã±ãŒã«å€steps: çæã¹ãããæ°
vpred: v-predictionã䜿çšãããã©ãã
ã¢ãã«ãã¡ã€ã«ã¯ComfyUIã®é©åãªãã£ã¬ã¯ããªã«é 眮ãããŠããå¿ èŠããããŸãã
ollamaã®èšå®
çæãããç»åã®ãã£ãã·ã§ã³ãååŸããããã« ollama ã§äœ¿çšãã vision ã¢ãã«èšå®ãã¡ã€ã«ãäœæããå¿ èŠããããŸãã以äžã®æé ã§èšå®ãè¡ã£ãŠãã ããïŒ
ollama.yaml ãç·šéãã
vision_model: ç»åè§£æã§ãã£ãã·ã§ã³ãçæãã ollama ã® vision 察å¿ã¢ãã«å
å©çšå¯èœãªããŒã«
-
generate_picture - ããã³ããã«åºã¥ããŠç»åãçæ
@mcp.tool() def generate_picture(prompt: str) -> str: """çæãããããã³ãããæž¡ãããšã§ç»åçæãäŸé Œããçæããã image ã® url ãè¿ã""" -
get_picture - æå®ãããç»åã®PNGãã€ããªããŒã¿ãååŸ
@mcp.tool() def get_picture(subfolder: str, filename: str) -> Image: """subfolder ãš filename ãæå®ããŠç»åã® PNG ãã€ããªãååŸãã""" -
get_caption - ç»åã®ãã£ãã·ã§ã³ãããã¹ã圢åŒã§ååŸ
@mcp.tool() def get_caption(subfolder: str, filename: str) -> str: """subfolder ãš filename ãæå®ããŠçæããç»åã®ãã£ãã·ã§ã³ãããã¹ã圢åŒã§ååŸãã""" -
get_tag - ç»åããWD1.4ã¿ã°ãè§£æããŠååŸ
@mcp.tool() def get_tag(subfolder: str, filename: str) -> str: """subfolder ãš filename ãæå®ããŠçæããç»åããWD1.4ã¿ã°ãè§£æããŠããã¹ã圢åŒã§ååŸãã"""
custom workflow ã®å©çš
src\fm_mcp_comfyui_bridge\config\workflow\ ã®äžã« API 圢åŒã® workflow ãã¡ã€ã«ã眮ããŠãã«ã¹ã¿ã ã¯ãŒã¯ãããŒãšããŠå®è¡ããããšãã§ããŸãã
src\fm_mcp_comfyui_bridge\config\custom.yaml ãååšããŠãããã«ã¹ã¿ã ã¯ãŒã¯ãããŒãšããŠå®è¡ãããŸãã
ååšããªãå Žåã¯ããã©ã«ãã®ã¯ãŒã¯ãããŒãå®è¡ãããŸãã
example/ ãã£ã¬ã¯ããªã«ãµã³ãã«ã®ã«ã¹ã¿ã ã¯ãŒã¯ãããŒãã¡ã€ã«ã眮ããŠããŸãã
config ã®äžã«ã³ããŒããŠåäœã詊ããŠãã ãããFlux1-dev ã§ç»åçæãè¡ããµã³ãã«ãšãªã£ãŠããŸãã
ã«ã¹ã¿ã ã¯ãŒã¯ãããŒã«ã€ããŠã®è©³çŽ°ã¯ [README_custom_workflow.md] ãåç §ããŠãã ããã
ãµã³ãã«ããã³ãã
"1girl, cute cat ear maid" ã§ç»åãçæããŠãã ãã
ç»åçæåŸ
ç»åã®ãã£ãã·ã§ã³ã衚瀺
WD14ã¿ã°ã衚瀺
ç»åçæã®ããã³ããã以äžã«æ·»ä»ãããŠããŸãã
ãŸãã¯ãŠãŒã¶ãŒããã®ããã³ããã§ã©ããªçµµãæãããããšããŠããããåæããŠãã ããã
ãŠãŒã¶ãŒã®æå³ã«å¯Ÿãããã³ãããäžåãããããã¯ããè¯ã衚çŸãããå Žåã¯æå³ã厩ããªãç¯å²ã§ä¿®æ£ãå ããŠæ§ããŸããã
ãŠãŒã¶ãŒãäžããããã³ããã comfyui MCP ã䜿ã£ãŠç»åã«ããŠãã ãããcomfyui ã«äžãã prompt ã¯è±èªããåãä»ããªãã®ã§ããã³ããã¯å¿
ãè±èªããããã§ããã ã danbooru tag ã«ç¿»èš³ã㊠generate ãäŸé ŒããŠãã ãããgenerate ã®å®è¡çµæãšããŠè¿ãæååã¯URLã§ããçæã®çµæãšããŠãã® URL ã以äžã® markdown ãã©ãŒãããã§è¡šç€ºããŠãã ããã

danbooru tag ã«ãããã¯ãªãªãã£ã¿ã°ã¯ä»¥äžã§ããé ã«å¿
ã远å ããããã«ããŠãã ããã
"masterpiece, best quality, newest,"
çæããããªã³ã¯ã¯ç»åãã¡ã€ã«ãžã®ãªã³ã¯ã§ãããªã³ã¯ã®ãã©ã¡ãŒã¿ã«ãã subfolder ãš filename ã䜿ã£ãŠ comfyui MCP ã® get_caption ãš get_tag äž¡æ¹ãååŸããŠãç»åã«äœãæ ã£ãŠãããã確èªããŠãã ãããããããã£ãã·ã§ã³ïŒã¿ã°æ
å ±ãšç®æããŠããããã³ãããåæãç°ãªã£ãŠããããå
ã®ããã³ããã®æå³ãžè¿ã¥ãããããããè¯ãããã³ããã«ãªãããç·šéããç»åçæãç¹°ãè¿ããŠãã ãããããã³ããã§æç€ºããŠããã®åèªãèªèãããªãããšããããŸããäžã€ã®è¡šçŸã«åºå·ããã®ã§ã¯ãªããç®æããŠãããã®ãå¥ã®è¡šçŸã§å®çŸããããšãç®æããŠã¿ãŠãã ããã
æå€§ã§ 8åç¹°ãè¿ããªããããè¯ãããã³ãããæ§ç¯ããŠãããŸãã
## prompt
女ã®åãšç«ãšãªãã³ã°ãçªããæããæ¥ã®æ¥å·®ããå·®ã蟌ãã§ããŠããã®æããå
ãåããŠç«ãšå¥³ã®åãå±
ç ããããŠãããéšå±ã¯ãããŒãªã³ã°ã ããã©ã°ãšã¯ãã·ã§ã³ãããããã®ã¯ãã·ã§ã³ãæã«ããŠãããå¯ã女ã®åã®é ã«ç«ãããå¯ã£ãŠããŠã仲ããããããç©ãããªæ¥åžžã®é¢šæ¯ã
APIãªãœãŒã¹
@mcp.resource("info://about")
def get_info() -> str:
"""ãµãŒããŒæ
å ±"""
@mcp.resource("help://tools")
def get_tools_help() -> str:
"""ããŒã«ã®ãã«ã"""
@mcp.resource("docs://{topic}")
def get_documents(topic: str) -> str:
"""tool ã®ããã¥ã¡ã³ã"""
ð äŸåé¢ä¿
äž»ãªäŸåé¢ä¿ã¯ä»¥äžã®éãã§ãïŒ
mcp[cli]>=1.6.0- MCPãµãŒããŒãã¬ãŒã ã¯ãŒã¯requests>=2.32.3- HTTPãªã¯ãšã¹ãåŠçhuggingface-hub>=0.25.2- Hugging Faceã¢ãã«ãªããžããªã¢ã¯ã»ã¹numpy>=2.1.2- æ°å€èšç®ã©ã€ãã©ãªollama>=0.3.3- ããŒã«ã«LLMãµããŒãonnxruntime>=1.19.2- ONNXã¢ãã«å®è¡ç°å¢pandas>=2.2.3- ããŒã¿åæã©ã€ãã©ãª
ð ã©ã€ã»ã³ã¹
ãã®ãããžã§ã¯ãã¯MITã©ã€ã»ã³ã¹ã®äžã§å ¬éãããŠããŸãã詳现ã«ã€ããŠã¯ãã¡ã€ã«ãåç §ããŠãã ããã
ð€ äœè
- rerofumi - GitHub - rero2@yuumu.org
*WD1.4ã¿ã°è§£æéšå㯠SmilingWolf æ°äœæã® wd-tagger ã®ãœãŒã¹ã³ãŒããšã¢ãã«ããŒã¿ã䜿çšããŠããŸããã¢ãã«ããŒã¿ã¯ååå®è¡æã«ããŠã³ããŒããããŸãã