Skip to main content
Glama
chisomobanzi

Serpentine3D MCP Server

by chisomobanzi

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
serp_scene_infoA

Get the current scene: objects (name/kind/layer/bbox, and the user_text keys and values of any that carry some), layers, selection, bounds, and display mode. Set user text with the setusertext command.

serp_screenshotA

Capture the current 3D viewport so you can see the model. Returns a PNG image. Use after making changes to check the result.

serp_create_curveB

Create a NURBS curve from 3D points [[x,y,z], ...].

kind: 'interp' (curve passes through the points), 'control' (points are control vertices), 'polyline' (straight segments), 'line' (two points).

serp_create_surfaceA

Create a surface/solid from existing curves (referenced by name).

operation: 'extrude' params: direction [x,y,z] (default [0,0,1]), distance (default 10), cap (bool, default true - closed profiles become solids) 'revolve' params: axis_point, axis_dir, angle (degrees, default 360) 'loft' curves: 2+ profiles in order; params: ruled (bool) 'planar' flat surface from one closed planar curve 'sweep' curves: [profile, rail]

serp_booleanA

Boolean operation between solids: 'union', 'difference' (targets minus tools), or 'intersection'. Tools are consumed.

serp_transformA

Transform objects (by name).

operation/params: 'move' offset [dx,dy,dz] 'copy' offset [dx,dy,dz] 'rotate' center [x,y,z], axis [x,y,z] (default Z), angle degrees 'scale' center, factor (uniform) or factors [sx,sy,sz] 'mirror' plane_point, plane_normal, keep_original (bool)

serp_selectA

Select objects by names, kind (curve/surface/solid), or layer name. mode: 'replace', 'add', or 'clear' (clear ignores other args).

serp_commandA

Run any Serpentine3D command exactly as if typed in the command line, supplying its interactive inputs in order.

Examples: command='circle', inputs=['0,0,0', '5'] command='extrude', inputs=['Curve 01', '', '20'] (object name(s), then '' to end selection, then distance) command='zoomextents'

Selection prompts accept object names, 'all', or '' to finish. Too few inputs is an error, and so is one left over when the command finishes: the error says which prompt each input answered.

serp_prepare_scriptA

Open Python in a new editable Script draft without executing it.

Existing drafts and geometry are preserved. Scripts can use doc (a working document), geo (geometry helpers), and selected (selected SceneObjects). The user can edit the draft, Run to preview, then Keep or Discard its changes.

serp_layersA

Manage layers. action: 'list', 'create', 'rename', 'visible', 'current', 'color' (color as [r,g,b] 0-1), 'assign' (move objects to layer), 'delete', 'style' (how a layer draws: style={linetype, print_width mm (0 = printer default), screen_width px or 'from print', hatch none/lines/cross/solid or a pattern loaded with the hatchpatterns command, hatch_angle degrees, hatch_spacing mm on paper, hatch_color ink/layer/#rrggbb, hatch_background none/layer/#rrggbb (what a cut shows under its hatch), cut_line_width mm on paper round a cut (0 = none), cut_line_color ink/layer/#rrggbb}). A layer can live under another: pass parent to 'create', and name a layer by its path ('Walls::Interior') where two layers share a name.

serp_importA

Add a file to the scene (.serp, .step/.stp, .obj). What is already there stays. The user's view is left alone unless zoom_extents is true.

serp_exportA

Export the scene (or current selection) to .serp, .step/.stp or .obj — format chosen by extension.

serp_measureA

Measure geometry. what: 'distance' (needs points=[[..],[..]]), 'length', 'area', 'volume', 'bbox', 'centroid' (need targets).

serp_undoA

Undo the last operation (or redo with redo=true).

serp_viewportA

Adjust the viewport. view: top/front/right/left/back/bottom/ isometric/perspective. display_mode: wireframe/shaded/ghosted. zoom_extents fits all objects in view.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 15 tools

Disambiguation3/5

Most specialized tools have clearly distinct purposes, but serp_command is a universal escape hatch that can duplicate almost every other tool. serp_layers also bundles many actions under one name, and agents may hesitate between using a direct tool and the generic command tool.

Naming Consistency4/5

All names use the same serp_ snake_case prefix, which is highly consistent. However, they are not strictly verb_noun: several are nouns or broad concepts (viewport, layers, scene_info, screenshot, command).

Tool Count5/5

With 15 tools, the set sits comfortably in the well-scoped range for a 3D CAD server. Each tool maps to a major workflow area such as creation, transformation, selection, measurement, or export.

Completeness4/5

The surface covers most of the modeling lifecycle: curves, surfaces, booleans, transforms, layers, measurement, import/export, undo, viewport, and scripting. Explicit delete/remove and primitive-creation operations are missing, though serp_command and serp_prepare_script provide workarounds.

Maintenance

ActivityActive
ResponsivenessWithin a week