Skip to content

Advanced Tools ​

Blender MCP ​

Connect a standard stdio Blender MCP server with BLENDER_MCP_COMMAND (for example, the full path to uvx) and BLENDER_MCP_ARGS (for example ["mcp-for-blender"]). The mcp-for-blender project was formerly published as blender-mcp, which still works as a compatibility wrapper. Install and enable its addon in Blender and start the addon's connection. Blender and this server must be able to read the same local files. Printer tools work without Blender configured. Keep Blender open while your agent works: the addon does not run in background mode. See the Blender guide for setup, units, and a worked example that refits a phone case for a new phone end to end.

blender_mcp_status ​

Inspect the Blender MCP configuration. With connect: true, it starts the configured server, initializes it, and lists its tools by name and summary. Pass tool_names to get the full input schemas of the tools you are about to call (include_schemas: true returns all of them, which is large). A successful connection does not prove the addon inside Blender is running; call get_scene_info through blender_mcp_call to check that.

json
{
  "connect": true,
  "tool_names": ["execute_blender_code"]
}

blender_mcp_setup ​

Check or update the MCP for Blender add-on that the configured bridge needs, when it is the mcp-for-blender (or blender-mcp) package run with uvx. Without arguments it reports, changing nothing: the add-on file Blender loads (target, for the running Blender's version), its protocol, the package's expected_protocol, whether Blender is listening, and the running add-on's get_addon_status as live (or live_error). With update: true it stages the add-on with the package's own mcp-for-blender install-addon at that version, checks that the installed and staged files are both regular MCP for Blender add-ons and that the staged one carries the expected protocol, keeps the old file as a backup next to it and renames the new one into place. It never starts, stops or edits Blender. Another bridge reports supported: false.

json
{ "update": true }

blender_mcp_call ​

Call a tool the Blender MCP server advertises, such as get_scene_info or execute_blender_code, with arguments matching its discovered schema. The full MCP result, including images and errors, is returned. Calls can change the active Blender scene and are never retried automatically. Preserve the user's own words in user_prompt when the remote tool asks for it.

json
{
  "tool_name": "get_scene_info",
  "arguments": { "user_prompt": "Inspect the scene before preparing a print." }
}

blender_mcp_export_stl ​

Export named objects from the live Blender scene to a new STL for slicing. Use it after modelling or editing through blender_mcp_call; Blender MCP's own export_scene writes GLB or FBX, not STL. The export writes world-space geometry with modifiers applied, without changing the scene, selection, or mode.

json
{
  "object_names": ["PhoneCase"],
  "output_path": "/path/to/phone-case.stl",
  "user_prompt": "Make it fit my iPhone 17 Pro Max."
}
  • The result reports output_verified: true, the triangle count, and bounding_box.dimensions measured from the written file. Compare the dimensions with what you expect before slicing.
  • STL files carry no units and slicers read them as millimetres. An imported STL keeps its numbers, so the default scale: 1 is right. If a part was modelled in metres, the result warns that it is under 1 unit across; export again with scale: 1000.
  • output_path must be new and its parent must exist; nothing is ever overwritten. On any Blender error, mismatched receipt, or invalid file, nothing is published.

blender_mcp_edit_model ​

Import an STL into Blender, apply ordered edits, and export a new STL. Supported operations are decimate:<ratio> (greater than 0, up to 1), remesh:<voxel size> (positive, in STL units), and boolean_union:<STL path>. Use blender_mcp_call for anything else.

json
{
  "stl_path": "/path/to/model.stl",
  "output_path": "/path/to/model-edited.stl",
  "operations": ["decimate:0.5"],
  "user_prompt": "Reduce the triangle count for printing.",
  "execute": false
}
  • The default (execute: false) validates the request and returns the plan and generated Python without launching Blender. Set execute: true to apply it, reusing the preview's output_path.
  • Omitting output_path selects a unique model-edited-<id>.stl beside the input. Existing input and output files are never overwritten.
  • The edit requires Object Mode, preserves existing scene objects and selection, and publishes the new STL only after checking a matching export receipt and a valid, finite triangle mesh. Binary STLs up to 256 MiB are validated in small chunks; ASCII STLs are limited to 4 MiB.
  • Requests have connection, discovery, and call deadlines (BLENDER_MCP_TIMEOUT_MS, default 120000) that also cover file validation. Interrupted edits are never replayed; inspect Blender before retrying, because an edit may already have started.
  • A valid STL is not proof of printability. Inspect the result before slicing.

Legacy BLENDER_MCP_BRIDGE_COMMAND shell commands remain supported when no standard command is configured. They receive JSON on stdin (modelPath, operations, source, and stlPath) and the same JSON in MCP_BLENDER_PAYLOAD, and their results report output_verified: false. A per-call bridge_command requires MCP_ALLOW_EXECUTABLE_ARG=1.

Fusion MCP ​

Design parts from scratch in Autodesk Fusion through DMontgomery40/fusion360-mcp-server, pinned to commit 86a3016a5a5b: faust-machines/fusion360-mcp-server with document binding. On macOS, fusion_mcp_setup checks and installs the add-in, its port login item and this server's settings. Set FUSION_MCP_COMMAND to the full path of uvx; FUSION_MCP_ARGS defaults to the pinned server in socket mode. Install that commit's Fusion360MCP add-in in Fusion and set it to Run on Startup. The client stays connected for the life of this server, only FUSION_* settings reach the Fusion server, and requests are never replayed. See the Fusion guide for setup, units, and the open-document requirement.

fusion_mcp_status ​

Report configured, connected, addinReachable, fusionRunning, the Fusion server's tools with their schemas, launched, pin (the pinned server commit), and error when the server could not start. addinReachable means the add-in answered its own ping within 2 s on FUSION_MCP_PORT (default 9877, because Blender's MCP addon holds 9876). connected is true only when the add-in also answered through the Fusion server. With launch: true and Fusion not running on this Mac, it runs open -a "Autodesk Fusion" --env FUSION_MCP_PORT=<port> and waits up to 90 s for the add-in.

