jau123/MeiGen-AI-Design-MCP
MCP Developer ToolsOpen‑source MCP server that turns any AI coding tool into a design assistant for images and video
Features
- Three backend modes: MeiGen cloud (9 models), OpenAI‑compatible API, or local ComfyUI offline
- Built‑in library of 1,446 curated prompt templates with style‑aware enhancement
- Parallel sub‑agent orchestration for batch generation while keeping the main context clean
- Standalone CLI mode for shell scripts and CI pipelines
Recent releases
View all 14 releases →- If installed via Claude Code plugin marketplace, run `/plugin update` to fetch the new `plugin/.mcp.json`.
- Pin updates: bump pinned `[email protected]` configurations to `[email protected]`.
- All new environment variables are optional; existing setups continue functioning without modification.
- SSRF defense‑in‑depth for `referenceImages` URLs in `generate_image`, `generate_video`, and CLI rejects file://, data:, private IPs (10/172.16‑31/192.168/127), cloud metadata (169.254.169.254).
- `generate_video` MCP tool with Seedance 2.0, Happyhorse 1.0, Veo 3.1 supporting text‑to‑video and image‑to‑video.
- Standalone `meigen gen` CLI for prompt generation without an MCP host (supports JSON output, no‑wait mode, reference file upload).
- First‑class multi‑host integration documentation covering Cursor, Codex, Windsurf, Roo Code, Hermes Agent, Claude Code and OpenClaw.
Full changelog
Highlights
- 🎬 Video generation — new
generate_videoMCP tool with Seedance 2.0 (fast/pro tiers), Happyhorse 1.0, and Veo 3.1. Supports text-to-video and first-frame / last-frame image-to-video. Local files are auto-uploaded; MP4 saves to~/Movies/meigen/. - 💻 Standalone CLI —
npx meigen gen --prompt "..."works without an MCP host. Shell-friendly:--jsonfor jq pipelines,--no-waitfor CI,--referencefor local files (auto-upload). Subcommand sits next to the existingmeigen init <host>. - 🚀 Multi-host support — first-class integration docs for Cursor, Codex (OpenAI CLI), Windsurf, Roo Code, Hermes Agent (NousResearch), plus all existing Claude Code / OpenClaw flows.
- 🎯
/meigen:setupis now a real slash command — fixes the long-standing issue where users couldn't configure their API key through the wizard. Also adapts to Windows shells.
What's New
Tools
generate_video— new MCP tool. Models:seedance-2-0(fast/pro),happyhorse-1.0,veo-3.1. First-frame image-to-video viafirstFrameparam; optionallastFramefor Seedance/Veo. Schema fields (tier,duration,resolution) arez.string()/z.number().positive()so the backend can add new tiers without an MCP release.meigen genCLI —bin/meigen-mcp.jsnow routes agensubcommand tosrc/cli/gen.ts. Supports--prompt,--model,--ratio,--resolution,--quality,--reference,--no-wait,--json. ReusesMeiGenApiClientso behavior matches the MCP tool exactly.
SKILLs / Commands
plugin/commands/setup.md— interactive provider configuration wizard, finally a proper slash command. Auto-detects platform (macOS / Linux / Windows) and adapts shell commands. Explicit merge-vs-overwrite guidance prevents users from losing an existing ComfyUI config when adding a MeiGen token.plugin/skills/product-photoshoot/SKILL.md— workflow that turns one product reference photo into a 4-direction asset set (lifestyle / macro / scale / marketing).plugin/skills/social-thumbnail/SKILL.md— 9:16 thumbnail workflow optimized for short-video covers (TikTok / Reels / Shorts).
Docs
- README repositioning: hero block now lists 9 models (GPT Image 2, Nanobanana 2, Seedream 5.0, Midjourney V8.1, Flux 2 Klein, Seedance 2.0, Happyhorse 1.0, Veo 3.1, local ComfyUI), all 8+ host integrations, and the standalone CLI mode. Dropped the Lovart comparison (unknown to English-speaking dev audience) and the "carefully crafted hooks" jargon.
README.zh-CN.md: translated the missing privacy + custom storage backend sections (was English-only before).- New
DECISIONS.mddocuments nine load-bearing decisions (no-MCP-defaults, schema-as-string, shared-semaphore, V8.1 unification, mediaType guards, etc.) so future contributors don't reopen settled choices. - New
evals/scenarios.md— 13 manual smoke-test scenarios for regression catching.
Security
- SSRF defense-in-depth for
referenceImagesURLs (src/lib/url-safety.ts). Rejectsfile://,data:, private IPs (10/172.16-31/192.168/127), and cloud metadata (169.254.169.254). Applied acrossgenerate_image,generate_video, and the CLI. Backend provider downloaders still need their own SSRF filter — this is a client-side layer. - The
setup.mdJSON example previously used// commentsyntax inside JSON code blocks; rewrote to use markdown headings so an LLM can't accidentally write//intoconfig.json.
Fixes
- Shared API semaphore (
src/lib/generation-shared.ts):generate_imageandgenerate_videonow share oneSemaphore(4)across the same/api/generate/v2endpoint. Prior code documented sharing but actually used two independent semaphores, which could burst to 8 concurrent submits and trip the backend's 12/min rate limit. videoUrl || status.imageUrlfallback removed: if a video model id was misrouted togenerate_image(or vice versa), the old code could write a JPEG payload as.mp4. Both tools now have symmetricmediaTypeguards that fail loudly with a redirect message.- Setup wizard cross-host: error messages and
SERVER_INSTRUCTIONSnow branch on Claude Code vs other hosts. Cursor / Codex / Hermes users get the env-var path, not a non-existent/meigen:setupcommand. - Linux save paths:
MEIGEN_OUTPUT_DIR→XDG_PICTURES_DIR→~/Pictures/meigenfallback chain (and same forMEIGEN_VIDEO_OUTPUT_DIR→XDG_VIDEOS_DIR→~/Movies/meigen). - Generate-video timeout: error message now mentions
pg_cron cleanup_orphan_generations(backend auto-refund within ~15 minutes for jobs that never started) so users don't immediately retry and double-pay. promptschema: bothgenerate_imageandgenerate_videonow usez.string().trim().min(1)to reject empty and whitespace-only prompts.- CLI argv parser: rejects
--flagfollowed by another--flag(i.e. missing value), someigen gen --prompt --jsonno longer silently submits--jsonas the prompt. - CLI poll timeout:
waitForGenerationerrors now surface thegenerationIdso users can check the web before retrying.
Changed
- Midjourney V8.1 replaces V7 + Niji 7 in all user-facing docs. V8.1 handles photorealistic and stylized/anime output in one model —
enhance_prompt(style: 'anime')injects trigger words. Niji 7 remains hidden server-side (extra_config.hidden=true) for legacymodelIdcompatibility but is not advertised. list_modelsoutput now showsStatus:(New / Busy / Maintenance from backendextra_config.tags) andCost:(livecredits_per_generationfrom backend response). UpdatedDECISIONS.mdto clarify: live backend numbers may be rendered, only frozen training-data numbers in shipped strings are forbidden.- Status union narrowed from
'pending' | 'processing' | 'completed' | 'failed'to'processing' | 'completed' | 'failed'— the backend maps'pending'→'processing'before responding.
Internal
- CI (
.github/workflows/validate.yml): four jobs — version-sync, pinned-npm-coherence, frontmatter-lint, and typecheck + clean build. The build job asserts thatdist/index.js,dist/cli/init.js, anddist/cli/gen.jsare produced, catching stale-dist regressions. - Frontmatter linter (
scripts/ci/check-frontmatter.mjs): catchesname:fields in agents/commands (derived from filename) and missing required fields in SKILLs. package.jsonfiles: removed stale"skills/"entry (the directory doesn't exist; plugin SKILLs ship via the GitHub marketplace, not the npm tarball).- Removed stale
dist/tools/upload-reference-image.*artifacts whose source was deleted months ago.
Compatibility
- Node: ≥18 (unchanged).
- MCP hosts: Claude Code, Cursor, VS Code (GitHub Copilot), Windsurf, Roo Code, Codex CLI, OpenClaw, Hermes Agent, and any MCP-compatible host that surfaces server
instructions. - No breaking changes to existing tool schemas.
tieranddurationongenerate_videoare nowstring/numberinstead ofenum/range, but accepted values are a superset.
Upgrade Notes
- If you installed via the Claude Code plugin marketplace:
/plugin updateto pull the newplugin/.mcp.jsonpin. - If you use
npx -y meigen@latest: nothing to do. - If you pinned
[email protected]in your MCP config: bump to[email protected]. - New env vars are all optional — existing setups keep working without changes.
Acknowledgements
This release went through four adversarial review rounds plus an end-to-end usability audit. Several "must fix" findings turned out to be false positives on inspection — keeping the verify-before-fixing discipline saved a lot of churn.
- v1.2.9 pricing regression: GPT Image 2.0 defaulted to 2K (25 credits) instead of 1K; v1.2.9 deprecated on npm
- resolution parameter (1K/2K/4K)
- quality parameter (low/medium)
- list_models surfaces resolution and quality tier support
Full changelog
⚠️ Pricing hotfix — please upgrade from 1.2.9
v1.2.9 had a pricing regression: GPT Image 2.0 became the default model but the server-side resolution fallback stayed at 2K, silently doubling credit cost for users who did not pass resolution explicitly.
v1.2.10 fixes it. gpt-image-2* now defaults to 1K / medium = 10 credits, matching the MeiGen platform product default. 1.2.9 has been deprecated on npm.
If you ran generations with 1.2.9 and relied on the default, your cost per image was ~25 credits instead of 10. Sorry about that.
What's new in 1.2.10
Fix
gpt-image-2*default resolution: 2K → 1K (10 credits). Other models unchanged.- Deprecated 1.2.9 on npm.
New generate_image parameters
resolution:"1K"(default) /"2K"/"4K"— for posters, prints, wallpapers.quality:"low"(2 credits @ 1K) /"medium"(default) — for drafts and thumbnails.
Pricing matrix (gpt-image-2): 1K/low ≈ 2, 1K/medium = 10, 2K/medium ≈ 25, 4K/medium ≈ 40 credits.
Better model discovery
list_modelsnow surfaces each model's supportedresolutionsandqualitytiers (when the MeiGen API reports them), so the host LLM can make informed resolution decisions.MeiGenModeltype extended withmedia_type,max_reference_images,extra_config.
Host LLM guidance
SERVER_INSTRUCTIONSgains a "GPT Image 2.0 resolution / quality" section in Phase 2. Tells the LLM to stay on 1K unless the use case (poster/print/wallpaper) justifies the cost — avoids over-spending on casual chat imagery.
Docs
openclaw/providers.mdandplugin/skills/visual-creative/SKILL.md— model table updated with the resolution × quality pricing matrix and new 1K default.
Upgrade
npx -y [email protected]
Or via plugin:
/plugin install meigen@meigen-marketplace
Synced across: npm [email protected] • Claude Code plugin marketplace • ClawHub skill [email protected] • ClawHub bundle [email protected] • wshobson/agents (PR pending).
- GPT Image 1.5 retired from model tables, docs, and examples
- GPT Image 2.0 as default model for text rendering
Full changelog
What's New
- Default model switched to GPT Image 2.0 (10 credits) — state-of-the-art text rendering for posters, logos, and any typography-heavy imagery
- Retired GPT Image 1.5 from model tables, docs, and examples across all channels
Other Changes
- Cleaned up stale
dall-e-3/flux-schnellreferences in OpenAI-compatible provider examples - OpenAI-compatible provider docs now use generic "your model ID" wording — any OpenAI-format endpoint works with any model your service supports
- ClawHub skill (
creative-toolkit) bumped to 1.0.25 with updated model catalog
Synced Across
- npm
[email protected] - Claude Code plugin marketplace (
meigen) - ClawHub skill
creative-toolkit(1.0.25) - ClawHub bundle plugin
meigen-ai-design - Third-party marketplaces (wshobson/agents)
Upgrade
npx -y [email protected]
Or via plugin:
/plugin install meigen@meigen-marketplace
Cost note: GPT Image 2.0 costs 10 credits vs Nanobanana 2's 5 credits. If you prefer the previous default for cost reasons, pass model: "nanobanana-2" to generate_image.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.