Skip to main content
Glama
meshy-dev

Meshy MCP Server

Official
by meshy-dev

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoPort for HTTP transport3000
TRANSPORTNoTransport mode: stdio or httpstdio
MESHY_API_KEYYesRequired. Your Meshy API key (starts with msy_)
MESHY_API_HOSTNoAPI base URLhttps://api.meshy.ai
CHARACTER_LIMITNoMax response size in characters25000

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
meshy_text_to_3dA

Generate an untextured 3D PREVIEW from a text prompt; texture it afterwards with meshy_text_to_3d_refine once the user approves. Typically 2–3 minutes. Cost: 20 credits (meshy-7.1 / latest / meshy-6), 5 (meshy-6-lite, meshy-t2, meshy-t2.5); Ultra geometry +5.

PREFER THE IMAGE ROUTE: for higher quality and more control, generate a design image first (meshy_text_to_image), let the user approve it, then meshy_image_to_3d with input_task_id = the image task (textured in one task). Use direct text-to-3d for a quick draft or when the user explicitly asks for it.

Examples:

  • Low-poly: { prompt: "dragon", model_type: "smart-topology", ai_model: "meshy-t2", target_polycount: 4000 }

  • Max detail: { prompt: "ornate knight helmet", ai_model: "meshy-7.1", geometry_resolution: "4k" }

  • 3D print: { prompt: "cat", target_formats: ["obj"] }

meshy_image_to_3dA

Generate a 3D model from one image, textured by default (no refine step; should_texture false for a bare mesh). Typically 2–3 minutes. Cost: meshy-7.1 / latest / meshy-6 20 mesh only, 30 textured, 35 at 8K; meshy-6-lite 5 / 15; meshy-t2 / meshy-t2.5 5 / 15 / 20 at 8K; Ultra geometry +5.

IMAGE INPUT (exactly ONE):

  • file_path: a local image (RECOMMENDED; never base64-encode it yourself)

  • image_url: a public URL

  • input_task_id: a SUCCEEDED meshy_text_to_image / meshy_image_to_image task with ONE image (multi-view output → meshy_multi_image_to_3d)

Example: { file_path: "/path/to/character.png", pose_mode: "t-pose" }

meshy_text_to_3d_refineA

Texture a SUCCEEDED meshy_text_to_3d preview. Cost: 10 credits (15 at 8K). Get the user's approval first; omit ai_model to inherit the preview's model.

Example: { preview_task_id: "abc-123", texture_prompt: "rusty metal", enable_pbr: true }

meshy_multi_image_to_3dA

Generate a 3D model from 1–4 views of the same object (better reconstruction), textured by default. Cost: meshy-7.1 / latest / meshy-6 20 mesh only, 30 textured, 35 at 8K; meshy-6-lite 5 / 15; Ultra geometry +5.

IMAGE INPUT (exactly ONE):

  • file_paths: 1–4 local images (never base64-encode them yourself)

  • image_urls: 1–4 public URLs

  • input_task_id: a SUCCEEDED meshy_text_to_image / meshy_image_to_image task (multi-view included); its images are the input

Example: { file_paths: ["/path/front.jpg", "/path/side.jpg"] }

meshy_get_task_statusA

Wait for a task to finish (wait=true, default) or check it once (wait=false). Reports the task's real task_type; pass it to the download and cancel tools.

wait=true polls at the API's suggested interval (else 5s→30s backoff) until SUCCEEDED / FAILED / CANCELED or timeout_seconds runs out; a failed status check (timeout, 429, 5xx) is retried at the next poll. Running out of time returns outcome "TIMEOUT": the task keeps running on Meshy — call again with the same task_id (Meshy advises allowing up to 60 minutes from creation).

meshy_list_tasksA

List tasks of any status, newest first by default, merged across the types queried (one request per type). Default: text-to-3d, image-to-3d, multi-image-to-3d, text-to-image and image-to-image; pass task_type / task_types for printing, rigging, animation, motion, post-processing or Creative Lab tasks. With a task_id in hand, use meshy_get_task_status instead. Tasks created through the API do not appear in the Meshy web app.

status and phase filter the fetched tasks, so a page can be shorter than limit; continue with next_offset while has_more. Types whose request failed are listed in failed_types. For finished 3D models only, meshy_list_models is cheaper.

meshy_cancel_taskA

