Skip to content

Support levels for every tool, and progress bars for tools and COM coverage - #214

Merged
andrewbartels1 merged 3 commits into
mainfrom
feat/tool-support-levels
Nov 7, 2026
Merged

andrewbartels1 merged 3 commits into
mainfrom
feat/tool-support-levels

Conversation

@andrewbartels1

Copy link
Copy Markdown
Owner

What this does

Support levels. Every tool now has one level, kept in src/solidworks_mcp/tools/support_levels.py:

Level Meaning Tools
stable checked by a live test, no known fault 81
beta works on SolidWorks, but a known fault or partial COM coverage 24
experimental not yet checked on real SolidWorks 10
planned registered, nothing implements it 40
  • Each tool is tagged level:<level>. A beta or experimental tool's description opens with "Beta: " (added by the server from the table, so it can't go stale), and its successful results carry the same sentence as warning. A tool's own warning, such as a cut that removed nothing, comes first.
  • tests/integration/test_support_levels.py fails when the table and the code disagree:
    • a tool with no level, or a listed tool that doesn't exist;
    • "planned" without "Not available yet", or the reverse;
    • a stable tool that no live test calls.
  • Borderline levels were decided in review. The tools that ignore one optional input (create_part, create_extrusion, the export_* file tools and others) are beta. tutorial_simple_hole is planned, because its cut step always fails on SolidWorks.

Progress image and page.

  • A committed snapshot of the SolidWorks type library (418 interfaces, 5,985 method names) and a text scan of the adapters count COM coverage:
    • 208 of 2,838 methods in the 12 core interfaces;
    • 232 of 5,985 across the whole API.
  • python -m solidworks_mcp.progress.generate draws the README image (tools by level; core COM coverage, red to green) and writes the data and tables for the new docs Progress page.
  • The page filters by level and family, and works without scripts.
  • tests/integration/test_progress_up_to_date.py fails when the committed files are stale, and names the command to run.
  • After a SolidWorks upgrade, python -m solidworks_mcp.progress.snapshot (Windows) refreshes the snapshot.

README. The progress image at the top, linking to the page, and a "Two tools in one" section: a Python interface for scripting SolidWorks, and an MCP server on top of it.

Also:

No SolidWorks behaviour changes. Tool results only gain the warning key, so no live run is needed.

Checks

  • Full mock suite: 3,663 passed, 10 skipped, 100% coverage.
  • ruff check and ruff format --check are clean.
  • mkdocs build --strict is clean.

Addresses the coverage half of #79. The licence-tier half stays in the queue.

… and results

Every registered tool now has one level in tools/support_levels.py:
stable (checked live, no known fault), beta (a known fault or partial COM
coverage), experimental (never checked live) or planned (not implemented).
The registrar adds a level:<level> tag, opens a beta or experimental tool's
description with "Beta: <reason>" and adds the same sentence as `warning`
to its successful results. A check keeps the table honest: every tool
listed, planned exactly when "Not available yet", stable only with a live
test. tutorial_simple_hole is now planned; its cut step fails on SolidWorks.

Also archives the circuit-breaker-recovery plan (#208).
…progress page

A committed snapshot of the SolidWorks type library (418 interfaces, 5,985
method names) and a text scan of the adapters give the COM coverage: 208 of
2,838 methods of the twelve core interfaces, 232 of 5,985 across the API.
`python -m solidworks_mcp.progress.generate` draws the progress SVG (tools
by level, core COM coverage) and writes its data and the docs page's
tables; a test fails when they're stale. The new Progress page lists every
tool with its level and reason, filterable by level and family, and works
without scripts.
… levels in the skill and standard

The README opens with the progress image, linking to the Progress page, and
says what the project is: a Python interface for scripting SolidWorks and
an MCP server on top of it. The agent skill and the description standard
explain the levels and the `warning`; the queue says a fixed fault moves its
tool up a level. CHANGELOG updated.
@andrewbartels1
andrewbartels1 merged commit e37bc83 into main Nov 7, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant