ComfyUI MCP服务器

一个通过MCP协议暴露ComfyUI功能的服务器,支持通过ChatGPT和Chrome扩展进行远程控制。

  • by orion4d
  • Python
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 orion4d/ComfyUI_mcp

使用说明

🧠 ComfyUI 的 MCP 服务器(Alpha-1 版本)

这个项目揭示了 ComfyUI(注:ComfyUI是一个用于图形处理或界面设计的软件或框架名称,直接翻译为中文时通常保留原名,不进行意译) 通过兼容的服务器 MCP(模型上下文协议)。

它允许:

  • 驾驶 ComfyUI(可直接作为专有名词保留,若需解释性翻译,可译为“舒适用户界面”或根据具体上下文调整) 通过连接器从ChatGPT获取(开发者模式);
  • 操控界面 ComfyUI(注:这是一个专有名词,通常直接保留原样,不进行翻译,但如果需要解释性说明,可以理解为“舒适的用户界面”或“便捷的用户界面工具”,具体根据上下文确定。) 通过Chrome的WebSocket扩展程序。

即将推出:本地版Gradio接口,支持Ollama和Google CLI


⚙️ 安装

1️⃣ 克隆仓库

git clone https://github.com/orion4d/ComfyUI_mcp.git

2️⃣ 创建虚拟环境

python -m venv venv
# Linux / Mac
source venv/bin/activate
# Windows
venv\Scripts\activate

3️⃣ 安装依赖项

pip install -r requirements.txt

🔐 生成密钥和配置

python generate_key.py

这个脚本:

  • génère MCP_API_KEY (针对ChatGPT)
  • génère WEBSOCKET_TOKEN 翻译为中文是:“WebSocket令牌”或“WebSocket令牌值”。 (适用于Chrome扩展)
  • 自动创建 .env 和 .env.example

🚀 服务器启动

python server.py

服务器默认启动于:
http://127.0.0.1:8000


🌐 接入点

🔧 MCP 工具展示

  • list_workflows, save_workflow, load_workflow
  • read_custom_node, write_custom_node
  • queue_prompt, get_history
  • create_custom_node_template, list_custom_subdir
  • ui_click_element, ui_fill_input, ui_get_current_workflow

🧩 路由调试

  • /debug/health → 系统信息、版本、工具
  • /ws → Chrome扩展的WebSocket

🧱 使用示例

自ChatGPT(自定义GPT)以来

  • 认证: X-API-Key → 你的钥匙 MCP_API_KEY
  • 可能的呼叫: list_workflows, queue_prompt, read_custom_node等。

通过Chrome(MCP扩展)

  • URL WebSocket: ws://127.0.0.1:8000/ws
  • 代币: WEBSOCKET_TOKEN(可译为“WebSocket令牌”)

🧠 集成ComfyUI

客户(ComfyUIClient) 通过HTTP与您的本地ComfyUI通信:

  • 网址: http://127.0.0.1:8188
  • 支持UI和API工作流
  • 通过自动转换 _convert_ui_to_api()

测试连接

curl http://127.0.0.1:8000/debug/health

📘 MCP–ComfyUI 命令

🗂️ 命令树状结构

ComfyUI
│
├── 🧠 Exécution (moteur)
│   ├─ /queue_prompt
│   ├─ /get_queue_status
│   ├─ /cancel_prompt
│   ├─ /get_history
│   └─ /interrupt_execution
│
├── ⚙️ Système & Modèles
│   ├─ /get_system_stats
│   ├─ /list_models
│   └─ /model_info
│
├── 🧩 Workflows
│   ├─ /save_workflow
│   ├─ /load_workflow
│   ├─ /list_workflows
│   └─ /inspect_workflow
│
├── 🔧 Custom Nodes (→ ComfyUI/custom_nodes/)
│   ├─ /create_custom_node_template
│   ├─ /write_custom_node
│   ├─ /read_custom_node
│   ├─ /list_custom_subdir
│   └─ /autodoc_nodes
│
├── 🖼️ Images
│   ├─ /upload_image
│   ├─ /get_image
│   └─ /list_output_images
│
└── 📂 MCP_exchange (→ output/MCP_exchange/)
    ├─ /list_exchange
    ├─ /read_exchange
    ├─ /write_exchange
    └─ /delete_exchange

🧠 执行 & 文件

  • /队列提示(或:排队提示) → 执行工作流
  • /获取队列状态 → 队列状态
  • 获取历史记录 → 提示的历史记录
  • /取消提示 → 取消一个提示
  • /中断执行 → 停止所有正在进行的操作

⚙️ 系统与模型

  • 获取系统统计信息 → GPU、RAM、版本信息
  • /列出模型 → 列出可用的型号
  • /模型信息 → 模型的详细信息

🧩 工作流程

  • 保存工作流程 → 保存工作流程
  • /加载工作流 → 加载工作流
  • /列出工作流 → 列出所有工作流程
  • /检查工作流程 → 分析结构

🖼️ 图片与文件

  • /列出输出图像 → 查看生成的图像
  • /获取图片 → 恢复图像
  • 上传图片 → 发送入口图片

🔧 自定义节点

  • /创建自定义节点模板 → 创建节点骨架
  • /编写自定义节点 → 创建一个node文件
  • /读取自定义节点 → 读取节点的代码
  • /列出自定义子目录 → 探索自定义文件夹
  • /autodoc_nodes(可翻译为)/自动文档节点 → 生成所有自定义节点的文档

🖥️ 界面(Chrome 用户界面)

  • /ui_click_element 翻译为中文是:“点击界面元素” → simuler un clic
  • /ui_fill_input 可以翻译为“界面填充输入”或“UI输入填充”,具体取决于上下文环境,但通常指的是在用户界面(UI)中进行输入或填充内容的操作 → 填写文本字段
  • /获取当前工作流 → 恢复显示的工作流

📂 结构 MCP_exchange

这个目录作为交流空间,供 MCP–ComfyUI(注:这个翻译保持了原名的结构,直接翻译为“MCP-舒适用户界面”,但通常我们会根据上下文或具体产品来确定更准确的中文名称,如果“ComfyUI”有特定的中文译名或品牌名,应使用那个译名。) 以及你当地的环境。
以下所有命令仅与文件夹交互:
output/MCP_exchange/

🔍 列出文件

call_tool /MCP-ComfyUI/.../list_exchange {"limit": 200, "exts": "png,jpg,jpeg,webp,bmp,tif,tiff,txt,md,html,htm,json,js,py,css"}

📖 读取文件

call_tool /MCP-ComfyUI/.../read_exchange {"name": "nom_du_fichier.txt", "as_data_url": true}

✏️ 写一个文件

call_tool /MCP-ComfyUI/.../write_exchange {"name": "nouveau_fichier.md", "content": "contenu du fichier", "mode": "text", "overwrite": true}

可用模式: text, base64, data_url。

❌ 删除文件

call_tool /MCP-ComfyUI/.../delete_exchange {"name": "fichier_a_supprimer.json"}

🧭 典型用法

  • 导出生成的结果或图像以供检查。
  • 导入脚本、工作流JSON或数据集。
  • 实现MCP与ComfyUI之间的自动化交互。

完整路径: ComfyUI/output/MCP_exchange/

其他命令(工作流、模板、节点)在其他地方起作用;而这个组仅限于管理交换文件。