Skip to main content
Glama
README.md
# comfyui-common-mcp

_This is improved node.js version of Joe Norton's python project (https://github.com/joenorton/comfyui-mcp-server)._

A lightweight MCP (Model Context Protocol) server that bridges AI agents (like Cursor, Claude, etc.) with a local ComfyUI instance. It enables AI agents to generate and iteratively refine images, audio, and video through conversational tool calls.

## Features

- **Image Generation**: Generate images using Stable Diffusion through ComfyUI
- **Audio Generation**: Generate audio/music using AceStep workflow
- **Workflow System**: PARAM\_\* placeholder system for easy workflow customization
- **Asset Management**: Track, view, and manage generated assets
- **Job Management**: Monitor queue, check job status, cancel jobs
- **Configuration**: List available models

## Quick Start

### Option 1: Via npx (for MCP clients)

No local clone needed. Add to your MCP client configuration (Cursor, Claude, etc.):

```json
"comfyui": {
  "command": "npx",
  "args": ["-y", "comfyui-common-mcp"],
  "env": {
    "COMFYUI_URL": "http://localhost:8188",
    "COMFY_MCP_WORKFLOW_DIR": "/path/to/workflows",
    "COMFY_MCP_ASSET_TTL_HOURS": "24"
  }
}
```

> **Note:** ComfyUI must be running at `COMFYUI_URL` before the MCP client connects.

### Option 2: Local development

```bash
git clone https://github.com/yar3333/comfyui-common-mcp.git
cd comfyui-common-mcp
npm install
npm run build
```

Then start:

| Command       | Mode                    |
| ------------- | ----------------------- |
| `npm start`   | stdio (for MCP clients) |
| `npm run dev` | stdio with ts-node      |

## Configuration

### Environment Variables

| Variable                    | Description                 | Default                 |
| --------------------------- | --------------------------- | ----------------------- |
| `COMFYUI_URL`               | ComfyUI base URL            | `http://localhost:8188` |
| `COMFY_MCP_WORKFLOW_DIR`    | Path to workflow directory  | `./workflows`           |
| `COMFY_MCP_ASSET_TTL_HOURS` | Asset time-to-live in hours | `24`                    |

## API Tools

### Generation Tools

| Tool          | Description                                          |
| ------------- | ---------------------------------------------------- |
| `<workflows>` | Available workflows automatically published as tools |
| `regenerate`  | Regenerate a previously generated asset              |

### Viewing Tools

| Tool         | Description                           |
| ------------ | ------------------------------------- |
| `view_image` | View a generated image inline in chat |

### Job Management Tools

| Tool                 | Description                                   |
| -------------------- | --------------------------------------------- |
| `get_queue_status`   | Get current queue status from ComfyUI         |
| `get_job`            | Get job status by prompt_id                   |
| `wait_for_job`       | Wait for a job to complete with timeout       |
| `list_assets`        | List generated assets with optional filtering |
| `get_asset_metadata` | Get full metadata for a specific asset        |
| `cancel_job`         | Cancel a running job by prompt_id             |

### Configuration Tools

| Tool                     | Description                                                 |
| ------------------------ | ----------------------------------------------------------- |
| `list_checkpoint_models` | List available checkpoint models from ComfyUI               |
| `list_unet_models`       | List available UNet models in standard (safetensors) format |
| `list_unet_gguf_models`  | List available UNet models in GGUF format                   |

### Workflow Tools

| Tool             | Description                                        |
| ---------------- | -------------------------------------------------- |
| `list_workflows` | List available workflows in the workflow directory |
| `run_workflow`   | Run a specific workflow with parameter overrides   |

## Workflow System

Workflows are stored as JSON files in the `workflows/` directory. The system automatically discovers workflows and exposes them as MCP tools. Parameters are defined using the `PARAM_*` placeholder system:

- `PARAM_INT_SEED` - Integer parameter for seed
- `PARAM_FLOAT_CFG` - Float parameter for CFG scale
- `PARAM_STR_SAMPLER_NAME` - String parameter for sampler name
- `PARAM_PROMPT` - String parameter for prompt

## Test

Prerequisites: ComfyUI running at `http://localhost:8188`, server built and started.

```bash
# Run the test client
npx ts-node test_client.ts

# With custom prompt
npx ts-node test_client.ts -p "a beautiful sunset over mountains"
```

```bash
# Run unit tests
npm test
```

## Project Structure

```
comfyui-common-mcp/
├── src/
│   ├── comfyui_client.ts        # HTTP client for ComfyUI API
│   ├── asset_processor.ts       # Image processing utilities
│   ├── server.ts                # Main entry point
│   ├── models/                  # Data models
│   │   ├── asset.ts
│   │   └── workflow.ts
│   ├── managers/                # Manager classes
│   │   ├── workflow_manager.ts
│   │   └── asset_registry.ts
│   └── tools/                   # MCP tool implementations
│       ├── helpers.ts
│       ├── generation.ts
│       ├── asset.ts
│       ├── job.ts
│       ├── configuration.ts
│       └── workflow.ts
├── workflows/                   # Workflow JSON files
├── test_client.ts               # Test client
├── package.json
├── tsconfig.json
└── README.md
```

## Changelog

### v2.x.x

- add `list_checkpoint_models` tool
- add `list_unet_models` tool
- add `list_unet_gguf_models` tool
- remove http mode (stdio looks enough)
- remove `list_models` tool
- remove publish system (caused confusion for AI agents; use custom output node instead)
- remove default parameters (caused confusion for AI agents; use regular PARAM\_\* instead)
- remove output folder setting (use custom output node instead; for example: https://gist.github.com/kevinjwesley-Collab/a548ee5e6244ebf905f0669e1d7d4958)

### v1.x.x

- add `wait_for_job` tool

## License

MIT

## Author

[@yar3333](https://github.com/yar3333)