Create 3D CAD models using vcad MCP tools. Use when the user asks to create 3D parts, mechanical components, plates with holes, brackets, or any parametric geometry. Supports primitives (cube, cylinder, sphere, cone), boolean operations, transforms, patterns, and export to STL/GLB.
Create 3D CAD models programmatically using the vcad MCP tools.
Build geometry from structured primitives and operations.
Export to STL (3D printing) or GLB (visualization).
Get volume, surface area, bounding box, and triangle count.
Understanding where primitives are positioned is critical for correct placement:
| Primitive | Origin | Extent |
|---|---|---|
| Cube | Corner at (0,0,0) | Extends to (size.x, size.y, size.z) |
| Cylinder |
| Base center at (0,0,0) |
| Height along +Z |
| Sphere | Center at (0,0,0) | Radius in all directions |
| Cone | Base center at (0,0,0) | Height along +Z |
The at parameter accepts three formats:
{x: 25, y: 15, z: 0} - exact coordinates in mm"center", "top-center", "bottom-center" - relative to base primitive{x: "50%", y: "50%"} - percentage of base primitive bounds{
"parts": [{
"name": "plate",
"primitive": {"type": "cube", "size": {"x": 50, "y": 50, "z": 5}},
"operations": [
{"type": "hole", "diameter": 6, "at": "center"}
]
}]
}
{
"parts": [{
"name": "mounting_plate",
"primitive": {"type": "cube", "size": {"x": 100, "y": 60, "z": 5}},
"operations": [
{"type": "hole", "diameter": 4, "at": {"x": 10, "y": 10}},
{"type": "hole", "diameter": 4, "at": {"x": 90, "y": 10}},
{"type": "hole", "diameter": 4, "at": {"x": 10, "y": 50}},
{"type": "hole", "diameter": 4, "at": {"x": 90, "y": 50}}
]
}]
}
{
"parts": [{
"name": "bushing",
"primitive": {"type": "cylinder", "radius": 15, "height": 20},
"operations": [
{"type": "hole", "diameter": 10, "depth": 15, "at": "center"}
]
}]
}
{
"parts": [{
"name": "bracket",
"primitive": {"type": "cube", "size": {"x": 40, "y": 40, "z": 5}},
"operations": [
{"type": "union", "primitive": {"type": "cube", "size": {"x": 5, "y": 40, "z": 30}}, "at": {"x": 0, "y": 0, "z": 5}},
{"type": "hole", "diameter": 5, "at": {"x": 20, "y": 20}},
{"type": "difference", "primitive": {"type": "cylinder", "radius": 2.5, "height": 40}, "at": {"x": 2.5, "y": 20, "z": 20}}
]
}]
}
{
"parts": [{
"name": "rail",
"primitive": {"type": "cube", "size": {"x": 200, "y": 20, "z": 10}},
"operations": [
{
"type": "difference",
"primitive": {"type": "cylinder", "radius": 3, "height": 15},
"at": {"x": 20, "y": 10, "z": -2}
},
{
"type": "linear_pattern",
"direction": {"x": 1, "y": 0, "z": 0},
"count": 5,
"spacing": 40
}
]
}]
}
{
"parts": [{
"name": "flange",
"primitive": {"type": "cylinder", "radius": 40, "height": 10},
"operations": [
{"type": "hole", "diameter": 20, "at": "center"},
{
"type": "difference",
"primitive": {"type": "cylinder", "radius": 4, "height": 15},
"at": {"x": 30, "y": 0, "z": -2}
},
{
"type": "circular_pattern",
"axis_origin": {"x": 0, "y": 0, "z": 0},
"axis_dir": {"x": 0, "y": 0, "z": 1},
"count": 6,
"angle_deg": 360
}
]
}]
}
create_cad_document to build geometryinspect_cad to verify dimensions and volumeexport_cad to save as .stl or .glbdepth for blind holesRecommended: Install the vcad Claude Code plugin for zero-config setup (includes MCP server, skills, and slash commands):
claude plugin add vcad
Manual setup: Add the vcad MCP server to your Claude Code config:
{
"mcpServers": {
"vcad": {
"command": "npx",
"args": ["-y", "@vcad/mcp"]
}
}
}
Or run from local checkout:
{
"mcpServers": {
"vcad": {
"command": "node",
"args": ["packages/mcp/dist/index.js"]
}
}
}