comfyui-mcp

comfyui-mcp

Exposes a remote ComfyUI instance for image generation through an on-demand GPU wrapper, allowing users to generate PNG images from prompts and manage the ComfyUI lifecycle via MCP tools.

Category
Visit Server

README

ComfyUI OpenAI/FAL-Compatible Images API

A single-container, multi-protocol image-generation backend backed by ComfyUI. The container starts ComfyUI on the first generation request, keeps it alive while you use it, and cold-stops it after an idle timeout so GPU memory is freed when nothing is generating.

Supported protocols:

  • OpenAI-compatiblePOST /v1/images/generations, GET /v1/models
  • FAL.ai-compatiblePOST /fal/run/{model_id}, POST /fal/queue/{model_id}, GET /fal/queue/{model_id}/requests/{request_id}/status
  • Wrapper nativePOST /generate, GET /health, GET /status, POST /stop

Generated images are persisted under ComfyUI/output and served at /outputs/{filename}, so response_format: url and FAL-style responses return real URLs.

Endpoints

OpenAI-compatible

POST /v1/images/generations accepts the standard OpenAI request shape:

{
  "prompt": "a photo of an astronaut riding a horse on the moon",
  "n": 1,
  "size": "512x512",
  "response_format": "b64_json"
}

Supported parameters:

  • prompt (required)
  • n (1–4, default 1)
  • size"WIDTHxHEIGHT", e.g. "512x512" (default), "1024x1024"
  • response_format"b64_json" (default) or "url"
  • model — accepted but currently informational
  • quality, style, user — accepted but ignored
  • ComfyUI overrides: negative_prompt, width, height, steps, cfg, seed

FAL.ai-compatible

POST /fal/run/{model_id} accepts a FAL-style payload:

{
  "prompt": "a serene mountain landscape with cherry blossoms",
  "image_size": "landscape_16_9",
  "num_images": 1,
  "seed": 42
}

Supported fields:

  • prompt (required)
  • negative_prompt
  • image_size — e.g. square_hd, landscape_16_9, portrait_16_9
  • aspect_ratio — e.g. 1:1, 16:9, 9:16
  • width / height (override size/aspect)
  • num_inference_steps → mapped to ComfyUI steps
  • guidance_scale → mapped to ComfyUI cfg
  • seed
  • num_images (1–4)
  • image_url / reference_image_urls — rejected with a clear error (editing is not supported)

Response shape mirrors FAL:

{
  "images": [
    {
      "url": "http://192.168.2.51:8002/outputs/abc123.png",
      "width": 1536,
      "height": 1024,
      "content_type": "image/png"
    }
  ],
  "prompt": "a serene mountain landscape with cherry blossoms",
  "seed": 42,
  "has_nsfw_concepts": [false]
}

Running the container

cd wrapper
# place v1-5-pruned-emaonly.safetensors in this directory first
docker compose up -d --build

The API is exposed on port 8002 (ComfyUI direct is on 8190).

Environment variables

Variable Default Description
IDLE_TIMEOUT 300 Seconds of inactivity before ComfyUI is stopped
COMFYUI_PORT 8188 Internal ComfyUI port
API_PORT 8000 Internal API port
PUBLIC_URL (request base URL) Base URL used for generated image links, e.g. http://192.168.2.51:8002
OPENAI_API_KEY (none) Optional Bearer token required on OpenAI endpoints
MODEL_ID comfyui-sd1-5 Model id advertised by /v1/models

Using with Hermes

Hermes supports FAL.ai as a backend. Point Hermes at this container by making fal.run / queue.fal.run resolve to http://192.168.2.51:8002. The easiest way is to add a local DNS or proxy rule, or set the FAL client base URL if Hermes/FAL's SDK exposes one.

Set FAL_KEY to any non-empty dummy value in Hermes config, pick any FAL model id (e.g. fal-ai/flux-2/klein/9b), and generation requests will be handled by your local ComfyUI backend.

Example requests

OpenAI:

curl -X POST http://127.0.0.1:8002/v1/images/generations \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "a photo of an astronaut riding a horse on the moon",
    "size": "512x512",
    "response_format": "b64_json"
  }'

FAL:

curl -X POST http://127.0.0.1:8002/fal/run/fal-ai/flux-2/klein/9b \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "a serene mountain landscape with cherry blossoms",
    "image_size": "landscape_16_9"
  }'

Cold-start behavior

The first request after the wrapper has been idle will trigger a ComfyUI startup. The API server waits for ComfyUI to start and generate the image, so the client may observe a longer response time on the first call. Subsequent calls are fast until the idle timeout elapses and ComfyUI is stopped again.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured