Skip to main content
Glama

Local AI Studio

Describe what you want in plain language, and your own machine makes it.

This repo is an MCP server that gives an AI agent access to local ComfyUI workflows for images, video with native audio, and 3D. The tools stay on your machine. The brain driving them is swappable: Claude Code with a cloud model, or OpenCode with a local model in Ollama.

It's provided as is, under the MIT license. There's no support team. Questions are welcome and may get answered when time allows.

What's here

Path

What it is

src/

The MCP server

workflows/

ComfyUI API workflows

workflow-metadata/

What each workflow does and which parameters it takes

agents/studio.md

Rules for the local agent

opencode.json

OpenCode setup with the local agent

.mcp.json

Claude Code setup

tools/mesh_to_solid.py

Turns a 3D result into a watertight STL

MODELS.md

Model files each workflow family needs

Voice and music aren't in this repo. The video uses Qwen3-TTS, VoxCPM2 and ACE-Step through their own MCP servers, and any MCP server can sit beside this one.

Related MCP server: ComfyUI MCP Server

Tested on

  • Linux, NVIDIA card with 32 GB of VRAM, about 54 GB of RAM plus swap

  • Node 22, Ollama 0.40.13, OpenCode 1.17.8

  • Older Ollama versions may refuse the local model: 0.30.8 did

Other platforms and smaller cards are untested. Images and the local model used 29 GB of VRAM together here, and smaller setups may need smaller models. MiniMax H3 peaks around 44 GB of system RAM, so its workflows refuse to run on Linux without 18 GB of swap.

Setup

  1. Install ComfyUI and start it on port 8188.

  2. Install the model files you need from MODELS.md. The Hunyuan3D workflows also need the ComfyUI-RMBG custom node.

  3. Build the server:

npm ci
npm run build
  1. Tell the server where ComfyUI lives:

export COMFYUI_PATH=/path/to/ComfyUI

Run with Claude Code

Start claude in this folder and approve the comfy server. Then ask:

Make a picture of a sunflower hedgehog.

To let Claude reach every workflow, including video and 3D, start it with:

COMFY_MCP_ALLOW='*' claude

Run with a local brain

ollama pull bonsai-2:27b
opencode run "Make a picture of a sunflower hedgehog." < /dev/null

Use OpenCode's terminal interface by running opencode with no arguments. The < /dev/null is only needed for headless runs, which otherwise hang waiting on input.

The allowlist

COMFY_MCP_ALLOW decides what the server exposes and runs. A blocked workflow can't be seen or started.

Value

Result

Unset

text-to-image and upscale only

*

Everything

text-to-image,video

Those categories

qwen-lightning-4step,video

A workflow id plus a category

Empty

Nothing

Categories are text-to-image, image-to-image, upscale, video, video-post and 3d.

Prompt rules are advice, and this list is the limit. It protects this server only: an agent with shell access could call ComfyUI directly, so the local agent has no shell.

What can go wrong

  • The local model talks nonsense. Ollama silently truncates a prompt that overruns the model's context. Claude Code's default prompt is about 35,000 tokens, which is why the local setup uses a small agent with only the tools it needs.

  • Renders suddenly take minutes. The language model and the image model share the graphics card. A smaller language model speeds up the whole stack.

  • ECONNREFUSED. ComfyUI isn't running.

  • A 3D result won't print. Hunyuan3D writes GLB files, often in thousands of open pieces. Run tools/mesh_to_solid.py, which needs numpy, scipy, scikit-image and trimesh. The STL has not been slice-tested or printed yet.

Licenses

The code here is MIT. Models have their own terms, and those terms can change, so check each one before commercial use.

Model

Notes

Qwen-Image

Check the model card

FLUX 3 Klein

Commercial use only under $5M gross revenue

MiniMax H3

Revenue-capped license, $20M at the time of testing

Hunyuan3D v2

Has its own community license, check territory and use limits

WAN 2.2

Check the model card

