Enhanced MCP server for programmatic CAD modeling with Onshape
Server has complete input schemas for all 7 tools with proper JSON Schema structure (types, descriptions, enums, required fields). Tool names follow verb_noun convention (create_*, get_*, list_*). However, descriptions are generic and lack LLM-optimization guidance. Parameter descriptions exist but are minimal (avg ~30 chars vs baseline 72 chars). No output schemas documented. Error handling not visible in provided code. Missing tool annotations (readOnlyHint, destructiveHint). Composition is reasonable, tools are single-purpose and chainable via IDs.
Create an extrude feature from a sketch
Create a rectangular sketch in a Part Studio with optional variable references
Create a thicken feature from a sketch
Get all features from a Part Studio
Get all variables from a Part Studio variable table
List documents in your Onshape account with optional filtering and sorting
Output schemas not documented. LLMs cannot infer what fields to expect from tool responses, forcing them to guess at downstream field names and risk broken tool chains.
Tool descriptions are generic and lack LLM-optimization guidance. Descriptions like 'Create an extrude feature from a sketch' (50 chars) do not explain WHEN to use this tool vs alternatives, what prerequisites exist, or what the return value contains. Baseline is 194 chars.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe read-only tools from destructive writes without explicit hints. create_extrude, create_thicken, set_variable should be marked destructiveHint=true.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Set or update a variable in a Part Studio variable table
Parameter descriptions are minimal (avg ~30 chars). E.g., 'Document ID' and 'Workspace ID' lack context on how to obtain these values or what format they expect. Descriptions should guide LLMs on dependencies and format constraints.
No error handling guidance visible. Tools should return actionable error messages (e.g., 'Sketch not found. Call get_features() to list available sketches.') rather than raw API errors.