Cancel a queued task, or delete a finished one. What happens depends on the task:

Creative Lab tasks (task_type "creative-lab-..."):

  • PENDING → canceled, credits refunded

  • IN_PROGRESS → canceled, credits NOT refunded

  • SUCCEEDED / FAILED / CANCELED → cannot be canceled or deleted, even with confirm_delete

Every other task:

  • PENDING → deleted, credits refunded

  • IN_PROGRESS → refused: the task keeps running and its credits are not refundable. Wait until it finishes

  • SUCCEEDED / FAILED / CANCELED → PERMANENTLY deleted with its files, no refund. Requires confirm_delete: true — ask the user first

Returns { success, task_id, task_type, previous_status, message }.

meshy_download_modelA

Save a finished task's output under meshy_output/ (project folders with history), or at save_to.

  • 3D tasks: ONE model format — ask the user which first (GLB viewing, OBJ white-model printing, 3MF multicolor printing, FBX game engines, USDZ AR, BLEND Blender); never download all. A format exists only if it was generated: 3mf needs target_formats ["3mf"] at creation, meshy_convert or meshy_process_multicolor.

  • Creative Lab: omit format to save every part.

  • Images and text-to-motion clips save their own files and ignore format.

  • Rigging and animation tasks are not saved: they return their file URLs. If a download fails, its URL is returned instead.

Example (print): { task_id: "abc-123", format: "obj", print_ready: true, print_height_mm: 100 }

meshy_list_modelsA

List your finished 3D models (not AI models), newest first, each with its task_id, task_type and formats ready for meshy_download_model. Queries only image-to-3d by default (one request); pass task_types to widen. meshy_list_tasks lists tasks of any status instead, images included.

meshy_remeshA

Remesh an existing model: change its polygon count or topology. Cost: 5 credits. For a format change only use meshy_convert (1 credit); to scale, meshy_resize (1 credit).

Example: { input_task_id: "abc-123", topology: "quad", target_polycount: 10000, target_formats: ["fbx"] }

meshy_retextureA

Apply new AI textures to an existing model. Cost: 10 credits (15 at 8K).

Ask the user for EXACTLY ONE style input (the tool rejects combinations):

  • text_style_prompt: the style in words ("rusty metal", "cartoon")

  • image_style_url: one image used as a STYLE reference

  • multiview_image_urls: 1–4 photos OF THE SAME OBJECT from different angles (not style references)

Example: { input_task_id: "abc-123", text_style_prompt: "rusty metal" }

meshy_rigA

Auto-rig a humanoid character for animation. Cost: 5 credits, including free walking + running animations (GLB + FBX, separate files).

REQUIREMENT: a textured humanoid (biped) model with a clear body and limbs, ≤300,000 faces (checked first; remesh if over). model_url must be a .glb facing +Z. Generate characters with pose_mode "t-pose" for the best rig.

Next steps: meshy_download_model (task_type "rigging") returns the rigged model and walk/run URLs. Other actions: meshy_list_animations → meshy_animate. A described motion: meshy_text_to_motion → meshy_animate with motion_task_id.

meshy_animateA

Animate a rigged character (rig_task_id). Cost: 3 credits per action. Give exactly ONE of action_id, action_ids or motion_task_id.

meshy_rig already returns walking and running free, as separate files; include their ids in action_ids only to bundle them into one multi-clip file. meshy_download_model (task_type "animation") returns the file URLs.

Example: { rig_task_id: "abc-123", action_ids: [1, 4, 92] }

meshy_text_to_motionA

Generate a character motion clip (skeleton motion, not a model) from text. Cost: 10 credits (prime) or 3 (swift) — confirm first. Clips are kept for 3 days.

Apply it to a rigged biped with meshy_animate (motion_task_id), or save the clip with meshy_download_model (FBX for prime, BVH for swift; format is ignored).

Example: { prompt: "a boxer throws a jab-cross combo", duration: 4 }

meshy_list_animationsA

Look up preset animations: the action ids meshy_animate takes. Free. Filters combine; with none the whole (long) library comes back, so prefer search or category.

Returns [{ action_id, name, key, category, sub_category, preview_url }]; preview_url is an animated GIF.

meshy_convertA

Convert a model to other file formats. Cost: 1 credit (cheaper than remesh for a format-only change).

