Skip to main content
comfyui-mcp は標準の stdio MCP サーバーなので、MCP 対応の任意のエージェントが操作できます — Claude Code だけではありません。このページはファーストクラスでサポートするハーネス (Hermes Agent、OpenClaw、Copilot CLI)、モデルが持ってくるべきもの、小さな / ローカル モデルを成立させる コンパクトツールモード を扱います。

モデルの要件

持ってくるモデルについて自分に正直になってください。完全な 体験の最低仕様は、 ツール呼び出し + 思考 + ビジョン を持つモデルです: 完全仕様に合うホスト型モデルは月ごとに変わります — リストを信じるより、プロバイダーのモデル カードで 3 つの機能を確認してください。2026 年半ば時点: Xiaomi MiMo-V2.5(ビジョン + ツール + 長いコンテキスト)は安く完全仕様に合います。DeepSeek-V3.x / GLM / MiniMax クラスは強いツール呼び出し + 思考を持ちますが、テキストのみ版はビジョンループを失います。 小さなローカルモデル(下記)はたいていツール呼び出しを残し、残りを落とします。

コンパクトツールモード

完全な面は豊かな JSON スキーマ付き 37 ツールです(約 200 KB、だいたい 50k トークン、 tools/list ごと)。Claude 以外のほとんどのハーネスは、登録されたスキーマをすべてモデルの コンテキストへまっすぐ注入します — フロンティアモデルには問題なく、4B のローカルには致命的 です。コンパクトツールモード はちょうど 3 つのメタツール だけを登録し、本物のカタログを その後ろに置きます: モデルのループは: list_tools → 選ぶ → describe_toolcall_tool。スキーマは一度に 1 ツールずつコンテキストに入ります。メタツールは小さなモデルの癖に意図的に寛容です: args は オブジェクト または JSON エンコードされた文字列でもよく、よくあるフィールド別名 (tool_namearguments)を受け付け、検証エラーは期待スキーマ付きで戻るので、不透明な プロトコルエラーで死ぬ代わりに自己修正できます。 コンパクトは オプトイン です — 直接の面が既定なので、小さなモデルには次のいずれかが必要です (フラグが環境変数より勝ちます):
既定はフロンティアモデルのハーネス(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 で下げれば、ハードウェアの 天井が本当にどこか探せます。 システムプロンプトはモードに従います。 コンパクトのプロンプトは、ツールが 6 つあり 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 コマンド付きで — モデルがテキストだけから答えるリクエストへ 落とされる代わりに。音声形式でないファイル、または存在するが 0 バイトのファイルにも同じです。 バイトを届けることが仕事の全部ではありません。gemma4:e2b に対してライブで測ると: WAV が 明らかにコンテキストにあり(555 プロンプトトークン、/api/showaudio を報告)、モデルは それでも 「音声を書き起こす機能はありません — 私の機能は ComfyUI の操作に限られています」 と答えました。パネルのシステムプロンプトはグラフ操作者として扱い、小さなモデルは実際に持っている 感覚から自分を推論で外します。なので、機能確認され添付された音声のターンは、音声がそこにあること と、聞いたものから答えるべきだという短いメモも運びます。そのメモがあれば、同じモデルは 4 回中 4 回正しく書き起こしました。 OpenAI 互換バックエンド(LM Studio、llama.cpp、OpenRouter、カスタム)には聞く機能 エンドポイントがありません。音声は input_audio コンテンツパートとして送られ、ターンは明示的な 「モデルが実際に受け取ったかは確認できません」 行を運びます。拒否すると、機能 API がないだけの すべてのエンドポイントから音声を奪います。走れないガードは判定ではありません — 確認でもなく、 文言がそう言います。 他のすべてのプロバイダーがすることは バックエンド → 音声入力 を参照してください。

ワンコマンドセットアップ

comfyui-mcp setup <agent> はサーバー項目をハーネス自身の設定ファイルへ書き込みます (すでにそこにあるものとマージ — 既存サーバー、YAML のコメント、すべて保持):
フラグ: --compact / --full がエージェントごとの既定を上書き、 --comfyui-url <url> が ComfyUI の接続先(ローカル、LAN、または RunPod プロキシ URL)を 埋め込み、--dry-run は書く代わりにマージ済み設定を表示します。

Hermes Agent

これが ~/.hermes/config.yaml に次を出します(手で足しても構いません):
/reload-mcp で再読み込み(または Hermes を再起動)。Hermes はツールに接頭辞を付けるので、 モデルは mcp_comfyui_list_toolsmcp_comfyui_describe_toolmcp_comfyui_call_tool を見ます — コンテキストに 200 ではなく 3 つの定義です。
フロンティアモデル(Nous Portal / OpenRouter 経由)では、--full でセットアップを再実行し、 任意で Hermes 自身の tools.include 許可リストを使えます。それより小さいものにはコンパクトが 正しい既定です。
Hermes は Python スクリプトから素の REST で ComfyUI を操作する同梱 comfyui スキル も 出荷します。動きますが、このサーバーより前のものです — MCP 経路はワークフロー作成 / 検証、 モデル + カスタムノード管理、インストーラーパック、キュー制御、自己診断を得られます。 エージェントが MCP ツールではなくそちらに手を伸ばし続けるなら、スキルを無効にしてください。

OpenClaw

これが ~/.openclaw/openclaw.json に次を出します:
サーバーを取り込むため OpenClaw ゲートウェイを再起動してください。OpenClaw のドキュメントは MCP ツール数を低く保つことを推奨します — それがまさにコンパクトモードの用途で、ここでの既定に なっている理由です。

Copilot CLI

これが ~/.copilot/mcp-config.json に次を出します:
Copilot CLI はフロンティアモデルを動かすので、セットアップは フル ツール面を既定にします (より小さなモデルへ Copilot を向けているなら --compact を渡してください)。copilot 内で /mcp show で確認します。

当プロジェクトのファインチューニング済みモデル(無料・推奨)

エージェントを ローカルで無料で 動かしたいなら、ここから始めてください。Gemma 4 ファミリーを comfyui-mcp 向けにファインチューニングしました: ライブの ComfyUI に対して 合成した 1,055 本のサーバー検証済みツール使用軌跡 で QLoRA 学習 — 178 ツール面全体(113 MCP + 65 パネルツール)をカバー — なのでモデルはこの正確なツール 一式を、初めて会うのではなくネイティブに知っています。
約束ではなく測定LLM アリーナ の本物の 10 シナリオはしごのスコア (3 回中ベスト、すべての結果をライブの ComfyUI サーバーに対して検証、RTX 4090): どの段も素のベースを上回っています。:e2b v2 の再学習(デュアルビュー学習: 直接のツール 呼び出し デプロイされたルーター封筒)が v1 の call_tool 形式の退行を直しました — 判定実行で不正な封筒はゼロ。サイズ案内は変わりません: :e4b が最適点(e2b より約 1.5 GB 多いだけでアリーナ +4)。:e2b はいまタイトな VRAM の正当な選択。:12b は生スコアではなく、 長い多段階タスクでの安定を買います。 パネルの Ollama バックエンドは 既定で :e4b です — バックエンドピッカーで Ollama(ローカル) を選べば、モデルを取得したあとそのまま動きます。アカウント不要、 API キー不要、トークン単位の課金なし。 コンテキストウィンドウ: タグは 65,536 トークン のウィンドウを焼き込んで出荷し、 オーケストレーターはそれに従います(素のモデルは 16K)。アーキテクチャは最大 128K:e2b/:e4b)と 256K:12b)をサポートします — VRAM があれば 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/v1COMFYUI_MCP_LMSTUDIO_HOST で上書き)を駆動します。セットアップは 2 クリック: lmstudio.ai からインストールし、Developer → Start Serverツール呼び出し対応モデル を読み込みます。モデルピッカーはサーバーが提供するものを映し、 既定がなければ最初に出されたモデルが自動採用されます。オーケストレーターは ライフサイクル 全体 を手放しで管理します: 必要なときにサーバーを自動起動し、モデルを JIT 読み込みし、 ComfyUI レンダー中は VRAM を空け(チャットは保持され、レンダーが終わると答え)、モデル 切り替えで出ていくモデルをアンロードし、別プロバイダーへ切り替えるとすべてを解放します。 ファインチューニング済み 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/v1COMFYUI_MCP_LLAMACPP_HOST で上書き)を駆動します:
現場からのメモ: コンテキストは 起動フラグ-c)です — サーバーが 16K 未満で動いていると エージェントが警告します(ツールのペイロードに必要です)。ツール呼び出しは現行ビルドでは既定で オンです。古いビルドには --jinja が必要 です(パネルは接続時にツール非対応サーバーを検出し、 まさにそれを言います)。読み込まれた 1 つのモデルが自動採用されます — 選ぶ必要はありません。 1 GPU の箱では、ローカル の llama-server(またはその手前の llama-swap)が Ollama と LM Studio と同じ VRAM 引き渡しに加わります: ComfyUI レンダー中、チャットは保持され、レンダーが 終わった瞬間に答えます。llama-server にはアンロード API がなく(llama-swap は上流で需要に応じて モデルを入れ替える)、引き渡しは保持のみです — 明示的にアンロードもウォームもされません。 リモートCOMFYUI_MCP_LLAMACPP_HOST は他人の GPU であり、ゲートされません。引き渡しは 3 つのローカルバックエンドすべてで既定オンです。オプトアウトは 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 キーを設定… — マスク入力。キーはオーケストレーターが ~/.comfyui-mcp0600 で保存し、ComfyUI 設定やチャットには入りません。
  3. バックエンドピッカーで カスタムエンドポイント を選び、接続。
