Skip to main content
comfyui-mcp 是标准的 stdio MCP 服务器,所以任何具备 MCP 能力的智能体都能驱动它 —— 不只是 Claude Code。本页覆盖我们一等支持的套件(Hermes Agent、OpenClaw、 Copilot CLI)、你的模型需要带上什么,以及让小型 / 本地模型能用的紧凑工具模式

模型要求

对自己带来的模型要诚实。完整体验的最低规格是带 工具调用 + 思考 + 视觉 的模型: 符合完整规格的托管模型每月都在变 —— 查你服务商的模型卡上这三项能力,不要信一份名单。 截至 2026 年中:Xiaomi MiMo-V2.5(视觉 + 工具 + 长上下文)便宜地符合完整规格; DeepSeek-V3.x / GLM / MiniMax 级模型有很强的工具调用 + 思考,但纯文本变体会丢掉 视觉循环;小型本地模型(见下)通常保住工具调用、丢掉其余。

紧凑工具模式

完整面是 37 个工具,带着丰富的 JSON schema(约 200 KB,大约 5 万 token,每次 tools/list)。大多数非 Claude 套件会把每个已注册 schema 直接注入模型上下文 —— 对 前沿模型没问题,对 4B 本地模型是致命的。紧凑工具模式正好注册三个元工具, 并把真正的目录放在它们后面: 模型的循环是:list_tools → 挑选 → describe_toolcall_tool。schema 一次只进 一个工具的上下文。元工具故意容忍小型模型的怪癖:args 可以是对象 JSON 编码的 字符串,常见字段别名(tool_namearguments)会被接受,校验错误会带着期望的 schema 回来,好让模型自己纠正,而不是死在一条不透明的协议错误上。 紧凑是可选开启 —— 直接面是默认,所以小型模型需要下面之一(标志优先于环境变量):
默认适合前沿模型套件(Claude Code / Cursor / Claude Desktop),它们的客户端能很好地 处理大工具列表。--full 仍然接受,现在是空操作。

自动选择:按模型,不按服务商

在面板的本地 LLM 后端(Ollama / LM Studio / llama.cpp / 兼容 OpenAI)里,当你没有 选过模式时,由模型来选:
  • 模型 id 带着参数量且达到或超过 70B 的(llama3.3:70bgpt-oss:120bmixtral:8x22b)拿到完整面;
  • 更小的保持紧凑
  • 没有可读参数量的模型 id(moonshotai/kimi-k2.5)当作未知,不当作小,拿到文档 里写的紧凑回退。
「Ollama ⇒ 紧凑」两个方向都错 —— 70B 本地模型扛得住完整面,没必要被瘸掉;一些小型 托管模型却想要紧凑。所以信号是模型。 你的选择永远赢,两个方向都是。 COMFYUI_MCP_TOOL_MODE=full 会把完整面硬塞给 4B 模型;COMFYUI_MCP_TOOL_MODE=compact 会把路由器硬塞给 405B。自动选择只填「什么都没 选」的缺口。 70B 阈值故意保守:这是任何人在这条轴上真正断言过的唯一数字,所以没有什么是靠猜提上去 的。COMFYUI_MCP_FULL_SURFACE_MIN_PARAMS_B=30 会把它调低,如果你想找到硬件真正的 天花板。 系统提示跟着模式走。 紧凑提示告诉模型它有六个工具,并把 ComfyUI 走 call_tool; 选了完整面时那句话就是假的,所以完整模式提示说 ComfyUI 工具直接广告,路由器描述只留给 panel_*。自动选了完整面却否认工具存在,会比它替换掉的默认更糟。 当前模式以及原因会打在后端的就绪行上,例如 Tool mode: compact — chosen for this MODEL: "qwen3:4b" is ~4B parameters, below the 70B full-surface threshold…,于是这根 杠杆再也不会隐形。
这套自动选择覆盖面板的本地 LLM 通道。Codex / Gemini / Grok / Copilot HTTP 通道出于 另一个原因钉在紧凑 —— 它们自己的工具预算否则会挤掉 panel_* 工具 —— 独立 MCP 服务器 的默认不变。