json
{ "launch": true }

fusion_mcp_setup ​

On macOS, check or install what the Fusion bridge needs. Without arguments it reports, changing nothing: fusion (whether Fusion is installed, and where), addin (installed, matches_pin, run_on_startup), port_agent (the login item that gives Fusion FUSION_MCP_PORT, installed only when launchd has it loaded), configured, env_file and ready. With install: true it downloads the pinned commit's add-in and checks every file against its SHA-256 (a symlink, an extra file or a changed byte installs nothing), installs it set to run on startup (one already at the pin is left in place), loads the login item, and adds the FUSION_MCP_* settings this server is missing to its own .env after a copy of the file; a setting it already has is never rewritten. installed says what it did; when it isn't ready, message says what is missing in plain words. It never starts or quits Fusion.

json
{ "install": true }

fusion_mcp_call ​

Call any tool the Fusion server advertises, such as create_sketch, extrude, fillet, set_parameter, or execute_code, with arguments matching its discovered schema. The full MCP result and errors are returned, as for blender_mcp_call. Calls change the active design and are never retried. Fusion lengths are in centimetres unless a tool says otherwise.

json
{ "tool_name": "create_sketch", "arguments": { "plane": "xy" } }

fusion_mcp_new_design ​

Open a new parametric design document, so the Fusion tools have an active design. At the pinned commit, Fusion must already have some document open: no tool works from Fusion's home screen (issue #12).

fusion_mcp_export ​

Write <name>.stl (from export_stl), <name>.f3d (from export_f3d), and <name>.parameters.json (the design's user parameters) into output_dir, and return their absolute paths as stl, f3d, and parameters. The STL is one body: the only visible solid body, or body_name, whose name must be unique across all bodies, hidden ones and component copies included. It is checked as a finite triangle mesh, and stlUnits reports whether its numbers are millimetres. Existing files are never overwritten, and a failed export publishes nothing.

json
{ "output_dir": "/path/to/project", "name": "bracket" }

Released under the GPL-2.0 license. An independent open-source project, not affiliated with any printer manufacturer or host software.