ComfyUI工作流程服务

一个将ComfyUI工作流程暴露为可调用MCP工具的服务,适用于自动化图像和音频生成场景。

  • by ModdingFox
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ModdingFox/comfyui_mcp

使用说明

康富友mcp

一个模型上下文协议(MCP)服务器,它公开 Comfy用户界面 工作流作为可调用的MCP工具。使用 FastMCP 和 comfyui实用程序.


安装

此包的内容需要Python 3.11或更高版本。

pip install comfyui-mcp

快速开始

mcpo --port 8000 --api-key "AwesomeKey" -- python3 -m comfyui_mcp.server

参数

ComfyUI连接(--comfyui.*)

  • --comfyui.host (默认值: 127.0.0.1:8188)-ComfyUI主机和端口
  • --comfyui.request_timeout (默认值: 5)-ComfyUI API请求的超时时间(以秒为单位)
  • --comfyui.use_remote_workflow (默认值: True)-从ComfyUI API中提取工作流(True)或从本地目录加载(False)
  • --comfyui.workflow_directory (默认值: workflows)-工作流JSON文件的本地目录路径

输出格式(--generate.*)

  • --generate.audio_url_template -音频输出URL模板(变量: {index}, {url})
  • --generate.image_url_template -图像输出URL模板(变量: {index}, {url})
  • --generate.unknown_url_template -未知输出类型的模板(变量: {index}, {url})
  • --generate.nothing_generated_message -工作流执行但不产生输出时的消息
  • --generate.reply_include_workflow (默认值: True)-在响应中包含已执行的工作流参数
  • --generate.reply_workflow_format_indent (默认值: 2)-用于工作流输出的JSON缩进
  • --generate.reply_workflow_format_sort_keys (默认值: True)-对工作流输出中的JSON键进行排序
  • --generate.reply_workflow_template -工作流参数部分模板(变量: {workflow_params})
  • --generate.result_generated_message_template -总体消息模板(变量: {image_list})

架构概述

src/comfyui_mcp/
  • __about__.py:版本和许可证元数据
  • argument_parser.py:使用pydantic的CLI参数定义
  • base_types.py:共享类型别名
  • function_utils.py:动态函数包装生成
  • workflow_loader.py:从磁盘或ComfyUI API加载工作流
  • workflow_utils.py:工作流准备和调用
  • server.py:FastMCP服务器入口点

运作原理

  1. 工作流程准备:

    • 对于本地工作流:以API格式导出ComfyUI工作流(使用ComfyUI菜单中的“保存(API格式)”)。将JSON文件放置在配置的工作流目录中。
    • 用于远程工作流:在ComfyUI中构建并保存工作流,然后启动或重新启动MCP服务器。服务器将自动从ComfyUI实例中获取和注册可用工作流。
  2. 工具注册:服务器解析工作流程JSON,并通过扫描以下内容自动检测参数:

    • 原始节点 (PrimitiveFloat, PrimitiveInt, PrimitiveString等)-提取为类型化参数
    • LoadImageOutput节点 -作为图像输入参数曝光
    • 节点标题(来自 _meta.title)成为MCP工具中的参数名称
  3. 工作流执行:当调用工具时:

    • 用户提供的参数被映射回其相应的基元节点
    • 工作流程被深度复制,参数值被注入 inputs.value 领域
    • 准备好的工作流程提交给ComfyUI的API
    • 投票结果将一直持续到完成
    • 生成的输出作为可访问的URL返回(格式可由用户配置)
  4. 批处理:支持 submit_batch 用于生成多种变体的参数:

    • 自动随机化每一代种子
    • 按顺序执行工作流
    • 收集并返回所有结果

发展

pip setup -hatch
hatch test
hatch build
hatch run release

贡献

  1. 在GitHub上分叉仓库。
  2. 进行更改、添加测试和构建
  3. 跑 hatch test 确保所有通行证
  4. 提交PR