SketchUp
Quick 3D modelling in SketchUp, through sketchup-mcp.
Kind: App MCP · Document: model.skp · Install: brew install --cask sketchup · Override: CXDDIE_SKETCHUP
Cxddie drives SketchUp through sketchup-mcp and serves the usual CAD session on the workspace's port, so agents get the same tools as everywhere else.
One-time setup
- Install the sketchup-mcp extension from its GitHub releases. The Extension Warehouse build has
eval_rubyturned off, and Cxddie needs it. - In SketchUp, choose Extensions → MCP Server → Start Server.
- Install uv (
brew install uv, orwinget install astral-sh.uvon Windows). Cxddie runs the server withuvx sketchup-mcp.
If SketchUp isn't running, Start launches it and waits for the extension.
One document per workspace
Every workspace gets its own SketchUp model, tagged with the workspace's id and made active before every call. On macOS each model keeps its own window. On Windows SketchUp holds one model per window, so switching between workspaces reopens the file. save writes model.skp to the worktree (Save As to another path writes a copy), and an existing .skp in the repo is opened when the workspace starts.
What agents get
run_code runs Ruby in SketchUp with the workspace's model as model. Output isn't captured: the value of the last expression comes back. sketchup-mcp's other tools are offered too, as sketchup_<tool>, including its woodworking joints.
export writes STL, GLB and OBJ meshes, and IFC with SketchUp Pro. SketchUp has no STEP export.
Conventions agents are told
- SketchUp works in inches internally: write lengths as
10.mmor2.5.cm. - Put each part in its own named group or component, so
get_scenelists it. - Wrap edits in
model.start_operation/model.commit_operationso they are one undo step.
model.start_operation("Plate", true)
plate = model.active_entities.add_group
plate.name = "Plate"
face = plate.entities.add_face([0, 0, 0], [60.mm, 0, 0], [60.mm, 30.mm, 0], [0, 30.mm, 0])
face.reverse! if face.normal.z < 0
face.pushpull(6.mm)
model.commit_operation
plate.bounds.depth.to_mmSketchUp support is new and has been tested against a stand-in server, not yet against a live SketchUp. If something doesn't work, please let us know.