RunComfy MCP
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
MCP server for the RunComfy platform — Serverless API (ComfyUI), Model API, and Trainer API. Manage deployments, run hosted models, train LoRAs, and retrieve results from AI assistants like Claude, Cursor, and Windsurf.
**Endpoint**: https://mcp.runcomfy.com/mcp
**Docs**: docs.runcomfy.com/mcp
---
What it does
31 tools mirroring the RunComfy docs 1:1, across three products plus your account balance.
Serverless API (ComfyUI) — your own workflows on dedicated endpoints
Docs: docs.runcomfy.com/serverless
| Category | Tools |
| --- | --- |
| **Deployment management** | list_deployments, get_deployment, create_deployment, update_deployment, delete_deployment |
| **Inference** | submit_request, get_request_status, get_request_result, cancel_request |
| **Advanced** | call_instance_proxy |
Model API — hosted catalog models, on demand
Docs: docs.runcomfy.com/model-apis
| Category | Tools |
| --- | --- |
| **Catalog** | list_models, get_model, list_model_categories |
| **Inference** | run_model, get_model_request_status, get_model_request_result, cancel_model_request |
No deployment to manage and per-request billing. list_models browses the
catalog by keyword or capability (category=image-to-video), get_model
returns one model's input schema — property types, defaults, enums, and
ranges — and run_model runs it. So an assistant can go from "make me a
video" to a valid request without leaving the tools or guessing a parameter.
Entries also carry description, base_price_usd per price_unit, and a
model_url to the model's page.
model_id is the identifier shown on the model's page at
runcomfy.com/models, slashes included — e.g.
blackforestlabs/flux-1-kontext/pro/edit. File inputs must be public HTTPS URLs.
Trainer API — datasets and AI Toolkit LoRA training
Docs: docs.runcomfy.com/trainer-apis
| Category | Tools |
| --- | --- |
| **Datasets** | create_dataset, list_datasets, get_dataset_status, delete_dataset |
| **Dataset uploads** | upload_dataset_file_from_url, upload_dataset_text_file, get_dataset_upload_urls |
| **Training jobs** | submit_training_job, get_training_job_status, get_training_job_result, cancel_training_job, resume_training_job, edit_training_job |
Typical flow: create a dataset → upload media and matching .txt captions →
poll until READY → submit a job with an AI Toolkit YAML config → poll status
→ pull checkpoints from the result.
Because the server runs remotely it cannot read local files. Upload media it
can reach over HTTP with upload_dataset_file_from_url, write captions inline
with upload_dataset_text_file, and for local or >150 MB files use
get_dataset_upload_urls and PUT the bytes to the signed URL yourself.
Account
| Category | Tools |
| --- | --- |
| **Balance** | get_balance |
One wallet funds all three products. get_balance reports what is left, in
balance_usd for reading and balance_microdollars (millionths of a dollar)
for exact threshold checks. It is served from api.runcomfy.net rather than
mirrored per product, because there is only one figure to report.
Crossing between them
A trained LoRA runs without any deployment: pass its base model's model_id
to run_model and the LoRA as an input, e.g.
{"lora": {"path": "my_first_lora_3000.safetensors"}} — either a name from
your LoRA Assets or a public
URL such as a checkpoint from get_training_job_result. For a dedicated
endpoint with chosen hardware, deploy it and use the Serverless tools instead.
---
Quick setup
Every client authenticates with a RunComfy API token from your
Profile page. Two ways to supply it:
- **API token header** — works in any Streamable HTTP client. Simplest, and the
only option for clients without a browser OAuth flow.
- **Browser OAuth** — no token in a config file. Supported by Claude.ai, Cursor,
and local clients that register a loopback callback, such as Claude Code.