SketchUp MCP
MCPB · SKETCHUP-MCP-1.3.0.MCPB
Let AI work in SketchUp: pro tagging, interior quantity takeoff by tag and room, modeling, Ruby.
Available components
Last scanned (17 hours ago)
Scores higher than 76% of MCPB servers
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 1 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability64
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 3750 tokens (~129/item across 29 items; 29 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management30
- Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage83
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 49% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 30 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 22 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 21 Oct 26 +2
- Schema quality: pass → fail ▼ functional
- Tool coverage: 36% → 49% ▲ functional
- Stability: unverified → 0.23 ▲ functional
- Package version: 1.2.0 → 1.3.0 functional
- 14 Oct 26 +29
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Tool coverage: 36 functional
- First check of Schema quality: fail functional
- First check of Destructive annotations: 100 functional
- First check of Schema quality: pass functional
- First check of Schema quality: good functional
- 12 Oct 26 9
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 23 Oct 2026 · Analysed mcpb/https://github.com/2ez4gcx/sketchup-mcp/releases/download/v1.3.0/sketchup-mcp-1.3.0.mcpb@1.3.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | mcpb |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
create_box ~219
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}}.
| Name | Type | Req | Description |
|---|---|---|---|
| color | string|null | – | – |
| depth | number | yes | Size along the Y axis (mm), > 0 |
| height | number | yes | Size along the Z axis (mm), > 0 |
| material | string|null | – | – |
| name | string|null | – | – |
| origin | – | – | MIN corner (bottom-left-front) [x,y,z] mm, NOT the center; default [0,0,0] |
| tag | string|null | – | – |
| width | number | yes | Size along the X axis (mm), > 0 |
No output schema declared.
No examples provided.
create_lines ~77
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).
| Name | Type | Req | Description |
|---|---|---|---|
| close_face | boolean | – | – |
| name | string|null | – | – |
| points | array | yes | – |
| tag | string|null | – | – |
No output schema declared.
No examples provided.
create_shape ~178
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}}.
| Name | Type | Req | Description |
|---|---|---|---|
| color | string|null | – | – |
| material | string|null | – | – |
| name | string|null | – | – |
| points | array | yes | Polygon vertices [[x,y,z],...] mm, >= 3 coplanar points, in order around the perimeter |
| pushpull | number|null | – | Extrusion thickness (mm); a horizontal face is pulled up along +Z |
| tag | string|null | – | – |
No output schema declared.
No examples provided.
delete_entities ~55
Delete entities by id (ids are required; never deletes by selection). Can be undone.
| Name | Type | Req | Description |
|---|---|---|---|
| entity_ids | array | yes | Ids from tool results (selection_info, create_*...); only valid in the current SketchUp session. |
No output schema declared.
No examples provided.
export_file ~58
Export the model to a 3D/2D file chosen by extension (dae, obj, stl, fbx, dwg, dxf, 3ds...). Some formats require SketchUp Pro.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | – |
No output schema declared.
No examples provided.
export_png ~71
Export the viewport as a PNG/JPG file (e.g. 'D:/Export/perspective.png'). width/height in pixels; view changes the camera first.
| Name | Type | Req | Description |
|---|---|---|---|
| height | – | – | – |
| path | string | yes | – |
| transparent | boolean | – | – |
| view | – | – | – |
| width | – | – | – |
No output schema declared.
No examples provided.
insert_component ~128
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.
| Name | Type | Req | Description |
|---|---|---|---|
| definition | string|null | – | – |
| material | string|null | – | – |
| name | string|null | – | – |
| path | string|null | – | – |
| position | – | – | Insertion point (component origin) [x,y,z] mm |
| rotation_deg | number | – | – |
| tag | string|null | – | – |
No output schema declared.
No examples provided.
install_sketchup_bridge ~133
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.
| Name | Type | Req | Description |
|---|---|---|---|
| dry_run | boolean | – | – |
| versions | – | – | – |
No output schema declared.
No examples provided.
interior_takeoff ~536
Bill of quantities (BOQ) for interior work: one row per tag (= one specification), with the unit its category needs: FL floors and CL ceilings -> area m², once per board whatever its face orientation, sloped parts at their real area; WL wall finishes, PA partitions, GL glass -> area of ONE side of each thin upright piece (openings cut in one side deducted), m²; SK skirting, CO cornices -> length m (runs made with Follow Me too); CU curtains -> width x height m²; EX existing structure -> volume m³; DR, WN, JN, FN, LT, SN, EQ, DE -> count (outermost group/component per tag, by definition). Every row also has all the other measures, and the totals per category. by_room=true adds the quantity of every row per room (a room = a named group WITHOUT a tag, e.g. "Living room"; otherwise taken from object names "<code> <room> - <location>"). RF reference tags are skipped. Warnings list geometry that is in no tagged object and parts that could not be measured (e.g. a wall that is not a thin object). csv_path also writes the table to a CSV file for Excel (with by_room: one column per room).
| Name | Type | Req | Description |
|---|---|---|---|
| by_room | boolean | – | Also split every row by room (rooms = named groups without a tag) |
| csv_format | string | – | semicolon = ";" separators and decimal commas, for Excel with Vietnamese/European regional settings |
| csv_path | string|null | – | Absolute path of a .csv file to write, e.g. 'D:/BOQ/takeoff.csv' (UTF-8, opens in Excel) |
| include_hidden | boolean | – | Also measure hidden objects and objects on hidden tags/folders (they are listed in warnings otherwise) |
| language | string | – | Language of category names, room placeholder and CSV headers/units |
| max_thickness_mm | number | – | Thicker pieces are never taken for a wall/board (e.g. a corridor drawn as one box) |
| measures | – | – | Unit override per tag name, per code-number ("LT-05") or per code ("JN"), e.g. {"LT-05": "length", "JN": "elevation_area"} |
| overwrite | boolean | – | Replace csv_path if it already exists |
| selection_only | boolean | – | Only the selected objects (e.g. one room) |
| thin_ratio | number | – | A piece is thin when its thickness <= thin_ratio x its smaller in-plane size |
No output schema declared.
No examples provided.
list_components ~44
List component definitions and their instance counts (sorted descending) - use it to count equipment/furniture. include_groups=true also lists groups.
| Name | Type | Req | Description |
|---|---|---|---|
| include_groups | boolean | – | – |
No output schema declared.
No examples provided.
list_materials ~26
List the materials in the model: name, RGB color, transparency, texture file.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_tags ~41
List tags (layers): name, visible/hidden, color, folder (SketchUp 2021+) and number of entities using the tag (including inside definitions).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
make_group ~189
Put existing entities into a new group (they must be at the level being edited, e.g. the top level). Use it for rooms: a named group WITHOUT a tag (e.g. name "Living room") holding the finishes and items of that room, so interior_takeoff can split quantities by room. With tag, it makes an assembly (e.g. several skirting runs). Returns: {id, persistent_id, type, name, tag, material, bounds_mm{min,max,size}}.
| Name | Type | Req | Description |
|---|---|---|---|
| entity_ids | array | yes | Ids from tool results (selection_info, create_*...); only valid in the current SketchUp session. |
| name | string|null | – | Group name, e.g. the room name "Living room" or "Level 2 / Bedroom 1" is built from nested rooms |
| tag | string|null | – | Leave empty for a room |
No output schema declared.
No examples provided.
model_info ~49
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
new_model ~16
Create a new (empty) model.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
open_model ~25
Open a .skp file in SketchUp.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | – |
No output schema declared.
No examples provided.
ping ~54
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).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
quantity_takeoff ~134
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. Raw totals only (face area counts every face of a solid): for a bill of quantities use interior_takeoff.
| Name | Type | Req | Description |
|---|---|---|---|
| group_by | string | – | Group by "tag" (layer) or by "material" |
| include_hidden | boolean | – | – |
| selection_only | boolean | – | – |
No output schema declared.
No examples provided.
run_ruby ~154
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.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | – |
No output schema declared.
No examples provided.
save_model ~34
Save the model. Empty path = overwrite the current file; with path = Save As.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string|null | – | – |
No output schema declared.
No examples provided.
screenshot ~122
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.
| Name | Type | Req | Description |
|---|---|---|---|
| height | – | – | – |
| max_size | integer | – | Longest image side (px), keeps the viewport aspect ratio |
| view | – | – | Temporary capture view; empty = the user's current view |
| width | – | – | Fixed size (use together with height); if only width or height is given it is treated as the longest side |
No output schema declared.
No examples provided.
select_entities ~66
Select entities by id in SketchUp (so the user can see them, or for later tools to use).
| Name | Type | Req | Description |
|---|---|---|---|
| clear | boolean | – | – |
| entity_ids | array | yes | Ids from tool results (selection_info, create_*...); only valid in the current SketchUp session. |
No output schema declared.
No examples provided.
selection_info ~65
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of entities returned in detail |
No output schema declared.
No examples provided.
set_material ~124
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).
| Name | Type | Req | Description |
|---|---|---|---|
| back_too | boolean | – | – |
| color | string|null | – | – |
| entity_ids | – | – | Ids from tool results (selection_info, create_*...); only valid in the current SketchUp session. Empty = current selection. |
| material | string | yes | – |
| update_existing | boolean|null | – | true = also recolor an EXISTING material (affects EVERY entity that uses it) |
No output schema declared.
No examples provided.
set_tag ~91
Assign a tag to entities (entity_ids or the current selection). A missing tag is created (in its category folder with its category color when it follows the tag standard). Tag groups/components, not raw faces or edges.
| Name | Type | Req | Description |
|---|---|---|---|
| entity_ids | – | – | Ids from tool results (selection_info, create_*...); only valid in the current SketchUp session. Empty = current selection. |
| tag | string | yes | – |
No output schema declared.
No examples provided.
set_view ~53
Set a standard view and zoom extents. iso defaults to perspective, the other views to parallel projection.
| Name | Type | Req | Description |
|---|---|---|---|
| perspective | boolean|null | – | – |
| view | string | – | – |
| zoom_extents | boolean | – | – |
No output schema declared.
No examples provided.
setup_tags ~281
Create tags in one Undo step, following the interior tag standard "<CODE>-<NN> <description>", codes: FL floor finishes, SK skirting, WL wall finishes, PA partitions, CL ceilings, CO cornices and trims, DR doors, WN windows, GL glass partitions, JN built-in joinery, FN loose furniture, LT lighting, SN sanitary ware, EQ equipment and appliances, CU curtains and blinds, DE decor and accessories, EX existing structure, RF reference (not measured). Each tag goes into its category folder (SketchUp 2021+, e.g. "FL Floor finishes") and gets its category color (Tags panel > Color by tag). Use it to create every tag of a finish schedule at once, before modelling. Existing tags keep their folder and color unless update_existing=true. Tags without a known code get no folder/color unless given.
| Name | Type | Req | Description |
|---|---|---|---|
| language | – | – | Language of NEW category folder names; default: Vietnamese when the tag name has Vietnamese diacritics, else English |
| tags | array | yes | Tag names, e.g. ["FL-01 Engineered oak floor 12mm", "WL-01 Paint, white matt"], or objects {name, color "#RRGGBB", folder} |
| update_existing | boolean | – | true = also move EXISTING tags into their category folder and recolor them |
No output schema declared.
No examples provided.
transform_entities ~208
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.
| Name | Type | Req | Description |
|---|---|---|---|
| axis | – | – | Rotation axis [x,y,z]; default [0,0,1] |
| entity_ids | – | – | Ids from tool results (selection_info, create_*...); only valid in the current SketchUp session. Empty = current selection. |
| pivot | – | – | Rotation/scale center [x,y,z] mm; default = bounding box center of the FIRST entity |
| rotate_deg | number|null | – | Rotation angle (degrees), positive = counterclockwise when viewed from the axis tip |
| scale | – | – | Uniform scale factor, > 0 (e.g. 1.5) |
| translate | – | – | RELATIVE offset [dx,dy,dz] mm, not a target position |
No output schema declared.
No examples provided.
undo ~25
Undo the last step in SketchUp (every model-editing tool is one Undo step).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
How do I install the SketchUp MCP server?
SketchUp MCP ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, eca889bb130800516d7b04c44c6c550ac5056f297e7ea2f1cf0edd2d053d5009; the commands to do that are on this page. If it does not match, do not open it.
mcpb · sketchup-mcp-1.3.0.mcpb
Download bundleCheck the download matches the SHA-256 the MCP registry declares before you open it. If it does not match, do not open the file.
SHA-256
eca889bb130800516d7b04c44c6c550ac5056f297e7ea2f1cf0edd2d053d5009
macOS / Linux
echo "eca889bb130800516d7b04c44c6c550ac5056f297e7ea2f1cf0edd2d053d5009 sketchup-mcp-1.3.0.mcpb" | shasum -a 256 -c
Windows (PowerShell)
(Get-FileHash -Algorithm SHA256 .\sketchup-mcp-1.3.0.mcpb).Hash -eq "eca889bb130800516d7b04c44c6c550ac5056f297e7ea2f1cf0edd2d053d5009"
Run it in the folder you saved the bundle to, then open the file with an MCPB-capable host such as Claude Desktop.
What is the SketchUp MCP server?
SketchUp MCP is listed in the public MCP registry as io.github.2ez4gcx/sketchup-mcp. Let AI work in SketchUp: pro tagging, interior quantity takeoff by tag and room, modeling, Ruby. This page covers its MCPB bundle (https://github.com/2ez4gcx/sketchup-mcp/releases/download/v1.3.0/sketchup-mcp-1.3.0.mcpb).
Is the SketchUp MCP server safe to use?
SketchUp MCP scores 41 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the SketchUp MCP server expose?
SketchUp MCP exposes 29 tools: ping, model_info, list_tags, list_components, list_materials, and 24 more. Their descriptions and schemas cost roughly 3,256 tokens of context every time the server is loaded.
What licence is the SketchUp MCP server under?
SketchUp MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.