solidworks-mcp
solidworks-mcp-2
An MCP (Model Context Protocol) connector that drives SOLIDWORKS 2025 and SOLIDWORKS CAM 2025 through COM automation, so an MCP client like Claude can model parts and assemblies, produce drawings, and generate real, posted G-code — with real geometry, real mass properties, and real files on disk, not a simulation of any of those things.
It is a ground-up rebuild of the solidwprks-mcp predecessor concept: one
dedicated STA worker thread owns every COM object, clients get opaque session
handles instead of raw pointers, every dimensional value has an explicit unit
convention, and 13 grouped MCP tools give ~122 modeling/CAM operations their
own typed Pydantic schema instead of one giant generic surface. See
docs/architecture.md for the full design.
Status
Code-complete for this release: 474 tests passing against a fake-COM layer,
ruff/mypy clean, and — unusually for a project at this stage —
live-verified against a real, licensed SOLIDWORKS 2025 + SOLIDWORKS CAM 2025
installation. That pass found and fixed 9 real bugs the fake-COM suite alone
had not caught, and it honestly documents 2 remaining live-flakiness issues.
See "Verified" below and docs/verification/VERIFICATION.md for the full,
unedited report.
Install
Requires 64-bit Windows and, to actually connect to SOLIDWORKS, a licensed SOLIDWORKS 2025 (revision 33.x) installation. The package itself installs and its non-live test suite runs on any OS.
git clone https://github.com/rdolan5/solidworks-mcp-2.git
cd solidworks-mcp-2
uv syncor with plain pip:
python -m venv .venv
.venv\Scripts\pip install -e .Verify the install (no SOLIDWORKS process launched):
uv run solidworks-mcp --doctorConfigure Claude Desktop
Add to claude_desktop_config.json's mcpServers:
{
"mcpServers": {
"solidworks": {
"command": "C:\\path\\to\\solidworks-mcp-2\\.venv\\Scripts\\solidworks-mcp.exe",
"args": ["--workspace", "C:\\Users\\you\\Documents\\SOLIDWORKS-MCP"]
}
}
}Configure Claude Code
claude mcp add solidworks -- C:\path\to\solidworks-mcp-2\.venv\Scripts\solidworks-mcp.exe --workspace C:\Users\you\Documents\SOLIDWORKS-MCPFull step-by-step (both clients, troubleshooting) in
docs/configuring-claude.md.
Tool catalog
~40 MCP tools total: 13 grouped tools (each dispatching on a typed
operation field to one of ~122 capability-module functions) plus 27
standalone tools for connection, generic COM access, document lifecycle,
and CAM connection. Every operation name below is exactly the string you pass
as payload.operation; the authoritative, always-current mapping is
src/solidworks_mcp/specs.py's TOOL_OPS table.
Grouped tool | Operations | Docs |
| plane, axis, coordinate_system(_numeric), point |
|
| begin, exit, add_entities, fillet, chamfer, offset, convert_entities, mirror, add_relation, add_dimension |
|
| extrude(_cut), revolve(_cut), sweep(_cut), loft(_cut), boundary, fillet, chamfer, shell, draft, rib, wrap, dome, hole_wizard, simple_hole, thread, mounting_boss, mirror, delete, modify |
|
| linear, circular, mirror, curve_driven, sketch_driven, table_driven, fill |
|
| combine, split, move_copy, cavity, indent, scale, list, delete |
|
| get/set_dimension, add_equation, add_global_variable, list/delete_equation, link_dimensions |
|
| apply, get, custom_density, get_density, color |
|
| add, activate, list, delete, set_config_dimension, get/delete/insert_design_table |
|
| bounding_box, mass_properties, measure, section_properties, check_geometry, interference, draft_analysis, thickness_analysis |
|
| insert_component(s), mate, fix, float, move/rotate_component, replace_component, pattern/mirror_components, interference, clearance, explode, collapse, bom |
|
| new_from_model, model_view, standard_3view, projected_view, section_view, detail_view, insert_dimensions, add_annotation, insert_bom, set_sheet_format, export |
|
| export, import |
|
| list_machines, set_machine, set_post, define_stock, recognize_features, define/list_features, list_setups, generate_operation_plan, list_operations, set_operation_parameter, set_tool, generate_toolpaths, simulate, check_collisions, post_process, setup_sheet, techdb_query, save_cam_data |
|
Standalone tools: solidworks_discover, solidworks_connect,
solidworks_api/solidworks_batch/solidworks_array/solidworks_release,
solidworks_api_load/solidworks_api_search, solidworks_active_document,
solidworks_templates, solidworks_new_document/open_document/save,
solidworks_rebuild, solidworks_inspect, solidworks_assembly_tree,
solidworks_mass_properties, solidworks_sketch_begin (legacy convenience),
solidworks_persistent_reference/resolve_reference,
solidworks_modify_feature, solidworks_cam_connect/cam_status/cam_workflow
(legacy low-level CAM dispatcher), solidworks_script, solidworks_job/
cancel_job.
Units and selection conventions
Every dimensional field accepts a value plus an optional unit, defaulting to
millimetres for length and degrees for angle (SOLIDWORKS' COM API
itself is always metres/radians/kilograms internally — this connector
converts at the boundary in both directions). Full convention, including
handle lifetime and document-targeting rules, in
docs/units-and-conventions.md.
Safety model
Workspace sandboxing: every file-writing tool (
solidworks_save,solidworks_exchange'sexport, CAM'spost_process, drawingexport) resolves its destination throughRuntime.output_path, which rejects any path that resolves outside the configured--workspacedirectory (default~/Documents/SOLIDWORKS-MCP). A relative path is resolved inside the workspace; an absolute path elsewhere on disk is refused.--allow-scripts:solidworks_scriptexecutes arbitrary trusted Python on the COM apartment — full local code execution with the OS user's permissions, not a sandbox. It is only registered when the server is started with--allow-scripts; omit that flag (the default) to disable it entirely.Generic API access is still full-trust local automation:
solidworks_api/solidworks_batchexpose the complete COM surface, including calls that can modify documents, run macros, or touch the local filesystem outside the workspace sandbox via COM's own file APIs (the sandbox is enforced at this connector's boundary, not inside SOLIDWORKS itself). Treat granting an MCP client access to this server as granting it the same trust you'd give a local automation script running as you.CAM is never treated as proof of a license or of manufacturing correctness. An installed product, a registered add-in, or a successful API connection does not establish CAM license entitlement — see "CAM notes" below. A void COM return is documented as void, not silently reinterpreted as success.
--doctor
uv run solidworks-mcp --doctorPrints installed SOLIDWORKS/SOLIDWORKS CAM versions, registered add-ins, and
library paths as JSON, discovered from the Windows registry and filesystem —
no SOLIDWORKS process is launched. Use it first when solidworks_connect or
CAM tools aren't behaving as expected.
CAM notes
SOLIDWORKS CAM access requires the add-in to be installed and registered
(discovered from the registry, never guessed) and, separately, a valid
license — the connector's own cam.status() deliberately reports
license: "unknown" even when the API connection succeeds, because an API
connection is not license proof. License checks (solidworks_cam_workflow's
license action) require an explicit vendor module name and are recorded
per-module, not aggregated into a blanket "licensed" flag. Full detail,
including the confirmed add-in identifier/entry point and the CAM operation
table, in docs/cam.md.
Verified
docs/verification/VERIFICATION.md is a from-scratch run against a real,
licensed SOLIDWORKS 2025 SP5.0 + SOLIDWORKS CAM 2025 installation — every
number, error message, and G-code line in it is copied verbatim from an
actual run, not fabricated:
Scenario | Result |
Complex part | Partial pass (27/29 steps). Real mass |
Assembly | Partial pass. 3 real components inserted/rebuilt/fixed, 4 real interferences detected before mating, |
Drawing | Full pass (9/9 steps). Standard 3-view, section view, detail view, model dimensions, PDF + DXF export, SLDDRW saved. |
CAM → G-code | Core pipeline pass (8/10 steps). Real CAMWorks connection, 2 machinable features recognized, 225 lines of real G-code posted to a real |
That pass also found and fixed 9 real bugs in this codebase (wrong COM
member names, ByRef/VARIANT marshalling, treating void-but-successful
returns as failures, an unopened-referenced-file assembly-insert bug) — see
the report for the full list with exact interfaces and members.
Known issues (not hidden)
FeatureLinearPattern5/FeatureCircularPattern5(solidworks_pattern'slinear/circularoperations) consistently returnNothingagainst this SOLIDWORKS 2025 install despite a confirmed-correct signature and roughly a dozen parameter/selection variations tried. Open, unresolved blocker.AddMate5(solidworks_assembly'smateoperation) is intermittently flaky in this headless COM automation context — selection sometimes reports zero selected objects immediately after component insertion, and the mate call itself sometimes returns an unknown error even with a verified selection. One isolated run did succeed with an identical call, confirming the API itself works; the flakiness wasn't fully root-caused in the time available.CAM operation-collection enumeration (
solidworks_cam'slist_operations) has nothing to enumerate becausegenerate_operation_planreturnsNoneeven though the plan demonstrably exists (toolpath generation and posting both succeed and produce real G-code). Only the introspection step is unverified.
See docs/verification/VERIFICATION.md's "Known gaps / confirmed blockers"
section for the full detail on all three.
Examples
Worked, documented scripts under examples/ — adapted from the exact
sequences run in live verification, not hypothetical code:
complex_part_bracket.py, parametric_housing.py, gearbox_assembly.py,
drawing_from_part.py, cam_mill_part_to_gcode.py.
Documentation
docs/architecture.md— STA worker/bridge/gateway/runtime designdocs/cad-tools.md— geometry/sketch/feature/pattern/body/parametric/material/configuration/analyzedocs/assemblies.md,docs/drawings.md,docs/cam.mddocs/units-and-conventions.mddocs/configuring-claude.mddocs/verification/VERIFICATION.md
Development
uv sync
uv run pytest -m "not live and not cam"
uv run ruff check
uv run mypy srcSee CONTRIBUTING.md for test tiers, code style, and how to add a new
operation. CHANGELOG.md covers what changed between the solidwprks-mcp
predecessor concept and this release.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rdolan5/solidworks-mcp-2'
If you have feedback or need assistance with the MCP directory API, please join our Discord server