Skip to main content
Glama
README.md
# Draw Things MCP

Draw Things API integration for Cursor using Model Context Protocol (MCP).

## Prerequisites

- Node.js >= 14.0.0
- Draw Things API running on http://127.0.0.1:7888

## Installation

```bash
# Install globally
npm install -g draw-things-mcp-cursor

# Or run directly
npx draw-things-mcp-cursor
```

## Cursor Integration

To set up this tool in Cursor, see the detailed guide in [cursor-setup.md](./cursor-setup.md).

Quick setup:

1. Create or edit `~/.cursor/claude_desktop_config.json`:
```json
{
  "mcpServers": {
    "draw-things": {
      "command": "draw-things-mcp-cursor",
      "args": []
    }
  }
}
```

2. Restart Cursor
3. Use in Cursor: `generateImage({"prompt": "a cute cat"})`

## CLI Usage

### Generate Image

```bash
echo '{"prompt": "your prompt here"}' | npx draw-things-mcp-cursor
```

### Parameters

- `prompt`: The text prompt for image generation (required)
- `negative_prompt`: The negative prompt for image generation
- `width`: Image width (default: 360)
- `height`: Image height (default: 360)
- `steps`: Number of steps for generation (default: 8)
- `model`: Model to use for generation (default: "flux_1_schnell_q5p.ckpt")
- `sampler`: Sampling method (default: "DPM++ 2M AYS")

Example:

```bash
echo '{
  "prompt": "a happy smiling dog, professional photography",
  "negative_prompt": "ugly, deformed, blurry",
  "width": 360,
  "height": 360,
  "steps": 4
}' | npx draw-things-mcp-cursor
```

### MCP Tool Integration

When used as an MCP tool in Cursor, the tool will be registered as `generateImage` with the following parameters:

```typescript
{
  prompt: string;       // Required - The prompt to generate the image from
  negative_prompt?: string;  // Optional - The negative prompt
  width?: number;       // Optional - Image width (default: 360)
  height?: number;      // Optional - Image height (default: 360)
  model?: string;       // Optional - Model name
  steps?: number;       // Optional - Number of steps (default: 8)
}
```

The generated images will be saved in the `images` directory with a filename format of:
`<sanitized_prompt>_<timestamp>.png`

## Response Format

Success:
```json
{
  "type": "success",
  "content": [{
    "type": "image",
    "data": "base64 encoded image data",
    "mimeType": "image/png"
  }],
  "metadata": {
    "parameters": { ... }
  }
}
```

Error:
```json
{
  "type": "error",
  "error": "error message",
  "code": 500
}
```

## Troubleshooting

If you encounter issues:

- Ensure Draw Things API is running at http://127.0.0.1:7888
- Check log files in `~/.cursor/logs` if using with Cursor
- Make sure src/index.js has execution permissions: `chmod +x src/index.js`

## License

MIT 

TDQS

C2.7/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion or overlap between tools. The single tool 'generateImage' has a distinct and clear purpose, so disambiguation is perfect.

Naming Consistency5/5

Since there is only one tool, naming consistency is inherently perfect. The tool name 'generateImage' follows a clear verb_noun pattern, and there are no other tools to compare it against for inconsistency.

Tool Count2/5

A single tool for an image generation server feels thin and limited in scope. While it covers the core function, it lacks supporting operations like editing, listing, or managing images, making it borderline too few for a typical domain.

Completeness2/5

The server's purpose appears to be image generation, but with only a generate tool, there are significant gaps. There is no way to retrieve, update, delete, or manage generated images, which will likely cause agent failures in workflows requiring more than one-off generation.

Maintenance

ActivityInactive
ResponsivenessNo issues