SolidWorks
PYPI · SW-MCP
Model, measure and verify parametric parts and assemblies in a running SolidWorks (Windows).
Available components
Last scanned (7 hours ago)
Scores higher than 80% of PyPI servers
Category Design and Media
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
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.
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 →
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 →
cut_profile ~326
Cut a polygonal pocket, slot or window; the polygon is auto-closed. - Default: points_mm = [[x,y], ...] cut down from the +Z face. rotate_deg turns the profile about about_mm as for add_extruded_profile (notches at +/-60 degrees around a pivot). - face='+x' (or ...): points_mm = [[x,y,z], ...] on one face facing that way, found through them; for side pockets and cutouts. - plane='right' ('front' z = 0, 'top' y = 0, 'right' x = 0, or 'Plane1'): points_mm = 3D points ON that plane, cut symmetric about it. For shapes seen from the side: wedges, windows, symmetric recesses. keep_inside=True cuts away everything OUTSIDE the profile (through all): extrude the front view, cut the side view with keep_inside, and the part is the 3D shape both views agree on. Blind by depth_mm (with plane=: in total, centred on the plane), or through all when omitted. corner_radii_mm rounds the corners as for add_extruded_profile. Returns mass properties.
| Name | Type | Req | Description |
|---|---|---|---|
| about_mm | – | – | – |
| corner_radii_mm | – | – | – |
| depth_mm | – | – | – |
| face | – | – | – |
| keep_inside | boolean | – | – |
| name | string | – | – |
| plane | – | – | – |
| points_mm | array | yes | – |
| rotate_deg | number | – | – |
No output schema declared.
No examples provided.
cut_sketch ~106
Cut an existing sketch of the current part by name into the body. depth_mm deep, or through all when depth_mm is omitted, against the sketch's normal: into the part from a face. From a plane with the part in front of it (a box on the Front plane) give reverse=True. Returns mass properties.
| Name | Type | Req | Description |
|---|---|---|---|
| depth_mm | – | – | – |
| name | string | – | – |
| reverse | boolean | – | – |
| sketch | string | yes | – |
No output schema declared.
No examples provided.
cut_slot ~134
Cut a straight slotted hole (obround) on the +Z face. Centred at (x_mm, y_mm); length_mm is centre-to-centre of the rounded ends, width_mm the slot width, angle_deg its orientation in the +Z plane (0 = +X). Cut blind by depth_mm or through when omitted. Returns mass properties.
| Name | Type | Req | Description |
|---|---|---|---|
| angle_deg | number | – | – |
| depth_mm | – | – | – |
| length_mm | number | yes | – |
| name | string | – | – |
| width_mm | number | yes | – |
| x_mm | number | yes | – |
| y_mm | number | yes | – |
No output schema declared.
No examples provided.
delete_component ~70
Remove a component from the current assembly, with the mates that hold it. component: its name in list_components ("Bracket-1", or "Bracket" while there is one). Returns the mates deleted, how many components are left and the assembly's mass properties.
| Name | Type | Req | Description |
|---|---|---|---|
| component | string | yes | – |
No output schema declared.
No examples provided.
delete_equation ~57
Delete an equation by the name it sets ("L_thigh", "D1@Boss") or its list_equations index. Rebuilds and returns what was deleted, failing_features and mass properties.
| Name | Type | Req | Description |
|---|---|---|---|
| equation | string | yes | – |
No output schema declared.
No examples provided.
delete_feature ~134
Delete a feature (a list_features name) with its sketch, then rebuild and remeasure. The way to undo a step. Refuses when other features are built on it and names them, and what is built on those; with_children=True deletes them all. dry_run=True only lists what would go (would_delete). Equations that named its dimensions break and come back as broken_equations; with_equations=True deletes them (global variables stay).
| Name | Type | Req | Description |
|---|---|---|---|
| dry_run | boolean | – | – |
| name | string | yes | – |
| with_children | boolean | – | – |
| with_equations | boolean | – | – |
No output schema declared.
No examples provided.
delete_mate ~76
Delete a mate of the current assembly by name (list_components, or add_mate's 'mate'). A list of names deletes them all at once, with one rebuild. Their components are free to move again. Returns what was deleted and how many mates are left (list_components lists them).
| Name | Type | Req | Description |
|---|---|---|---|
| name | – | yes | – |
No output schema declared.
No examples provided.
drawing_file ~153
The current drawing's document: action 'new' (sheet 'A4' upright or 'A3'..'A0', part: the saved model its views show, default the current part), 'open' (path .slddrw), 'save' (path .slddrw), 'export' (path: PDF, DXF, DWG, PNG/JPG/TIF of the sheet) or 'close' (without saving). The drawing is kept apart from the current part. 'new' returns the frame, title block and free areas in sheet mm.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| part | – | – | – |
| path | – | – | – |
| sheet | string | – | – |
No output schema declared.
No examples provided.
edit_annotation ~166
Change an annotation by id ('RD3@Drawing View1'), or delete=True it. prefix / suffix (a prefix replaces SolidWorks' own symbol: a radius needs 'R', e.g. '4X R'), precision (decimals), tolerance [upper, lower] mm, fit ('H7'), a note's text, its place at=[x, y] (sheet mm), diametric=True. A model dimension keeps these in the part (the result says changes_part).
| Name | Type | Req | Description |
|---|---|---|---|
| annotation_id | string | yes | – |
| at | – | – | – |
| delete | boolean | – | – |
| diametric | – | – | – |
| fit | – | – | – |
| precision | – | – | – |
| prefix | – | – | – |
| suffix | – | – | – |
| text | – | – | – |
| tolerance | – | – | – |
No output schema declared.
No examples provided.
edit_view ~172
Move a view (its geometry centred on at=[x, y], or beside='<view>' on side, gap_mm apart; align 'center' or 'start'), change it (scale '1:2' or 'sheet'; display 'hidden_removed', 'hidden_visible', 'wireframe', 'shaded', 'shaded_edges'; tangent_edges; new_name), or delete=True it. Projected and section views stay aligned with their parent, so they only move along that line.
| Name | Type | Req | Description |
|---|---|---|---|
| align | string | – | – |
| at | – | – | – |
| beside | – | – | – |
| delete | boolean | – | – |
| display | – | – | – |
| gap_mm | – | – | – |
| name | string | yes | – |
| new_name | – | – | – |
| scale | – | – | – |
| side | – | – | – |
| tangent_edges | – | – | – |
No output schema declared.
No examples provided.
export ~215
Export the current part or assembly to STEP/STL/IGES/Parasolid/3MF (format from extension). Silent (no prompts). Verifies the file appears on disk and reports its size. For STL/3MF, tessellation resolution is set first: quality 'coarse'|'fine' (default 'fine' for print quality), or pass deviation_mm (+ optional angle_deg) for a reproducible custom resolution (overrides quality). Ignored for other formats. An assembly goes to STL as one file, or one file per component with per_component=True (SolidWorks names them); `files` lists what was written. STL/3MF keep the part's or assembly's own coordinates (`frame`), also per component, so a mesh measures back where the model is; slicers place it anyway.
| Name | Type | Req | Description |
|---|---|---|---|
| angle_deg | – | – | – |
| deviation_mm | – | – | – |
| file_format | – | – | – |
| path | string | yes | – |
| per_component | boolean | – | – |
| quality | string | – | – |
No output schema declared.
No examples provided.
extrude_sketch ~189
Extrude an existing sketch of the current part by name, e.g. one a person drew. depth_mm along the sketch's normal (reverse=True: the other way), merged with the body. Or up_to='next': up to the next face of the part, ending on its shape (a post into a curved wall) and following it when it changes; or up_to='@x,y,z': up to the face through that point, also where 'next' fails (a side of the profile on a face: the refusal names a point ahead). The sketch keeps its own dimensions and relations, so the person's design stays in charge; read_sketch shows it first. Returns mass properties.
| Name | Type | Req | Description |
|---|---|---|---|
| depth_mm | – | – | – |
| name | string | – | – |
| reverse | boolean | – | – |
| sketch | string | yes | – |
| up_to | – | – | – |
No output schema declared.
No examples provided.
flat_pattern ~96
A sheet metal part's flat pattern: action 'info' (thickness, bend radius, K-factor, number of bends, flat blank size), 'flatten' / 'fold' (show the part flat or bent), or 'export' to path (.dxf or .dwg: the flat outline and bend lines for laser cutting; save the part first).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | – |
| path | – | – | – |
No output schema declared.
No examples provided.
get_bounding_box ~35
Get the bounding box (min/max/size in mm) of the current part, tight, or of the whole assembly.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_mass_properties ~35
Get volume (mm^3), mass (kg), surface area (mm^2), centre of mass, and bounding box.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_status ~29
Report whether SolidWorks is reachable, its revision, this server's version, and the active/current part.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
import_dimensions ~100
Bring in what the model already knows. kinds: 'model' (its dimensions, each once), 'callouts' (one counted hole callout per set of identical Hole Wizard holes, '4X ...'), 'hole_locations' (their centres dimensioned from the left and bottom edges), 'center_marks' (centre marks and lines). Default the first three, into every view (or one).
| Name | Type | Req | Description |
|---|---|---|---|
| kinds | – | – | – |
| view | – | – | – |
No output schema declared.
No examples provided.
insert_component ~141
Insert a .sldprt, or a .sldasm as a sub-assembly, with its ORIGIN at (x, y, z) mm. The part's own origin lands exactly on that point, and the placement is read back and verified. fixed=True pins the component; fixed=False leaves it free for mates. The default fixes only the FIRST component, giving the assembly a ground to build against. Returns the component's name, placement and box.
| Name | Type | Req | Description |
|---|---|---|---|
| fixed | – | – | – |
| path | string | yes | – |
| x_mm | number | – | – |
| y_mm | number | – | – |
| z_mm | number | – | – |
No output schema declared.
No examples provided.
list_bodies ~42
List the part's solid bodies: name, volume and bounding box. A part holds several after merge=False or split_body; combine_bodies joins them again.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_components ~162
List the assembly's components (name, path, fixed, position, rotation, bounding box) and mates. Positions are in mm and rotations in degrees, both in assembly coordinates; the bounding box of each component is in assembly coordinates too. Each mate gives its name, SolidWorks type, the components it holds, the dimension of a distance or angle mate, and an error when SolidWorks flags it. On a big assembly, narrow it: name keeps the matching components ('Bolt*' as a wildcard, 'bolt' anywhere in the name) and the mates holding them; mates=False leaves the mates out; brief=True gives only name, path, fixed.
| Name | Type | Req | Description |
|---|---|---|---|
| brief | boolean | – | – |
| mates | boolean | – | – |
| name | – | – | – |
No output schema declared.
No examples provided.
list_dimensions ~45
List every dimension in the current part: name (for set_dimension), feature, value, unit. For a part opened from disk, or when the names the tools returned are gone.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_documents ~62
List the documents open in SolidWorks: title, path (empty until saved), type, unsaved changes. `current` marks the one the tools work on, `active` SolidWorks' own. Parts an open assembly loaded come along, with visible false.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_edges ~139
List the part's edges: index, type, length, ends; lines also axis and midpoint. Narrow it on a big part: face (a list_faces index, "#5"), feature (the edges of the faces it made), within_mm ([[x1, y1, z1], [x2, y2, z2]]: both ends inside), min_length_mm. Indices are always those of the whole part: use them with add_fillet/add_chamfer edges="2,5".
| Name | Type | Req | Description |
|---|---|---|---|
| face | – | – | – |
| feature | – | – | – |
| min_length_mm | – | – | – |
| within_mm | – | – | – |
No output schema declared.
No examples provided.
list_equations ~97
List the equations and global variables: index, equation, name it sets, value, global. `broken` marks an equation that names a dimension or variable that is gone, as one left behind by delete_feature; delete_equation removes it. automatic_solve_order False means SolidWorks solves them as listed: one above the line that sets its variable then warns and lags a rebuild. Any set_equation turns it on.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_faces ~156
List the part's faces (index, planar?, normal, area, centre) for inspection. A cylindrical face also gives its axis, radius and a point on the axis (for a hole: its centre), so hole patterns can be read off. component: a component of the current assembly, listed in its own frame (e.g. an imported servo); for a sub-assembly, every part's faces in the sub-assembly's frame, each naming its part. A part's indices shift as features are added; a component's are ordered by part, type, centre and area, so they stay while its shape does. add_mate takes them as '#5'.
| Name | Type | Req | Description |
|---|---|---|---|
| component | – | – | – |
No output schema declared.
No examples provided.
list_features ~56
List the current part's modelling history in tree order: name, type, suppressed. For a part opened from disk, or to find the step to undo. Flags features that fail to rebuild and names sketches that are not fully defined.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_views ~87
The sheet's frame and title block, and each view (or one): name, type, scale, outline and geometry box (sheet mm), the model-to-sheet mapping (a model point p lands at origin + p.x * x + p.y * y + p.z * z), and its annotations: id, type, shown text, value, box.
| Name | Type | Req | Description |
|---|---|---|---|
| view | – | – | – |
No output schema declared.
No examples provided.
make_drawing ~337
Make a manufacturing drawing of the current part in one call: PDF, .slddrw, DXF or DWG. Front, top and side views (first angle) plus an iso view on an ISO sheet ('A4' upright, 'A3'..'A0' landscape) with SolidWorks' ISO title block, at the largest standard scale that leaves room for dimensions (or scale='1:2'). The model's dimensions come in once each, one hole callout per set of identical Hole Wizard holes ('4X ...'), their centres dimensioned, and the title block shows material and mass. A sheet metal part gets its flat pattern in place of the iso view, with bend lines, bend notes and the blank's overall size. Weld beads come in with their weld symbols; a weldment gets its cut list table. Then every view moves with its annotations until nothing reaches off the frame, onto the title block or into another view; when they cannot fit, the iso view is left out, then the next larger sheet is tried, up to max_sheet (None: `sheet` only). Returns `sheet`, `fit` ({fits, tried}) and `problems` (check_drawing). keep_open=True keeps it as the current drawing to refine with the other drawing tools. Save the part first (save_document): the drawing refers to its file.
| Name | Type | Req | Description |
|---|---|---|---|
| keep_open | boolean | – | – |
| max_sheet | – | – | – |
| path | string | yes | – |
| scale | – | – | – |
| sheet | string | – | – |
No output schema declared.
No examples provided.
measure_distance ~173
The smallest distance (mm) from a component to another one, a point or an axis. Give component_b; or point_mm = [x, y, z] in assembly mm, and the nearest point on the component comes back too, with inside: true when the point lies in its material; or axis_mm = [[x, y, z], [dx, dy, dz]], the endless line through that point along that direction, such as a bolt's axis. 0 means they touch or overlap; check_interference tells which. Sub-assemblies count with all their parts; one part inside is 'Leg-1/Thigh-1'.
| Name | Type | Req | Description |
|---|---|---|---|
| axis_mm | – | – | – |
| component_a | string | yes | – |
| component_b | – | – | – |
| point_mm | – | – | – |
No output schema declared.
No examples provided.
new_document ~72
Create a new empty part (kind='part') or assembly (kind='assembly'); it becomes the current document. Assemblies compose saved parts: insert_component places each part, add_mate constrains them, check_interference proves nothing overlaps. Drawings: drawing_file.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | – |
No output schema declared.
No examples provided.
open_document ~177
Open a .sldprt or .sldasm, or import a STEP/IGES/Parasolid file; it becomes the current document. A neutral file opens as a part, or as an assembly if it holds one (kind='part' / 'assembly' says which up front). A part shows its history in list_features and its dimensions in list_dimensions; an imported body has no history, but the tools work on it (holes and pockets on its faces, bosses, fillets), and the result gives its solid body count and mass properties. An imported assembly's parts arrive as components at their places, ready for list_components and add_mate; the result gives the component count. Drawings: drawing_file(action='open').
| Name | Type | Req | Description |
|---|---|---|---|
| kind | – | – | – |
| path | string | yes | – |
No output schema declared.
No examples provided.
read_model ~383
Read everything a design review needs of the current part in one read-only call (schema sw-mcp/model@1). Sections ('core' is always read; None reads core, material, holes, radii and setups, plus walls with wall_mm and draft with pull): - core: mass, volume, area, density, centre of mass, bbox, bodies, features with rebuild errors, dimensions with their own tolerance (type, plus/minus, ISO fit such as 'H7'), equations, under-defined sketches. - material: name, database, density; null if none is assigned. - holes: every hole of every body, identical ones grouped with count and centres_mm (at the entrance). Hole Wizard holes give standard, size, fit and sizes from the wizard (source 'wizard'); other holes are measured from the geometry (source 'geometry'): kind simple / counterbore / countersink / tapped, diameter, depth, through, drilling axis, entrance. - radii: internal (concave) radii by feature, and sharp internal edges by feature, direction (x/y/z, null if curved) and length. - setups: planar face normals and the setup directions (+x ... or a vector). - walls (needs wall_mm): the thinnest wall and up to 20 spots below wall_mm. - draft (needs pull, '+z'...): each face's draft, the worst 20, and undercut faces. A section that fails is null and named in `gaps`, with anything cut off to keep the answer small. Nothing is selected, changed or saved. clearance_pairs belongs to the assembly section, not available yet.
| Name | Type | Req | Description |
|---|---|---|---|
| clearance_pairs | – | – | – |
| pull | – | – | – |
| sections | – | – | – |
| wall_mm | – | – | – |
No output schema declared.
No examples provided.
read_sketch ~95
Read a sketch of the current part back, e.g. one a person drew (a list_features name). Gives its lines, arcs, circles and splines in MODEL coordinates (mm), construction geometry marked, its dimensions (for set_dimension) and whether it is fully defined: check a design against fixed points before building on it with extrude_sketch / cut_sketch.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
No output schema declared.
No examples provided.
rebuild ~67
Force a rebuild of the current part or assembly and report whether it rebuilt without errors. In an assembly, mate_errors names each mate SolidWorks flags, and each mate that lost a face or edge it used (it rebuilds fine, but holds nothing).
| Name | Type | Req | Description |
|---|---|---|---|
| top_only | boolean | – | – |
No output schema declared.
No examples provided.
render_drawing ~62
Picture (PNG/JPG) of the sheet, or of the region zoom_mm = [[x1, y1], [x2, y2]] (sheet mm), to look at it.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | – |
| zoom_mm | – | – | – |
No output schema declared.
No examples provided.
reorder_feature ~126
Move a feature (a list_features name), with its sketch, to just before another one; rebuild and remeasure. For a boss added last that filled holes cut earlier: build it at the end as usual, then move it before the first of those cuts, and they cut through it again. Refused, the part as it was, when the feature is built on something at or after that place. Returns the new order (features) and the features that fail to rebuild (failing_features).
| Name | Type | Req | Description |
|---|---|---|---|
| before | string | yes | – |
| name | string | yes | – |
No output schema declared.
No examples provided.
replace_component ~151
Swap a top-level component for another .sldprt or .sldasm, in the same place. SolidWorks re-attaches each mate to the new part's matching face where it can. Returns the new component, the mates kept, and the mates that broke or went: each with its type, the other components, and what it held on the old part (the face's type, normal or axis and centre in the component's own frame), plus up to three candidate faces on the new part ('#index', nearest first). Re-mate with delete_mate and add_mate(mates=[...]).
| Name | Type | Req | Description |
|---|---|---|---|
| component | string | yes | – |
| path | string | yes | – |
No output schema declared.
No examples provided.
run_script ~261
Run Python against the live SolidWorks: a whole part in one call, or what no tool covers; off when the server runs with --no-scripts. Give the script as code, or as a file at path: it may import helpers from its own folder (reloaded every run), so fix a part by editing the file and running it again. The script sees sw, model (current part/ assembly), drawing, mod (typed interfaces), wrap(obj, mod.IFeature), mm (mm -> m), to_mm, doubles([..]) (a VARIANT array) and session (this server's tools: session.new_part(), session.add_box(...)). print() is captured and `result = ...` comes back. All or nothing: a script that raises leaves the part as it was. One report comes back for a part: features_added, failing_features, bodies (volume, box), clashes between bodies, under_defined_sketches, mass properties, seconds, and image: one PNG of the iso, right, top and bottom views (for a path, next to the script; image='x.png' elsewhere).
| Name | Type | Req | Description |
|---|---|---|---|
| code | – | – | – |
| image | – | – | – |
| path | – | – | – |
No output schema declared.
No examples provided.
save_document ~61
Save the current part (.sldprt) or assembly (.sldasm) to path, or over its own file without one. Saves silently and checks the file was really written. Drawings: drawing_file(action='save').
| Name | Type | Req | Description |
|---|---|---|---|
| path | – | – | – |
No output schema declared.
No examples provided.
screenshot ~208
Save a screenshot of the current part or assembly (PNG/JPG/TIF). view: 'iso' (default), 'front', 'back', 'left', 'right', 'top' or 'bottom'; or from_dir = [x, y, z], the direction to look from, e.g. [-1, 1, -1] to see from behind and below what iso hides (the model's +y stays up). Zoomed to fit, or onto a detail: zoom_mm = [[x1, y1, z1], [x2, y2, z2]], the corners of the region to fill the image (model mm, in any view). Reference planes and axes are left out, so they do not cut through the shape; show_planes=True keeps them.
| Name | Type | Req | Description |
|---|---|---|---|
| from_dir | – | – | – |
| path | string | yes | – |
| show_planes | boolean | – | – |
| view | string | – | – |
| zoom_mm | – | – | – |
No output schema declared.
No examples provided.
set_appearance ~124
Colour and/or see-through of the current part, or of one component in an assembly. rgb: [r, g, b], 0..255 each; transparency: 0 solid .. 1 clear (0 makes a see-through component solid again). In an assembly, component names it ('Bracket-1', 'Leg-1/Thigh-1'); the colour then belongs to the assembly and the part keeps its own. What is left out stays as it was.
| Name | Type | Req | Description |
|---|---|---|---|
| component | – | – | – |
| rgb | – | – | – |
| transparency | – | – | – |
No output schema declared.
No examples provided.
set_component_transform ~165
Move/rotate a component: its origin to (x, y, z) mm, rotated rx/ry/rz degrees. name is the component name ('Bed' or 'Bed-1'); rotations apply X, then Y, then Z about the assembly axes, and work on a fixed component too. The transform is read back and compared, so a move SolidWorks ignored (e.g. one already pinned by mates) fails loudly instead of silently leaving the part where it was.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| rx_deg | number | – | – |
| ry_deg | number | – | – |
| rz_deg | number | – | – |
| x_mm | number | yes | – |
| y_mm | number | yes | – |
| z_mm | number | yes | – |
No output schema declared.
No examples provided.
set_dimension ~178
Set a named driving dimension (e.g. 'D1@BlockExtrude') in mm, rebuild, and remeasure. This is the parametric edit at the heart of the correction loop. Every modelling tool returns its dimensions by role in `dimensions`. An angle (a revolve, an angle mate) takes degrees; list_dimensions shows the unit. A point's coordinate from the origin (a sketch's 'x3', 'y2') takes a sign, -5 being across the origin; any other length is a size, refused below 0. A value SolidWorks does not take (a dimension an equation drives, a size of 0) is refused with the reason, and the part is left as it was.
| Name | Type | Req | Description |
|---|---|---|---|
| dimension_name | string | yes | – |
| value_mm | number | yes | – |
No output schema declared.
No examples provided.
set_drawing_properties ~112
Fill the title block through the custom properties its fields show. description, material, weight, finish go to the part ('from part' links material / weight to the part's own, so they follow the model); drawn_by, drawn_date, checked_by, checked_date, approved_by, revision, company, part_no, qty or any other name go to the drawing. Returns what each title block field now shows and which properties it has no field for.
| Name | Type | Req | Description |
|---|---|---|---|
| properties | object | yes | – |
No output schema declared.
No examples provided.
set_equation ~194
Add an equation, or replace the one that sets the same name; rebuild and remeasure. A SolidWorks equation string, e.g. '"D1@BlockExtrude" = 25' or '"D1@BlockExtrude" = 2 * "D1@Sketch1"'. A global variable is '"W" = 40'; link a dimension to it with '"width@Sketch1" = "W"', and set '"W" = 45' again to change it. Persists a relation (unlike set_dimension). A list of equations is set in order with one rebuild at the end (later ones may use earlier ones), and a refused one undoes the whole list. Returns the index (per equation for a list), whether it replaced one, the features that fail to rebuild (failing_features) and mass properties.
| Name | Type | Req | Description |
|---|---|---|---|
| equation | – | yes | – |
No output schema declared.
No examples provided.
set_material ~131
Assign a material by name (e.g. "6061 Alloy", "AISI 1020", "ABS"). Makes mass and density reflect a real material instead of the 1000 kg/m³ default. One SolidWorks does not have (say "TPU") comes with its density: density_kg_m3=1210 makes it, by that name, carrying only the density. The English names work on a SolidWorks in another language too. Returns mass properties including density.
| Name | Type | Req | Description |
|---|---|---|---|
| database | string | – | – |
| density_kg_m3 | – | – | – |
| name | string | yes | – |
No output schema declared.
No examples provided.
slice_mesh ~128
Cross-sections of an STL/3MF mesh at the given heights along axis 'x'/'y'/'z'. For modelling a part that must fit something that only exists as a mesh. Returns each section's closed loops, largest first, as polygon points (mm) ready to use as profiles. frame (3MF): 'object' (the mesh's own frame) or 'build' (as placed on the slicer's plate).
| Name | Type | Req | Description |
|---|---|---|---|
| axis | string | yes | – |
| frame | string | – | – |
| heights_mm | array | yes | – |
| path | string | yes | – |
No output schema declared.
No examples provided.
split_body ~73
Split the part's body in two along a plane (front/top/right or a plane by name). The two bodies come back by name: combine them differently, or check each with list_bodies. Use add_plane first for a cut anywhere else.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | – |
| plane | string | yes | – |
No output schema declared.
No examples provided.
suppress_feature ~69
Suppress a feature, or bring it back with suppress=False; rebuild and remeasure. Keeps the feature and its dimensions, unlike delete_feature, so it suits trying a variant. Features that depend on it follow both ways.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| suppress | boolean | – | – |
No output schema declared.
No examples provided.
suppress_mate ~59
Suppress a mate so it stops holding its components (it stays in the tree), or bring it back. suppress=False brings it back. Returns whether it is suppressed now.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| suppress | boolean | – | – |
No output schema declared.
No examples provided.
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
claude mcp add nejcdvorsek-sw-mcp -- uvx sw-mcp
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.