MCP server for Z-Image-Turbo with native MLX backend for Apple Silicon. 2x faster than diffusers/PyTorch with native memory management.
Three tools with complete schemas and descriptions, but significant gaps in parameter documentation and error handling. generate_image has detailed descriptions and good parameter coverage (7 params with types and descriptions), but lacks enum constraints for aspect_ratio and cache modes. get_status and list_generated_images are simpler but adequately documented. No tool includes error recovery guidance, confirmation steps for destructive operations, or output schema documentation. Naming is clear and verb-based (generate_, get_, list_). No security issues detected (no secrets in params). Overall: functional definitions suitable for basic use, but missing production-grade error handling and LLM-optimized guidance.
Generate an image from a text prompt using Z-Image-Turbo (MLX native). 2x faster than diffusers/PyTorch. Memory freed after each generation.
Get the status of the Z-Image MLX server.
List recently generated images.
Missing enum constraints for aspect_ratio and cache parameters. aspect_ratio accepts 7 preset values but is defined as free-form string; cache accepts 'slow|medium|fast' but lacks enum. LLMs will hallucinate invalid values.
No error recovery guidance. generate_image returns raw error strings ('ERREUR: ...') without actionable next steps. LLM cannot determine if error is retryable, user-fixable, or fatal.
Output schemas not documented. generate_image returns free-text summary; get_status returns JSON; list_generated_images returns formatted text. LLM cannot reliably parse or chain results.
No confirmation step for destructive operation. generate_image writes to disk and cannot be undone. No dry-run or confirmation mechanism to prevent accidental generations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
get_status description is minimal (8 words). Does not explain when to call it, what it reveals, or how to interpret the output. Below 20-char threshold for actionable descriptions.