本项目是 Model Context Protocol (MCP) 的一个服务器端实现,旨在将流行的图像生成工具 ComfyUI 的功能(如文本到图像生成、工作流执行等)通过标准化的 MCP 协议暴露给大型语言模型 (LLM) 客户端使用。

主要功能点

  • 图像生成工具 (text_to_image): 允许通过提供文字描述、种子、步数等参数,调用 ComfyUI 的预设工作流生成图像。可配置返回图像 URL 或图像二进制数据。
  • 图像下载工具 (download_image): 根据图像 URL 下载并保存图像到指定路径。
  • 工作流执行工具 (run_workflow_from_file / run_workflow_from_json): 支持通过提供 ComfyUI 工作流的 JSON 文件路径或直接提供工作流 JSON 数据来执行任意 ComfyUI 工作流。
  • 与 ComfyUI 集成: 作为 ComfyUI 的客户端运行,将 MCP 请求转换为对 ComfyUI API 的调用。
  • MCP 协议支持: 通过 JSON-RPC 协议与 MCP 客户端通信,提供工具注册和调用能力。

安装步骤

  1. 克隆仓库: 将项目仓库克隆到本地。
  2. 准备 ComfyUI: 本项目依赖于一个正在运行的 ComfyUI 服务器。请确保您已安装并启动 ComfyUI。
  3. 安装依赖: 使用 'uv' 或其他 Python 包管理器安装项目所需的依赖,包括 'mcp', 'websocket-client', 'python-dotenv'。例如,使用 'uv' 在项目根目录下运行命令安装:
    uv sync --with mcp --with websocket-client --with python-dotenv
  4. 配置 ComfyUI 连接: 复制项目根目录下的 'src/.env.example' 文件到 'src/.env',并编辑 '.env' 文件,设置 'COMFYUI_HOST' 和 'COMFYUI_PORT' 指向您的 ComfyUI 服务器地址。如果需要,还可以设置 'COMFYUI_AUTHENTICATION' 进行认证,以及 'RETURN_URL' 控制图像返回方式(默认返回 URL)。

服务器配置

本项目作为 MCP 服务器,需要由 MCP 客户端启动和管理。您需要在 MCP 客户端的配置文件(通常是 'mcp.json')中添加配置信息,告知客户端如何启动此服务器。配置信息包括服务器名称、启动服务器的命令以及相应的参数列表。

例如,使用 'uv' 运行的配置信息大致如下(请根据实际路径替换 'PATH/MCP/comfyui'):

  • 服务器名称: 例如 'comfyui' (自定义,用于 MCP 客户端引用)
  • 命令 (command): 'uv'
  • 参数列表 (args):
    • '--directory': 指定项目根目录的路径。
    • 'run': 'uv' 的运行命令。
    • '--with mcp': 确保运行环境中包含 'mcp' 依赖。
    • '--with websocket-client': 确保运行环境中包含 'websocket-client' 依赖 (用于连接 ComfyUI)。
    • '--with python-dotenv': 确保运行环境中包含 'python-dotenv' 依赖 (用于加载 '.env' 配置)。
    • 'mcp': 指定运行 'mcp' 模块。
    • 'run': 'mcp' 模块的运行命令。
    • 'src/server.py:mcp': 指定服务器入口文件和 MCP 应用实例。

如果使用 Docker 运行,命令和参数会有所不同,例如:

  • 服务器名称: 例如 'comfyui-docker'
  • 命令 (command): 'docker'
  • 参数列表 (args):
    • 'run': Docker 运行命令。
    • '-i': 保持标准输入打开。
    • '--rm': 容器停止后自动移除。
    • '-p 3001:3000': 将容器的 3000 端口映射到主机的 3001 端口(假设 MCP 默认监听 3000,这取决于服务器代码或 MCP 框架配置)。
    • 'overseer66/mcp-comfyui': 指定要运行的 Docker 镜像名称。

如果您使用 SSE 传输,配置信息会指定 URL 而非命令:

  • 服务器名称: 例如 'comfyui-sse'
  • URL (url): 'http://localhost:8001/sse' (请根据实际 SSE 服务器地址修改)

请参考您使用的 MCP 客户端的文档,将上述概念转换为具体的 JSON 格式配置。

基本使用方法

MCP 客户端(如 LLM Agent)在启动时会读取配置并启动此 MCP 服务器(如果尚未运行)。启动后,客户端会通过 MCP 协议感知到此服务器提供的工具(如 'text_to_image'),并在需要时调用这些工具。

例如,一个支持 MCP 的 LLM Agent 在接收到用户关于生成图像的请求时,可以解析用户意图和参数,然后通过 MCP 协议调用此服务器的 'text_to_image' 工具,并将用户提供的描述、种子等信息作为参数传递。服务器接收到请求后,会调用 ComfyUI API 执行工作流,并将结果(图像 URL 或数据)返回给 LLM 客户端。

用户与 LLM 的交互通常是自然语言,由 LLM 负责将用户的意图和参数映射到 MCP 工具的调用。例如,用户可能说:“帮我用种子 42 生成一张关于太空猫咪的图片”,LLM Agent 可能会调用此 MCP 服务器的 'text_to_image' 工具,传入 'prompt="太空猫咪"', 'seed=42', 以及默认的其他参数。

信息

分类

AI与计算