npx skills add ...
npx skills add reason-machines/mcp-skills --skill meigen-ai-design-mcp
MCP server for AI image & video generation with 9 models (GPT Image 2, Nanobanana 2, Flux 2, Midjourney V8.1, Veo 3.1, local ComfyUI), 1,446 curated prompts, and parallel batch orchestration
npx skills add reason-machines/mcp-skills --skill meigen-ai-design-mcp
Skill by ara.so — MCP Skills collection.
MeiGen AI Design MCP is an open-source MCP server that transforms AI coding tools (Claude Code, Cursor, Windsurf, Roo Code, OpenClaw, etc.) into professional design assistants. It provides unified access to 9 leading image and video generation models, a curated library of 1,446 trending prompts, and parallel sub-agent orchestration for batch generation.
Restart Claude Code after installation.
Add to your MCP config (.mcp.json, claude_desktop_config.json, etc.):
Add to ~/.hermes/config.yaml:
Run the setup wizard:
The wizard walks through:
Run on your own GPU with full control:
Environment variables:
Get your API token at meigen.ai → Settings → API Keys:
Environment variable:
Bring your own key and endpoint:
Environment variables:
Search 1,446 curated trending prompts with visual previews.
TypeScript usage:
Natural language prompt:
"Search the gallery for luxury product photography inspiration"
Get full prompt, all images, and metadata for a specific gallery entry.
TypeScript usage:
Transform brief ideas into professional image prompts with style awareness.
TypeScript usage:
Natural language prompt:
"Enhance this prompt: a cat in a kitchen"
List available models across all configured providers.
TypeScript usage:
Generate an image with automatic provider routing, reference image upload, and aspect ratio handling.
TypeScript usage:
Natural language prompt:
"Generate a minimalist tech logo in 1:1 ratio using Midjourney V8.1"
With reference image:
"Generate a product shot based on this bottle.jpg in my Downloads folder"
Generate video via MeiGen platform (Seedance 2.0, Happyhorse 1.0, or Veo 3.1).
TypeScript usage:
Natural language prompt:
"Animate this product photo into a 5-second video with a slow zoom"
Manage ComfyUI workflow templates.
TypeScript usage:
Store user preferences (style, aspect ratio, model, favorite prompts).
TypeScript usage:
Quick shortcuts for common tasks:
| Command | Description |
|---|---|
/meigen:gen <prompt> | Skip conversation, generate image immediately |
/meigen:find <keywords> | Search prompt library |
/meigen:models | Browse and switch models |
/meigen:setup | Run provider configuration wizard |
Example:
Use MeiGen without an MCP host (for shell scripts, CI/CD, etc.):
Full CLI flags:
Output:
~/Pictures/meigen/ (override with MEIGEN_OUTPUT_DIR)~/Movies/meigen/Generate multiple variations in parallel using sub-agents:
Natural language prompt:
"Create 4 product display images for this perfume, one of which should feature a model"
The AI will:
image-generator sub-agents in parallelNatural language prompt:
"Enhance this for a cinematic feel: a coffee cup on a desk"
Enhanced result:
Import any ComfyUI API-format workflow:
Animate a product photo into a 5-second video:
Models:
seedance-2.0-fast: 5s, 1280×720, ~30s generationseedance-2.0-pro: 5s, 1280×720, higher quality, ~2minhappyhorse-1.0: 6s, 1360×768, realistic motionveo-3.1: 8s+, 1280×720, ultra-realistic, ~5-10minGenerate the same prompt with different models:
Natural language prompt:
"Generate this prompt with Nanobanana 2, Midjourney V8.1, and Flux 2 Klein: a serene Japanese garden at dawn"
The AI will parallelize across 3 sub-agents and present all results.
Symptom: generate_image fails with "No provider configured"
Solution:
Symptom: ECONNREFUSED 127.0.0.1:8188
Solution:
http://localhost:8188COMFYUI_URL matches your actual URLSymptom: Local image path not found
Solution:
/Users/username/Desktop/image.jpg./assets/image.jpgSymptom: MCP tool times out before video finishes
Solution:
timeout: 600 in configSymptom: Requested model not found
Solution:
Available models depend on your provider:
nanobanana-2, gpt-image-2, seedream-5.0, midjourney-v8.1, flux-2-klein, seedance-2.0-fast, seedance-2.0-pro, happyhorse-1.0, veo-3.1dall-e-3, dall-e-2, or custom models at your endpointSymptom: search_gallery finds nothing
Solution:
| Variable | Description | Required |
|---|---|---|
MEIGEN_API_TOKEN | MeiGen Cloud API token (get at meigen.ai) | For MeiGen provider |
COMFYUI_URL | ComfyUI server URL | For ComfyUI provider |
COMFYUI_DEFAULT_WORKFLOW | Default workflow name | Optional (default: txt2img) |
OPENAI_API_KEY | OpenAI or compatible API key | For OpenAI provider |
OPENAI_API_BASE | API endpoint URL | Optional (default: OpenAI endpoint) |
MEIGEN_OUTPUT_DIR | Override image output directory | Optional (default: ~/Pictures/meigen) |
{
"mcpServers": {
"meigen": {
"command": "npx",
"args": ["-y", "meigen@1.3.1"],
"env": {
"MEIGEN_API_TOKEN": "${MEIGEN_API_TOKEN}"
}
}
}
}npx meigen init cursor # Cursor
npx meigen init vscode # VS Code
npx meigen init windsurf # Windsurf
npx meigen init roo # Roo Code# Full plugin (commands + skills + MCP)
openclaw bundles install clawhub:meigen-ai-design
# Or skill only
npx clawhub@latest install creative-toolkitmcp_servers:
meigen:
command: "npx"
args: ["-y", "meigen@1.3.1"]
env:
MEIGEN_API_TOKEN: "${MEIGEN_API_TOKEN}"
timeout: 600 # Video generation can take 5-10 min
connect_timeout: 120 # First npx download needs time/meigen:setup{
"comfyuiUrl": "http://localhost:8188",
"comfyuiDefaultWorkflow": "txt2img"
}COMFYUI_URL=http://localhost:8188
COMFYUI_DEFAULT_WORKFLOW=txt2img{
"meigenApiToken": "meigen_sk_..."
}MEIGEN_API_TOKEN=meigen_sk_...{
"openaiCompatibleApiKey": "sk-...",
"openaiCompatibleEndpoint": "https://api.openai.com/v1"
}OPENAI_API_KEY=sk-...
OPENAI_API_BASE=https://api.openai.com/v1const result = await use_mcp_tool({
server_name: "meigen",
tool_name: "search_gallery",
arguments: {
keywords: "product photography luxury",
limit: 10
}
});const inspiration = await use_mcp_tool({
server_name: "meigen",
tool_name: "get_inspiration",
arguments: {
id: "nanobanana_12345"
}
});const enhanced = await use_mcp_tool({
server_name: "meigen",
tool_name: "enhance_prompt",
arguments: {
userPrompt: "cat in kitchen",
style: "photorealistic",
additionalContext: "sunlit, warm tones"
}
});const models = await use_mcp_tool({
server_name: "meigen",
tool_name: "list_models",
arguments: {}
});const image = await use_mcp_tool({
server_name: "meigen",
tool_name: "generate_image",
arguments: {
prompt: "a minimalist tech logo, geometric shapes, blue gradient",
model: "midjourney-v8.1",
aspectRatio: "1:1",
referenceImagePath: "/Users/dev/Desktop/sketch.jpg" // Optional
}
});const video = await use_mcp_tool({
server_name: "meigen",
tool_name: "generate_video",
arguments: {
prompt: "Camera slowly zooms into the perfume bottle, bokeh background",
model: "seedance-2.0-fast",
firstFrameImagePath: "/Users/dev/Pictures/bottle.jpg", // Optional
duration: 5
}
});// List workflows
const workflows = await use_mcp_tool({
server_name: "meigen",
tool_name: "comfyui_workflow",
arguments: {
action: "list"
}
});
// View a workflow
const workflow = await use_mcp_tool({
server_name: "meigen",
tool_name: "comfyui_workflow",
arguments: {
action: "view",
name: "txt2img"
}
});
// Import a workflow
await use_mcp_tool({
server_name: "meigen",
tool_name: "comfyui_workflow",
arguments: {
action: "import",
name: "custom-flux",
workflow: JSON.stringify(workflowJson)
}
});await use_mcp_tool({
server_name: "meigen",
tool_name: "manage_preferences",
arguments: {
action: "set",
key: "preferredStyle",
value: "minimalist editorial"
}
});
const prefs = await use_mcp_tool({
server_name: "meigen",
tool_name: "manage_preferences",
arguments: {
action: "get"
}
});/meigen:gen a calico cat in a sunlit kitchen, photorealistic
/meigen:find luxury product photography
/meigen:models# Set token once
export MEIGEN_API_TOKEN=meigen_sk_...
# Basic generation
npx meigen gen --prompt "a calico cat in a sunlit kitchen"
# Specific model + aspect ratio
npx meigen gen -p "tech logo" -m midjourney-v8.1 -r 1:1
# With reference image
npx meigen gen -p "product hero shot" --ref ~/Desktop/bottle.jpg
# Submit only (no polling, good for CI)
npx meigen gen -p "..." --no-wait
# Machine-readable output (pipe to jq)
npx meigen gen -p "..." --json | jq -r '.imageUrls[0]'npx meigen gen --help
Options:
-p, --prompt <text> Image prompt (required)
-m, --model <name> Model name (default: nanobanana-2)
-r, --ratio <ratio> Aspect ratio (e.g. 16:9, 1:1, 3:4)
--ref <path> Reference image path
--no-wait Submit only, don't poll for result
--json Machine-readable JSON output
-h, --help Display helpA pristine white ceramic coffee cup on a dark walnut desk, steam rising
gracefully, shot with shallow depth of field, warm morning light streaming
through venetian blinds creating dramatic shadows, cinematic color grading,
shot on Arri Alexa, 35mm lens, f/1.4// Read workflow from file
const workflowJson = JSON.parse(
fs.readFileSync('path/to/workflow_api.json', 'utf8')
);
// Import into MeiGen
await use_mcp_tool({
server_name: "meigen",
tool_name: "comfyui_workflow",
arguments: {
action: "import",
name: "flux-lora-custom",
workflow: JSON.stringify(workflowJson)
}
});
// Use it
await use_mcp_tool({
server_name: "meigen",
tool_name: "generate_image",
arguments: {
prompt: "cyberpunk street scene",
model: "comfyui",
workflow: "flux-lora-custom"
}
});const video = await use_mcp_tool({
server_name: "meigen",
tool_name: "generate_video",
arguments: {
prompt: "Slow camera push towards product, bokeh background, cinematic lighting",
model: "seedance-2.0-fast",
firstFrameImagePath: "/Users/dev/Desktop/product.jpg",
duration: 5
}
});/meigen:setup
# Or set environment variables manually:
export MEIGEN_API_TOKEN=meigen_sk_.../meigen:models
# Or use tool:
use_mcp_tool({
server_name: "meigen",
tool_name: "list_models",
arguments: {}
})