Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

SolidWorks

PYPI · SW-MCP

Model, measure and verify parametric parts and assemblies in a running SolidWorks (Windows).

Available components

+18 this week 80 Trust /100

Last scanned (22 minutes ago)

Scores higher than 80% of PyPI servers

Category Design and Media

Trust breakdown (7 categories)

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 Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 0 of 28 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to NejcDvorsek/sw-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 5 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability73
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 17390 tokens (~170/item across 102 items; 101 tools + 1 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 Management23
  • Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage67
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 0% of tool parameters carry a description.Fail
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_feature" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 103 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
Changelog

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.

  • 5 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

  • 3 Nov 26 +16
    • Malware scan: unverified → pass ▲ security
  • 2 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
  • 1 Nov 26 +16
    • Malware scan: unverified → pass ▲ security
  • 30 Oct 26 0
    • Schema quality: 14839 → 17390 ▼ functional
    • Stability: unverified → 0.03 ▲ functional
    • Package version: 0.1.0 → 0.2.0 functional
  • 29 Oct 26 62

    First indexed and scored.

Diagnostics

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 5 Nov 2026 · Analysed pypi/sw-mcp@0.2.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo NejcDvorsek/sw-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/NejcDvorsek/sw-mcp/.github/workflows/publish.yml@refs/tags/v0.2.0
Rekor log index 3596733806
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:31be109ff1b8d69917f36ea9869e0d75fddf6bc16798fd30f7da79f19c76e10c

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted setuptools.build_meta

Background: Why install scripts are a supply-chain risk →

Dependencies 28 packages
Packages resolved 28
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 101 exposed · ~16,607 tokens

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 →

Tool Tokens
activate_document ~52

Make an open document current again by its title, also a new one that was never saved. For after open_document / close_document on another document; list_documents gives the titles.

NameTypeReqDescription
titlestringyes–

No output schema declared.

No examples provided.

add_axis ~82

A reference axis anywhere: through=[[x, y, z], [dx, dy, dz]] (point and direction, model mm) or where two planes meet (planes=['Plane1', 'right']). Patterns turn about it by name (add_circular_pattern(axis=...)).

NameTypeReqDescription
name–––
planes–––
through–––

No output schema declared.

No examples provided.

add_base_flange ~230

Start a sheet metal part: a flat tab from a closed profile, or a bent section from an open one. profile_mm: [[x, y], ...] on the Front plane, closed when the last point is the first (a tab, thickness_mm thick along +z); open (an L, U or Z section, corners bent with bend_radius_mm inside) extruded depth_mm along +z. sketch: a sketch of the part by name instead (add_sketch: arcs, other planes). The thickness of an open profile lies on its right walked from the start (flip_thickness: left); reverse: along -z. k_factor sets the flat length. Returns the sheet's thickness, bend radius and K-factor.

NameTypeReqDescription
bend_radius_mmnumberyes–
depth_mm–––
flip_thicknessboolean––
k_factornumber––
namestring––
profile_mm–––
reverseboolean––
sketch–––
thickness_mmnumberyes–

No output schema declared.

No examples provided.

add_boss_on_face ~128

Grow a round boss (standoff, peg) height_mm out of ANY planar face, centred at (x, y, z) mm. The face is found as for add_hole with face=. For a PCB standoff, add a blind hole in its top. Returns mass properties and `dimensions`.

NameTypeReqDescription
diameter_mmnumberyes–
facestringyes–
height_mmnumberyes–
namestring––
x_mmnumberyes–
y_mmnumberyes–
z_mmnumberyes–

No output schema declared.

No examples provided.

add_box ~105

Add a rectangular block: sketch width x height on the first plane, extrude by depth. Dimensions are in millimetres. Returns the created feature name, the addressable depth dimension ('D1@<name>'), `dimensions` (width, height, depth; for set_dimension) and the resulting mass properties.

NameTypeReqDescription
depth_mmnumberyes–
height_mmnumberyes–
namestring––
width_mmnumberyes–

No output schema declared.

No examples provided.

add_chamfer ~186

Chamfer edges of the current part: distance_mm back along a face, at angle_deg (default 45°) to it. edges: "all" (default), "x"/"y"/"z", a face outline like "+z:outline", a feature's edges like "feature:Boss", or explicit indices like "2,5" from list_edges. Another angle than 45° needs from_face, which way the face that the distance runs along faces: "-z", angle_deg=60 makes an underside edge printable without support (round an arc the chamfer is a cone). Returns the number of edges chamfered and the mass properties.

NameTypeReqDescription
angle_degnumber––
distance_mmnumberyes–
edgesstring––
from_face–––
namestring––

No output schema declared.

No examples provided.

add_circular_pattern ~171

Repeat a feature `count` times evenly around 360° about an axis. The axis is the cylindrical face nearest (center_x_mm, center_y_mm) — e.g. a centre hole drilled there — or axis='y' (a model axis through the origin: revolved parts turn about y) or a reference axis by name (add_axis). feature_name defaults to the last feature. Bolt circle: drill a centre hole + one bolt hole, then pattern the bolt hole. angle_deg < 360 spreads the instances over that angle, first to last (with axis=).

NameTypeReqDescription
angle_degnumber––
axis–––
center_x_mm–––
center_y_mm–––
countintegeryes–
feature_name–––

No output schema declared.

No examples provided.

add_closed_corner ~156

Close the open corner between two flanges of a sheet metal part, ready to weld. at_mm: a model point [x, y, z] on the end face of one flange at the corner (list_faces); that flange grows to meet the one beside it. kind 'overlap' (it runs over the other flange's end), 'underlap' (it stops behind it) or 'butt'; gap_mm stays between them. The flat pattern keeps the extra material. Mark the corner's weld on the drawing with add_symbol(type='weld').

NameTypeReqDescription
at_mmarrayyes–
gap_mmnumber––
kindstring––
namestring––

No output schema declared.

No examples provided.

add_cone ~100

Create a cone/frustum by revolving a trapezoidal profile 360°. top_diameter_mm = 0 gives a full cone. Returns mass properties (volume = π·h/3 · (rb² + rb·rt + rt²)). Use new_document first.

NameTypeReqDescription
bottom_diameter_mmnumberyes–
height_mmnumberyes–
namestring––
top_diameter_mmnumberyes–

No output schema declared.

No examples provided.

add_cylinder ~72

Create a cylinder by revolving a profile 360° about an axis. The first revolve-based primitive. Returns the resulting mass properties (volume = π · r² · h). Use new_document first.

NameTypeReqDescription
diameter_mmnumberyes–
height_mmnumberyes–
namestring––

No output schema declared.

No examples provided.

add_dimension ~234

Dimension in a view between references, or the size of one. ref / to: 'edge:-x' (the face facing -x, seen edge-on), 'hole:CBore1' (its centre; alone its diameter), 'feature:CornerFillet' (alone: its radius), or a model point [x, y, z] (the edge nearest it). style 'single' (ref to `to`), or 'baseline' / 'chain' / 'ordinate' with to=[ref, ref, ...] measured from ref. direction 'auto', 'horizontal', 'vertical', 'aligned'. side 'below', 'above', 'left', 'right' (default nearer the geometry); offset_mm from the outline (default the first free row: 10, 18, 26 ...). Returns ids, values, boxes, and warnings on overlaps.

NameTypeReqDescription
directionstring––
offset_mm–––
ref–yes–
side–––
stylestring––
to–––
viewstringyes–

No output schema declared.

No examples provided.

add_disc ~126

Create a disc/puck/flange: a circle extruded along +Z, centred at (x_mm, y_mm). Flat faces are +Z/-Z, so add_hole and add_circular_pattern compose with it (round-flange bolt circles). The centre defaults to the origin; off it, its x and y are dimensions. Returns mass properties. Use new_document first.

NameTypeReqDescription
diameter_mmnumberyes–
namestring––
thickness_mmnumberyes–
x_mmnumber––
y_mmnumber––

No output schema declared.

No examples provided.

add_edge_flange ~209

Bend a flange up from a straight edge of a sheet metal part, the edge's whole length. at_mm: a model point [x, y, z] on the edge (list_edges). length_mm is the flange's outside length, from the outer corner of the bend; angle_deg the bend. It rises the way the face at the edge looks (from an edge of the top face of a tab: up); flip=True folds it the other way. position: 'material_inside' (the part keeps its outer size), 'material_outside' or 'bend_outside'. bend_radius_mm defaults to the sheet's. Returns dimensions 'length' and 'angle' for set_dimension.

NameTypeReqDescription
angle_degnumber––
at_mmarrayyes–
bend_radius_mm–––
flipboolean––
length_mmnumberyes–
namestring––
positionstring––

No output schema declared.

No examples provided.

add_end_cap ~124

Close the open end of a tube or pipe member with a plate. at_mm: a model point on the end face (the tube wall's end). thickness_mm outward past the end (inward=True: into the tube); its edge inset_mm in from the tube's outside (default half the wall); chamfer_mm on its corners.

NameTypeReqDescription
at_mmarrayyes–
chamfer_mm–––
inset_mm–––
inwardboolean––
namestring––
thickness_mmnumberyes–

No output schema declared.

No examples provided.

add_extruded_profile ~467

Extrude a closed polygon into a solid; it is auto-closed. - Default: points_mm = [[x,y], ...] on the first plane (same as add_box), extruded by depth_mm along +Z. rotate_deg turns the profile counterclockwise about about_mm ([x, y], the origin by default) first: draw a crank or a lug straight, then set it at its angle. spline=True runs a smooth closed spline through the points instead (organic shapes). - face='+z' (or '-x', ...): a boss grown out of ANY planar face; points_mm = [[x,y,z], ...] on that face (the face facing that way through them, as for add_hole). For pads, ledges, mounting blocks. - plane='Plane1' (add_plane, or 'front'/'top'/'right'): points_mm = 3D [x, y, z] points ON the plane (origin + u x_axis + v y_axis from add_plane); depth_mm along its normal, the other way with reverse=True. corner_radii_mm rounds the corners with real sketch fillets: one radius for all, or one per vertex (0 = sharp); equal radii share one dimension ('radius', else 'r<i>'). draft_deg tapers the walls inwards as they rise (negative: outwards), a dimension 'draft' (a moulded boss, a printable taper). merge=False keeps the result a separate body: list_bodies, combine_bodies. An argument that does not go with the variant is refused. Returns mass properties (volume = polygon area * depth; a right-angled corner of radius r loses r^2 (1 - pi/4), a concave one gains it).

NameTypeReqDescription
about_mm–––
corner_radii_mm–––
depth_mmnumberyes–
draft_degnumber––
face–––
mergeboolean––
name–––
plane–––
points_mmarrayyes–
reverseboolean––
rotate_degnumber––
splineboolean––

No output schema declared.

No examples provided.

add_extruded_slot ~129

Extrude a stadium (rounded tab, lug or link) from point start_mm to end_mm ([x, y] mm). The half-round ends are centred on the two points themselves; width_mm is the tab's width, depth_mm the extrusion along +Z. Volume = (width * length + pi * (width/2)^2) * depth. Returns mass properties.

NameTypeReqDescription
depth_mmnumberyes–
end_mmarrayyes–
namestring––
start_mmarrayyes–
width_mmnumberyes–

No output schema declared.

No examples provided.

add_fillet ~318

Round edges of the current part with one constant radius (mm). edges: "all" (default), "x"/"y"/"z" for edges parallel to that world axis, a face outline like "+z:outline" (the outer edges of the top face, not those of holes in it), every edge of one feature like "feature:Boss" (its top and where it meets the part: a moulded look), or explicit indices like "2,5" from list_edges. radii_at_mm = [[x, y, z, r], ...] makes the radius vary: r at the edge end at each point (list_edges gives the ends), radius_mm at the other ends, straight in between; 'vertex_radii' gives each end's dimension. skip_shorter_mm leaves out edges shorter than that. tangent_propagation=True carries the round on along edges that run on smoothly from the given ones, as SolidWorks does by default: an edge ending where it runs into another tangentially, such as round a fillet, only rounds so. A refusal names the edges the radius does not fit (each tried alone, and with propagation). Returns the number of edges filleted and the mass properties.

NameTypeReqDescription
edgesstring––
namestring––
radii_at_mm–––
radius_mmnumberyes–
skip_shorter_mm–––
tangent_propagationboolean––

No output schema declared.

No examples provided.

add_full_round ~168

Round a rib's top off completely: a full round fillet, as on a moulded part. The face facing `face` ("+z", ...) through the point (x, y, z) is the top; the two opposite flat side faces along it that lie closest together are the sides, so the round runs across the rib, not along it. The radius is half their distance (width_mm in the result) and follows the rib. Hand calculation: a rib w wide and L long loses L w^2 (1/2 - pi/8).

NameTypeReqDescription
facestringyes–
namestring––
x_mmnumberyes–
y_mmnumberyes–
z_mmnumberyes–

No output schema declared.

No examples provided.

add_gusset ~191

A gusset plate in the corner of two weldment members. first_mm / second_mm: model points on the two faces, at right angles. leg1_mm runs along the first, leg2_mm along the second. shape 'triangle' (area leg1 leg2 / 2), or 'polygon' with both tips cut square end_mm long. position 'center' / 'start' / 'end' along the corner; thickness_side 'both' (centred), 'inner' or 'outer'.

NameTypeReqDescription
end_mm–––
first_mmarrayyes–
leg1_mmnumberyes–
leg2_mmnumberyes–
namestring––
positionstring––
second_mmarrayyes–
shapestring––
thickness_mmnumberyes–
thickness_sidestring––

No output schema declared.

No examples provided.

add_hole ~419

Cut a round hole. Which one follows from the arguments: - diameter_mm at (x, y): straight through the thickness (the add_box extrude direction); coordinates share add_box's system (the centre of a 40x20 profile is x=20, y=10). - + face='+z' (or '-x', ...) and z_mm: on ANY planar face, centred at 3D point (x, y, z), the face facing that way through the point (a pocket floor or a step works too). Through all, or depth_mm deep (blind: heat-set inserts, screw pilots). Returns `dimensions` (diameter, x, y, depth). - + cbore_diameter_mm and cbore_depth_mm: a counterbored screw hole from the +Z face, a flat-bottom pocket over the clearance shank so a cap-head screw or heat-set insert sits flush. - iso='clearance' (ISO 273), 'counterbore' (socket head cap screw), 'countersink' (socket countersunk screw) or 'tapped', with size='M6', face and z_mm: SolidWorks' Hole Wizard, sized by the standard's tables and carried into drawing callouts. fit 'close' / 'normal' / 'loose'; thread='modeled' cuts a real, printable ISO thread in a tapped hole instead of the cosmetic one. Returns the standard's sizes in `hole`. Prefer iso= for standard fasteners. Returns mass properties.

NameTypeReqDescription
cbore_depth_mm–––
cbore_diameter_mm–––
depth_mm–––
diameter_mm–––
face–––
fitstring––
iso–––
name–––
size–––
threadstring––
x_mmnumberyes–
y_mmnumberyes–
z_mm–––

No output schema declared.

No examples provided.

add_linear_pattern ~93

Repeat a feature `count` times, `spacing_mm` apart, along a direction. direction: "+x"/"-x"/"+y"/... feature_name: the feature to repeat (e.g. "Hole"); defaults to the most recently added feature. Returns mass properties.

NameTypeReqDescription
countintegeryes–
directionstring––
feature_name–––
spacing_mmnumberyes–

No output schema declared.

No examples provided.

add_loft ~228

Loft (blend) 2+ closed profiles, given one of two ways. - sketches=['Heel', 'Toe']: closed sketches by name (add_sketch on any planes), in order; cut=True cuts the lofted shape away (a straight bevel gear's tooth gap is a loft cut between heel and toe profiles). - profiles_mm + heights_mm: per profile a polygon [[x,y], ...] (mm) in Front-plane coords, or a round section {"center_mm": [x, y], "diameter_mm": d}, on parallel planes at heights_mm along +Z (same length, strictly increasing, starting at 0). A 2-profile loft is a ruled transition; 3+ blend smoothly. Each profile starts at its first vertex (a round one on +x). Give profiles in the same order and sense so they do not twist. Returns mass properties.

NameTypeReqDescription
cutboolean––
heights_mm–––
name–––
profiles_mm–––
sketches–––

No output schema declared.

No examples provided.

add_mate ~504

Mate a face of one component to a face of another, or add several mates in one call. comp_a/comp_b are component names ('Bed' or 'Bed-1'; 'Leg-1/Thigh-1' inside a sub-assembly). face_a/face_b select a face in that component's OWN frame: by direction "+x"/"-x"/"+y"/... (optionally "+y:inner" for the cavity side of a hollow part), by its list_faces(component=...) index, "#5", or by a point on it, "@x,y,z" (a hole's wall: its centre plus the radius along x). mate_type between planar faces: "coincident", "distance" (distance_mm), "parallel", "perpendicular" or "angle" (angle_deg between the faces' normals, 0..180); "concentric" between two cylindrical faces (a pin in a hole, a hinge axis), leaving the turn about the axis free. flip takes the other solution: the mirror side of a distance, the other turning direction of an angle. A distance or angle mate returns its `dimension`: drive it with set_dimension, or step it with check_motion. An angle mate's dimension then turns the joint the whole way round, past 180 and below 0 (-30 is 30 the other way, the same turn as 330). The result is measured back after the rebuild; a mate that does not hold is removed and the components are put back. Several at once: mates=[{"comp_a": "Bolt-1", "face_a": "#3", "comp_b": "Plate-1", "face_b": "#12", "mate_type": "concentric"}, ...], each with the arguments above. stop_on_error=True stops at the first that fails; the mates before it stay. Returns a result per mate (its name and dimension, or the error), how many were added, failed and not tried, and the mate count.

NameTypeReqDescription
angle_degnumber––
comp_a–––
comp_b–––
distance_mmnumber––
face_a–––
face_b–––
flipboolean––
mate_typestring––
mates–––
stop_on_errorboolean––

No output schema declared.

No examples provided.

add_mirror ~164

Mirror features, or the whole body, about the 'front'/'top'/'right' plane moved offset_mm. Mirrors about z / y / x = offset_mm; plane may also name another plane in the part ('Plane1'), moved offset_mm along its normal. features: list_features names; the copies follow their seeds. Without features the body is mirrored and merged: model half of a symmetric part, mirror it about the face where the halves meet. The plane position comes back as dimension 'plane_offset'. Fails, leaving the part as it was, when a copy would land outside the part.

NameTypeReqDescription
features–––
namestring––
offset_mmnumber––
planestringyes–

No output schema declared.

No examples provided.

add_note ~60

A note on the sheet; at=[x, y] its top-left corner (sheet mm), by default above the title block. Lines: '\n'.

NameTypeReqDescription
at–––
height_mmnumber––
textstringyes–

No output schema declared.

No examples provided.

add_plane ~232

Make a reference plane to sketch on: an offset or a turned plane, its position a dimension. base moved offset_mm along its normal (base: front/top/right or a plane by name), or a default plane turned angle_deg about a model axis it holds, about='x'/'y'/'z' (front holds x and y, top x and z, right y and z), by the right-hand rule. For both, turn first, then offset that plane. Or the plane through model point through=[x, y, z] square to normal=[dx, dy, dz] (any direction, e.g. square to a cone's generatrix). Returns its name for plane= arguments, and origin_mm, normal, x_axis and y_axis: a point (u, v) on it is origin + u x_axis + v y_axis.

NameTypeReqDescription
about–––
angle_degnumber––
basestring––
name–––
normal–––
offset_mmnumber––
through–––

No output schema declared.

No examples provided.

add_revolved_profile ~223

Revolve a closed profile on the Front plane about an axis in it. Without axis_mm: profile_mm = [[r, z], …] in mm, r = distance from the Y axis, z = position along it. With axis_mm = [[x1, y1], [x2, y2]]: profile_mm gives [x, y] points and the axis is the line through those two points, anywhere and at any angle (a hub turned about its own centre). Auto-closed and spun angle_deg (default 360°). Points on the axis give a solid (shafts, vases); a profile away from it gives a ring. The profile may not cross the axis. corner_radii_mm rounds corners as for add_extruded_profile (not those on the axis). Returns mass properties. Use new_document first.

NameTypeReqDescription
angle_degnumber––
axis_mm–––
corner_radii_mm–––
namestring––
profile_mmarrayyes–

No output schema declared.

No examples provided.

add_rib ~177

Add a straight stiffening rib / gusset in a plane parallel to the Front plane. start_mm/end_mm = [x, y] ends of the rib's free edge (add_extruded_profile coordinates); the plane sits at height z_mm. The rib grows toward toward_mm (any [x, y] point on the side to fill, e.g. the inner corner of an L-bracket) until it meets the part, thickness_mm thick, centred on the plane. Returns mass properties: a triangular gusset with legs a and b adds a*b/2 * thickness.

NameTypeReqDescription
end_mmarrayyes–
namestring––
start_mmarrayyes–
thickness_mmnumberyes–
toward_mmarrayyes–
z_mmnumberyes–

No output schema declared.

No examples provided.

add_shell ~77

Hollow the current part to a wall of thickness_mm, opening one face. open_face: a direction "+z"/"-z"/"+x"/... removes that planar face (open shell); "none" makes a closed hollow. Returns the resulting mass properties.

NameTypeReqDescription
open_facestring––
thickness_mmnumberyes–

No output schema declared.

No examples provided.

add_sketch ~355

Draw a sketch of lines, arcs and splines on a plane, fully defined, to extrude or cut. plane: "front", "top", "right" or a plane by name (add_plane). Points are [u, v] in the plane's own axes, which the result gives (origin_mm + u x_axis + v y_axis): front is (x, y), top (x, -z), right (-z, y). The outline starts at start_mm; each segment runs on from where the last ended: {"line": [u, v]}; {"arc": [u, v], "through": [u, v]} (an arc through a middle point); {"arc": [u, v], "tangent": true} (an arc flowing on from the segment before); {"spline": [[u, v], ..., [u, v]]} (through the points, ending at the last). "tangent": true on a line checks that it flows on. End on start_mm to close the outline. Segments that meet smoothly get a tangent relation, the rest is dimensioned from the origin: x<i>/y<i> for the i-th point given (points_mm lists them; start_mm is 0), r<k> for the radius of segment k. Then extrude_sketch / cut_sketch the returned sketch. fixed=True freezes computed geometry (an involute, a cam) with Fix relations instead of dimensions.

NameTypeReqDescription
fixedboolean––
name–––
planestringyes–
segmentsarrayyes–
start_mmarrayyes–

No output schema declared.

No examples provided.

add_structural_member ~300

Weldment frame members of a library profile along the lines of a path. profile / size as SolidWorks' weldment profile library names them, e.g. standard 'iso': 'square tube' '20 x 20 x 2' / '30 x 30 x 2.6' / '40 x 40 x 4', 'rectangular tube' '50 x 30 x 2.6', 'pipe' '26.9 x 3.2', 'angle iron' '25 x 25 x 4', 'c channel' '80 x 8', 'sb beam' '100 x 8' (a wrong name lists what there is). path_mm: [[x, y], ...] on plane, lines in a chain (closed when the last point is the first); or sketch by name. The profile is centred on the lines; corner 'miter', 'butt1', 'butt2' or None where they meet; rotate_deg turns it about the line. Several calls build a frame of several groups. Returns the cut list (cut_list).

NameTypeReqDescription
corner–––
name–––
path_mm–––
planestring––
profilestringyes–
rotate_degnumber––
sizestringyes–
sketch–––
standardstring––

No output schema declared.

No examples provided.

add_swept_pipe ~169

Sweep a circular profile (pipe/tube/rod) along a 2D path on the Front plane. path_mm = [[x, y], …] in mm is the centreline. Interior corners are rounded with bend_radius_mm (required when the path turns; a 2-point straight path needs none); smooth=True runs a spline through the points instead, a flowing curve. diameter_mm = outer Ø; the round profile is auto-generated perpendicular to the path. Returns mass properties (pi r^2 x path_length_mm). Use new_document first.

NameTypeReqDescription
bend_radius_mmnumber––
diameter_mmnumberyes–
namestring––
path_mmarrayyes–
smoothboolean––

No output schema declared.

No examples provided.

add_swept_profile ~204

Sweep an arbitrary closed PROFILE (cross-section) along a 2D PATH. profile_mm = [[u,v],…] in mm: the closed cross-section on the Right plane (u → world -Z, v → world +Y), centred near the origin. path_mm = [[x,y],…] in mm on the Front plane — MUST start at the origin heading +X (the profile is perpendicular to the path there). Path corners are rounded with bend_radius_mm; corner_radii_mm rounds the profile's corners as for add_extruded_profile. Volume = profile_area · path_length. For non-round extrusions along a path (rails, gaskets, trim, channels). Returns mass properties. Use new_document first.

NameTypeReqDescription
bend_radius_mmnumber––
corner_radii_mm–––
namestring––
path_mmarrayyes–
profile_mmarrayyes–

No output schema declared.

No examples provided.

add_symbol ~429

A symbol on an edge of a view, its leader attached mid-edge. type: - 'hole_callout': ref 'hole:<feature>'; diameter, depth, counterbore/countersink, thread, linked to the model; count=True counts identical holes in the view into it ('4X ...'); - 'surface_finish': ISO 1302, roughness 'Ra 1.6', process 'machined', 'any' or 'no_removal'; - 'datum': lettered datum feature symbol, label 'A'; - 'gtol': ISO 1101 frame, symbol straightness, flatness, circularity, cylindricity, line_profile, surface_profile, parallelism, perpendicularity, angularity, position, concentricity, symmetry, runout or total_runout; tolerance '0.05'; datums ['A', 'B']; diameter=True for a round zone; material_condition 'MMC' / 'LMC'; - 'weld': ISO 2553, weld={'weld': 'fillet' (square, v, bevel, v_root, bevel_root, u, j, backing, plug, spot, seam), 'size': 'a4', 'length': '100' or '3x50 (100)', 'side': 'arrow' / 'other' / 'both', 'contour': 'flat' / 'convex' / 'concave', 'all_around': true, 'field': true}. ref as in add_dimension. at=[x, y] places it (sheet mm), by default off the view, clear of text.

NameTypeReqDescription
at–––
countboolean––
datums–––
diameterboolean––
label–––
material_condition–––
processstring––
ref–yes–
roughness–––
symbol–––
tolerance–––
typestringyes–
viewstringyes–
weld–––

No output schema declared.

No examples provided.

add_table ~232

A table on the sheet: rows [[cell, ...], ...] (title=True merges the first row), or gear={...} for a computed gear data table: kind 'spur' (diameters, span over k teeth, centre distance) or 'bevel' (straight: cone angles, cone distance, chordal thickness and height, crown to apex), teeth, module, mating_teeth, pressure_angle_deg, face_width_mm, profile_shift, shaft_angle_deg, accuracy, extra_rows [[label, value], ...]; teeth, module and mating_teeth default to the part's custom properties Teeth, Module, MatingTeeth. cut_list=True: the weldment's cut list (item, quantity, description, length, angles) and total weld length. at=[x, y] its top-left corner, by default free room.

NameTypeReqDescription
at–––
column_widths_mm–––
cut_listboolean––
gear–––
rows–––
text_height_mmnumber––
titleboolean––

No output schema declared.

No examples provided.

add_text_on_face ~231

Engrave text into ANY planar face, or emboss it with emboss=True (labels, version numbers). (x, y, z) is the text's lower-left corner on the face; the text runs along the face sketch's horizontal axis: upright along +x on the top (+z) and front (-y) faces, turned on the others (vertical on +/-x, upside down on +y), so put labels on the top or front. height_mm is the character height, depth_mm the engraving depth or embossing height. The position is two dimensions ('x', 'y'); font must be installed (default: SolidWorks' own). Returns text_area_mm2, since letters have no hand calculation.

NameTypeReqDescription
depth_mmnumberyes–
embossboolean––
facestringyes–
font–––
height_mmnumberyes–
namestring––
textstringyes–
x_mmnumberyes–
y_mmnumberyes–
z_mmnumberyes–

No output schema declared.

No examples provided.

add_thread ~231

Cut a real, printable ISO metric thread (SolidWorks' own Thread feature). size: e.g. 'M10x1.5', 'M3x0.5', 'M10x1.0' -- checked against SolidWorks' thread profiles. (x_mm, y_mm, z_mm) = centre of the circular edge where the thread starts: the end face of a rod, or the mouth of a hole (internal=True). It runs length_mm into the material, right-handed. External: the rod must have the nominal diameter (M10 -> Ø10). Internal: drill the ISO basic minor diameter first, D - 1.0825*P (M10x1.5 -> Ø8.376). Returns mass properties and the thread's size, pitch and diameters.

NameTypeReqDescription
internalboolean––
length_mmnumberyes–
namestring––
sizestringyes–
x_mmnumberyes–
y_mmnumberyes–
z_mmnumberyes–

No output schema declared.

No examples provided.

add_view ~359

Add a view. kind: - 'model': orientation 'front', 'top', 'right', 'left', 'back', 'bottom', 'iso' or '*Name'; its geometry centred on at=[x, y] (sheet mm), or beside='<view>' on side 'right'/'left'/'above'/'below'; - 'projected': from parent, on side (first angle), aligned with it; - 'section': parent cut by the plane through model point through=[x, y, z] square to model axis normal ('x'/'y'/'z'); label 'A'; flip=True looks the other way; - 'detail': of parent, the circle round model point center=[x, y, z] with model radius radius_mm, at scale (default about 2.5x the parent's). - 'flat_pattern': a sheet metal part unfolded, with bend lines, bend notes and its overall size dimensioned; at=[x, y], or beside='<view>' on side. Placed with room for dimensions, past views in the way (gap_mm to fix the gap). scale '1:2'. A section or detail view keeps its label's name; `name` becomes an alias for it.

NameTypeReqDescription
at–––
beside–––
center–––
flipboolean––
gap_mm–––
kindstring––
label–––
name–––
normalstring––
orientationstring––
parent–––
part–––
radius_mm–––
scale–––
side–––
through–––

No output schema declared.

No examples provided.

add_weld_bead ~209

A fillet weld bead where two bodies meet: a plate on a base (merge=False), a member on a plate. from_mm / to_mm: model points [x, y, z] on the two faces, of two bodies (one body cannot be welded to itself). size_mm: the leg. side 'one' (along the from face where the faces meet), 'both' (both sides of it) or 'all_around'. length_mm + pitch_mm make it intermittent (staggered with side='both'). Shows in the model and drawings, adds no mass. Returns the weld's length (its beads' sum) for a hand check.

NameTypeReqDescription
from_mmarrayyes–
length_mm–––
namestring––
pitch_mm–––
sidestring––
size_mmnumberyes–
staggeredboolean––
to_mmarrayyes–

No output schema declared.

No examples provided.

auto_layout ~125

Lay all views out again: the main view top left, its projected and section views beside it, the rest in the room left, with room for dimensions, at the largest standard scale that fits (or scale); then, if anything still reaches off the frame, onto the title block or into another view, each view moves with its annotations as one footprint (the notes and tables too) to clear it. arrange_dimensions=True then lets SolidWorks space each view's dimensions evenly.

NameTypeReqDescription
arrange_dimensionsboolean––
main–––
scale–––

No output schema declared.

No examples provided.

build_drawing ~522

Build a drawing from scratch from a spec; edit the spec and rebuild to fine-tune. spec: {"part": path (default the current part), "sheet": "A3", "scale": "1:2", "views": [{"name": "front", "orient": "front", "at": [x, y]}, {"name": "side", "projected_from": "front", "side": "right"}, {"name": "A-A", "section_of": "front", "through": [x, y, z], "normal": "x"}, {"name": "B", "detail_of": "front", "center": [x, y, z], "radius": 5}, {"name": "flat", "flat_pattern": true, "right_of": "front"}], "import": ["model", "callouts", "hole_locations"], "dims": [{"view": "front", "ref": "edge:-x", "to": "hole:H1"}, {"view": "front", "chain": ["edge:-x", "hole:H1", "hole:H2"]}], "callouts": [{"view": "front", "hole": "H1"}], "symbols": [{"type": "datum", "view": "top", "ref": "edge:-z", "label": "A"}, {"type": "gtol", "view": "top", "ref": "edge:+z", "symbol": "parallelism", "tolerance": "0.05", "datums": ["A"]}, {"type": "surface_finish", ...}], "notes": ["..."], "tables": [[["a", "b"], ...]], "gear_table": {"kind": "spur", "teeth": 20, "module": 2}, "props": {"material": "from part"}, "layout": "auto", "max_sheet": "A1", "fit": true}. Last, every view moves with its annotations, and the notes and tables, until nothing reaches off the frame, onto the title block or into another view; when they cannot fit, it is built again on the next larger sheet, up to max_sheet ("fit": false leaves everything where the spec put it). Saved to path when given. Returns what was made, `sheet`, `fit` ({fits, tried}) and the problems check_drawing finds.

NameTypeReqDescription
path–––
specobjectyes–

No output schema declared.

No examples provided.

check_drawing ~81

Problems on the sheet, to fix before sending the drawing out. Views or annotations outside the frame or over the title block, views overlapping, texts overlapping or on view geometry, crossing leaders, text under 2.5 mm, probable duplicate dimensions, and hole/cut/fillet/chamfer features no dimension or callout covers.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

check_interference ~59

Report component pairs whose solids overlap, with the volume in mm^3. Touching faces do not count (a bed standing on the floor is fine); only real overlapping material does. count == 0 means the assembly is clash-free.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

check_motion ~185

Step a joint through its range and check the assembly at every step. dimension_name: an angle or distance mate's dimension (add_mate returns it); values in degrees for an angle, mm for a distance, e.g. [30, 60, 90, 120, 150]. Each step gives the overlapping pairs with their volume and the distance between each pair in distances ([["Rod", "Bolt"], ...]); the summary gives clash_free and each pair's smallest distance with the value where it occurs. The dimension goes back to its value afterwards. A joint inside a sub-assembly is 'D1@Angle1@Leg-1'. Refused while a mate is broken: the parts it should hold would drift and the result mean nothing.

NameTypeReqDescription
dimension_namestringyes–
distances–––
valuesarrayyes–

No output schema declared.

No examples provided.

check_printability ~195

Check the current part for 3D printing, built along `up` ('+z', '-y', ...). Overhangs: downward faces leaning more than overhang_deg from vertical (90 = a flat ceiling) need support; the faces on the bed do not count. Gives the overhanging area per face (list_faces index) with its worst lean and centre, the bed contact area and the print height. With min_wall_mm (e.g. two nozzle widths) also the walls thinner than that, measured straight through the material from points spread over every face, with where each is thinnest. A spot right beside an edge where faces meet at a sharp angle reads as thin as the wedge of material there is: that is the edge, not a wall.

NameTypeReqDescription
min_wall_mm–––
overhang_degnumber––
upstring––

No output schema declared.

No examples provided.

close_document ~148

Close one open document by its title (list_documents): a part, assembly or drawing. Two files of one name from different folders share a title: give the path of the one you mean instead. Without a title it closes the current part or assembly. save=True saves it over its own file first; otherwise closing never asks and unsaved changes are lost (the result says discarded_changes). Parts that an open assembly loaded (visible false) close with that assembly and are refused here. With no title and no current document it closes SolidWorks' active one, but only when that has no unsaved changes.

NameTypeReqDescription
saveboolean––
title–––

No output schema declared.

No examples provided.

combine_bodies ~102

Combine solid bodies of the part into `main` (a list_bodies name). operation 'add' joins the tools to main, 'subtract' cuts them out of it, 'common' keeps only what main shares with them. tools: body names, every other body by default. Returns mass properties and the bodies left.

NameTypeReqDescription
mainstringyes–
namestring––
operationstringyes–
tools–––

No output schema declared.

No examples provided.

compare_with_mesh ~111

Compare the current part's cross-sections with a reference mesh's at the same heights. offset_mm [dx, dy, dz] moves the mesh into the part's frame. A different area means a misread feature; equal areas with different extents a shifted frame. Returns per-section pairs and the worst differences.

NameTypeReqDescription
axisstringyes–
framestring––
heights_mmarrayyes–
offset_mm–––
pathstringyes–

No output schema declared.

No examples provided.

cut_list ~54

A weldment's cut list: each kind of member with its description, length (outside, mitres included), end angles and quantity; and the weld beads with their size and length, and the total weld length.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

cut_offset_pocket ~172

Pocket a planar face, leaving a rim rim_mm wide along its outline. The recessed web of an I-beam that follows a curved link, a tray, or a frame (depth_mm omitted: through all). The face is the one facing `face` ('+z', ...) through the point (x, y, z). The rim follows the outline, arcs and splines included; holes in the face stay holes. rim and depth come back as dimensions, and the pocket follows the outline when it changes. Returns mass properties.

NameTypeReqDescription
depth_mm–––
facestringyes–
namestring––
rim_mmnumberyes–
x_mmnumberyes–
y_mmnumberyes–
z_mmnumberyes–

No output schema declared.

No examples provided.

Install

How do I install the SolidWorks MCP server?

SolidWorks runs locally as a PyPI package, launched with uvx sw-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · sw-mcp

# add to Claude Code
claude mcp add nejcdvorsek-sw-mcp -- uvx sw-mcp
Common questions

What is the SolidWorks MCP server?

SolidWorks is an MCP server listed in the public MCP registry as io.github.NejcDvorsek/sw-mcp. Model, measure and verify parametric parts and assemblies in a running SolidWorks (Windows). This page covers its PyPI package (sw-mcp).

Is the SolidWorks MCP server safe to use?

SolidWorks scores 80 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. 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 SolidWorks MCP server expose?

SolidWorks exposes 101 tools: get_status, new_document, add_box, add_extruded_profile, add_disc, and 96 more. Their descriptions and schemas cost roughly 16,607 tokens of context every time the server is loaded.

Is the SolidWorks MCP server still maintained?

SolidWorks is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the SolidWorks MCP server under?

SolidWorks declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.