OpenBio Comfy MCP
OpenBio Comfy MCP
OpenBio Comfy MCP は、ライブの ComfyUI キャンバスで現在開いているワークフローを検査・編集するための、ローカル Model Context Protocol サーバー兼 ComfyUI V3 拡張機能です。ComfyUI のネイティブなグラフ、選択、グループ、ダーティ状態、およびアンドゥの動作を使用します。ワークフローの自動的なキュー投入、実行、保存は一切行いません。
[!IMPORTANT] 公開リリースは ComfyUI Manager からインストールできます。レジストリパッケージにはバンドルされた MCP サーバーが含まれているため、Manager ユーザーが
npm ciを実行する必要はありません。
機能
アクティブなキャンバスを、コンパクトで構造化された MCP 出力として検査します。
接続中の ComfyUI インスタンスにインストールされているすべてのノードタイプを検索します。
特定のノードタイプの完全なネイティブスキーマを検査します。
ワークフローを変更せずに、ネイティブなノードやグループを選択してフォーカスします。
ノードの追加、削除、接続、切断、設定、移動を行います。
ネイティブな ComfyUI グループを追加、更新、フィット、移動、削除します。
一連の操作を、アトミックかつアンドゥ可能な単一のネイティブ ComfyUI トランザクションとして適用します。
ライブグラフを変更する前に、古いパッチや無効なパッチを拒否します。
MCP トランスポートをローカルに保ちます。stdio サーバーは待受ポートを開かず、キャンバスコマンドはリレーがループバックからのみ受け付けます。
Related MCP server: comfy-mcp
アーキテクチャ
MCP host application (Codex or another local host)
| MCP over stdio
v
Node.js MCP server
| ComfyUI HTTP
v
Python V3 extension relay
| ComfyUI WebSocket event
v
Browser page extension -> active app.canvas.graphブラウザページがライブグラフの正本です。Python 拡張機能はリクエストを接続済みページと関連付け、Node.js stdio サーバーは正本となるワークフローのコピーを保持しません。この拡張機能は ComfyUI の実行ノードを登録せず、ComfyUI Core、ComfyUI_frontend、Desktop、またはワークフローのファイル形式にパッチを適用しません。
要件
ComfyUI 0.33.0 以上
ComfyUI ランタイムの Python 3.10 以上
Node.js 20 以上
ローカル stdio サーバーをサポートする MCP ホストアプリケーション
ツールを使用している間、開いたままにする ComfyUI ブラウザまたは Desktop ページ
ComfyUI 拡張機能には追加の Python パッケージ依存関係はありません。レジストリリリースには事前ビルド済みの MCP サーバーが含まれます。ソースや開発用チェックアウトの場合、npm ci は Node.js の依存関係のみをインストールしてそのサーバーをビルドします。ComfyUI の Python 環境は変更されません。
インストール
ComfyUI Manager (推奨)
ComfyUI Manager を開き、OpenBio Comfy MCP または openbio-comfy-mcp を検索し、インストール を選択して、ComfyUI を再起動します。インストールされる MCP エントリポイントは次のとおりです:
<ComfyUI>/custom_nodes/openbio-comfy-mcp/dist/openbio-comfy-mcp.mjsレジストリインストールでは npm ci の手順は必要ありません。
標準的なソースインストール
リポジトリを ComfyUI の custom_nodes ディレクトリに直接クローンし、MCP サーバーの依存関係をインストールして、バンドルされたエントリポイントをビルドします。
Windows PowerShell:
$ComfyRoot = "C:\path\to\ComfyUI"
Set-Location "$ComfyRoot\custom_nodes"
git clone https://github.com/Open-Bio/openbio-comfy-mcp.git
Set-Location .\openbio-comfy-mcp
npm ciLinux または macOS:
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/Open-Bio/openbio-comfy-mcp.git
cd openbio-comfy-mcp
npm ciインストール後に ComfyUI を再起動し、ブラウザで UI を開いて、拡張機能のルートが利用可能であることを確認します:
Invoke-RestMethod http://127.0.0.1:8188/openbio-comfy-mcp/health期待される応答は { "ok": true } です。
開発用の兄弟チェックアウト
編集内容を独立したリポジトリに残したい場合は、Git チェックアウトを ComfyUI の外に置き、リンクを介して公開します。
Windows PowerShell:
$ComfyRoot = "C:\path\to\ComfyUI"
$Repo = "C:\path\to\openbio-comfy-mcp"
New-Item -ItemType Junction `
-Path "$ComfyRoot\custom_nodes\openbio-comfy-mcp" `
-Target $Repo
Set-Location $Repo
npm ciLinux または macOS:
ln -s /path/to/openbio-comfy-mcp /path/to/ComfyUI/custom_nodes/openbio-comfy-mcp
cd /path/to/openbio-comfy-mcp
npm ci同じチェックアウトを複数のカスタムノードルートから公開しないでください。
MCP ホストを接続する
Codex
ローカル stdio サーバーを絶対パスで登録します:
$Repo = (Resolve-Path "C:\path\to\openbio-comfy-mcp").Path
codex mcp add openbio-comfy-mcp `
--env OPENBIO_COMFY_URL=http://127.0.0.1:8188 `
-- node "$Repo\dist\openbio-comfy-mcp.mjs"
codex mcp get openbio-comfy-mcp --json
codex mcp list --jsonサーバーを追加したら Codex クライアントを再起動します。Codex Desktop、CLI、IDE 拡張機能は、同じ Codex ホスト上で MCP 設定を共有します。公式の Codex MCP ドキュメント を参照してください。
その他の stdio MCP ホスト
mcpServers JSON 設定を使用するホストでは、この例を絶対パスで調整してください:
{
"mcpServers": {
"openbio-comfy-mcp": {
"command": "node",
"args": ["C:\\path\\to\\openbio-comfy-mcp\\dist\\openbio-comfy-mcp.mjs"],
"env": {
"OPENBIO_COMFY_URL": "http://127.0.0.1:8188"
}
}
}
}設定キーはホストによって異なります。コマンドは dist/openbio-comfy-mcp.mjs で始まる必要があり、OPENBIO_COMFY_URL はローカルの ComfyUI サーバーを指す必要があります。
設定
変数 | デフォルト | 説明 |
|
| ローカル MCP サーバーが使用する ComfyUI サーバーのベース URL。 |
ツール
ツール | 効果 | 目的 |
| 読み取り専用 | 特定のネイティブなノード/グループ参照について、コンパクトなトポロジーまたは詳細を検査します。 |
| 読み取り専用 | 接続中の ComfyUI の |
| 読み取り専用 | 1 つの正確な |
| UI 状態のみ | ワークフローを変更せずにネイティブ項目を選択し、必要に応じてフィットします。 |
| ライブキャンバスに書き込み | 型付きノード、リンク、またはグループ操作の、アトミックかつアンドゥ可能なバッチを 1 つ適用します。 |
推奨される編集フロー:
inspect_canvasを呼び出し、返されたcanvas_idとrevisionを保持します。馴染みのないノードタイプを追加する前に、
search_nodesとinspect_node_typeを使用します。検査した
canvas_idとrevisionをbase_revisionとして、1 つのapply_canvas_patchを送信します。必要に応じて
present_canvasを呼び出し、変更した項目を選択してフォーカスします。再度検査します。結果が望ましくない場合は、ComfyUI のネイティブなアンドゥコマンドを使用します。
正確な公開動作と操作セットについては、docs/spec.md を参照してください。
フロントエンド開発に関する注意
スタンドアロンの ComfyUI_frontend Vite 開発サーバー (pnpm dev、通常はポート 5173) は、カスタムノードが提供する JavaScript 拡張機能を読み込みません。したがって、OpenBio Comfy MCP は、その開発サーバーだけが提供するキャンバスには接続できません。ComfyUI 自体が提供するフロントエンドを使用するか、フロントエンドをビルドして、そのビルドをフロントエンドルートとして ComfyUI を起動してください。
このリポジトリをインストールまたは更新した後は、ページ拡張機能が読み込まれるよう、ComfyUI を再起動してブラウザページを再読み込みしてください。
セキュリティとプライバシー
MCP サーバーは信頼できるソースからのみインストールしてください。このローカルサーバーは、それを起動する MCP ホストアプリケーションと同じオペレーティングシステム権限で実行されます。
apply_canvas_patchは書き込み可能なツールとして扱い、MCP ホストでの使用を確認または承認してください。選択したページで現在開いているワークフローを変更しますが、パッチ全体は 1 回のネイティブなアンドゥで元に戻せます。stdio MCP サーバーはネットワークリスナーを開きません。設定された ComfyUI サーバーを呼び出します。デフォルトは
http://127.0.0.1:8188です。キャンバスコマンドのリクエストはループバックからのみ受け付けられます。この制限は ComfyUI の一般的な認証レイヤーではありません。認証のない ComfyUI サーバーを信頼できないネットワークに公開しないでください。
ブリッジが公開するのは型付きグラフ操作のみであり、任意の JavaScript、DOM アクセス、ファイルシステムアクセス、シェルコマンド、ワークフローのキュー投入、実行は対象外です。
キャンバスの検査には、ワークフロー名、パス、ノードタイトル、プロンプト、ファイル名、サンプル識別子、ウィジェット値が含まれることがあります。その後の取り扱いは、接続する MCP ホストとモデルプロバイダーのプライバシーポリシーおよび設定に従います。
切断されたページは
NO_LIVE_CANVASを返します。システムがバックグラウンドでワークフローファイルを編集するフォールバックを行うことは決してありません。
トラブルシューティング
NO_LIVE_CANVAS: ComfyUI ページを開くか再読み込みし、接続したままにしてください。ホストにツールが表示されない場合:
dist/openbio-comfy-mcp.mjsの絶対パスを確認し、MCP ホストアプリケーションを再起動してください。ソースチェックアウトの場合は、最初にnpm ciを実行してください。ヘルスエンドポイントが見つからない場合: リポジトリが
custom_nodesの直下にあるか、そこにリンクされているかを確認し、ComfyUI を再起動して、コンソールにインポートエラーがないか確認してください。STALE_CANVAS:inspect_canvasを再度呼び出し、返された revision から新しいパッチを作成してください。複数のページが開いている場合: 最後にフォーカスされた ComfyUI ページがデフォルトのターゲットです。解決できない曖昧さは推測ではなく報告されます。
ポート
5173の開発ページが接続しない場合: 上記のとおり、ComfyUI バックエンドが提供するフロントエンドを使用してください。
更新とアンインストール
ソースインストールと、そのロック済みの Node.js 依存関係を更新します:
git pull --ff-only
npm ci更新後、ComfyUI を再起動し、ブラウザページを再読み込みします。
アンインストールするには、まず MCP ホストの登録を削除します。Codex の場合:
codex mcp remove openbio-comfy-mcp次に、クローンした openbio-comfy-mcp ディレクトリ(開発用の兄弟チェックアウトの場合は Junction/シンボリックリンクのみ)を ComfyUI/custom_nodes から削除し、ComfyUI を再起動します。
開発
Node.js の依存関係をインストールし、MCP/ページ拡張機能のテストを実行します:
npm ci
npm testComfyUI が使用するものと同じインタープリターで Python リレーテストを実行します:
C:\path\to\ComfyUI\.venv\Scripts\python.exe `
-m pytest --rootdir=tests -c pyproject.toml tests -qリポジトリの構成:
dist/ Bundled, dependency-free Registry MCP entry point
mcp_host/ Node.js stdio MCP server
openbio_comfy_mcp/ ComfyUI V3 Python relay extension
scripts/ Reproducible MCP bundle build
web/ Live page extension and canvas bridge
tests/ Node.js and Python tests
docs/spec.md Public behavior and safety boundariesIssue とプルリクエストは歓迎します。変更はプロジェクトの文書化されたライブキャンバスとローカルトランスポートの境界内に収め、提出前に両方のテストスイートを実行してください。
ライセンス
OpenBio Comfy MCP は MIT License の下で公開されています。
このプロジェクトは、公式の Model Context Protocol TypeScript SDK と、ComfyUI の文書化された V3 拡張機能 および JavaScript 拡張機能 の仕組みを使用しています。
Available Tools
5 toolsapply_canvas_patchBDestructive
Apply one atomic, undoable batch of changes to a live ComfyUI canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| canvas_id | Yes | ||
| operations | Yes | ||
| base_revision | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true, readOnlyHint=false), the description discloses that changes are atomic (all-or-nothing), undoable, and applied to a live canvas. This adds meaningful behavioral context about failure semantics and reversibility, though it doesn't address concurrency conflicts or the role of base_revision.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every word ('atomic', 'undoable', 'live', 'batch') earns its place by conveying behavioral and semantic constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive, non-idempotent nature and a complex operations schema with no output schema, an agent needs more context about conflict behavior, base_revision semantics, and typical use cases. The compact description covers a few key properties but leaves major gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not compensate by explaining canvas_id, base_revision, or the operations array. It only says 'batch of changes,' which maps vaguely to operations but adds no meaning to any specific parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('apply'), a precise resource ('changes to a live ComfyUI canvas'), and adds defining qualifiers ('atomic, undoable batch') that set it apart from the sibling read/search tools. It tells an agent immediately that this is the mutating patch tool for canvas edits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as inspect_canvas, present_canvas, search_nodes, or inspect_node_type. The phrase 'apply ... batch of changes' implies mutating use, but it does not state prerequisites, when not to use it, or which sibling might be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_canvasBRead-only
Inspect a compact live ComfyUI canvas, or details for native node and group refs.
| Name | Required | Description | Default |
|---|---|---|---|
| refs | No | ||
| canvas_id | No | Opaque canvas identity returned by an earlier inspection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only safety profile is covered. The description adds 'compact live' and 'native' context, which suggests the output is a condensed current-state view, but it does not disclose return format or behavior when no parameters are provided. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. 'Compact live' and 'native' are dense but meaningful qualifiers, though they could be clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two optional parameters, no required fields, no output schema, and no usage guidance, the description does not sufficiently equip an agent to invoke the tool correctly. Missing details include the meaning of an all-empty call, the relationship between canvas_id and refs, and when to prefer sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes canvas_id and the refs kind/id shape. The description adds that refs target 'native node and group' details, which gives some meaning beyond the schema. However, it does not clarify whether canvas_id and refs are alternatives, complementary, or what happens when both are absent, leaving a partial gap at 50% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a clear action ('Inspect') and resource ('compact live ComfyUI canvas', 'node and group refs'), which distinguishes it from mutating or presenting siblings. The phrase 'or details for native node and group refs' is slightly ambiguous about the exact object of inspection, but the core purpose is understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance for when to use this tool versus search_nodes or inspect_node_type. It weakly implies that this tool is for reading canvas/ref state, but it does not state conditions, exclusions, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_node_typeBRead-only
Inspect the complete native ComfyUI schema for one installed node type.
| Name | Required | Description | Default |
|---|---|---|---|
| class_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=false, and the description's 'Inspect' verb aligns with a safe read operation - no contradiction. The phrase 'complete native ComfyUI schema' adds modest context about the scope of what is returned. However, it doesn't describe output volume, error behavior for invalid class types, or whether the full schema is returned as structured JSON, so the value added beyond annotations is limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, tightly worded sentence with zero waste. The action and object are front-loaded with no filler or redundancy. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter, read-only inspection tool with no output schema, the definition is borderline adequate. It clearly states what it does and the annotation covers the safety profile, but it leaves the agent to guess what class_type should contain and offers no usage guidance. Given the tool's low complexity and the sibling overlap, this is a minimum-viable definition that could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden of explaining the parameter. The phrase 'one installed node type' weakly hints that class_type names a node type, but it never explicitly maps class_type to that concept, states its expected format, or notes that it must be an installed node type identifier. The description insufficiently compensates for the zero coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Inspect') and identifies a clear resource ('the complete native ComfyUI schema for one installed node type'). This distinguishes it from siblings like inspect_canvas (canvas vs node type) and search_nodes (search vs inspect), though it doesn't name them explicitly. A 5 would require explicit sibling differentiation, so 4 is appropriate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like search_nodes or inspect_canvas, and no prerequisites or exclusions are stated. The usage context is only implied by the purpose clause, so the agent receives no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
present_canvasAIdempotent
Select and optionally fit native items on a live ComfyUI canvas without modifying the workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| refs | Yes | ||
| fit_view | Yes | ||
| canvas_id | Yes | ||
| selection | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=false and idempotentHint=true; the description adds that the workflow is not modified and that the operation targets live canvas state. However, it does not disclose how the selection is changed (replace vs add), what happens with invalid refs, or the effect of fit_view.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no filler. It front-loads the action and includes a useful constraint about not modifying the workflow. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a relatively simple 4-parameter tool with strong safety annotations, but it leaves some semantics implicit, especially selection behavior and fit_view. Without an output schema, the description also does not indicate what the agent should expect after invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden of explaining parameters. It only provides the overall intent and does not map canvas_id, refs, selection, or fit_view to concrete meanings. The enum values 'replace' and 'add' are left for the agent to infer from their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Select and optionally fit native items') and a specific resource ('live ComfyUI canvas'), and it explicitly scopes the operation as not modifying the workflow. This clearly distinguishes it from siblings like apply_canvas_patch (which modifies) and inspect_canvas (which reads).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys when to use the tool: for selection and view-fitting on a live canvas while keeping the workflow unchanged. It gives a clear exclusion ('without modifying the workflow'), but it does not explicitly name sibling alternatives or state cases where inspect_canvas or apply_canvas_patch should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_nodesCRead-only
Search the node types installed in ComfyUI.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the description's job is to add context beyond that. It adds little beyond restating the read-only search behavior, though for a simple search tool there is limited behavior to disclose. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero wasted words, and the core action is front-loaded. It is efficient, though it borders on under-specification rather than true concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no output schema and a sibling (inspect_node_type) that overlaps in domain, the description should clarify scope and the meaning of the limit parameter. It does neither, leaving an agent to guess about result behavior and when this tool is the right choice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate for explaining the parameters. The description implies 'query' is a search term for node types, but it does not clarify the 'limit' parameter's semantics (pagination, result cap, or default behavior) at all. With two parameters undocumented, the description is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('search') and a specific resource ('node types installed in ComfyUI'), making the core purpose clear. It does not explicitly distinguish itself from its siblings (especially inspect_node_type), but the verb choice implies a broad search versus targeted inspection, giving partial differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus its siblings, no exclusions, and no named alternatives. An agent cannot tell from the description whether to use search_nodes or inspect_node_type for a given task, leaving the routing decision entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
apply_canvas_patch - First observed
inspect_canvas - First observed
inspect_node_type - First observed
present_canvas - First observed
search_nodes
TDQS
Scored across 5 tools
Each tool targets a distinct aspect: canvas inspection, canvas presentation, node search, node schema inspection, and canvas modification. No two tools overlap in purpose, making selection unambiguous.
All tool names follow a consistent verb_noun pattern (inspect_canvas, present_canvas, search_nodes, inspect_node_type, apply_canvas_patch) with uniform snake_case. The naming convention is predictable and clear.
With 5 tools, the server is well-scoped for ComfyUI canvas interaction. It covers inspection, navigation, searching, and modification without unnecessary bloat or missing essentials.
The surface covers reading (inspect), searching, schema inspection, visualization (present), and modification (apply_patch). Minor gaps like explicit node deletion or undo/redo history might exist, but the atomic undoable patch likely covers these needs.
Maintenance
Related MCP Connectors
Remote MCP for RunComfy: ComfyUI deployments, hosted models, LoRA training. 31 tools.
Create, browse, remix, collaborate on, and run durable AI workflow nodes from MCP hosts.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Related MCP Servers
- AlicenseAqualityAmaintenanceThe MCP server that drafts ComfyUI workflows a human can actually read. It lets coding agents build, repair, port, validate, and run ComfyUI workflows against your own ComfyUI instance, delivering clean, organized, fully-labeled workflows.29597 PyPI3MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables AI agents to control a local ComfyUI instance for image generation, allowing workflow understanding, parameter modification, execution, and model discovery.16 npm3Apache 2.0
- AlicenseAqualityDmaintenanceA universal MCP server that lets agents discover ComfyUI nodes, build/edit/run API workflows, manage queues, retrieve outputs, and optionally render graphs on a ComfyUI canvas.235Apache 2.0
- AlicenseAqualityAmaintenanceAn MCP server that integrates with a local ComfyUI, allowing assistants to list and run workflows, monitor progress, and view results, as well as read and edit the live workflow canvas via an optional bridge node.6416GPL 3.0