Example: { input_task_id: "abc-123", target_formats: ["stl", "3mf"] }

meshy_resizeA

Rescale a model to real-world size on Meshy. Cost: 1 credit. Give exactly one of resize_height, resize_longest_side or auto_size.

Later tasks (e.g. Auto Split) use the new size. To only scale a downloaded OBJ for a slicer, meshy_download_model with print_ready + print_height_mm does it locally for free.

Example (5 cm figurine): { input_task_id: "abc-123", resize_height: 0.05 }

meshy_uv_unwrapA

Make a clean, non-overlapping UV layout ("UV white model") before texturing in Blender, Substance Painter or Unreal. Cost: 5 credits.

GLB input only, ≤40,000 faces (denser meshes are rejected: remesh first). The output GLB keeps the geometry (quads/n-gons triangulated) with fresh UVs and a grey placeholder material.

meshy_text_to_imageA

Generate a 2D image from text, e.g. a design for the user to approve before 3D. Typically ~30 s. Cost: nano-banana 3, nano-banana-2 6, nano-banana-2-lite 3, nano-banana-2-1 4, nano-banana-pro 9, GPT Image models 9 credits.

To make it 3D: meshy_image_to_3d with input_task_id = this task (multi-view output: meshy_multi_image_to_3d).

Example: { ai_model: "nano-banana-pro", prompt: "game character", generate_multi_view: true, pose_mode: "t-pose" }

meshy_image_to_imageA

Edit or restyle images with a text prompt. Cost: nano-banana 3, nano-banana-2 6, nano-banana-2-lite 3, nano-banana-2-1 4, nano-banana-pro 9, GPT Image models 12 credits. Give exactly ONE reference source: input_task_id (all images of an earlier image task), reference_file_paths (local files; never base64-encode them yourself) or reference_image_urls.

To make the result 3D: meshy_image_to_3d with input_task_id = this task (multi-view output: meshy_multi_image_to_3d).

Example: { ai_model: "nano-banana-2", prompt: "make it red", input_task_id: "abc-123" }

meshy_send_to_slicerA

Detect installed 3D printing slicers and return their launch commands. Call it at the START of a print workflow and keep the result; at the END, replace {file} in a launch_command with the downloaded file's local path and run it. If you cannot run shell commands, give the user the command and the file path.

Detects OrcaSlicer, Bambu Studio, Creality Print, Elegoo Slicer, Anycubic Slicer Next, PrusaSlicer (all multicolor-capable) and UltiMaker Cura.

Several SEPARATE models: open them one at a time, ~2 s apart (open -a "Bambu Studio" a.stl; sleep 2; open -a "Bambu Studio" b.stl); fired together, a slicer may take only one. Parts of one model go in one project, opened together.

meshy_analyze_printabilityA

Check whether a model is printable: watertightness, non-manifold edges, holes, degenerate faces and volume — plus thin walls when printer_type and/or a print size is given (FDM, SLA/resin or full-color). FREE. This is the authoritative answer to "is it printable?".

The finished task (task_type "print-analyze") reports printability.status:

  • error → meshy_repair_printability (pass this analyze task as input_task_id to reuse its printer and size)

  • warning → repair is optional

  • healthy → download the analyzed source task's model (the analyze task has none)

Example: { input_task_id: "abc-123", printer_type: "sla", intended_print_height_mm: 100 }

meshy_repair_printabilityA

Repair a model for 3D printing (FDM, SLA/resin or full-color): fixes non-manifold edges, degenerate faces and holes and makes it watertight. Cost: 10 credits. Textures are removed (retexture afterwards if needed).

Output format: input_task_id → GLB; model_url → the input's format (.stl → STL, .obj → OBJ…). To keep a Meshy model as OBJ, pass its OBJ URL (model_urls.obj) as model_url. With printer_type and/or a print size it also thickens walls that are too thin, when over 5% of the surface is. The model keeps its scale (meshy_resize scales it).

meshy_process_multicolorA

Turn a textured model into a multi-color 3MF that opens ready to print in the slicer of printer_brand. Cost: 10 credits.

