Draw Things MCP
# 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
Scored across 1 tool
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.
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.
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.
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.