sketchup-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SKETCHUP_MCP_PORT | No | The port used by the SketchUp MCP bridge. If the port is changed, update it in both the SketchUp bridge and the Codex environment variables. The diagnostic CLI uses SKETCHUP_MCP_PORT. | 9876 |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Check the connection to SketchUp: returns the SketchUp and Ruby versions, the open model name, and the versions of the bridge in SketchUp and of the MCP server (warns if the bridge is older than the bundled one). |
| model_infoA | Overview of the open model: path, units, bounding box size (mm), number of top-level groups/components/ faces/edges, and number of tags, materials, definitions, scenes and selected entities. |
| list_tagsA | List tags (layers): name, visible/hidden, and number of entities using the tag (including inside definitions). |
| list_componentsA | List component definitions and their instance counts (sorted descending) - use it to count equipment/furniture. include_groups=true also lists groups. |
| list_materialsA | List the materials in the model: name, RGB color, transparency, texture file. |
| selection_infoA | Info on the selected entities: id, type, name, tag, material, bounding box (mm), face area (m2), solid volume (m3). The ids are used by the edit/delete tools. |
| quantity_takeoffA | Quantity takeoff: walks the whole model recursively (or only the selection) and totals by tag or material: face area (m2, one side), face count, total edge length (m), solid volume (m3) and instance count per component. Untagged/unpainted entities inherit from their parent group. |
| create_boxA | Create a rectangular box (group). width along X, depth along Y, height along Z, in mm. origin [x,y,z] mm is the lower-left corner. Missing tags/materials are created; color is '#RRGGBB' or a color name (only applied when the material is newly created; an existing material keeps its color). Returns: {id, persistent_id, type, name, tag, material, bounds_mm{min,max,size}}. |
| create_shapeA | Draw a flat face from a polygon (list of [x,y,z] mm points, >= 3 coplanar points) in a new group. pushpull (mm) extrudes it into a solid (e.g. draw a floor outline, then pull it up to the slab thickness). Returns: {id, persistent_id, type, name, tag, material, bounds_mm{min,max,size}}. |
| create_linesA | Draw a polyline through [x,y,z] mm points in a new group. close_face=true: closes back to the first point and creates a face (the result has face_created). |
| insert_componentB | Insert a component: from a .skp file (path, e.g. 'D:/Library/table.skp') or from a definition already in the model (definition = name). position [x,y,z] mm, rotation_deg rotates about the Z axis. |
| transform_entitiesA | Move / rotate / scale entities. Empty entity_ids = use the current selection. translate [dx,dy,dz] mm; rotate_deg about axis (default Z) at pivot (mm, default entity center); scale is a uniform factor. Order applied: scale -> rotate -> translate. |
| set_materialA | Apply a material to entities (entity_ids or the current selection). A missing material is created with color; an EXISTING material keeps its color (unless update_existing=true). |
| set_tagA | Assign a tag to entities (entity_ids or the current selection). A missing tag is created. |
| delete_entitiesA | Delete entities by id (ids are required; never deletes by selection). Can be undone. |
| select_entitiesB | Select entities by id in SketchUp (so the user can see them, or for later tools to use). |
| undoA | Undo the last step in SketchUp (every model-editing tool is one Undo step). |
| run_rubyA | Run arbitrary Ruby code in SketchUp (Ruby API). Use it when the other tools are not enough. Useful objects: Sketchup.active_model, model.entities, model.selection. Internal units are inches: use 1000.mm, x.to_mm. The whole snippet is one Undo step. Returns the last value (inspect) and the puts output. Rules: do NOT call start_operation/commit_operation (the bridge already wraps the code in one Undo step); find entities with Sketchup.active_model.find_entity_by_id(id); check face.normal before pushpull; vertex coordinates inside a group are local (multiply by the parent group transformation); end with a value or puts; never call exit. |
| set_viewA | Set a standard view and zoom extents. iso defaults to perspective, the other views to parallel projection. |
| screenshotA | Capture the SketchUp viewport and return the image so Claude can see it directly (to check modelling results). Empty view = keep the current view. With view, the camera changes only temporarily for the capture and the previous view is restored afterwards. |
| export_pngA | Export the viewport as a PNG/JPG file (e.g. 'D:/Export/perspective.png'). width/height in pixels; view changes the camera first. |
| export_fileA | Export the model to a 3D/2D file chosen by extension (dae, obj, stl, fbx, dwg, dxf, 3ds...). Some formats require SketchUp Pro. |
| save_modelA | Save the model. Empty path = overwrite the current file; with path = Save As. |
| open_modelC | Open a .skp file in SketchUp. |
| new_modelB | Create a new (empty) model. |
| install_sketchup_bridgeA | Install (or update) the "SU MCP Bridge" extension in SketchUp so the other tools can connect. Copies su_mcp.rb + su_mcp/main.rb into the Plugins folder of every SketchUp version found (Windows: %APPDATA%/SketchUp/SketchUp 20xx/SketchUp/Plugins). SketchUp must be restarted afterwards. Empty versions = every version opened at least once; dry_run=true only reports what would be done. Also returns the path of su_mcp.rbz for a manual install via Extension Manager. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 26 tools
The set separates inspection, creation, editing, and export well; the main ambiguities are screenshot/export_png/export_file, which all capture or export imagery, and set_view's view parameter. Descriptions largely clarify these boundaries, so an agent can still choose correctly.
All names use lower snake_case, which is predictable. Most follow verb_noun (list_tags, create_box, set_material), but several are noun-only (model_info, selection_info, quantity_takeoff, screenshot) and a few are single words (ping, undo), so it is not a perfectly uniform verb_noun pattern.
With 26 tools, the server is on the heavy side for an MCP tool set, but the breadth of SketchUp operations means most tools have a distinct job. It sits just above the typical 3-15 range, making it borderline but not clearly bloated.
Core lifecycle is covered: create (box/shape/lines/component), read (model_info, list_*, selection_info), update (transform, set_material, set_tag), delete, and undo, plus run_ruby as an escape hatch. Gaps remain for tag/material deletion, scene management, redo, and some component/definition operations, but agents can work around most via run_ruby.