音频输入

ollama 后端上(原生 /api/chat,音频只在模型实际报告它能听时才到达模型。 发送之前,后端会为那个模型问 POST /api/show 的能力:
如果选中的模型没有 audio 能力,附件会被大声拒绝 —— 带着服务器报告的能力列表, 以及一条能听的模型的 pull 命令 —— 而不是丢进请求里,让模型只根据你的文本回答。文件 不是音频格式,或存在但零字节,同样如此。 把字节送过去还不是整份工作。对着 gemma4:e2b 现场测过:WAV 明确在上下文里(555 个 提示 token,/api/show 报告 audio),模型仍然回答 「我没有转录音频的能力 —— 我的 功能仅限于操作 ComfyUI」。面板系统提示把它塑造成节点图操作员,小型模型会把自己从 它实际拥有的感官里推理出去。所以一轮音频经过能力检查并附着之后,还会带一条短说明, 告诉模型音频在那里、它该根据听见的来回答。有了那条说明,同一个模型四次运行里四次都 转录对了。 在兼容 OpenAI 的后端上(LM Studio、llama.cpp、OpenRouter、自定义)没有可以问的 能力端点。音频作为 input_audio 内容块发送,这一轮带着一句明确的 「我无法确认模型 真的收到了它们」。拒绝会把音频拒给每一个只是没有能力 API 的端点;跑不起来的护栏不是 判决 —— 但也不是确认,措辞就是这么说的。 每个其他服务商做什么,见 后端 → 音频输入

一条命令完成设置

comfyui-mcp setup <agent> 把服务器条目写进该套件自己的配置文件(与已经在那里的东西 合并 —— 已有服务器、YAML 里的注释,全部保留):
标志:--compact / --full 覆盖按智能体的默认,--comfyui-url <url> 嵌入你的 ComfyUI 目标(本地、局域网或 RunPod 代理 URL),--dry-run 打印合并后的配置而不写入。

Hermes Agent

会在 ~/.hermes/config.yaml 里产出这个(更想手写也可以):
/reload-mcp 重载(或重启 Hermes)。Hermes 会给工具加前缀,所以模型看见的是 mcp_comfyui_list_toolsmcp_comfyui_describe_toolmcp_comfyui_call_tool —— 上下文里三个定义,而不是两百个。
在前沿模型上(经 Nous Portal / OpenRouter)你可以带着 --full 再跑一次 setup,并 可选使用 Hermes 自己的 tools.include 允许列表。对任何更小的东西,紧凑都是正确默认。
Hermes 还自带一个捆绑的 comfyui 技能,用 Python 脚本经原始 REST 驱动 ComfyUI。 它能用,但早于这台服务器 —— MCP 路径给你工作流编写 / 校验、模型 + 自定义节点管理、 安装包、队列控制和自诊断。如果智能体一直伸手去够技能而不是 MCP 工具,就关掉那个技能。

OpenClaw

会在 ~/.openclaw/openclaw.json 里产出这个:
重启 OpenClaw 网关以加载服务器。OpenClaw 的文档建议把 MCP 工具数量保持得低 —— 这正是 紧凑模式的用途,也是这里默认它的原因。

Copilot CLI

会在 ~/.copilot/mcp-config.json 里产出这个:
Copilot CLI 跑前沿模型,所以 setup 默认是完整工具面(如果你把 Copilot 指到更小的 模型,传入 --compact)。在 copilot 里用 /mcp show 检查。

我们微调的本地模型(免费、推荐)

如果你想在本地免费跑智能体,从这里开始。我们专门为 comfyui-mcp 微调了 Gemma 4 家族:在对着一台实时 ComfyUI 合成的 1,055 条经服务器核实的工具使用轨迹 上做 QLoRA 训练 —— 覆盖完整 178 工具面(113 个 MCP + 65 个面板工具)—— 于是模型原生 认识这一套工具,而不是冷遇见它。
测过的,不是许诺的 —— LLM 竞技场 在真实 10 场景阶梯上的分数 (三次取最好,每个结果都对照实时 ComfyUI 服务器核实,RTX 4090): 现在每一档都超过它的原版底座。:e2b v2 重训(双视角训练:直接工具调用 以及 部署 的路由器信封)修好了 v1 的 call_tool 格式回退 —— 裁决运行里零个畸形信封。体量指引 仍然成立::e4b 是甜点(只比 e2b 多约 1.5 GB,竞技场 +4);:e2b 现在是显存紧时的 正经选择;:12b 买的是长多步任务上的稳,不是原始分数。 面板的 Ollama 后端默认 :e4b —— 在后端选择器里选 Ollama(本地),模型拉下来 就能用。无需账号,无需 API 密钥,没有按 token 费用。 上下文窗口: 这些标签烤进了 65,536 token 窗口,编排器听从它(原版模型拿 16K)。 架构支持到 128K:e2b/:e4b)和 256K:12b)—— 有显存就用 COMFYUI_MCP_OLLAMA_NUM_CTX=131072 调高(KV 缓存随窗口涨)。如果智能体开始在对话 中途「忘记」,看编排器日志:一轮填满窗口的 ≥85% 时它会警告。权重、LoRA 适配器和训练 管线是开放的:artokun/gemma4-comfyui-mcp (数据集:artokun/comfyui-mcp-trajectories)。

