返回市场
舒适UI-MCP服务器

舒适UI-MCP服务器

作者:joenorton132 星标更新:2025-03-07

项目介绍

ComfyUI MCP 服务器

一个基于轻量级 Python 的 MCP(模型上下文协议)服务器,通过与本地 ComfyUI 实例交互,通过 AI 代理请求生成图像。

概述

该项目允许 AI 代理使用 MCP 协议通过 WebSocket 向 ComfyUI 发送图像生成请求。它支持:

  • 灵活的工作流选择(例如:basic_api_test.json)。
  • 动态参数:promptwidthheightmodel
  • 返回由 ComfyUI 提供的图像 URL。

预备条件

  • Python 3.10+
  • ComfyUI:已安装并运行在本地(例如:localhost:8188)。
  • 依赖项requestswebsocketsmcp(通过 pip 安装)。

设置

  1. 克隆仓库

    git clone <your-repo-url>
    cd comfyui-mcp-server
    
  2. 安装依赖项

    pip install requests websockets mcp
    
  3. 启动 ComfyUI

    • 安装 ComfyUI(参见 ComfyUI 文档)。
    • 在 8188 端口上运行:
      cd <ComfyUI_dir>
      python main.py --port 8188
      
  4. 准备工作流

    • 将 API 格式的工作流文件(例如:basic_api_test.json)放置在 workflows/ 目录中。
    • 从 ComfyUI 的 UI 导出工作流时选择“保存(API 格式)”(在设置中启用开发者模式)。

使用方法

  1. 运行 MCP 服务器

    python server.py
    
    • 监听 ws://localhost:9000
  2. 使用客户端测试

    python client.py
    
    • 发送示例请求:“一只戴着墨镜的狗”,尺寸为 512x512,使用 sd_xl_base_1.0.safetensors 模型。
    • 输出示例:
      服务器响应:
      {
        "image_url": "http://localhost:8188/view?filename=ComfyUI_00001_.png&subfolder=&type=output"
      }
      
  3. 自定义请求

    • 修改 client.py 中的 payload 来更改 promptwidthheightworkflow_idmodel
    • 示例:
      "params": json.dumps({
          "prompt": "一只太空中的猫",
          "width": 768,
          "height": 768,
          "workflow_id": "basic_api_test",
          "model": "v1-5-pruned-emaonly.ckpt"
      })
      

项目结构

  • server.py:具有 WebSocket 传输和生命周期支持的 MCP 服务器。
  • comfyui_client.py:与 ComfyUI 的 API 进行交互,处理工作流队列。
  • client.py:用于发送 MCP 请求的测试客户端。
  • workflows/:存放 API 格式的 JSON 工作流文件的目录。

注意事项

  • 确保所选的 model(例如:v1-5-pruned-emaonly.ckpt)存在于 <ComfyUI_dir>/models/checkpoints/ 中。
  • MCP SDK 缺少原生的 WebSocket 传输;这里使用了自定义实现。
  • 对于自定义工作流,如有需要,请调整 comfyui_client.pyDEFAULT_MAPPING 的节点 ID。

贡献

欢迎提交问题或 PR 以增强灵活性(例如:动态节点映射、进度流传输)。

许可证

Apache 许可证