RunComfy MCP

Máy chủ MCP chính thức từ xa cho API Serverless của RunComfy (ComfyUI): quản lý triển khai GPU và chạy suy luận hình ảnh/video không đồng bộ.

Tài liệu

RunComfy MCP

MCP server for the RunComfy Serverless API (ComfyUI). Manage deployments, run inference, 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

10 tools that mirror docs.runcomfy.com/serverless 1:1:

CategoryTools
Deployment managementlist_deployments, get_deployment, create_deployment, update_deployment, delete_deployment
Inferencesubmit_request, get_request_status, get_request_result, cancel_request
Advancedcall_instance_proxy

Quick setup

Claude Code

claude mcp add runcomfy \
  --transport streamable-http \
  https://mcp.runcomfy.com/mcp \
  --header "Authorization: Bearer <YOUR_RUNCOMFY_TOKEN>"

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "runcomfy": {
      "url": "https://mcp.runcomfy.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_RUNCOMFY_TOKEN>"
      }
    }
  }
}

Windsurf

Add to Windsurf Settings > MCP:

{
  "mcpServers": {
    "runcomfy": {
      "serverUrl": "https://mcp.runcomfy.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_RUNCOMFY_TOKEN>"
      }
    }
  }
}

Get your API token from your Profile page.


Architecture

MCP Client  ──Bearer token──>  Cloudflare Worker (/mcp)
                                      │
                                      ▼
                              Cloudflare Container
                              (Python FastMCP app)
                                      │
                                      ▼
                              api.runcomfy.net
                              (using caller's token)
  • Cloudflare Worker (src/index.ts) — thin proxy: CORS, body size check, forwards the caller's token to the container. No auth logic — api.runcomfy.net handles authentication.
  • Python container (server.py) — FastMCP app with 10 tools. Uses the caller's token (forwarded via x-runcomfy-user-token header) for all outbound API calls. Each user sees only their own deployments.
  • Cloudflare Container auto-starts on first request, sleeps after 10 minutes idle.

Project layout

src/index.ts          Cloudflare Worker entrypoint
server.py             MCP tool definitions (10 tools)
runcomfy_client.py    RunComfy API client (serverless endpoints)
container_app.py      ASGI middleware (request IDs, token forwarding)
container_entrypoint.py  Uvicorn startup
container_runtime.py  Env validation, structured logging
wrangler.jsonc        Cloudflare Worker + Container config
Dockerfile            Container image
.env.example          Local dev config

Local development

# Python 3.11+
python3.11 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# Set RUNCOMFY_API_KEY in .env
python -m container_entrypoint

Local endpoints:

  • http://127.0.0.1:8000/healthz
  • http://127.0.0.1:8000/mcp

In local mode (no Worker), the Python app uses RUNCOMFY_API_KEY from .env for all outbound calls.


Deploy

Requires Cloudflare Workers Paid plan with Containers enabled.

npm install

# Set the API key secret (one-time)
npx wrangler secret put RUNCOMFY_API_KEY

# Deploy
CLOUDFLARE_ACCOUNT_ID=<your-account-id> npx wrangler deploy

The MCP endpoint goes live at https://mcp.runcomfy.com/mcp (custom domain configured in wrangler.jsonc).


Environment variables

Worker secrets (set via wrangler secret put)

NameRequiredDescription
RUNCOMFY_API_KEYYesFallback API key for the container

Worker vars (in wrangler.jsonc)

NameDefaultDescription
CONTAINER_INSTANCE_NAMEruncomfy-unifiedDurable Object instance name
CONTAINER_STARTUP_TIMEOUT_MS15000Max wait for container start
CONTAINER_PORT_READY_TIMEOUT_MS30000Max wait for port ready
MCP_MAX_BODY_BYTES1048576Max request body size
RUNCOMFY_SERVERLESS_BASE_URLhttps://api.runcomfy.netServerless API base URL

Local dev (.env file)

NameRequiredDescription
RUNCOMFY_API_KEYYesYour RunComfy API token
RUNCOMFY_SERVERLESS_BASE_URLNoOverride base URL (default: https://api.runcomfy.net)
RUNCOMFY_MCP_MOUNT_PREFIXNoPath prefix for MCP mount (default: empty)