本项目是 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 客户端通信,提供工具注册和调用能力。
安装步骤
- 克隆仓库: 将项目仓库克隆到本地。
- 准备 ComfyUI: 本项目依赖于一个正在运行的 ComfyUI 服务器。请确保您已安装并启动 ComfyUI。
- 安装依赖: 使用 'uv' 或其他 Python 包管理器安装项目所需的依赖,包括 'mcp', 'websocket-client', 'python-dotenv'。例如,使用 'uv' 在项目根目录下运行命令安装:
uv sync --with mcp --with websocket-client --with python-dotenv - 配置 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与计算