---
layout: modern
title: API Reference
---
<div class="doc-layout">
<aside class="doc-sidebar">
<div class="sidebar-section">
<div class="sidebar-title">Image Generation</div>
<nav class="sidebar-nav">
<a href="#generate-image" class="sidebar-link">generate_image</a>
<a href="#batch-generation" class="sidebar-link">Batch Generation</a>
<a href="#parameters" class="sidebar-link">Parameters</a>
</nav>
</div>
<div class="sidebar-section">
<div class="sidebar-title">Image Processing</div>
<nav class="sidebar-nav">
<a href="#remove-background" class="sidebar-link">remove_background</a>
<a href="#upscale-image" class="sidebar-link">upscale_image</a>
</nav>
</div>
<div class="sidebar-section">
<div class="sidebar-title">System</div>
<nav class="sidebar-nav">
<a href="#check-models" class="sidebar-link">check_models</a>
<a href="#connect" class="sidebar-link">connect_comfyui</a>
<a href="#disconnect" class="sidebar-link">disconnect_comfyui</a>
</nav>
</div>
<div class="sidebar-section">
<div class="sidebar-title">Integration</div>
<nav class="sidebar-nav">
<a href="#nodejs" class="sidebar-link">Node.js</a>
<a href="#python" class="sidebar-link">Python</a>
<a href="#shell" class="sidebar-link">Shell Script</a>
</nav>
</div>
</aside>
<div class="doc-content">
<h1>API Reference</h1>
<p class="hero-subtitle">Complete documentation for all MCP tools available in MCP-ComfyUI-FLUX.</p>
<h2 id="generate-image" class="gradient-text">generate_image</h2>
<div class="api-endpoint">
<div class="api-header">
<span class="api-method">FUNCTION</span>
<span class="api-path">generate_image(options)</span>
</div>
<div class="api-description">
<p>Generate high-quality images using FLUX schnell fp8 model. This is the primary function for creating AI-generated images.</p>
</div>
</div>
<h3 id="parameters">Parameters</h3>
<div class="api-parameters">
<div class="api-param">
<span class="param-name">prompt</span>
<span class="param-type">string</span>
<span class="param-desc"><strong>Required.</strong> Text description of the image to generate</span>
</div>
<div class="api-param">
<span class="param-name">negative_prompt</span>
<span class="param-type">string</span>
<span class="param-desc">Terms to avoid in generation (default: "")</span>
</div>
<div class="api-param">
<span class="param-name">width</span>
<span class="param-type">number</span>
<span class="param-desc">Image width in pixels (default: 1024, range: 768-1536)</span>
</div>
<div class="api-param">
<span class="param-name">height</span>
<span class="param-type">number</span>
<span class="param-desc">Image height in pixels (default: 1024, range: 768-1536)</span>
</div>
<div class="api-param">
<span class="param-name">steps</span>
<span class="param-type">number</span>
<span class="param-desc">Denoising steps (default: 4, optimized for schnell)</span>
</div>
<div class="api-param">
<span class="param-name">cfg_scale</span>
<span class="param-type">number</span>
<span class="param-desc">Guidance scale (default: 1.0, range: 1.0-20.0)</span>
</div>
<div class="api-param">
<span class="param-name">seed</span>
<span class="param-type">number</span>
<span class="param-desc">Random seed for reproducibility (default: -1 for random)</span>
</div>
<div class="api-param">
<span class="param-name">sampler_name</span>
<span class="param-type">string</span>
<span class="param-desc">Sampling method (default: "euler")</span>
</div>
<div class="api-param">
<span class="param-name">scheduler</span>
<span class="param-type">string</span>
<span class="param-desc">Scheduler algorithm (default: "simple")</span>
</div>
<div class="api-param">
<span class="param-name">batch_size</span>
<span class="param-type">number</span>
<span class="param-desc">Number of images to generate (default: 1, max: 8)</span>
</div>
</div>
<h3>Example Usage</h3>
<div class="code-tabs">
<button class="code-tab active" data-tab="simple">Simple</button>
<button class="code-tab" data-tab="advanced">Advanced</button>
<button class="code-tab" data-tab="batch">Batch</button>
</div>
<div class="code-content" id="simple-content">
<pre><code class="language-javascript">// Simple generation with just a prompt
generate_image({
prompt: "beautiful sunset over ocean, golden hour photography"
})</code></pre>
</div>
<div class="code-content" id="advanced-content" style="display: none;">
<pre><code class="language-javascript">// Advanced parameters for fine control
generate_image({
prompt: "cyberpunk city street, neon lights, rain, reflections",
negative_prompt: "blurry, low quality, distorted",
width: 1280,
height: 768,
seed: 42,
cfg_scale: 1.0,
steps: 4,
sampler_name: "euler",
scheduler: "simple"
})</code></pre>
</div>
<div class="code-content" id="batch-content" style="display: none;">
<pre><code class="language-javascript">// Generate multiple variations efficiently
generate_image({
prompt: "fantasy landscapes with mountains",
batch_size: 4,
seed: 100 // Seeds will be 100, 101, 102, 103
})</code></pre>
</div>
<h3>Response Format</h3>
<div class="code-content">
<pre><code class="language-javascript">{
success: true,
images: [
{
path: "flux_output_00001_.png",
seed: 123456789,
width: 1024,
height: 1024
}
],
metadata: {
prompt: "your prompt",
model: "flux1-schnell-fp8",
generation_time: 2.5
}
}</code></pre>
</div>
<h3 id="batch-generation">Batch Generation</h3>
<div class="feature-card">
<h3>Efficient Multi-Image Generation</h3>
<p>Batch generation creates multiple images in a single GPU pass, which is much faster than sequential generation:</p>
<ul>
<li><strong>Single image:</strong> ~3 seconds</li>
<li><strong>Batch of 4:</strong> ~8 seconds total (~2s per image)</li>
<li><strong>Batch of 8:</strong> ~15 seconds total (~1.9s per image)</li>
</ul>
</div>
<hr style="margin: 3rem 0; border-color: var(--border-color);">
<h2 id="remove-background" class="gradient-text">remove_background</h2>
<div class="api-endpoint">
<div class="api-header">
<span class="api-method">FUNCTION</span>
<span class="api-path">remove_background(options)</span>
</div>
<div class="api-description">
<p>Remove background from images using the state-of-the-art RMBG-2.0 AI model.</p>
</div>
</div>
<h3>Parameters</h3>
<div class="api-parameters">
<div class="api-param">
<span class="param-name">image_path</span>
<span class="param-type">string</span>
<span class="param-desc"><strong>Required.</strong> Path to the input image file</span>
</div>
<div class="api-param">
<span class="param-name">alpha_matting</span>
<span class="param-type">boolean</span>
<span class="param-desc">Use alpha matting for smoother edges (default: true)</span>
</div>
<div class="api-param">
<span class="param-name">output_format</span>
<span class="param-type">string</span>
<span class="param-desc">Output format: "png" or "webp" (default: "png")</span>
</div>
</div>
<h3>Example Usage</h3>
<div class="code-content">
<pre><code class="language-javascript">// Simple background removal
remove_background({
image_path: "flux_output_00001_.png"
})
// Without edge smoothing for sharp cutouts
remove_background({
image_path: "output/portrait.png",
alpha_matting: false
})
// WebP format for smaller file size
remove_background({
image_path: "output/product.png",
output_format: "webp"
})</code></pre>
</div>
<hr style="margin: 3rem 0; border-color: var(--border-color);">
<h2 id="upscale-image" class="gradient-text">upscale_image</h2>
<div class="api-endpoint">
<div class="api-header">
<span class="api-method">FUNCTION</span>
<span class="api-path">upscale_image(options)</span>
</div>
<div class="api-description">
<p>Upscale images to 4x resolution using specialized AI models. Transform 1024x1024 images to 4096x4096.</p>
</div>
</div>
<h3>Parameters</h3>
<div class="api-parameters">
<div class="api-param">
<span class="param-name">image_path</span>
<span class="param-type">string</span>
<span class="param-desc"><strong>Required.</strong> Path to the input image file</span>
</div>
<div class="api-param">
<span class="param-name">model</span>
<span class="param-type">string</span>
<span class="param-desc">Upscaling model: "ultrasharp" or "animesharp" (default: "ultrasharp")</span>
</div>
<div class="api-param">
<span class="param-name">scale_factor</span>
<span class="param-type">number</span>
<span class="param-desc">Additional scaling factor (default: 1.0, range: 0.5-2.0)</span>
</div>
<div class="api-param">
<span class="param-name">content_type</span>
<span class="param-type">string</span>
<span class="param-desc">Auto-select model: "general", "anime", "artwork", "illustration"</span>
</div>
</div>
<h3>Available Models</h3>
<div class="features-grid">
<div class="feature-card">
<div class="feature-icon">🖼️</div>
<h3 class="feature-title">4x-UltraSharp</h3>
<p class="feature-description">
General purpose upscaler. Excellent for photos, realistic images, and most content types.
</p>
</div>
<div class="feature-card">
<div class="feature-icon">🎨</div>
<h3 class="feature-title">4x-AnimeSharp</h3>
<p class="feature-description">
Optimized for anime, illustrations, digital artwork, and cartoon-style images.
</p>
</div>
</div>
<h3>Example Usage</h3>
<div class="code-content">
<pre><code class="language-javascript">// Basic upscaling with UltraSharp
upscale_image({
image_path: "flux_output_00001_.png"
})
// Anime/illustration upscaling
upscale_image({
image_path: "output/anime.png",
model: "animesharp"
})
// Auto model selection based on content
upscale_image({
image_path: "output/artwork.png",
content_type: "illustration" // Will use animesharp
})
// Custom scaling (6x total: 4x * 1.5)
upscale_image({
image_path: "output/photo.png",
scale_factor: 1.5
})</code></pre>
</div>
<hr style="margin: 3rem 0; border-color: var(--border-color);">
<h2 id="check-models" class="gradient-text">System Functions</h2>
<h3>check_models()</h3>
<div class="api-endpoint">
<div class="api-header">
<span class="api-method">FUNCTION</span>
<span class="api-path">check_models()</span>
</div>
<div class="api-description">
<p>Verify available models in ComfyUI. No parameters required.</p>
</div>
</div>
<div class="code-content">
<pre><code class="language-javascript">// Check available models
const result = check_models()
// Response
{
success: true,
models: {
unet: ["flux1-schnell-fp8-e4m3fn.safetensors"],
clip: ["clip_l.safetensors", "t5xxl_fp8_e4m3fn_scaled.safetensors"],
vae: ["ae.safetensors"],
upscale: ["4x-UltraSharp.safetensors", "4x-AnimeSharp.safetensors"],
rmbg: ["RMBG-2.0.safetensors"]
},
status: "All models loaded"
}</code></pre>
</div>
<h3 id="connect">connect_comfyui()</h3>
<div class="api-endpoint">
<div class="api-header">
<span class="api-method">FUNCTION</span>
<span class="api-path">connect_comfyui(options)</span>
</div>
<div class="api-description">
<p>Manually connect to ComfyUI server. Usually auto-connects on startup.</p>
</div>
</div>
<div class="code-content">
<pre><code class="language-javascript">// Default connection
connect_comfyui()
// Custom server address
connect_comfyui({
server_address: "localhost:8188"
})</code></pre>
</div>
<h3 id="disconnect">disconnect_comfyui()</h3>
<div class="api-endpoint">
<div class="api-header">
<span class="api-method">FUNCTION</span>
<span class="api-path">disconnect_comfyui()</span>
</div>
<div class="api-description">
<p>Disconnect from ComfyUI server. No parameters required.</p>
</div>
</div>
<hr style="margin: 3rem 0; border-color: var(--border-color);">
<h2 class="gradient-text">Integration Examples</h2>
<h3 id="nodejs">Node.js Integration</h3>
<div class="code-content">
<pre><code class="language-javascript">const { generate_image } = require('mcp-comfyui-flux');
async function createArt() {
const result = await generate_image({
prompt: "fantasy landscape with dragons",
batch_size: 2
});
console.log('Generated images:', result.images);
// Process each image
for (const image of result.images) {
console.log(`Image saved to: ${image.path}`);
console.log(`Seed used: ${image.seed}`);
}
}
createArt().catch(console.error);</code></pre>
</div>
<h3 id="python">Python Integration</h3>
<div class="code-content">
<pre><code class="language-python">import subprocess
import json
def generate_image(prompt):
"""Generate an image using MCP-ComfyUI-FLUX"""
cmd = [
'docker', 'exec', 'mcp-comfyui-flux-mcp-server-1',
'node', '-e',
f'require("./dist/index.js").generate_image({% raw %}{{prompt: "{prompt}"}}{% endraw %})'
]
result = subprocess.run(cmd, capture_output=True, text=True)
return json.loads(result.stdout)
# Example usage
image = generate_image("futuristic cityscape at night")
print(f"Image generated: {image['images'][0]['path']}")</code></pre>
</div>
<h3 id="shell">Shell Script Integration</h3>
<div class="code-content">
<pre><code class="language-bash">#!/bin/bash
# Function to generate image
generate_image() {
local prompt="$1"
docker exec mcp-comfyui-flux-mcp-server-1 node -e "
const mcp = require('./dist/index.js');
mcp.generate_image({
prompt: '$prompt',
seed: 42
}).then(result => {
console.log(JSON.stringify(result, null, 2));
}).catch(console.error);
"
}
# Usage
generate_image "mountain landscape at sunset"</code></pre>
</div>
<hr style="margin: 3rem 0; border-color: var(--border-color);">
<h2 class="gradient-text">Performance & Limits</h2>
<div class="stats">
<div class="stats-container">
<div class="stat-item">
<div class="stat-value">5</div>
<div class="stat-label">Max Concurrent Requests</div>
</div>
<div class="stat-item">
<div class="stat-value">100</div>
<div class="stat-label">Queue Size</div>
</div>
<div class="stat-item">
<div class="stat-value">60s</div>
<div class="stat-label">Request Timeout</div>
</div>
<div class="stat-item">
<div class="stat-value">8</div>
<div class="stat-label">Max Batch Size</div>
</div>
</div>
</div>
<h3>VRAM Usage Guide</h3>
<div class="api-endpoint">
<div class="api-header">
<span class="api-method">INFO</span>
<span class="api-path">Memory Requirements</span>
</div>
<div class="api-parameters">
<div class="api-param">
<span class="param-name">Base model load</span>
<span class="param-type">~10GB</span>
<span class="param-desc">Initial FLUX model loading</span>
</div>
<div class="api-param">
<span class="param-name">Single 1024x1024</span>
<span class="param-type">+1GB</span>
<span class="param-desc">Additional for generation</span>
</div>
<div class="api-param">
<span class="param-name">Batch of 4</span>
<span class="param-type">+4GB</span>
<span class="param-desc">Parallel generation overhead</span>
</div>
<div class="api-param">
<span class="param-name">Upscaling</span>
<span class="param-type">+2GB</span>
<span class="param-desc">4x upscaling process</span>
</div>
<div class="api-param">
<span class="param-name">Background removal</span>
<span class="param-type">+1GB</span>
<span class="param-desc">RMBG-2.0 model</span>
</div>
</div>
</div>
<div class="hero-content" style="margin-top: 3rem; text-align: center;">
<h2 class="gradient-text">Need More Help?</h2>
<div class="hero-buttons">
<a href="{{ site.baseurl }}/examples" class="btn btn-primary">
<i class="fas fa-flask"></i> View Examples
</a>
<a href="https://github.com/dhofheinz/mcp-comfyui-flux/issues" class="btn btn-secondary">
<i class="fas fa-question-circle"></i> Get Support
</a>
</div>
</div>
</div>
</div>
<script>
// Tab switching
document.querySelectorAll('.code-tab').forEach(tab => {
tab.addEventListener('click', () => {
const tabGroup = tab.parentElement;
tabGroup.querySelectorAll('.code-tab').forEach(t => t.classList.remove('active'));
tab.classList.add('active');
const contentId = tab.dataset.tab + '-content';
tabGroup.parentElement.querySelectorAll('.code-content').forEach(c => {
if (c.id && c.id.includes('-content')) {
c.style.display = 'none';
}
});
const content = document.getElementById(contentId);
if (content) content.style.display = 'block';
});
});
// Sidebar navigation highlighting
const sections = document.querySelectorAll('h2[id], h3[id]');
const navLinks = document.querySelectorAll('.sidebar-link');
window.addEventListener('scroll', () => {
let current = '';
sections.forEach(section => {
const sectionTop = section.offsetTop;
if (pageYOffset >= sectionTop - 100) {
current = section.getAttribute('id');
}
});
navLinks.forEach(link => {
link.classList.remove('active');
if (link.getAttribute('href') === `#${current}`) {
link.classList.add('active');
}
});
});
</script>