Skip to main content
Glama

ComfyUI MCP Server

CI codecov PyPI version Python 3.10+ License: MIT

DSL-first workflow management for ComfyUI via Model Context Protocol (MCP)

A production-ready MCP server that enables AI agents to manage ComfyUI workflows using a human-readable Domain Specific Language (DSL). The core design philosophy is DSL-first: agents work entirely in DSL format, with JSON conversion happening transparently.

πŸš€ Quick Start

Installation

pip install comfy-mcp

Usage with Claude Code

  1. Create MCP configuration:

{
  "mcpServers": {
    "comfyui-workflows": {
      "command": "comfy-mcp",
      "args": [],
      "env": {}
    }
  }
}
  1. Start Claude Code with MCP:

claude --mcp-config mcp_config.json
  1. Use in conversation:

"Execute this workflow: [paste DSL]"
"List workflows in examples directory"
"Show ComfyUI queue status"

✨ Features

πŸ”„ DSL-First Design

  • Agents work entirely in human-readable DSL

  • Automatic JSON ↔ DSL conversion

  • No need to think about format conversion

πŸ“ File Operations

  • read_workflow - Auto-converts JSON to DSL

  • write_workflow - Saves DSL as JSON/DSL

  • list_workflows - Discovers workflow files

  • validate_workflow - DSL syntax validation

  • get_workflow_info - Workflow analysis

⚑ Execution Operations

  • execute_workflow - Run DSL workflows on ComfyUI

  • get_job_status - Monitor execution & download images

  • list_comfyui_queue - View ComfyUI queue status

🎨 DSL Syntax Example

## Model Loading

checkpoint: CheckpointLoaderSimple
  ckpt_name: sd_xl_base_1.0.safetensors

## Text Conditioning

positive: CLIPTextEncode
  text: a beautiful landscape, detailed, photorealistic
  clip: @checkpoint.clip

negative: CLIPTextEncode
  text: blurry, low quality
  clip: @checkpoint.clip

## Generation

latent: EmptyLatentImage
  width: 1024
  height: 1024

sampler: KSampler
  model: @checkpoint.model
  positive: @positive.conditioning
  negative: @negative.conditioning
  latent_image: @latent.latent
  seed: 42
  steps: 20

## Output

decode: VAEDecode
  samples: @sampler.latent
  vae: @checkpoint.vae

save: SaveImage
  images: @decode.image
  filename_prefix: output

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   AI Agent      │────│  MCP Server  │────│  ComfyUI    β”‚
β”‚   (Claude)      β”‚    β”‚              β”‚    β”‚   Server    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                       β”‚                  β”‚
         β”‚ DSL Workflows         β”‚ JSON API         β”‚
         β”‚                       β”‚                  β”‚
         β–Ό                       β–Ό                  β–Ό
   Natural Language ────► DSL Parser ────► JSON Converter

Key Components:

  • DSL Parser: Converts human-readable DSL to Abstract Syntax Tree

  • JSON Converter: Bidirectional conversion between DSL and ComfyUI JSON

  • MCP Server: Exposes tools via Model Context Protocol

  • Execution Engine: Integrates with ComfyUI API for workflow execution

πŸ“– Documentation

Core Classes

  • DSLParser: Parse DSL text into Abstract Syntax Tree

  • DslToJsonConverter: Convert DSL AST to ComfyUI JSON

  • JsonToDslConverter: Convert ComfyUI JSON to DSL AST

MCP Tools

Tool

Description

Example

read_workflow

Read and convert workflows to DSL

read_workflow("workflow.json")

write_workflow

Write DSL to disk as JSON/DSL

write_workflow("output.json", dsl)

list_workflows

Find workflow files

list_workflows("./workflows")

validate_workflow

Check DSL syntax

validate_workflow(dsl_content)

get_workflow_info

Analyze structure

get_workflow_info(dsl_content)

execute_workflow

Run on ComfyUI

execute_workflow(dsl_content)

get_job_status

Monitor execution

get_job_status(prompt_id)

list_comfyui_queue

View queue

list_comfyui_queue()

πŸ› οΈ Development

Setup

git clone https://github.com/christian-byrne/comfy-mcp.git
cd comfy-mcp
pip install -e ".[dev]"
pre-commit install

Testing

# Run all tests
pytest

# Run with coverage
pytest --cov=comfy_mcp --cov-report=html

# Run specific test types
pytest -m unit
pytest -m integration
pytest -m "not slow"

Code Quality

# Format code
black .

# Lint code  
ruff check .

# Type checking
mypy comfy_mcp

Documentation

cd docs
make html

πŸ”§ Configuration

Environment Variables

  • COMFYUI_SERVER: ComfyUI server address (default: 127.0.0.1:8188)

  • MCP_DEBUG: Enable debug logging

  • MCP_LOG_LEVEL: Set log level (DEBUG, INFO, WARNING, ERROR)

ComfyUI Setup

  1. Install ComfyUI

  2. Start server: python main.py --listen 0.0.0.0

  3. Ensure models are installed in models/checkpoints/

🀝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Development Workflow

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature-name

  3. Make changes and add tests

  4. Run tests and linting: pytest && black . && ruff check .

  5. Submit a pull request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • ComfyUI - Amazing stable diffusion GUI

  • FastMCP - Excellent MCP framework

  • Anthropic - Model Context Protocol specification

πŸ“ˆ Roadmap

  • v0.2.0: Enhanced DSL features (templates, macros)

  • v0.3.0: Web UI for workflow management

  • v0.4.0: Git integration for workflow versioning

  • v0.5.0: ComfyUI node discovery and documentation

  • v1.0.0: Production deployment features


Built with ❀️ for the ComfyUI and AI automation community

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Resources

Looking for Admin?

Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/christian-byrne/comfy-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server