Craft Apps Guide

How to Use SolidCraft MCP with Claude Code

SolidCraft is Tangency Labs’ independent parametric 3D CAD project, separate from ArtCraft’s official apps. Its MCP server can create a constrained sketch, extrude it and rebuild the part when a parameter changes.

Install and connect

Tested 20 October 2026 on macOS 27.0.1 arm64 using the official universal CLI release. Fixtures were created for this guide. These are real headless engine and stdio MCP tests; manual desktop interaction and authenticated model-driven generation were not tested. A separate real Claude Code 2.1.304 mcp list health check connected to both servers.

We tested SolidCraft CLI 0.16.2. The documented client entry is {"mcpServers":{"solidcraft":{"command":"solidcraft-cli","args":["mcp"]}}}. A direct stdio MCP session executed the modeling steps. Separately, real Claude Code 2.1.304 reported Connected for this server through mcp list in an isolated local configuration; no model request or sign-in was performed.

MCP file access is restricted. For our isolated sample folder we started solidcraft-cli mcp --allow-path /absolute/sample/folder. Grant only the sample/output folder you intend to expose. Use --connect only when you intend to operate a running app.

Verified Claude Code connection

We installed the official Claude Code 2.1.304 native package locally and verified its SHA-512 against npm registry metadata. In a separate task-owned project, .mcp.json used the full path to each official CLI and its mcp argument. The initial health check reported Pending approval; after explicitly allowing only cadcraft and solidcraft through the command’s per-server settings, claude mcp list reported Connected for both. This verifies client/server connectivity, not authenticated AI modeling.

For your own project, review the local executable paths and file access before approving the servers in Claude Code. Use claude mcp list to check their health; if they remain Pending approval or Failed to connect, resolve that state before asking the model to operate the app.

Build, edit and check a part

1

Create a dimensioned sketch

Create width = 40 mm, depth = 30 mm and height = 10 mm using parameters.change. Create an XY sketch; add sketch.rectangle.center with center [0,0] and corner [20,15].

CHECK

A 40×30 rectangle with horizontal/vertical relations and center at the origin.

If this fails: Inspect created curve IDs instead of assuming them after earlier edits.

Keep: Sketch in native design

2

Constrain it

In a fresh sketch use sketch.constraint.coincident {"a":"p5","b":"origin"}; use sketch.dimension for l1 with value width and l2 with value depth.

CHECK

The tested fresh sketch reports solved true and zero degrees of freedom after both dimensions.

If this fails: Check current IDs and solver status. Do not proceed with conflicting or unsolved constraints.

Keep: Native sketch with d1 = width and d2 = depth

3

Extrude and measure

Finish the sketch; run solid.extrude with distance height and body_name GuidePlate. Call measure.

CHECK

One 40×30×10 mm body, six faces, volume 12,000 mm³.

If this fails: Check the body bounding box and analytical volume; a render alone does not prove dimensions.

Keep: Native sketch and extrusion timeline

4

Change a parameter

In tested 0.16.2 call set_parameter {"name":"width","value":"60 mm"}, then measure.

CHECK

Two features recompute; dimensions become 60×30×10 mm and volume becomes 18,000 mm³.

If this fails: This release requires value, not the expression alias shown in newer main documentation. Inspect the installed schema and returned error.

Keep: Editable changed design

5

Save, reopen and export

Save plate.solidcraft, start an empty design, open the saved file and inspect/measure again. Export STEP and STL copies.

CHECK

Native reopen retains two features without errors and volume 18,000 mm³. Same-app STEP and STL reimports succeed; STL contains 12 triangles.

If this fails: A STEP import is an imported solid and STL is a mesh; keep the native file for the editable sketch and parameter history.

Keep: plate.solidcraft, plate.step, plate.stl

Actual before and after

The sketch was fully constrained (DOF 0). At 40×30×10 mm the body measured 12,000 mm³. Changing width to 60 mm rebuilt two features and produced 18,000 mm³; reopening the native file preserved these measurements. STEP and STL copies were then reopened by SolidCraft. This is not a third-party CAD compatibility test.

SolidCraft headless render of the initial 40 by 30 by 10 millimetre plate
Before width change, genuine SolidCraft 0.16.2 output, 1200×800, uncropped.
Actual SolidCraft render of the reopened 60 by 30 by 10 millimetre plate
SolidCraft 0.16.2 genuine headless render after native reopen, 1200×800 pixels, uncropped; not a manual UI screenshot.

Recover from a failure

Read inspect_design and measure after a failure before repeating edits. The release rejected our first set_parameter call with expression because value is required; the corrected call rebuilt the part. For a refused path, select the intended allowed sample folder; do not broaden file access unnecessarily.

Sources & Evidence

Official sources checked 20 October 2026. Test results are limited to the versions, environment and files stated above.