LM Studio

面板原生说 LM Studio:在后端选择器里选 LM Studio,编排器驱动它的本地服务器 (http://127.0.0.1:1234/v1,用 COMFYUI_MCP_LMSTUDIO_HOST 覆盖)。设置是两下点击: 从 lmstudio.ai 安装,然后 Developer → Start Server,并加载 一个支持工具调用的模型。模型选择器镜像服务器提供的任何东西;没设默认时,自动采用 第一个在服务的模型。编排器全生命周期放手管理:需要时自动启动服务器,JIT 加载你的 模型,ComfyUI 渲染跑着时释放它的显存(聊天被按住,渲染结束再答),换模型时卸载离去的 模型,切到别的服务商时释放一切。 我们微调的 GGUF 在这里也能用 —— 在 LM Studio 的模型下载器里搜 artokun/gemma4-comfyui-mcp,拿一个 model-q4_k_m.gguf。预期第一次消息会有和 Ollama 一样的 JIT 冷加载停顿(30 秒以上是正常的)。

llama.cpp(llama-server)

跑原始 llama.cpp?在后端选择器里选 llama.cpp —— 编排器驱动 llama-server 兼容 OpenAI 的端点(http://127.0.0.1:8080/v1,用 COMFYUI_MCP_LLAMACPP_HOST 覆盖):
现场注意:上下文是启动标志-c)—— 服务器跑在 16K 以下时智能体会警告(工具 载荷需要它)。当前构建默认打开工具调用;更旧的构建需要 --jinja(面板在连接时 检测到不会工具的服务器,会原样这么说)。自动采用那个唯一已加载的模型 —— 不用挑。 在单 GPU 盒子上,本地 llama-server(或前面再套 llama-swap)加入和 Ollama、 LM Studio 一样的显存交接:ComfyUI 渲染跑着时,你的聊天被按住,渲染一结束就答。因为 llama-server 没有卸载 API(llama-swap 则在需要时在上游换模型),交接只是按住 —— 没有东西被显式卸载或预热。远程 COMFYUI_MCP_LLAMACPP_HOST 是别人的 GPU,永远 不会被门住。交接对三个本地后端默认打开;用 COMFYUI_MCP_PAUSE_LOCAL_ON_GEN=0 退出 (旧的 COMFYUI_MCP_OLLAMA_PAUSE_ON_GEN=0 仍然被尊重)。

自定义端点(任何兼容 OpenAI 的服务器)

任何说 /v1/chat/completions 的东西 —— vLLM、DeepSeek、Together、Azure OpenAI、 另一台盒子上的 llama-server、公司网关 —— 都能作为自定义端点服务商插进来:
  1. ComfyUI 设置 → Comfy MCP Agent → 自定义端点 → 设置 端点基址 URL (带上 /v1,例如 http://192.168.1.20:8000/v1)。
  2. 如果服务器需要密钥:设置 API 密钥… —— 遮罩输入;密钥由编排器按 0600 存在 ~/.comfyui-mcp,从不进 ComfyUI 设置或聊天。
  3. 在后端选择器里选 自定义端点 并连接。
模型列表来自服务器的 /v1/models;单模型服务器会自动采用,或不列出模型的端点请显式 设一个 默认模型 id。环境逃生口:COMFYUI_MCP_CUSTOM_BASE_URLCOMFYUI_MCP_CUSTOM_MODELCOMFYUI_MCP_CUSTOM_API_KEY。模型必须支持工具调用

Ollama 与本地模型 —— LLM 竞技场

任何和 Ollama(或兼容 OpenAI 的端点)说话的 MCP 套件,都能用本地模型驱动紧凑模式。 仓库里带两套可重复的套件:npm run test:local-llm(快速单模型检查)和 node scripts/llm-arena.mjs —— ComfyUI LLM 竞技场,让一群模型对着实时 ComfyUI 跑同一套任务,并对照服务器核实每一个结果,从不信模型自己说的。 完整 10 场景阶梯上的本地档分数(RTX 4090,ComfyUI 0.27,temperature 0 —— 任务阶梯 和含前沿、托管模型的全档排行榜见 竞技场页): 要点:qwen3/gemma4 这一档稳稳过掉单工具任务(健康、已装模型、注册表搜索、队列), 并在更难的带上捡分,但多阶段节点图编排(一张图两个管道输出、分阶段的两段 img2img 管线)仍是前沿 / B 档的地盘。llama3.1:8b 的工具格式纪律在这份目录上会崩(它幻觉 工具名,并把工具调用 JSON 当文本打印)。Gemma 4 全家族都带了原生函数调用(Ollama ≥ v0.20);e4b 或更大是甜点。 记住上面的能力阶梯:这些小型模型保住工具调用,但视觉和思考有限 / 没有,所以它们能 生成并管理工作流,却不能在视觉上批评结果。

本地模型上的侧边栏面板

面板智能体 在 Claude / ChatGPT / Gemini 之外多了一个 Ollama 后端:在后端选择器里选 Ollama(本地),编排器就用本地模型驱动你的实时节点图 —— 无需账号,无需 API 密钥,完全离线。模型看见的是 6 工具路由器(3 个紧凑 comfyui 元工具,加上实时画布用的 panel_list_tools / panel_describe_tool / panel_call_tool),所以即使 4B 模型也不会被 schema 淹死。默认模型: artokun/gemma4-comfyui-mcp:e4b —— 我们的 gemma4 微调,在这一套工具上训练(取代原版 gemma4:e4b, 以前的竞技场最佳);用 COMFYUI_MCP_OLLAMA_MODEL 或面板的模型选择器覆盖,选择器 列出你本地拉过的任何东西。预期相对前沿后端的诚实取舍:更慢的轮次(尤其是第一次, 模型加载时)、没有视觉、没有对话回滚。

你得到什么(得不到什么)

任何 MCP 客户端都能拿到完整工具面 —— 生成、工作流编写、模型、自定义节点、队列、 诊断 —— 两种工具模式都是。Claude Code 的插件附加(技能、斜杠命令、钩子、安装包、 侧边栏面板智能体)是插件功能,不会跟到其他套件。list_tools 目录设计成带着足够的 定向,好让没有那一层知识的智能体仍然找得到路。

故障排查

  • 模型用字符串化的 args 调用 call_tool —— 支持;服务器会自动解析 JSON 编码 的字符串。
  • 模型发明工具名 —— 未知名字会返回接近的匹配建议,外加指回 list_tools
  • 错误 / 缺失参数 —— 错误里带着工具的 JSON Schema;能做到的模型会在下一次尝试 自己纠正。
  • 模型从目录里回答、什么都不跑 —— 已知的小型模型失败模式;推它一把(「目录条目 是工具名,不是数据 —— 用 call_tool 跑工具」)。
  • ComfyUI 够不到 —— 紧凑模式只改工具的注册;连接配置和所有其他设置一样(见 配置)。