Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

- **Support levels for every tool** (#79). Each tool is `stable` (checked
live, no known fault), `beta` (a known fault or partial COM coverage),
`experimental` (not yet checked live) or `planned` (not implemented),
in one table, `tools/support_levels.py`. The level is in the tool's tags
(`level:beta`); a beta or experimental tool's description opens with it,
and its successful results carry it as `warning`. A check keeps the table
in step with the code. Today: 81 stable, 24 beta, 10 experimental, 40
planned. `tutorial_simple_hole` is now planned: its cut step fails on
SolidWorks.
- **Progress bars and a progress page** (#79). The README opens with an
image of the tools by level and the share of the core SolidWorks COM API
the adapters reach (208 of 2,838 methods), counted from a committed
snapshot of the type library. The docs site's new Progress page lists
every tool with its level and reason, filterable by level and family.
`python -m solidworks_mcp.progress.generate` regenerates both; a test
fails when they're stale.

- **`reset_circuit_breaker`** (#208). Re-opens operations the server paused
after repeated failures, all of them or one by name; the `circuit_open`
hint now names it.
Expand Down
24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,29 @@

Python MCP server for SolidWorks automation with 155 tools, plus an optional agent/prompt-testing layer for AI-assisted workflows.

[![155 MCP tools by support level, and how much of the core SolidWorks COM API they reach](docs/assets/progress/progress.svg)](https://andrewbartels1.github.io/SolidworksMCP-python/progress/)

<sub>Generated from the code; click it for every tool, its level and why, filterable by level and family.</sub>

### Two tools in one

- **A Python interface for scripting SolidWorks.** The adapters wrap SolidWorks' COM API in plain `async` Python calls, so you can automate it from your own scripts without an AI in the loop:

```python
from solidworks_mcp.adapters.base import ExtrusionParameters
from solidworks_mcp.adapters.pywin32_adapter import PyWin32Adapter

adapter = PyWin32Adapter({})
await adapter.connect()
await adapter.create_part()
await adapter.create_sketch("Top")
await adapter.add_rectangle(-20, -10, 20, 10) # mm
await adapter.exit_sketch()
await adapter.create_extrusion(ExtrusionParameters(depth=10))
```

- **An MCP tool server on top of it.** The same calls, exposed as 155 MCP tools, so an agent such as Claude Code can build parts, assemblies and drawings from a description. Each tool carries a support level (stable, beta, experimental or planned), so the agent knows how far to trust it.

## See it work

### A whole mechanism from a description
Expand Down Expand Up @@ -173,6 +196,7 @@ Each GIF is a live test driving SolidWorks 2026 through the MCP tools, with the
- Windows + SolidWorks COM automation for the main CAD lifecycle.
- Tested on SolidWorks 2026. Earlier versions may work but are untested; if you try one, please [open an issue](https://github.com/andrewbartels1/SolidworksMCP-python/issues/new/choose) with what worked.
- Modeling, sketching, drawing, analysis, export, automation, templates, and macro tools.
- Every tool's support level, and the reason a tool isn't stable yet, is on the [progress page](https://andrewbartels1.github.io/SolidworksMCP-python/progress/).

## Not Yet / Simulated

Expand Down
18 changes: 18 additions & 0 deletions docs/agents/tool-description-standard.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,24 @@ future release." Then point to the tool to use instead, if there is one, and
phrase what it would change or return as "once available". The list of these
tools is in `openspec/queue.md`.

## Support levels

Add one line to `SUPPORT_LEVELS` in `tools/support_levels.py` for every new
tool; registration fails without it. A tool is `stable` once a live test
calls it and it has no known fault, `beta` when it works on SolidWorks but
has a known fault or covers only part of its COM call, `experimental` when
no live test has checked it, and `planned` when nothing implements it (its
description says "Not available yet"). Below stable, give a one-sentence
reason.

Don't write the level into the docstring: the server opens a beta or
experimental tool's description with "Beta: <reason>" or "Experimental:
<reason>" from the table, adds the same sentence to its successful results as
`warning`, and tags every tool `level:<level>`. After changing a level, run
`python -m solidworks_mcp.progress.generate` so the README image and the
[progress page](../progress.md) follow; `tests/integration/test_support_levels.py`
and `test_progress_up_to_date.py` check both.

## Behaviour hints

Add one line to `TOOL_HINTS` in `tools/tool_hints.py` for every new tool;
Expand Down
Loading
Loading