Cxddie

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

  1. Install the sketchup-mcp extension from its GitHub releases. The Extension Warehouse build has eval_ruby turned off, and Cxddie needs it.
  2. In SketchUp, choose Extensions → MCP Server → Start Server.
  3. Install uv (brew install uv, or winget install astral-sh.uv on Windows). Cxddie runs the server with uvx 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.mm or 2.5.cm.
  • Put each part in its own named group or component, so get_scene lists it.
  • Wrap edits in model.start_operation / model.commit_operation so 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_mm

SketchUp 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.

On this page