mcp-comfy-ui-builder
npm
v2.4.1
Published by mit9 — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.
MCP server for ComfyUI: seed knowledge base (62+ nodes), 50+ tools for workflow building, real-time execution (WebSocket), batch/chain, model management. For Cursor and Claude.
The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.
1. Threat score — 100 − 6.3 = 94. What the published surface and source actually contain:
| Points | What was found | Category |
|---|---|---|
| −6.3 | Untrusted input concatenated into a command sink MTC-SRC-009 | injection |
2. Client adoption risk — 94 − 11 = 83. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:
| Points | Adoption-risk factor |
|---|---|
| −10 | capability blast radius (critical) — client exposure if the model is manipulated |
| −1 | publisher verification (public source) — no provenance, but the source is public and inspectable |
Capability observations and info notes are shown under Findings but never scored.
Open any row's finding below for the file, line and evidence behind a deduction.
In the server's implementation (`dist/manager-cli.js:6`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: , execSync } from 'node:child_process'; import { existsSync, mkdirSync, writeFileSync } from 'node:fs'; import { join }
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/manager-cli.js
In the server's implementation (`dist/manager-cli.js:57`): A shell/process command assembled from concatenated or interpolated values is command injection when any part is attacker-influenced — the OWASP canonical RCE flow. Verify what reaches the interpolated value. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: const out = execSync(`netstat -ano | findstr :${port}`, { encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe']
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/manager-cli.js
Tool "install_model" takes a URL/host parameter "url" with no allowlist/pattern. An outbound-request tool with an unbounded destination enables SSRF and cloud-metadata access (e.g. 169.254.169.254).
Fix: Allowlist destinations or constrain the parameter; block private/link-local addresses server-side.
Location: tool install_model · inputSchema.properties.url
Each tool and what it can reach — statically extracted from the published source.
download_all_outputsingests untrusted inputdownload_by_filenameingests untrusted inputdownload_outputingests untrusted inputget_last_outputingests untrusted inputinstall_modelingests untrusted inputprepare_image_for_workflowingests untrusted inputadd_nodeno sensitive capabilityapply_templateno sensitive capabilitybuild_workflowno sensitive capabilitycheck_compatibilityno sensitive capabilitycheck_model_existsno sensitive capabilitycheck_workflow_modelsno sensitive capabilityclear_queueno sensitive capabilityconnect_nodesno sensitive capabilitycreate_templateno sensitive capabilitycreate_workflowno sensitive capabilitydelete_queue_itemsno sensitive capabilitydiscover_nodes_liveno sensitive capabilityexecute_batchno sensitive capabilityexecute_chainno sensitive capabilityexecute_workflowno sensitive capabilityexecute_workflow_streamno sensitive capabilityexecute_workflow_syncno sensitive capabilityfinalize_workflowno sensitive capabilityget_error_detailsno sensitive capabilityget_execution_progressno sensitive capabilityget_execution_statusno sensitive capabilityget_generation_recommendationsno sensitive capabilityget_historyno sensitive capabilityget_model_infono sensitive capabilityget_node_infono sensitive capabilityget_node_inputsno sensitive capabilityget_node_outputsno sensitive capabilityget_system_resourcesno sensitive capabilityget_workflow_jsonno sensitive capabilityget_workflow_modelsno sensitive capabilityinsert_macrono sensitive capabilityinstall_custom_nodeno sensitive capabilityinterrupt_executionno sensitive capabilitylist_macrosno sensitive capabilitylist_modelsno sensitive capabilitylist_node_categoriesno sensitive capabilitylist_node_typesno sensitive capabilitylist_outputsno sensitive capabilitylist_pluginsno sensitive capabilitylist_queueno sensitive capabilitylist_saved_workflowsno sensitive capabilitylist_templatesno sensitive capabilityload_workflowno sensitive capabilityreload_comfyuino sensitive capabilityreload_pluginsno sensitive capabilityremove_nodeno sensitive capabilitysave_workflowno sensitive capabilitysearch_nodesno sensitive capabilityset_node_inputno sensitive capabilitysuggest_nodesno sensitive capabilitysuggest_template_for_checkpointno sensitive capabilitysync_nodes_to_knowledgeno sensitive capabilityvalidate_template_paramsno sensitive capabilityvalidate_workflowno sensitive capabilityScan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.
| Version | Score | Findings | Engine | Scanned |
|---|---|---|---|---|
v2.4.1 latest |
B 83/100 | 3 | 1.13.0 | 2026-09-07 |
Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.
The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.
npx mcptrustchecker scan mcp-comfy-ui-builder --online
stdio compatibility bridge for the hosted AgentMail MCP server
MCP server for Alfa documentation retrieval
MCP server providing Alpine.js documentation and reference
Search the official Astro framework documentation.
MCP server providing ATAG 2.0 (Authoring Tool Accessibility Guidelines) guidance for authoring tool developers
Aurais Research Reader as an MCP server — paste a paper or article, get a structured read with verbatim-verified quotes + a signed Vorion proof chain (via @vorionsys/aurais-core).