Confirm first: max_colors (the printer's AMS/MMU capacity), style, printer_brand, and max_depth (realistic only). Download with format "3mf", then open it with meshy_send_to_slicer (is_multicolor). Flashforge, QIDI, Snapmaker and AnkerMake slicers are not detected: give the user the 3MF path for that slicer.

meshy_auto_splitA

Cut a model into separately printable parts: when it is too big for the bed, parts need different colors/materials, or it should be assembled. Cost: 10 credits. The texture is not kept.

There is no bed-size parameter: cuts follow mode and prompt, not your printer, so resize the model to the print size first (meshy_resize) when parts must fit a bed, then check the part sizes and re-split by_parts if one is still too big. Then meshy_download_model (3mf if requested) and meshy_send_to_slicer.

Example: { input_task_id: "abc-123", mode: "by_parts", prompt: "the figure and the base", target_formats: ["3mf"], connectors: true }

meshy_creative_labA

Turn a photo (file_path or image_url; no text prompt) into a finished Creative Lab product 3D model, end to end.

Products and cost — confirm before calling:

  • figure (chibi), vinyl-figure, brick-figure, keychain, fridge-magnet, fidget-pixel (pixel-art board of interlocking pieces) → 36 credits (6 + 30)

  • lamp (3D-printable lampshade with base plate) → 36 (30 + 6)

  • keycap (Cherry MX 1u) → 62 (12 + 50)

  • fidget-collapsible (nested-ring fidget from the photo's outline) → 6, one stage

Most products run a concept prototype, then a 3D build. One call runs both, blocks while they run (typically 2–5 minutes, with progress) and returns only the final model; the concept image is internal and never shown. If the prototype does not succeed, the build is NOT started: a FAILED stage is refunded; one still running when the wait ends keeps running and is charged.

Outputs: GLB (or output_format) for figures, keychain and fridge-magnet; lamp_stl (+ base_stl with a fixture preset); keycap a model; fidget-pixel a 3MF with one object per piece; fidget-collapsible STL + GLB. Download with meshy_download_model and the task_type this tool reports; omit format to save every part. To multicolor-print it, pass its GLB URL (or a GLB data URI) to meshy_process_multicolor as model_url; its task id is not accepted there.

Examples:

  • { product: "keychain", file_path: "/Users/me/dog.jpg", name_text: "Biscuit", build_options: { badge_shape: "star" } }

  • { product: "fidget-pixel", file_path: "/Users/me/cat.jpg", pixel_subject: "other", build_options: { grid_size: 16 } }

meshy_check_balanceA

Check the Meshy credit balance. Free. For team members it is the team's shared pool.

meshy_list_usageA

List the team's finished API tasks with the credits each consumed, newest first. Free. Use it to break down spend per endpoint or API key. Only for API keys on a Studio or Enterprise team (others get 403).

Covers SUCCEEDED and FAILED tasks (FAILED ones are refunded, so they show 0); a task still running is not listed yet. Without start_time / end_time it covers the last 30 days.

Returns { records: [{ task_id, endpoint, status, created_at, finished_at, consumed_credits, api_key_name, api_key_suffix }], page_num, page_size, has_more }

Example (September image-to-3d spend): { start_time: "2026-09-01T00:00:00Z", end_time: "2026-10-01T00:00:00Z", endpoints: ["image-to-3d"], page_size: 100 }

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.3/5.0

Scored across 28 tools

Disambiguation4/5

Most tools have clearly distinct purposes, and the richly detailed descriptions explicitly contrast overlapping ones (e.g. remesh vs convert vs resize, list_models vs list_tasks vs get_task_status, retexture vs text_to_3d_refine). A few listing/status tools sit close together, but the text moves callers to the right choice.

Naming Consistency5/5

Every tool uses the meshy_ prefix followed by a consistent snake_case verb_noun or verb_phrase pattern (meshy_text_to_3d, meshy_list_models, meshy_cancel_task). No mixed conventions appear anywhere in the set.

Tool Count4/5

28 tools is on the heavy side, but the domain is genuinely broad (generation, refinement, task/asset management, geometry editing, rigging, animation, 3D-print prep, Creative Lab, billing). Each tool covers a distinct operation, so the count is largely earned.

Completeness5/5

The surface covers the full lifecycle: image/text inputs, generation, refinement, polling/cancel/download, geometry edits (remesh, retexture, convert, resize, UV unwrap), rigging/animation, print analysis/repair/multicolor/split/slicer, Creative Lab, and billing usage. No obvious dead ends for the stated 3D-asset domain.

Maintenance

ActivityActive
ResponsivenessSlow