Bonsai 2

Apache 2.0

Available Tools

9 tools
cancel_jobB

Cancel a queued or running job.

NameRequiredDescriptionDefault
prompt_idYesThe prompt/job ID to cancel

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It says what can be cancelled but does not disclose whether cancellation is irreversible, what happens to partial results, whether permissions are required, or what errors occur for already-completed jobs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words. It communicates the action and scope efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter cancellation tool with full schema coverage, the description is minimally adequate. However, because there are no annotations and no output schema, it should say more about the consequences and limits of cancellation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single prompt_id parameter is already documented in the schema. The description adds no additional meaning about the ID format or source beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: cancel a job. It also narrows scope to queued or running jobs, which helps an agent understand what can be cancelled. It does not explicitly differentiate from siblings, but no sibling appears to overlap with cancellation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'queued or running' implies the applicable state for cancellation, giving some usage context. However, it does not state when not to use the tool, what to do for completed jobs, or how it relates to alternatives like get_job_result or get_queue_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_job_resultsA

Resolve the native ComfyUI output file paths for a completed async job. Use after run_workflow with wait_for_completion=false. Returns absolute paths to the files ComfyUI already wrote in its own output directory — it does not copy anything.

NameRequiredDescriptionDefault
prompt_idYesThe prompt/job ID returned from run_workflow

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it states the tool only resolves paths, that files are already written to ComfyUI's own output directory, and that nothing is copied. It doesn't cover behavior for incomplete or failed jobs, which is the main remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, and the core action is front-loaded ahead of the usage note and the no-copy clarification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no output schema and no annotations, the description covers the action, the precondition, and the return semantics (absolute paths, no copying). Missing only failure-mode guidance for jobs that aren't finished.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single prompt_id parameter is fully documented in the schema, including its origin from run_workflow. The description adds only the precondition that the job be completed, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ("Resolve the native ComfyUI output file paths for a completed async job") and adds a disambiguating note that it only returns paths and copies nothing. It doesn't explicitly name the nearest sibling, get_job_result, so the distinction from that tool is left partly implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit triggering condition: use after run_workflow with wait_for_completion=false. There's no statement of when not to use it, nor a direct comparison to get_job_result or get_queue_status, so the agent must infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_job_resultA

Get the result of a completed or running job by its prompt ID. Pass wait_seconds to block until it finishes (repeat the call while status is "running").

NameRequiredDescriptionDefault
prompt_idYesThe prompt/job ID returned from run_workflow
wait_secondsNoBlock up to this many seconds for the job to finish (default 0 = check once, max 50)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses blocking behavior and the need to repeat while running, but does not describe return format, error behavior, or any permission/rate-limit considerations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and followed by the key polling instruction. No wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity retrieval tool with complete parameter schema, the description covers the essential polling behavior. It could say more about the returned result, but no output schema exists and the core usage is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented in the schema. The description mentions prompt_id and wait_seconds but adds little parameter meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: get the result of a job by prompt ID. It clearly covers completed or running jobs, but does not explicitly differentiate from siblings such as download_job_results or get_queue_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives useful polling guidance: pass wait_seconds to block and repeat while status is running. However, it does not say when to use this tool versus download_job_results, get_queue_status, or cancel_job.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_queue_statusB

Get the current ComfyUI queue status (running and pending jobs).

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Get' weakly implies a read-only operation, but it never says whether the call is safe, whether it costs anything, or how fresh or complete the snapshot is; for a polling-style status tool that is a real gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the scope qualifier in parentheses. Nothing is wasted and the key noun 'queue status' appears immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read with no output schema, one sentence is minimal but serviceable, since the parenthetical already sketches the returned content. It does not say how to interpret the result or when polling is appropriate, leaving the definition just barely adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing further to document; baseline 4 applies. The description correctly implies no filtering arguments exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (get the ComfyUI queue status) and parenthetically clarifies the content is running plus pending jobs. This implicitly separates it from get_job_result, which is about a single job, though the differentiation is not stated explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no named alternatives, despite siblings like get_job_result and cancel_job that an agent might confuse with queue polling. Usage is only inferable from the word 'queue'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_workflow_paramsA

