Skip to content

v1.5.0

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Nov 02:44
· 24 commits to main since this release

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-python starts the server and
    uvx solidworks-mcp-python setup connects your MCP clients. The PyPI page
    shows the README with its GIFs and links intact (#172).

  • Guided install: install.ps1 and solidworks-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
    solidworks entry that runs the installed solidworks-mcp.exe by 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.ps1 and the like) are offered for removal. --dry-run,
    --yes, --client, --remove, --replace-old and --mock are
    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_gtol adds 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_tag puts 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_table slides 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_package lays the dimensions out again on the finished
    sheet, clear of each view's caption and note as drawn, before checking it.
  • add_gtol on 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_package takes include_bom (assemblies): the BOM goes
    in the top of the isometric view's cell, with the isometric fitted below.
  • generate_drawing_package draws the front, plan and side views with hidden
    lines visible (dashed), so through holes show in the front and side views;
    hidden_lines_visible reports 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_gtol tries 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_package leaves 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_gtol finds 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 -Record records a live test (changed frames
    only, captions as each step starts) and builds a sped-up GIF.

Model verification (#173):

  • verify_model checks 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_change on create_extrusion, create_revolve and
    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
    publishes server.json to the official MCP Registry. Both registries use
    the workflow's GitHub identity; no tokens are stored.
  • uvx solidworks-mcp-python runs the server without cloning the repo
    (new solidworks-mcp-python entry point alongside solidworks-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) and set_material (#134): read and assign a
    part's library material; the assignment is read back, and an unknown name
    is not_found.
  • list_available_materials (#135): search the configured and built-in
    .sldmat libraries.
  • get_custom_properties (#136) and set_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 library bom-standard template 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 with arrange_dimensions, a filled title block, view captions and a
    NOTES block, checked for overlaps on the read-back geometry, saved as
    <drawing number>.SLDDRW plus 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
    with install.ps1 is on the docs Installation page. Use
    solidworks-mcp-python, not solidworks-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 setup run through uvx writes 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.
  • --help lists 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 queued main deploy (#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 with direction_flipped. A cut that builds nothing either way fails with
    the new feature_not_built error 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_package builds 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_mm option 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.