Repository navigation
The first release on PyPI. Install with uvx solidworks-mcp-python setup;
nothing to clone.
Added
-
On PyPI, GitHub Releases and the MCP Registry as
solidworks-mcp-python(io.github.andrewbartels1/solidworks-mcp-python
in the registry).uvx solidworks-mcp-pythonstarts the server and
uvx solidworks-mcp-python setupconnects your MCP clients. The PyPI page
shows the README with its GIFs and links intact (#172). -
Guided install:
install.ps1andsolidworks-mcp setup. One script
creates the.venv, installs the server and runs the setup command.
Setup finds the installed SolidWorks versions and your MCP clients
(Claude Desktop in all three of its config locations, Claude Code,
VS Code, Cursor, LM Studio), checks that the server starts, and adds a
solidworksentry that runs the installedsolidworks-mcp.exeby full
path, with no paths to type. It changes only that entry: other servers'
entries are never shown or changed, the file is backed up first, written
in one step and read back to check it. Older entries for this server
(run-mcp.ps1and the like) are offered for removal.--dry-run,
--yes,--client,--remove,--replace-oldand--mockare
supported. The README's install and client sections now lead with it,
and the docs Installation page has a Troubleshooting section. -
Demos page in the docs: every demo GIF with what it checks, its
prompt, its tool calls (all 58, with arguments, for the README demo) and
the test that made it. The README's Demos section shows the GIFs in a
grid, each linking to its entry.
GD&T on drawings (first step of #182):
add_gtoladds a feature control frame (position, flatness,
perpendicularity, parallelism, surface profile, concentricity) with a Ø
zone, a material condition and up to three datums. It goes on a drawing
dimension (the usual place for a hole's position tolerance), on an edge
with a leader, or free on the sheet. The frame is read back, so one
SolidWorks did not fill in is an error.add_datum_tagputs a datum feature symbol (A, B, C, ...) on a drawing
edge.
Drawing layout:
- Each model dimension is kept in the view that shows most of the model's
dimensions, so a plate sketched on Top is dimensioned in its plan rather
than edge-on in the front view. - A diameter or radius leader stays on its feature when its text is moved,
and its text steps outward from the feature; a leader no longer runs
through another dimension's text. - The layout re-plans, from the real geometry, whatever is still in
conflict after the first pass (up to three passes). insert_bom_tableslides a table placed by the sheet's anchor back onto
the sheet (moved_onto_sheet).- Dimensions that do not touch share a row: the hole positions at each end
of a plate sit in one row, its overall length in the next. - A dimension's text width counts each SolidWorks code (
<MOD-DIAM>for
Ø) as one symbol, not as ten characters. generate_drawing_packagelays the dimensions out again on the finished
sheet, clear of each view's caption and note as drawn, before checking it.add_gtolon a dimension lays the view out again with the frame counted
as part of that dimension, so the frame does not land on its neighbours.generate_drawing_packagetakesinclude_bom(assemblies): the BOM goes
in the top of the isometric view's cell, with the isometric fitted below.generate_drawing_packagedraws the front, plan and side views with hidden
lines visible (dashed), so through holes show in the front and side views;
hidden_lines_visiblereports each view as read back.- A hole note with its GD&T frame may sit inside the part, near its hole on a
short leader, when it is well inside the view and clear of every feature
the dimensions start from;add_gtoltries there first. The overlap check
allows the same and nothing else inside a view. - Notes inside views (SolidWorks puts a caption into the active view) are
kept clear of, as well as notes on the sheet. - On an assembly,
generate_drawing_packageleaves the model's own
Material property alone: a link to an assembly's material showed
"". - View captions read FRONT VIEW, TOP VIEW, SIDE VIEW and ISOMETRIC VIEW
(were FRONT ELEVATION, PLAN, SIDE ELEVATION, ISOMETRIC). add_gtolfinds a part's dimension on an assembly drawing, where its name
can carry the component (D3@Sketch1@Demo Plate-1@...).- The README opens with a recorded demo: a prompt answered in 58 tool calls,
from sketch to an assembly drawing with GD&T and a BOM.
tests/scripts/live_demo.ps1 -Recordrecords a live test (changed frames
only, captions as each step starts) and builds a sped-up GIF.
Model verification (#173):
verify_modelchecks the active part or assembly against what you
expected, in one call. It covers mass and volume within a tolerance,
overall size, feature count and solid-body count; for assemblies also
component count, mate count and no interference. Each check reports
expected, actual and pass/fail. A value that cannot be measured reports
null, never a pass. With no expectations it reports what it measured.measured_changeoncreate_extrusion,create_revolveand
create_cut_extrude: volume, overall size and body count before and after
the feature. A feature that succeeds without changing the volume gets a
warning.- New adapter read
get_model_geometry_summary: bounding box from each
body's exact extreme points, solid-body count, volume, component and mate
counts. It never rebuilds the model or clears the selection.
Packaging (#172):
- PyPI and MCP Registry release. Pushing a
v*tag builds the package,
publishes it to PyPI, creates the GitHub Release from this changelog and
publishesserver.jsonto the official MCP Registry. Both registries use
the workflow's GitHub identity; no tokens are stored. uvx solidworks-mcp-pythonruns the server without cloning the repo
(newsolidworks-mcp-pythonentry point alongsidesolidworks-mcp).- The server now reports the package version to MCP clients instead of
FastMCP's default.
Engineering-data tools, contributed by @SaiqKamran (#117) and signed off live
against SolidWorks 2026:
list_model_dimensions(#131): every dimension's editable full name
(D1@Sketch1), value and system value, optionally for one feature.measure_entities(#132): area, perimeter, length, radius, distance
and angle of one or two faces, edges or vertices.get_material(#133) andset_material(#134): read and assign a
part's library material; the assignment is read back, and an unknown name
isnot_found.list_available_materials(#135): search the configured and built-in
.sldmatlibraries.get_custom_properties(#136) andset_custom_property(#137):
read and write title-block/BOM properties, with resolved$PRP:values.export_flat_pattern(#138): a sheet-metal part's flat pattern to DXF
or DWG.
Drawing-dimension tools, also contributed by @SaiqKamran (#117) and signed
off live against SolidWorks 2026:
insert_model_dimensions(#144): the model's dimensions on the active
drawing's views, each shown once; pictorial views are skipped unless named.arrange_dimensions(#145): moves dimensions outside the views in rows
and checks the real geometry for overlaps; any that remain are listed in
the error.
Drawing-package tools, the last part of @SaiqKamran's #117:
insert_bom_table(#148): a bill of materials for an assembly drawing
view (top-level, parts-only or indented), snapped to the sheet's BOM anchor
with the librarybom-standardtemplate by default.set_sheet_scale(#149): sets the active sheet's scale and reads it back
from the sheet.generate_drawing_package(#150): a complete A3 drawing of a part or
assembly in one call: ISO sheet format, third-angle views plus an isometric
at the largest standard scale that fits, model dimensions shown once and laid
out witharrange_dimensions, a filled title block, view captions and a
NOTES block, checked for overlaps on the read-back geometry, saved as
<drawing number>.SLDDRWplus a PDF.
Changed
- The README installs with
uvx. Install uv, then run
uvx solidworks-mcp-python setup. Every client config in the README runs
uvx solidworks-mcp-python, with no local paths. Installing from a clone
withinstall.ps1is on the docs Installation page. Use
solidworks-mcp-python, notsolidworks-mcp:uvx solidworks-mcp
installs a different project. - The SolidWorks badge says "tested on 2026". Other versions may work
but haven't been tested, and the README now says so.
Fixed
solidworks-mcp setuprun throughuvxwrites an entry that runs
uvx solidworks-mcp-python, by uvx's full path, instead of a launcher in
uv's cache folder, which stops working when uv cleans its cache. The
start-up check still runs the launcher that is running setup.--helplists one line per option, instead of a garbled docstring.- Docs deploys are no longer skipped. Pull-request docs builds have their
own concurrency group, so they can't cancel a queuedmaindeploy (#194). create_cut_extrude: a blind cut from a sketch inside the body (for
example a circle on the Front Plane of a mid-plane block) returned no
feature on SolidWorks 2025 and 2026. One-way cuts are now single-ended; when
the requested direction finds no material (a sketch on a face, or on a plane
at the edge of the body) the cut is retried the other way and the reply says
so withdirection_flipped. A cut that builds nothing either way fails with
the newfeature_not_builterror type, which names what was tried (#193,
COM pitfall #35).
Found in the live sign-off of the drawing-package tools on SolidWorks 2026:
generate_drawing_packagebuilds the sheet in separate COM steps
(sheet, views, layout, dimensions, notes, check, title block), each followed
by the settle pause; one long burst of drawing calls is the pattern that
crashed SolidWorks 2026 (COM pitfall #26).generate_drawing_package: the DWG NO. and TITLE are shrunk to fit
their title-block boxes, so a long drawing number no longer runs into the
size box. A field that still does not fit is reported as an overlap. The new
title_block_text_height_mmoption sets a smaller text height.insert_bom_table: the table grows up from its bottom-left corner, so
on a sheet with no format it no longer hangs below the sheet. The result
includes the table's box, and a table that runs off the sheet is an error.