MCP HubMCP Hub
joenorton

comfyui-mcp-server

by: joenorton

comfyui mcp server

35created 05/03/2025
Visit
comfyui

📌Overview

Purpose: To provide a lightweight server that allows AI agents to programmatically generate images through ComfyUI using the Model Context Protocol (MCP) via WebSockets.

Overview: The ComfyUI MCP Server facilitates seamless communication between AI agents and ComfyUI for image generation, leveraging the MCP protocol to allow for a flexible and dynamic image generation workflow.

Key Features:

  • Flexible Workflow Selection: Supports various workflow formats (e.g., basic_api_test.json), allowing users to choose different image generation processes easily.

  • Dynamic Parameters: Users can customize requests with adjustable parameters such as prompt, width, height, and model, providing great flexibility for image generation.

  • Image URL Response: The server returns generated image URLs directly from ComfyUI, simplifying the process of accessing and using generated images.


ComfyUI MCP Server

A lightweight Python-based MCP (Model Context Protocol) server that interfaces with a local ComfyUI instance to generate images programmatically via AI agent requests.

Overview

This project enables AI agents to send image generation requests to ComfyUI using the MCP protocol over WebSocket. It supports:

  • Flexible workflow selection (e.g., basic_api_test.json)
  • Dynamic parameters: prompt, width, height, and model
  • Returns image URLs served by ComfyUI

Prerequisites

  • Python 3.10+
  • ComfyUI: Installed and running locally (e.g., on localhost:8188)
  • Dependencies: requests, websockets, mcp (install via pip)

Setup

  1. Clone the Repository

    git clone <your-repo-url>
    cd comfyui-mcp-server
    
  2. Install Dependencies

    pip install requests websockets mcp
    
  3. Start ComfyUI

    cd <ComfyUI_dir>
    python main.py --port 8188
    
  4. Prepare Workflows

    • Place API-format workflow files (e.g., basic_api_test.json) in the workflows/ directory
    • Export workflows from ComfyUI’s UI with “Save (API Format)” (enable dev mode in settings)

Usage

  1. Run the MCP Server

    python server.py
    

    Listens on ws://localhost:9000

  2. Test with the Client

    python client.py
    

    Sends a sample request: "a dog wearing sunglasses" with 512x512 resolution using sd_xl_base_1.0.safetensors.

    Example output:

    {
      "image_url": "http://localhost:8188/view?filename=ComfyUI_00001_.png&subfolder=&type=output"
    }
    
  3. Custom Requests
    Modify client.py’s payload to change parameters such as prompt, width, height, workflow_id, or model.

    Example payload parameters:

    "params": json.dumps({
        "prompt": "a cat in space",
        "width": 768,
        "height": 768,
        "workflow_id": "basic_api_test",
        "model": "v1-5-pruned-emaonly.ckpt"
    })
    

Project Structure

  • server.py: MCP server with WebSocket transport and lifecycle support
  • comfyui_client.py: Interfaces with ComfyUI’s API, handles workflow queuing
  • client.py: Test client for sending MCP requests
  • workflows/: Directory for API-format workflow JSON files

Notes

  • Ensure your chosen model (e.g., v1-5-pruned-emaonly.ckpt) exists in <ComfyUI_dir>/models/checkpoints/
  • The MCP SDK lacks native WebSocket transport; this project uses a custom implementation
  • For custom workflows, adjust node IDs in comfyui_client.py’s DEFAULT_MAPPING if needed

Contributing

Feel free to submit issues or pull requests to enhance flexibility, such as dynamic node mapping or progress streaming.

License

Apache License