---
layout: modern
title: Quick Start
---
<div class="doc-layout">
<aside class="doc-sidebar">
<div class="sidebar-section">
<div class="sidebar-title">Getting Started</div>
<nav class="sidebar-nav">
<a href="#prerequisites" class="sidebar-link">Prerequisites</a>
<a href="#installation" class="sidebar-link">Installation</a>
<a href="#configuration" class="sidebar-link">Configuration</a>
<a href="#first-image" class="sidebar-link">First Image</a>
<a href="#troubleshooting" class="sidebar-link">Troubleshooting</a>
</nav>
</div>
</aside>
<div class="doc-content">
<h1 id="prerequisites">Quick Start Guide</h1>
<p>Get MCP-ComfyUI-FLUX up and running in minutes with this comprehensive quick start guide.</p>
<h2 id="prerequisites">Prerequisites</h2>
<div class="feature-card" style="margin-bottom: 2rem;">
<h3>System Requirements</h3>
<ul>
<li><strong>GPU:</strong> NVIDIA GPU with 12GB+ VRAM (RTX 3060 or better)</li>
<li><strong>RAM:</strong> 20GB+ system memory</li>
<li><strong>Storage:</strong> 50GB+ free space</li>
<li><strong>OS:</strong> Windows with WSL2, Linux, or macOS with Docker</li>
</ul>
</div>
<div class="feature-card" style="margin-bottom: 2rem;">
<h3>Software Requirements</h3>
<ul>
<li>Docker Desktop (latest version)</li>
<li>NVIDIA GPU Drivers (525+)</li>
<li>NVIDIA Container Toolkit</li>
<li>Claude Desktop or Claude Code</li>
<li>Git</li>
</ul>
</div>
<h2 id="installation">Installation</h2>
<h3>Option 1: Automated Installation (Recommended)</h3>
<div class="code-content">
<pre><code class="language-bash"># Clone the repository
git clone https://github.com/dhofheinz/mcp-comfyui-flux.git
cd mcp-comfyui-flux
# Run the automated installer
./install.sh</code></pre>
</div>
<p>The installer will:</p>
<ul>
<li>✅ Check system requirements</li>
<li>✅ Download required models (~11GB)</li>
<li>✅ Build Docker containers</li>
<li>✅ Configure Claude Desktop integration</li>
<li>✅ Start all services</li>
<li>✅ Run health checks</li>
</ul>
<h3>Option 2: Manual Installation</h3>
<div class="code-tabs">
<button class="code-tab active" data-tab="step1">Step 1: WSL2 Setup</button>
<button class="code-tab" data-tab="step2">Step 2: Download Models</button>
<button class="code-tab" data-tab="step3">Step 3: Build & Start</button>
</div>
<div class="code-content" id="step1-content">
<pre><code class="language-bash"># For Windows users: Configure WSL2 memory
# Create or edit ~/.wslconfig
cat > ~/.wslconfig << EOF
[wsl2]
memory=20GB
processors=8
localhostForwarding=true
nestedVirtualization=true
[experimental]
autoMemoryReclaim=gradual
sparseVhd=true
EOF
# Restart WSL
wsl --shutdown</code></pre>
</div>
<div class="code-content" id="step2-content" style="display: none;">
<pre><code class="language-bash"># Download FLUX models (11GB)
./scripts/download-models.sh
# Optional: Download upscaling models (128MB)
./scripts/download-upscale-models.sh
# Verify downloads
ls -la models/unet/
ls -la models/clip/</code></pre>
</div>
<div class="code-content" id="step3-content" style="display: none;">
<pre><code class="language-bash"># Build containers with optimizations
./build.sh --start
# Or use docker-compose directly
docker-compose -p mcp-comfyui-flux build
docker-compose -p mcp-comfyui-flux up -d
# Check container status
docker ps | grep mcp-comfyui</code></pre>
</div>
<h2 id="configuration">Claude Desktop Configuration</h2>
<div class="api-endpoint">
<div class="api-header">
<span class="api-method">CONFIG</span>
<span class="api-path">Windows: %APPDATA%\Claude\claude_desktop_config.json</span>
</div>
<div class="api-description">
<p>Configure Claude Desktop to connect to the MCP server:</p>
</div>
<div class="code-content">
<pre><code class="language-json">{
"mcpServers": {
"mcp-comfyui-flux": {
"command": "docker",
"args": [
"exec",
"-i",
"mcp-comfyui-flux-mcp-server-1",
"node",
"/app/dist/index.js"
],
"env": {}
}
}
}</code></pre>
</div>
</div>
<div class="feature-card" style="margin: 2rem 0;">
<h3>🎉 Verification</h3>
<p>After configuration:</p>
<ol>
<li>Restart Claude Desktop completely</li>
<li>Type <code>/mcp</code> in Claude to verify connection</li>
<li>You should see "mcp-comfyui-flux" in the available servers</li>
</ol>
</div>
<h2 id="first-image">Generate Your First Image</h2>
<div class="hero-content" style="text-align: left;">
<h3>In Claude Desktop</h3>
<p>Simply ask Claude to generate an image:</p>
<div class="code-content">
<pre><code class="language-text">You: "Generate an image of a futuristic city at sunset"
Claude: I'll generate a futuristic city at sunset for you.
[Calls generate_image with your prompt]
Result: Image saved to flux_output_00001_.png</code></pre>
</div>
<h3>Direct API Usage</h3>
<p>Or test directly with the MCP tools:</p>
<div class="code-content">
<pre><code class="language-javascript">// Test with example script
docker exec mcp-comfyui-flux-mcp-server-1 node examples/example.js
// Or use the API directly
generate_image({
prompt: "majestic mountain landscape, golden hour",
seed: 42,
batch_size: 2
})</code></pre>
</div>
</div>
<h2 id="troubleshooting">Troubleshooting</h2>
<div class="features-grid" style="margin-top: 2rem;">
<div class="feature-card">
<div class="feature-icon">🔍</div>
<h3 class="feature-title">Container Issues</h3>
<div class="code-content">
<pre><code class="language-bash"># View logs
docker logs mcp-comfyui-flux-mcp-server-1 -f
# Restart containers
docker-compose -p mcp-comfyui-flux restart</code></pre>
</div>
</div>
<div class="feature-card">
<div class="feature-icon">🎮</div>
<h3 class="feature-title">GPU Detection</h3>
<div class="code-content">
<pre><code class="language-bash"># Check GPU in container
docker exec mcp-comfyui-flux-comfyui-1 nvidia-smi
# Verify CUDA
docker exec mcp-comfyui-flux-comfyui-1 python -c \
"import torch; print(torch.cuda.is_available())"</code></pre>
</div>
</div>
<div class="feature-card">
<div class="feature-icon">🤖</div>
<h3 class="feature-title">Claude Connection</h3>
<p>If Claude doesn't detect the MCP server:</p>
<ul>
<li>Ensure containers are running</li>
<li>Check config file path is correct</li>
<li>Restart Claude Desktop completely</li>
<li>Verify with <code>/mcp</code> command</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon">💾</div>
<h3 class="feature-title">Out of Memory</h3>
<p>If you get OOM errors:</p>
<ul>
<li>Reduce image dimensions (try 768x768)</li>
<li>Lower batch_size to 1</li>
<li>Ensure using fp8 models</li>
<li>Check WSL2 memory allocation</li>
</ul>
</div>
</div>
<div class="hero-content" style="margin-top: 3rem; text-align: center;">
<h2 class="gradient-text">Next Steps</h2>
<div class="hero-buttons">
<a href="{{ site.baseurl }}/documentation" class="btn btn-primary">
<i class="fas fa-book"></i> Full Documentation
</a>
<a href="{{ site.baseurl }}/examples" class="btn btn-secondary">
<i class="fas fa-flask"></i> View Examples
</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';
}
});
document.getElementById(contentId).style.display = 'block';
});
});
// Sidebar navigation highlighting
const sections = document.querySelectorAll('h2[id], h1[id]');
const navLinks = document.querySelectorAll('.sidebar-link');
window.addEventListener('scroll', () => {
let current = '';
sections.forEach(section => {
const sectionTop = section.offsetTop;
const sectionHeight = section.clientHeight;
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>