Get the parameter schema for a specific workflow, including required/optional parameters, types, defaults, and available options.

NameRequiredDescriptionDefault
workflow_idYesThe workflow ID (e.g., "qwen-lightning-4step", "minimax-h3-i2v-fast")

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the burden; it does disclose the shape of the returned data (parameters, types, defaults, options), which is the most useful behavioral fact. It says nothing about whether the call is read-only/safe, whether it errors on an unknown workflow_id, or whether the schema comes from a live registry or a static catalog.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence, front-loaded with the verb and resource, with the return contents enumerated inline. Nothing wasted and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only introspection tool with no output schema, disclosing the return payload is exactly the right compensation, and it's present here. The gap is the missing relationship to run_workflow, which is what makes this tool actionable in the surrounding toolset.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter at 100% schema description coverage (including example workflow IDs), the schema already fully documents workflow_id. The phrase 'for a specific workflow' adds no semantics beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get the parameter schema for a specific workflow') and enumerates what the schema contains (required/optional, types, defaults, options). It's clear on its own, but never names or contrasts itself against the obvious sibling run_workflow, which is the main thing an agent needs to disambiguate discovery from execution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is a discovery/metadata call, but the description never says to call it before run_workflow or in what circumstances it's preferable to just invoking. No exclusions or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_lorasB

Discover available LoRA models categorized by type (qwen, xfs, other).

NameRequiredDescriptionDefault
categoryNoFilter by LoRA category (optional)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. "Discover available" implies a read-only listing, which is useful, but it does not disclose whether the scan is cheap or expensive, whether results are paginated or complete, or what the entries contain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with no filler. Minor redundancy in re-listing the enum values that the schema already declares, but nothing that wastes the reader's attention.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-optional-enum list tool with no output schema, the description covers the essential purpose. The only gap is what a returned LoRA entry looks like (name vs. path vs. id), which matters slightly more because there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is an enum already documented in the schema. The description merely restates the same three category values, adding no semantics beyond what structured data provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Discover") and resource ("LoRA models") plus the categorization axis (qwen, xfs, other). No sibling tool deals with LoRAs, so it is naturally distinguishable, but the description never explicitly differentiates itself from the workflow/job tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool, when not to, or what alternatives exist. The only guidance is implicit in the word "available," leaving the agent to infer that this is a discovery/list operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_workflowsA

List all available ComfyUI workflow templates with their categories and descriptions.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. 'List' plus 'templates' makes the read-only, catalog nature clear and it discloses that categories and descriptions come back with each entry, but it says nothing about pagination, result volume, or whether full workflow definitions are included.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and resource, with the return-content detail appended. Nothing is wasted and nothing needs trimming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter catalog read with no output schema, the description covers what is listed and roughly what each item includes. The remaining gap is result shape and size, which is minor given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No parameter claims are made that could mislead.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all available ComfyUI workflow templates') and adds scope detail about what each entry carries (categories, descriptions). It is clearly distinct from get_workflow_params and run_workflow in intent, though it never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the discovery step before calling get_workflow_params or run_workflow. There is no explicit when-to-use, when-not, or alternative named, so the routing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_workflowB

Execute a ComfyUI workflow with the specified parameters. Returns generated images.