モデル一覧はサーバーの /v1/models から来ます。単一モデルサーバーは自動採用され、モデルを 一覧しないエンドポイントでは 既定モデル id を明示できます。環境の逃げ道: COMFYUI_MCP_CUSTOM_BASE_URLCOMFYUI_MCP_CUSTOM_MODELCOMFYUI_MCP_CUSTOM_API_KEY。 モデルは ツール呼び出し に対応している必要があります。

Ollama とローカルモデル — LLM アリーナ

Ollama(または OpenAI 互換エンドポイント)と話す任意の MCP ハーネスが、ローカルモデルで コンパクトモードを駆動できます。再現可能なハーネスがリポジトリに 2 つあります: npm run test:local-llm(速い単一モデル確認)と node scripts/llm-arena.mjsComfyUI LLM アリーナ。モデル群を ライブ の ComfyUI に対する同一タスクセットに通し、 すべての結果をモデルの主張ではなくサーバーに対して検証します。 完全な 10 シナリオはしごのローカル層スコア(RTX 4090、ComfyUI 0.27、temperature 0 — タスクのはしごと、フロンティアおよびホスト型モデルを含む全層リーダーボードは アリーナのページ を参照): 要点: qwen3/gemma4 クラスは単一ツールタスク(健全性、インストール済みモデル、レジストリ検索、 キュー)をしっかりクリアし、難しい帯でも点を拾いますが、多段階のグラフ構成(2 つのパイプ出力を 持つ 1 グラフ、ステージされた 2 段階 img2img パイプライン)はまだフロンティア / B-tier の領域です。 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 モデルでもスキーマに溺れません。既定モデル: artokun/gemma4-comfyui-mcp:e4b当プロジェクトの gemma4 ファインチューン。この正確なツール 一式で学習(以前のアリーナ最良だった素の gemma4:e4b を置き換え)。 COMFYUI_MCP_OLLAMA_MODEL またはパネルのモデルピッカーで上書きできます。ピッカーはローカルに 取得したものを一覧します。フロンティアバックエンドに対する正直なトレードオフを見込んでください: 遅いターン(特に最初。モデル読み込み中)、ビジョンなし、会話ロールバックなし。

得られるもの(得られないもの)

どの MCP クライアントも、どちらのツールモードでも 完全なツール面 — 生成、ワークフロー作成、 モデル、カスタムノード、キュー、診断 — を得ます。Claude Code の プラグイン追加分 (スキル、スラッシュコマンド、フック、インストーラーパック、サイドバーパネルエージェント)は プラグイン機能であり、他のハーネスへは渡りません。list_tools カタログは、その知識層のない エージェントでも道を見つけられるだけの案内を運ぶよう設計されています。

トラブルシューティング

  • モデルが文字列化した argscall_tool を呼ぶ — 対応済み。サーバーは JSON エンコードされた文字列を自動でパースします。
  • モデルがツール名を発明する — 未知の名前は近い一致の提案と、list_tools へのポインタを 返します。
  • 間違った / 欠けたパラメータ — エラーにツールの JSON Schema が含まれます。できるモデルは 次の試行で自己修正します。
  • モデルが何も走らせずカタログから答える — 既知の小さなモデルの失敗モードです。押してください (「カタログ項目はツール名でありデータではない — call_tool でツールを実行して」)。
  • ComfyUI に届かない — コンパクトモードが変えるのはツールの 登録 だけです。接続設定は 他のすべてのセットアップと同じです(設定 を参照)。