Repository navigation
Releases: jau123/MeiGen-AI-Design-MCP
Release list
v2.0.2
search_gallery / get_inspiration: standard previews
- Search returns at most three entries (over-returned API rows are clamped too). Each entry gets a bounded standard MCP
imageblock (384px JPEG, ≤256 KiB) of the matched still image, plus a namedresource_linkand the original URL in text. Previews are fetched only from direct HTTPSimages.meigen.aiassets, without credentials or redirects; a failed preview keeps the entry and link and never triggers another search or a paid generation. get_inspirationreturns a label followed by one JSON line (id, prompt, author, model, urls, plus rank/categories for bundled entries) andresource_linkitems for the media. Gallery prompts, authors and metadata are treated as untrusted creative content, never tool instructions. Text contract change: consumers that parsed the old Markdown layout must parse the JSON line instead; likes/views/date, @handle, dimensions and thumbnail_url are no longer included.
Result artifacts and protocol compatibility
- Completed image/video results add standard
resource_linkitems with MIME types alongside the unchanged structured JSON, URLs and local save path. Skill results gain MIME types. - Clients that negotiate a protocol version before 2025-06-18 receive text links instead of
resource_link; image blocks and structured results are unchanged.
Tool annotations
check_generation/check_skillare annotated as possibly writing (lookups can finalize expired tasks and settle refunds) but non-destructive and idempotent.search_galleryandupload_skill_imagedisclose quota side effects; paid Skill tools are marked destructive.
Packaging
- npm
meigen@2.0.2;@modelcontextprotocol/sdklower bound 1.30.1. Self-owned Claude marketplace plugin and OpenClaw plugin manifest 2.1.0, ClawHub standalone Skill 1.0.39; all static pins usenpx -y meigen@2.0.2. MCP_AUTH_AND_RESULTS.mdships in the package. CI runs on Node 24 and validates the npm lockfile before the locked pnpm install.
v2.0.1
generate_video: multiple reference videos and reference audio
referenceVideos/referenceAudiosarrays for Seedance 2.0 / 2.5. Local.mp4/.mov/.wav/.mp3files are uploaded automatically (local npm server);https://images.meigen.ai/...URLs pass through; other hosts are rejected before any charge. Per-model clip counts and second budgets come fromlist_models; reference audio is never billed. The deprecatedreferenceVideoscalar keeps working.- Local clips are fingerprinted by streaming SHA-256 and uploaded at most two at a time, so large videos no longer pile up in memory.
Safer failures before submission
- Missing files, presign/PUT failures, timeouts and cancellation before the generation POST now return
resolve_error/configure_auth/top_up/retry_requestwith the samerequestId— never acheck_generationhint for a job that was never submitted. A PUT 403 retries the upload instead of blaming the API key.
search_gallery
- With a MeiGen key configured, searches are authenticated and count against the account's daily search allowance; a daily-limit 429 says when it resets and falls back to the bundled library.
limitstill accepts the old maximum for existing automations and is clamped to 3.
Packaging
- Version 2.0.1 across the runtime, Claude plugin, self-owned marketplace, OpenClaw plugin and all
npx -y meigen@2.0.1pins.
MeiGen 2.0.0 — Composable Skills and Durable Workflows
MeiGen 2.0.0 adds reusable visual Skills and durable image/video operations that an AI assistant can compose into larger workflows, from product campaigns to multi-scene video production.
New visual Skills
- Background Removal — isolate a subject from its background.
- Product Detail Images — generate the explicitly selected product modules.
- Marketing Poster — combine a subject, copy and visual direction into a poster.
- AI Backgrounds — create white, smart or custom product backgrounds.
- Image Upscale — enhance an original image with explicit price and resizing decisions.
Use list_skills for live prices, input requirements and examples. upload_skill_image prepares source images, and check_skill resumes observation of an accepted request. Skills use purchased credits; there are no free API attempts or daily-credit deductions.
Composable generation and search
- Structured results and
nextActionguidance supportwait: falseworkflows without keeping one tool call open. - A persisted
requestIdcan recover ordinary generation after a lost response, restart or host change. Unknown or deleted jobs do not authorize a replacement paid request. - Preserve
requestedMediaTypefrom continuation arguments to detect image/video result mismatches while retaining the original result URLs. - Gallery search previews the matched image within a multi-image post, with safe fallback for older responses.
- Upload preparation, cancellation, transient polling failures and provider-specific recovery guidance have been hardened.
Upgrade
For local stdio MCP, update the configured package pin to meigen@2.0.0 and restart the MCP connection:
npx -y meigen@2.0.0Remote users can keep https://www.meigen.ai/api/mcp and reconnect or refresh the tool list. The matching backend has been deployed first. The local server exposes 17 tools and the remote server exposes 14.
Refresh cached tool schemas. Product Detail Images requires an explicit module selection in MCP; Upscale requires the accepted live confirmedCredits quote on the first call too. Keep one request ID per authorized workflow step and follow the returned continuation arguments. App releases remain independent of this MCP/API update.
See the English setup guide, 中文安装指南, Skills API guide and composable workflows.
中文:本次新增抠图、商品详情图、营销海报、AI 背景和图片增强五项技能;完善异步任务恢复、工作流组合、图片上传及搜索命中图预览。老用户更新 npm 版本后重启连接,远程用户刷新工具列表即可。API Key 继续仅消耗购买积分。
v1.4.0
Highlights
- Remote stateless MCP endpoint support alignment: tool descriptions now defer to live `list_models` capabilities served by the MeiGen backend — model lineup, tiers, resolutions, duration enum/range, reference-video limits and first-frame requirements no longer ship as stale hardcoded text.
- Unified video capability contract: `list_models` renders per-model video capabilities (durations, reference-video range/tiers/resolutions, first-frame requirement) from `/api/models` `capabilities` field, with fail-closed degradation when the contract is missing or malformed.
- Idempotency lifecycle hardening: explicit `attemptId`-based attempt store with ack-on-delivery / suspend-on-interrupt semantics; `check_generation` releases attempts only after a media URL is confirmed; CLI no longer pretends to have cross-process retry protection.
- Reference-video continuation: `referenceVideoDuration` is now informational-only — the server probes the authoritative MP4 duration for billing and clipping.
- Clearer error guidance across tools: terminal states without a media URL are never presented as clean success; failed generations point at auto-refund semantics.
Requires a MeiGen API token (`meigen_sk_...`) for generation tools. See README for setup.
v1.3.3
meigen 1.3.3
New models
- Grok Imagine Quality (
grok-image) — xAI high-quality image model, 1K/2K, supports image-to-image (up to 3 reference images). - Grok Video 1.5 (
grok-video) — xAI, image-to-video only (firstFrame required), native audio, 4–15s, 480p/720p.
Seedance 2.0
- Surface the
minitier (now the cheapest default) alongsidefast/pro. - Native 4K on the
protier (mini/fast cap at 720p).
Fixes
list_modelsnow merges per-tier resolutions so Seedance Pro's 4K is no longer hidden, plus a "Resolutions by tier" line.- Reference-video continuation is correctly shown as supported via
generate_videoon Seedance 2.0 (was mislabeled "web only / MCP not supported"). - Fixed
grok-videoduration to 4–15s; added a client-side guard for its firstFrame requirement. - Upload gateway default domain aligned to
gen.meigen.ai(legacygen.meigen.art/apistill works).
v1.3.2 — Windows reference-image path fix
Highlights
- 🪟 Windows local reference-image paths now detected correctly — when an LLM client (Claude Code, Cursor, etc.) on Windows passes a path like
C:/Users/.../photo.jpg(forward-slash, the cross-platform form most clients emit),generate_imagenow auto-uploads the file as expected. Previously this form fell through to the URL branch and was relayed unchanged to the cloud provider, producing an opaqueUnsupported file URI typeerror. Backslash form (C:\Users\...) already worked and is unchanged. - 🛡️ Reference-URL handling robustness updates — small internal refinements; no schema or behavior changes for valid public URLs.
Compatibility
- No schema changes. No breaking changes. Existing 1.3.1 calls keep working.
- Plugin / ClawHub bundle / OpenClaw skill all pinned to
meigen@1.3.2. If you installed via plugin marketplace, the update arrives the next time the plugin refreshes; if you pinned manually, bumpmeigen@<version>in your.mcp.json.
Note on the backend
If you don't upgrade immediately, the backend (/api/generate/v2) has its own validation that returns a clear 400 invalid_reference_url instead of letting the request waste API token quota on an unfetchable reference. So old MCP versions are not worse than before — just less ergonomic when handling local Windows paths.
v1.3.1 — Veo 3.1 tiers/durations + Seedance reference-video continuation
Highlights
- 🎬 Veo 3.1 capability expansion — Google Veo on MeiGen now exposes fast/pro tiers, 4/6/8 second durations (default 4), and 720p / 1080p / 4K resolutions at the same price per tier+duration. Pick the output size you actually want — 4K renders slower (~8 min) but doesn't cost more than 720p.
- 🎞️ Seedance 2.0 reference-video continuation — new
referenceVideo+referenceVideoDurationparams. Pass a previous clip's HTTPS URL plus its actual duration, prefix your prompt with "Extend this video with the following plot:", and Seedance produces a semantically coherent continuation. The output is yourdurationseconds of new content only — concatenation with the reference is up to you (encode locally). - 📦 No breaking changes — every new field is optional. Existing 1.3.0 calls keep working unchanged.
Schema additions
generate_video
referenceVideo?: string // Seedance 2.0 only. Public HTTPS URL (typically a previous generation's videoUrl).
// Local paths NOT supported. SSRF-guarded (file://, private IPs, cloud metadata blocked).
referenceVideoDuration?: number // REQUIRED when referenceVideo is set. Pass the clip's actual duration in seconds.
// Omitting it causes the backend to treat as 0 → undercharged credits + broken continuation.
// Typical range 2–15; schema is .int().positive() per BasS (backend rejects out of range).Handler validates the pair both directions:
referenceVideoset,referenceVideoDurationmissing → throws with explicit fix instructionreferenceVideoDurationpassed alone → throws (catches stale-arg state)referenceVideopoints to a local path → throws (HTTPS only)referenceVideofails SSRF guard → throws with reason
All checks run before the shared API semaphore acquires — fail-fast, no slot waste.
Updated descriptions
tiernow mentions bothseedance-2-0andveo-3.1acceptfast/pro.durationclarifies: seedance/happyhorse accept any integer in ~3–15s; veo-3.1 accepts exactly 4, 6, or 8 (default 4); other values are rejected by the backend.
Pricing model clarification
Previously the docs said "per-second for seedance/happyhorse and flat-rate for Veo". This was wrong for the new Veo 3.1:
- Seedance 2.0 / Happyhorse 1.0: per-second pricing (rate × duration, tier/resolution dependent).
- Veo 3.1: per-generation pricing by tier × duration (resolution doesn't affect cost).
- Seedance 2.0 with referenceVideo: charged at the With-reference-video rate, with
billable_seconds = max(reference_duration + duration, min_billable[duration]). Total cost is often higher than direct generation of the same output length —SERVER_INSTRUCTIONSPhase 2 instructs the model to surface this to the user before submitting.
list_models cost label updated from "per-second pricing" to "variable pricing — see model-comparison for the full schedule".
SERVER_INSTRUCTIONS update
Phase 2 video section rewritten:
- Veo model line covers tiers, durations, three resolutions at flat-rate-per-tier, and aspect-ratio constraints.
- Seedance model line now documents the reference-video flow + billing formula.
- "Video reference NOT supported via MCP" rule (from 1.3.0) reversed — supported on
seedance-2-0. - New rule: surface the higher reference-video billing to the user before submitting.
Internal
MeiGenApiClient.generateVideo()forwardsreferenceVideoandreferenceVideoDurationwhen present.unsafeReferenceUrlReason(1.3.0's defense-in-depth SSRF helper) is reused for the new video URL — same protection asreferenceImages.- Removed the
pricingPerCall?: unknownplaceholder type fromextra_config— no consumer, will be reintroduced when we actually render a price schedule. - Removed the trailing "Veo 3.1 may override to its fixed 8s" hint from the success message (no longer applicable).
Upgrade Notes
- Existing 1.3.0
generate_videocalls continue to work — no schema breakage. - LLMs trained on 1.2.x docs that pass
duration: 8to Veo: still works ✅ (Veo accepts 8). LLMs that passduration: 5: now rejected by backend (was silently coerced to 8 pre-1.3.0). The new behavior surfaces the error rather than silently changing the output. - Plugin marketplace users on Claude Code:
/plugin updateto pull the newplugin/.mcp.jsonpin (nowmeigen@1.3.1). - Hermes Agent / Cursor / Codex / Windsurf users via
npx -y meigen@latest: nothing to do.
v1.3.0 — Video generation, CLI mode, Hermes support
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
meigen@1.2.xin your MCP config: bump tomeigen@1.3.0. - 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.10 — GPT Image 2.0 pricing hotfix
⚠️ 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 meigen@1.2.10Or via plugin:
/plugin install meigen@meigen-marketplaceSynced across: npm meigen@1.2.10 • Claude Code plugin marketplace • ClawHub skill creative-toolkit@1.0.26 • ClawHub bundle meigen-ai-design@1.0.5 • wshobson/agents (PR pending).
v1.2.9 — GPT Image 2.0 as default
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
meigen@1.2.9 - 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 meigen@1.2.9Or via plugin:
/plugin install meigen@meigen-marketplaceCost 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.