SketchUp integration through the Model Context Protocol — NeoNexAI hardened fork (no arbitrary code execution)
SketchUp MCP has clear, action-oriented tool names (create_, delete_, transform_, get_, status) and reasonable descriptions (avg ~150 chars). All 5 tools have input schemas with type definitions and parameter descriptions. However, output schemas are not documented, responses are JSON strings without declared structure. Error handling is present but generic ('Fallo inesperado'). Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are correctly applied to sketchup_status. Parameter descriptions lack detail on constraints (e.g., position/rotation/scale arrays have no min/max bounds, no unit clarification beyond 'model units'). No pagination or batch operations. Security is sound (no secrets in params, local socket only).
Create a primitive component in the model and return its entity id. SketchUp models default to inches — if the user works in cm/m, convert before calling. The returned id is used by every other tool.
Delete a component by entity id. Undoable in SketchUp with Ctrl+Z.
Return the components currently selected in SketchUp (ids + basic data). Use it to obtain entity ids when the user says "this piece" — ask them to select it in SketchUp, then call this tool.
Verify the connection to the SketchUp extension. Call this FIRST in a session. Returns {"ok": true} if SketchUp is running with the extension's server started, or an actionable error explaining how to start it (Extensiones > SketchUp MCP > Start Server).
Move, rotate, or scale a component by entity id.
Output schemas not documented. Tools return JSON strings with unspecified structure (e.g., sketchup_get_selection returns component ids + basic data, but fields are not declared). LLMs cannot plan downstream calls or extract data reliably.
Array parameters (position, rotation, scale) lack bounds, precision, and unit clarification. 'position: [x, y, z] in model units' does not specify min/max, decimal places, or whether negative values are valid. LLMs may pass invalid values.
Error messages are generic or Spanish-only ('Fallo inesperado', 'Conexion caida'). No recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | <=2025-11-25 | v2 |
No confirmation or dry-run for destructive operations. sketchup_delete_component has no confirmation step, agents can accidentally delete components without user approval.
Tool descriptions lack dependency hints and prerequisites. E.g., sketchup_transform_component requires a valid entity id, but does not explain how to obtain one (call sketchup_get_selection first). Agents may call tools in wrong order.