NameRequiredDescriptionDefault
seedNoRandom seed for reproducibility. -1 for random seed.
timeoutNoSeconds to wait before returning status "running" (default and max: 50). Only used when wait_for_completion=true.
parametersYesWorkflow-specific parameters (prompt, lora_name, aspect_ratio, etc.)
workflow_idYesThe workflow ID to execute
filename_prefixNoStrongly recommended: a clear, descriptive name for this generation that becomes the actual ComfyUI output filename (e.g. "raccoon-boardroom-ceo", "product-hero-shot-blue"). Use cohesive, human-readable markers so related images group together and are easy to find later. Reuse the same base name across a series, varying a suffix (e.g. "-v2", "-wide"), to keep a batch coherent. Avoid generic or auto-generated names. If omitted, falls back to a generic "Comfy-<workflow>" prefix, which makes outputs hard to identify.
wait_for_completionNoWait for workflow completion (default: true). Waits at most 50s per call; longer jobs (video, cold model loads) return status "running" with a prompt_id to pass to get_job_result. If false, returns immediately.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only discloses that it returns generated images. The long-running/async behavior, timeout semantics, and the prompt_id hand-off to get_job_result live in the schema, not the description. The single return-value sentence is the main added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with no waste, front-loading the action. It is arguably too terse for a tool with async behavior and nested parameters, but it is efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter tool with a nested parameters object, no output schema, and eight siblings, the description is thin. It omits the critical async workflow (running status, prompt_id, resuming via get_job_result) that an agent needs to use this correctly, leaving that entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters including seed, timeout, filename_prefix, and wait_for_completion are already well documented. The description adds nothing beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Execute') and resource ('ComfyUI workflow') and mentions the return value (generated images). It is distinguishable from siblings like get_job_result or cancel_job, though it doesn't explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no explicit guidance on when to call this versus get_job_result or list_workflows. The async-resume pattern is only inferable from the wait_for_completion schema field, not the description itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_imageB

Upload an image to ComfyUI for use in image-to-image or controlnet workflows.

NameRequiredDescriptionDefault
subfolderNoOptional subfolder within ComfyUI input directory
image_pathYesLocal file path to the image

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It says this uploads into ComfyUI but does not disclose mutation behavior, overwrite/name-collision handling, authentication requirements, size limits, or what the tool returns. For a write-side upload operation, these omissions are significant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is a single front-loaded sentence with no wasted words. It states the action, target system, and intended workflow use immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and all parameters are fully documented in the schema. Still, with no annotations and no output schema, the description should ideally explain the upload result or key behavioral constraints. It is adequate but has clear gaps for an agent invoking an upload tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema. The description does not add meaning beyond the schema for image_path or subfolder, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a clear verb+resource: upload an image to ComfyUI. It also states intended use in image-to-image or controlnet workflows. It does not explicitly differentiate from sibling tools, but no sibling appears to be an uploader, so the purpose is still clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies when to use the tool by naming image-to-image and controlnet workflows. However, it does not say when not to use it, nor does it name alternatives or prerequisites. Usage context is present but not fully actionable.

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.

  1. 9 tool updatesv0.1.0
    • First observedcancel_job
    • First observeddownload_job_results
    • First observedget_job_result
    • First observedget_queue_status
    • First observedget_workflow_params
    • First observedlist_loras
    • First observedlist_workflows
    • First observedrun_workflow
    • First observedupload_image

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have clearly distinct purposes (list, run, cancel, queue status, upload). The main overlap is between get_job_result and download_job_results, both dealing with job results; descriptions clarify (one returns result data, the other resolves native output paths for async jobs), but an agent could still hesitate over which to call.

Naming Consistency5/5

All nine tools follow a consistent verb_noun snake_case pattern: get_workflow_params, run_workflow, list_workflows, cancel_job, upload_image, etc. No mixing of conventions or vague verbs.

Tool Count5/5

Nine tools is well-scoped for a ComfyUI workflow server, covering discovery, execution, monitoring, cancellation, and asset handling without bloat. Each tool earns its place.

Completeness4/5

The core lifecycle—list workflows, inspect params, run, monitor queue, fetch results, cancel, upload images, locate outputs—is covered. Minor gaps exist: no listing of non-LoRA models (checkpoints/VAEs), no queue-clearing or job-history listing, but these are workaroundable.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers