SolidworksMCP-python
A Windows/SolidWorks MCP server for AI-assisted CAD automation, exposing 154 tools that let an MCP client create, inspect, modify, document, export, and batch-automate SolidWorks parts, assemblies, and drawings.
Model lifecycle: open, create, load, save, save-as, close, and pack-and-go parts/assemblies/drawings.
Sketching: create sketches and add lines, circles, rectangles, arcs, splines, centerlines, polygons, ellipses, constraints, dimensions, patterns, mirror, and offset.
Part/assembly modeling: extrude, revolve, cut-extrude, fillet, sweep, loft, insert components, add mates, set dimensions, and check interference.
Drawings: create drawing views, section/detail views, dimensions, notes, annotations, title blocks, sheet formats, auto-dimensioning, standards/compliance checks, and drawing analysis/reports.
Engineering analysis: mass properties, material properties, geometry analysis, and model/feature inspection.
Export/conversion: STEP, IGES, STL, PDF, DWG, images, batch export, and format conversion.
Automation: generate VBA code, record macros, batch-process files, manage design tables, execute workflows, create/apply templates, and optimize performance.
File/property management: get/set file properties, list features/configurations, manage file operations, and batch file operations.
Optional MCP client setup for Claude Desktop, Claude Code, VS Code, Cursor, and LM Studio, with mock mode and optional SolidWorks-as-Code session logging.
Integrates GitHub Copilot for goal clarification and family classification in the CAD assistant workflow, enabling AI-assisted design intent interpretation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SolidworksMCP-python create a 3D model of a bracket with mounting holes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SolidWorks CAD Assistant & MCP Server
Python MCP server for SolidWorks automation with 156 tools, plus an optional agent/prompt-testing layer for AI-assisted workflows.
Generated from the code; click it for every tool, its level and why, filterable by level and family.
Two tools in one
A Python interface for scripting SolidWorks. The adapters wrap SolidWorks' COM API in plain
asyncPython calls, so you can automate it from your own scripts without an AI in the loop: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 156 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
I took SolidWorks' own U-Joint sample, read every part, sketch, feature and mate, and wrote it up as a plain-English prompt: eight parts, a crank sub-assembly, and a main assembly that has to move like a real joint. Then Claude Code (Opus 5.5, medium effort) built it from that prompt alone.
I want to build a small hand-cranked universal joint in SolidWorks: eight parts, a crank sub-assembly, and the main assembly. It's a mechanism: turning the knob turns the crank, which drives the joint through an angle, so the assemblies must still move the way described in sections 9 and 10. Please reason through each part before you start drawing, check every part once it's built, and tell me if something can't be done with the tools rather than guessing. All sizes are in millimetres (the original was drawn in inches, so the numbers are odd). SolidWorks' Y axis is up. Save every part and both assemblies in this folder, with the names given below.
1. bracket.SLDPRT: a bent plate, 6.35 mm thick and 38.1 mm wide. Seen from the side (sketch on the Right plane, Y up, Z towards the front), the inside outline of the bend is an open chain:
a back wall going straight up 82.55 mm from the origin;
from its top, a top arm going forward 57.15 mm;
from the origin, a bottom foot going forward 44.45 mm;
from the front of the foot, a lip rising at 40° for 42.77 mm (it ends 27.49 mm up and 77.22 mm forward). The 6.35 mm thickness is on the outside of that outline: above the top arm, behind the back wall and under the foot. The 38.1 mm width is centred on the Right plane. Drill a 12.7 mm hole straight down through the top arm and on through the foot below it (one cut, both plates), centred across the width and 38.1 mm forward of the back wall's inside face.
2. Yoke_male.SLDPRT: a fork with a stub shaft.
Start with a 38.1 mm diameter cylinder, 47.625 mm tall, standing on the Top plane.
Its bottom becomes a fork with two ears. Each ear is 19.05 mm wide and 8.89 mm thick, and the gap between them is 20.32 mm, centred. Each ear has a rounded end: a full radius of 9.525 mm, centred 9.525 mm above the bottom. Where an ear meets the solid part of the cylinder, round the shoulder with a 9.525 mm radius, so the solid part starts 29.21 mm above the bottom.
Drill a 9.525 mm cross hole through both ears at the centre of their rounded ends, square to the ears.
On top, add a 12.7 mm diameter stub, 19.05 mm tall, on the cylinder's axis. Chamfer its top edge 1.27 mm at 60°.
Cut a flat on the stub, 12.7 mm long down from its top. The flat is 4.7625 mm from the axis, so it is 1.5875 mm deep.
3. Yoke_female.SLDPRT: the same 38.1 x 47.625 mm cylinder with the same fork and the same cross hole as the male yoke, but no stub. Instead, a 9.525 mm hole goes all the way through along its axis.
4. spider.SLDPRT: a 19.05 mm cube centred on the origin. It has two 9.525 mm holes, both through its centre: one front to back, and one left to right.
5. pin.SLDPRT: a 9.398 mm diameter rod, 38.1 mm long.
6. crank-shaft.SLDPRT: a 12.573 mm diameter shaft, 40 mm long, standing on the Top plane.
Around its bottom 15.875 mm, a collar 18.923 mm in diameter.
A 4.763 mm fillet where the collar meets the shaft, and a 4.763 mm fillet on the collar's top outer edge.
In the bottom, a D-shaped socket 12.7 mm deep. It is a 12.954 mm circle with a flat 4.889 mm from the axis, to take the male yoke's stub.
A 2.381 mm cross hole through the collar wall, square to the socket's flat and 6.35 mm up from the bottom.
At the top, a matching flat 6.35 mm long, 4.889 mm from the axis.
A 0.794 mm x 45° chamfer on the top end.
7. crank-arm.SLDPRT: a flat bar, 75 x 19.05 x 6.35 mm.
Near one end, a 12.7 mm D-hole centred 9.525 mm from the end and on the bar's centreline. Its flat is 4.889 mm from the hole's centre, towards that end. It fits the shaft's top flat.
Near the other end, a 4.763 mm hole 9.525 mm from that end, also on the centreline.
8. crank-knob.SLDPRT: a mushroom-shaped knob, revolved 360° about the vertical axis. Going up from the bottom, its profile has:
a 4.572 mm diameter shank, 6.35 mm long;
a step out to a 9.525 mm diameter;
a concave quarter-round of radius 6.35 mm that flares out to 22.225 mm diameter, 12.7 mm up;
a convex half-round of radius 4.7625 mm that reaches 31.75 mm diameter at its widest;
a flat top 22.225 mm in diameter, 22.225 mm above the bottom.
9. crank sub.SLDASM:
The crank shaft is fixed.
The crank arm's D-hole goes on the shaft's top flat: the hole is concentric with the shaft, the flats are parallel, and the arm sits on the shoulder where the flat starts. The flats lock the arm to the shaft, so they turn together.
The knob's shank goes into the arm's small hole, with the knob's step resting on the arm's top face. The knob stays free to spin in its hole, like a handle.
10. UJoint.SLDASM:
The bracket is fixed.
The male yoke hangs under the bracket's top arm. Its stub goes up through the bracket's hole (concentric), and the top of its cylinder is flat against the underside of the arm. It must stay free to turn in that hole.
The spider sits centred between the male yoke's ears, with one of its holes lined up with the ears' cross hole. It pivots on that axis.
The female yoke's ears go around the spider's other hole, centred on the spider. Its top face is parallel to the bracket's sloped lip, so its axis points down and forward. It pivots on the spider and turns about its own axis.
Put one pin through the male yoke's ears and the spider, and one pin through the female yoke's ears and the spider. Each pin's ends are flush with its yoke's round outside, and each pin turns with its yoke.
Insert the crank sub-assembly. Its shaft's D-socket goes over the male yoke's stub: concentric, with the flats parallel, and the bottom of the shaft 1 mm above the top of the bracket. The flats lock the crank to the male yoke.
The result should be a mechanism with one free motion: turning the knob around the crank shaft's axis turns the male yoke, the spider rocks on its pins, and the female yoke turns about its tilted axis. Choose mates that leave exactly those rotations free and lock everything else.
When it's all built, check each part's size and the assembly's component and mate counts, say which rotations your mates leave free, and tell me what you couldn't do.


Six of the eight parts match the sample's volume within 0.2 %, and all eight within 1 %. The mates leave the mechanism free to turn. The recording replays the session's 294 calls (sped up 80 times). The walkthrough has the prompt, the part-by-part comparison, and what the agent couldn't do. The same prompt run with and without the agent skill made the same parts, which is why I want skills that improve results (#207).
A drawing package from one prompt
Make a 100 x 50 x 10 mm AISI 1020 mounting plate with four M5 clearance holes, 10 mm in from each edge, and draw it fully dimensioned. Stack two of them 10 mm apart, check the result, and draw the assembly with a BOM.

The 58 tool calls an agent made from that prompt, run against SolidWorks 2026 through the same MCP tools a client calls, and recorded (sped up five times). Each result is checked against a hand calculation: the plate's volume and mass, the 10 mm gap and the BOM quantity. This is a replay of the calls, not a recorded model session.
Note: the demo is not perfect, and is not the most efficient way to get this result. The run pauses after each call so it can be read, and the calls are chosen to show what the tools can do: every sketch dimension is added one at a time, and the mate distance is stepped down only so the plates are seen coming together.
The walkthrough in the docs has the agent's plan and every call with its arguments. Run it yourself with the README demo; the calls are also in plate_stack_calls.json.
Sketch (24 calls):
create_sketchon Top; fouradd_linefor the 100 x 50 outline;add_circlefor each Ø5.5 hole;add_sketch_dimensionfor the 100, the 50, one Ø5.5 and each hole 10 mm from two edges;add_sketch_constraintmaking the other three holes equal;exit_sketchCheck and extrude:
check_sketch_fully_defined,create_extrusion10 mm (+49 049.7 mm³ read back)Material and check:
list_model_dimensions(finds the Ø5.5 by value),set_materialAISI 1020,verify_model(volume, mass 0.3875 kg, size, 1 feature, 1 body)Plate drawing:
generate_drawing_packagePS-01 (A3, four views, every model dimension laid out with no overlaps, notes, title block, PDF),auto_center_marksGD&T:
add_datum_tagA, B and C, thenadd_gtol⊕ Ø0.2 Ⓜ A|B|C on the Ø5.5Assembly:
insert_componenttwice,list_components,add_mateFront and Right coincident and Top planes 60 mm apart,set_dimensionstepping that distance down to 20 mm (10 calls),verify_model(2 parts, 3 mates, no interference; the stack measures 30 mm, so the gap is 10 mm)Assembly drawing:
set_custom_propertyMaterial,generate_drawing_packagePS-02 withinclude_bom(the BOM above the isometric: Demo Plate, QTY 2), then the same datums and position frame
Related MCP server: solidworks-mcp
Overview
Tried it? Tell us what worked and what didn't in a feedback issue. Reports from real setups decide what gets fixed next.
This project focuses on practical SolidWorks automation with an AI-friendly loop:
describe intent
generate a plan
execute MCP tools
inspect results
iterate
It includes:
core MCP runtime for SolidWorks tool execution
COM/VBA routing and adapter safety wrappers
tool coverage across modeling, sketching, drawing, analysis, export, automation, templates, and macros
optional agent orchestration/testing utilities under
src/solidworks_mcp/agents/
Demos
Each GIF is a live test driving SolidWorks 2026 through the MCP tools, with the call and its result captioned beneath. Click one to see what it checks, a prompt that asks for it, and its tool calls.
See every demo in the docs: what each one shows, its prompt, every tool call with its arguments (all 58 for the demo at the top), and how to run them yourself.
Supported Today
Windows + SolidWorks COM automation for the main CAD lifecycle.
Tested on SolidWorks 2026. Earlier versions may work but are untested. To check yours, run
uvx solidworks-mcp-python selftestwith SolidWorks open, then send the result with the compatibility report form. The compatibility page lists the releases checked so far.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.
Not Yet / Simulated
Mock adapter output is simulated and should not be treated as engineering truth.
Live 3D viewport streaming in a UI.
Checkpoint-level interference validation.
Simple simulation and fluid workflows
Simple Topology Optimization via SimulationXpress etc.
Install
You need Windows 10 or 11 and SolidWorks (opened at least once). In PowerShell, install uv, then open a new PowerShell window and run setup:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
uvx solidworks-mcp-python setupuv fetches Python 3.13 and the server from PyPI by itself; nothing to clone. The guided setup then:
finds your SolidWorks version and the MCP clients on your PC: Claude Desktop, Claude Code, VS Code, Cursor and LM Studio;
lets you pick which clients to connect;
starts the server once to check that it lists its tools (in mock mode, so SolidWorks isn't touched);
adds a
solidworksentry to each client you picked, then tells you what to restart.
Nothing needs a login or an API key, and the server runs only on your PC. Setup changes only the solidworks entry in each client's config. It backs the file up first and never shows or changes your other servers. Other entries that start this server the old way (run-mcp.ps1 and the like) are offered for removal, so tools don't load twice.
To check it worked: open SolidWorks, restart your client, and ask "What model is open in SolidWorks?"
The package is solidworks-mcp-python. uvx solidworks-mcp installs a different project. To work on the server itself, install from a clone. More fixes are in Troubleshooting.
Connect your client
Run setup again whenever you want to add a client:
uvx solidworks-mcp-python setupOption | What it does |
| Configure one client without the list. Repeat it for several ( |
| Show what would change, and change nothing. |
| Don't ask: configure every client found. |
| Take the |
| Remove older entries for this server without asking. |
| Configure mock mode, which answers without SolidWorks (for trying the tools). |
| The SolidWorks release to start the server with. Default: the newest installed. |
To set up a client by hand instead, each one runs uvx solidworks-mcp-python --year 2026, with your SolidWorks year. --year names your installed SolidWorks release and is required for real SolidWorks; setup fills it in for you. It picks which SolidWorks API the lookup tools answer for. Without it, the server logs a warning and uses the newest installed release. If a client can't find uvx, use its full path, from (Get-Command uvx).Source.
Add this to claude_desktop_config.json, alongside anything already in it. Depending on how Claude Desktop was installed, the file is in one of:
%LOCALAPPDATA%\Claude-Data\claude_<id>\(current releases)%LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude\%APPDATA%\Claude\
{
"mcpServers": {
"solidworks": {
"command": "uvx",
"args": ["solidworks-mcp-python", "--year", "2026"]
}
}
}Quit Claude Desktop from the system tray (closing the window isn't enough) and reopen it. Settings > Developer should show solidworks as running.
claude mcp add --scope user solidworks -- uvx solidworks-mcp-python --year 2026Run /mcp in a new session to check that solidworks is connected.
Add this to %APPDATA%\Code\User\mcp.json:
{
"servers": {
"solidworks": {
"type": "stdio",
"command": "uvx",
"args": ["solidworks-mcp-python", "--year", "2026"]
}
}
}Run MCP: List Servers from the Command Palette and start solidworks. Its output should end with Discovered 156 tools (the count grows as tools are added).
Add this to %USERPROFILE%\.lmstudio\mcp.json:
{
"mcpServers": {
"solidworks": {
"command": "uvx",
"args": ["solidworks-mcp-python", "--year", "2026"]
}
}
}Restart LM Studio and enable solidworks in the Program tab.
For mock mode, which needs no SolidWorks, use "args": ["solidworks-mcp-python", "--mock"]. Linux and WSL work for the docs, the tests and mock mode, but not for driving SolidWorks.
Set these in your client's env block for the server, or in the shell before starting it by hand. Every SOLIDWORKS_MCP_<FIELD> maps to the config field of the same name.
SolidWorks-as-Code session logging (off by default). Logs every adapter tool call to a local SQLite database, so a session can be replayed or exported as a runnable Python script (see docs/getting-started/solidworks-as-code.md).
Variable | Default | Meaning |
|
| Turn logging on. |
| (generated) | Session name to log under. If unset while logging is on, a |
|
| Override the database file. |
$env:SOLIDWORKS_MCP_SOC_LOGGING_ENABLED = "true"
$env:SOLIDWORKS_MCP_SOC_SESSION_ID = "my-bracket"
.\.venv\Scripts\solidworks-mcp.exe
# ...work in your MCP client...
.\.venv\Scripts\python.exe -m solidworks_mcp.agents.soc_exporter my-bracket my_bracket.pyIt works only with the circuit-breaker adapter wrapper (the default for real SolidWorks); the mock adapter does not log.
API docs index auto-refresh (on by default). The API-lookup tools (lookup_api_interface, lookup_api_method, find_related_api_members) and search_solidworks_api_help read a JSON index built by discover_solidworks_docs. When the index is older than the threshold, the next lookup rebuilds it.
Variable | Default | Meaning |
|
| Rebuild a stale index automatically. No-op without SolidWorks + win32com; a failed rebuild keeps serving the existing index. |
|
| Age after which the index counts as stale. |
Teach your agent the workflow
Each tool's description says what that tool does. The solidworks-mcp skill covers what spans tools: the order to build in (sketch, close it, then the feature), which inputs take millimetres and which take metres, how to pick faces and edges, checking the result with verify_model, recovering from errors, and the tools that don't work yet. Install it into Claude Code with:
uvx solidworks-mcp-python skill installThat writes ~/.claude/skills/solidworks-mcp/. Add --project for the current project's .claude/skills, or --dir <folder> for another agent's skills folder. It writes only that folder and needs no login. Re-run it after an upgrade.
Clients that read MCP resources don't need the install: the server serves the same skill at skill://solidworks-mcp/SKILL.md, and points to it in the instructions it sends when a client connects. More: Agent skill.
Contributing
install.ps1 gives you an editable install, so code changes take effect the next time a client starts the server. For the development tools, install the extras:
.\.venv\Scripts\python.exe -m pip install -e ".[dev,test,docs]".\dev-commands.ps1 lists the common workflows:
dev-install: install or update the local dev environmentdev-test: run the standard test suite (the CI-safe subset)dev-test-full: run the full suite, including smoke and integration pathsdev-lintanddev-format: lint checks and formattingdev-docs-build,dev-docs-strictanddev-docs-audit: build the docs, build them failing on warnings, or write an audit report to.generated/docs
To mirror GitHub Actions CI locally (Ubuntu, the conda env from solidworks_mcp.yml, and make test), run .\scripts\run-ci-local.ps1. The first run builds the image; add -NoBuild to re-run tests without rebuilding.
Docs
Main docs site: https://andrewbartels1.github.io/SolidworksMCP-python/
Home/overview: docs/index.md
Key docs sections:
Getting Started: docs/getting-started
MCP Server Guide: docs/user-guide
Tool Catalog: docs/user-guide/tool-catalog
Agents and Skills: docs/agents
Planning/Roadmap: docs/planning
Direct links:
License
MIT License. See LICENSE.
Available Tools
154 toolsactivate_documentA
Switch which open document is the active one.
Matches the argument against open documents by title, full path, or
file name (case-insensitive), calls ActivateDoc3, and reads the
active document back to confirm the switch took.
Inputs: input_data (required). Returns: object
add_annotationB
Add an annotation such as a note, balloon, or surface symbol.
Places annotation text in a drawing with optional font size, leader attachment, and title-block style metadata fields.
Inputs: input_data (required). Returns: object
add_arcB
Add an arc to the current sketch.
Creates a circular arc defined by center point, start point, and end point. Arcs are essential for creating rounded corners, curved transitions, and complex curved profiles in mechanical designs.
Inputs: input_data (required). Returns: object
add_centerlineA
Add a centerline to the current sketch.
Creates a construction/reference line that serves as a centerline for symmetrical features, revolution axes, or construction geometry. Centerlines are non-geometric entities used for reference only.
Inputs: input_data (required). Returns: object
add_chamferB
Add an equal-distance chamfer to selected edges of the current model.
Chamfers the specified named edges with the given distance. Edge names use the SolidWorks convention, e.g. 'Edge<1>', or you can leave edge_names empty to chamfer all edges if the adapter supports it.
Inputs: input_data (required). Returns: object
add_circleB
Add a circle to the current sketch.
Inputs: input_data (required). Returns: object
add_datum_tagB
Add a datum feature symbol (A, B, C, ...) on a drawing edge.
Inputs: input_data. Returns: object
add_dimensionA
Add a dimension to the current drawing.
Creates dimensional annotations on drawing views including linear, radial, angular, and diameter dimensions. Essential for manufacturing specifications and quality control documentation.
Inputs: input_data (required). Returns: object
add_drawing_viewA
Add, update, or remove a drawing view in an existing drawing.
Supports configuring the target drawing, view type, parent view, scale, and placement coordinates for common drawing view workflows.
Inputs: input_data (required). Returns: object
add_ellipseA
Add an ellipse to the current sketch.
Creates an elliptical entity with specified center and major/minor axes. Ellipses are useful for creating oval holes, ergonomic profiles, and complex curved features in mechanical and industrial design.
Inputs: input_data (required). Returns: object
add_filletA
Add a fillet (rounded edge) to selected edges of the current model.
Rounds the specified named edges with the given radius. Edge names use the SolidWorks convention, e.g. 'Edge<1>', or you can leave edge_names empty to fillet all edges if the adapter supports it.
Inputs: input_data (required). Returns: object
add_gtolC
Add a GD&T feature control frame, e.g. position Ø0.2 (M) to A|B|C.
Inputs: input_data. Returns: object
add_lineC
Add a line to the current sketch.
Adds a line segment between two points in the active sketch. Lines are fundamental sketch entities used for creating profiles, construction geometry, and complex shapes.
Inputs: input_data (required). Returns: object
add_mateA
Mate two components in the active assembly.
Positions components relative to one another — coincident planes to stack or align them, concentric to line up axes, distance to hold a gap.
Entities are selected by feature name, so only each component's reference planes and axes can be mated. Mating to a specific face or edge needs entity names this adapter cannot enumerate.
Inputs: input_data (required). Returns: object
add_noteC
Add a note or annotation to the current drawing.
Creates text annotations, callouts, and notes on drawings for specifications, instructions, and additional manufacturing information. Essential for comprehensive technical documentation.
Inputs: input_data (required). Returns: object
add_polygonB
Add a regular polygon to the current sketch.
Creates a regular polygon with specified number of sides, center point, and circumscribed radius. Polygons are useful for creating hexagonal nuts, octagonal features, and other multi-sided geometric shapes.
Inputs: input_data (required). Returns: object
add_rectangleB
Add a rectangle to the current sketch.
Creates a rectangular profile defined by two opposite corner points, automatically generating four connected line segments forming a closed rectangle suitable for extrusion or other 3D operations.
Inputs: input_data (required). Returns: object
add_sketch_constraintA
Add a geometric constraint/relation between sketch entities.
Creates geometric relationships between sketch entities such as parallel, perpendicular, tangent, coincident, etc. Essential for creating fully defined, parametric sketches that maintain design intent.
Inputs: input_data (required). Returns: object
add_sketch_dimensionA
Add a dimension to sketch entities.
Creates dimensional constraints that control the size of sketch entities. Dimensions are essential for creating precise, parametric designs that can be easily modified and maintain manufacturing tolerances.
In live SolidWorks automation, sketch dimensions can otherwise trigger the interactive
Modify approval dialog. The adapter suppresses the relevant sketch-input preferences
for the automation session and uses the dedicated radial/diameter APIs for circles and
arcs so this tool remains non-interactive.
Inputs: input_data (required). Returns: object
add_splineA
Add a spline curve to the current sketch.
Creates a smooth, free-form spline curve that passes through or near the specified control points. Splines are ideal for creating organic shapes, complex profiles, and smooth transitions in industrial design.
Inputs: input_data (required). Returns: object
analyze_drawing_annotationsC
Analyze drawing annotations and notes quality.
Inputs: input_data (required). Returns: object
analyze_drawing_comprehensiveC
Handle analyze drawing comprehensive.
Inputs: input_data (required). Returns: object
analyze_drawing_dimensionsB
Analyze dimensions in a SolidWorks drawing for consistency and completeness.
This tool performs detailed dimensional analysis including precision, tolerances, and completeness checking.
Inputs: input_data (required). Returns: object
analyze_drawing_viewsC
Analyze drawing views arrangement and quality.
Inputs: input_data (required). Returns: object
analyze_geometryC
Handle analyze geometry.
This tool provides various geometry analysis capabilities like curvature analysis, draft analysis, thickness analysis, etc.
Inputs: input_data (required). Returns: object
analyze_macroC
Analyze a macro for complexity, dependencies, and optimization opportunities.
This tool provides insights into macro structure and performance to help with optimization and maintenance.
Inputs: input_data (required). Returns: object
apply_templateB
Apply a template to an existing SolidWorks model.
This tool applies saved template settings including properties, dimensions, and formatting to the target model.
Inputs: input_data (required). Returns: object
arrange_dimensionsA
Move drawing dimensions so nothing overlaps, then check the real result.
Dimensions go outside their views in rows (first 8 mm from the
outline, rows 7 mm apart, columns 9 mm apart), shortest span nearest
the view, each on the side its extension lines start from. One with no
room on that side stays put and is listed in unplaced. After moving
them it re-reads every dimension's real text box and lines and checks
the whole sheet: no text on text, no line through text, no line across
another view or across its own view, nothing on a view or outside the
sheet.
Inputs: input_data. Returns: object
auto_center_marksA
Auto-insert centre marks on circular features in a drawing view.
Runs SolidWorks' automatic centre-mark insertion for the named view. The API does not report how many marks it added, so the response gives the view's centre-mark count before and after and the delta. A run that added nothing is still a success — the view may have no un-marked holes.
Inputs: input_data (required). Returns: object
auto_dimension_viewC
Automatically dimension a drawing view.
Analyzes drawing view geometry and automatically adds common dimensions including overall sizes, hole diameters, radii, and critical features. Accelerates drawing completion and ensures comprehensive dimensioning coverage.
Inputs: input_data (required). Returns: object
automation_start_macro_recordingC
Start recording a macro in SolidWorks.
Begins macro recording to capture user actions and generate reusable automation scripts.
Inputs: input_data (required). Returns: object
automation_stop_macro_recordingA
Stop recording the current macro.
This tool stops the active macro recording and saves the recorded actions as a VBA macro.
Inputs: input_data (required). Returns: object
batch_apply_templateA
Apply template to multiple models in batch.
This tool processes multiple SolidWorks files and applies the same template configuration to all matching files.
Inputs: input_data (required). Returns: object
batch_execute_macrosB
Handle batch execute macros.
This tool allows running multiple macros in sequence or parallel for complex automated workflows.
Inputs: input_data (required). Returns: object
batch_exportA
Batch export multiple SolidWorks files to a target format.
Processes entire directories of SolidWorks files and converts them to specified target formats. Essential for project migrations, supplier deliverables, and large-scale format conversions.
Inputs: input_data (required). Returns: object
batch_file_operationsB
Run a file operation across multiple files as a batch workflow.
Intended for repetitive file management tasks such as copying, moving, renaming, or deleting groups of SolidWorks documents.
Inputs: input_data (required). Returns: object
batch_process_filesC
Handle batch process files.
This tool processes multiple files in a directory, performing operations like rebuild, save as, export, or property updates.
Inputs: input_data (required). Returns: object
calculate_mass_propertiesB
Get mass properties of the current SolidWorks model.
Calculates and returns comprehensive mass properties for the active model including volume, surface area, mass, center of mass, and moments of inertia. Essential for engineering analysis, weight calculations, and structural design.
Inputs: input_data (required). Returns: object
check_drawing_complianceC
Check drawing compliance with company standards.
Inputs: input_data (required). Returns: object
check_drawing_standardsB
Check the current drawing against drafting standards.
Validates drawing compliance with industry drafting standards including ANSI Y14.5, ISO 128, and DIN standards. Identifies non-compliance issues and provides recommendations for improvement.
Inputs: input_data (required). Returns: object
check_interferenceA
Check for interference between components in an assembly.
Analyzes specified components for geometric interference (overlapping volumes) and provides detailed interference detection results. Critical for assembly validation and identifying design conflicts before manufacturing.
Inputs: input_data (required). Returns: object
check_sketch_fully_definedB
Check whether a sketch is fully defined.
Inputs: input_data. Returns: object
classify_feature_treeA
Classify the active model into a feature family from model-info and tree data.
This is a read-before-write helper for delegation. It summarizes whether the current document looks like a direct-MCP solid, sheet metal workflow, advanced VBA-backed part, assembly, drawing, or an insufficient-evidence case.
Inputs: input_data (required). Returns: object
close_modelA
Close the current SolidWorks model.
Closes the currently active SolidWorks document with an option to save changes before closing. This is essential for proper model lifecycle management and preventing data loss.
Inputs: input_data (required). Returns: object
compare_drawing_versionsC
Compare different versions of drawing files.
Inputs: input_data (required). Returns: object
compare_templatesB
Compare two templates and generate difference report.
This tool analyzes differences between templates to help understand variations in formatting and properties.
Inputs: input_data (required). Returns: object
convert_file_formatB
Convert a SolidWorks file from one format to another.
Supports exporting source files to target formats such as STEP, IGES, STL, PDF, or other adapter-supported conversion outputs.
Inputs: input_data (required). Returns: object
create_assemblyB
Create a new SolidWorks assembly document.
Creates a new SolidWorks assembly document from template (a .asmdot path) or,
without one, the default assembly template. The new assembly becomes the active
document and is ready for component insertion, mating, and assembly-level operations.
Inputs: input_data (required). Returns: object
create_axisB
Create a reference axis along a principal direction.
Builds an axis from the intersection of two built-in planes: x from Top + Front, y from Front + Right, z from Top + Right.
Inputs: input_data (required). Returns: object
create_cut_extrudeA
Cut material from a sketch profile in the active model.
Creates a Cut-Extrude feature (Insert > Cut > Extrude). Use this after exit_sketch when you want to remove material — e.g. to create windows, holes, slots, or any through/blind cut in an existing solid body.
Sketch selection is never a silent guess: pass sketch_name
explicitly whenever you're not certain which sketch this should act
on (e.g. more than one sketch could be unconsumed, or other tool
calls ran in between). If omitted, only the sketch most recently
created/exited in this same session is used, and only when it still
exists in the model — there is no further fallback. Any ambiguity or
mismatch is reported back as an error naming the sketch(es) actually
found in the model, rather than cutting the wrong profile.
Direction: a one-way cut (Blind or ThroughAll) goes along the sketch
plane's normal. From a sketch on a face, or on a plane that touches
the body only on one side (e.g. a Top Plane sketch under a block
extruded up from it), that can point away from the material. The
tool then cuts the other way and returns
cut_extrude.direction_flipped: true, so you don't need to guess
reverse_direction. For a sketch on a plane through the middle of
the body, use ThroughAllBoth (or ThroughAll with
both_directions) to cut both sides.
Inputs: input_data (required). Returns: object
create_detail_viewA
Create a detail view of a specific area.
Generates magnified detail views of specific regions to show fine features, tight tolerances, and intricate geometry that requires enhanced visibility for manufacturing and inspection.
Inputs: input_data (required). Returns: object
create_drawingB
Create a new SolidWorks drawing document.
This tool creates a new drawing document from template (a .drwdot path) or,
without one, the default drawing template. The new drawing will become the active
document.
Inputs: input_data (required). Returns: object
create_drawing_viewB
Create a drawing view of a SolidWorks model.
Creates technical drawing views including orthographic projections, isometric views, section views, and detail views from 3D models. Essential for generating production drawings and technical documentation.
Inputs: input_data (required). Returns: object
create_extrusionC
Create an extrusion feature from the active sketch.
Creates a 3D extrusion feature (boss or cut) from the currently active 2D sketch. Supports advanced options like draft angles, thin features, bidirectional extrusion, and various end conditions for professional modeling workflows.
Inputs: input_data (required). Returns: object
create_loftA
Loft a solid between two or more profile sketches.
Creates a lofted boss/protrusion (Insert > Boss/Base > Loft) blending the listed profile sketches in order. Each profile must be a closed contour. Optional guide curves shape the transition between profiles.
Inputs: input_data (required). Returns: object
create_macro_libraryA
Create a library of organized macros for team sharing and reuse.
This tool sets up a structured macro library with categorization, documentation, and version control.
Inputs: input_data (required). Returns: object
create_partA
Create a new SolidWorks part document.
Creates a new SolidWorks part document from template (a .prtdot path) or,
without one, the default part template. The new part becomes the active document
and is ready for modeling operations such as sketch creation and feature addition.
Inputs: input_data (required). Returns: object
create_reference_planeA
Create a reference plane offset from an existing plane or planar face.
Adds a new plane to the feature tree, parallel to and offset from the
named reference. The returned plane name can be passed straight to
create_sketch to sketch anywhere other than the six built-in
planes.
Angled planes are not supported by this tool: an angled plane needs a
second reference (an axis or edge) to rotate about, which this
signature cannot take. Use offset for parallel planes. An
offset of zero is rejected — a plane coincident with its
reference is not useful.
Inputs: input_data (required). Returns: object
create_reference_pointA
Create a reference point on the active part.
Two modes:
along_curve— a point on the edge under(x, y, z)mm, placeddistancemm from the edge start, or atpercent(0–100) of its length. Give exactly one ofdistance/percent.face_center— a point at the centroid of the face under(x, y, z)mm.
The coordinate must lie on the target edge/face; SolidWorks resolves
it with a coordinate pick. InsertReferencePoint always returns a
feature, so success is confirmed by the feature tree growing.
Inputs: input_data (required). Returns: object
create_revolveB
Create a revolve feature from the active sketch.
Creates a 3D revolve feature by rotating the active 2D sketch profile around a specified axis of revolution. Supports full and partial revolves, thin features, and bidirectional revolution for comprehensive rotational modeling.
Inputs: input_data (required). Returns: object
create_section_viewC
Create a section view of the current drawing.
Generates section views that show internal features by cutting through the part along a specified section line. Essential for revealing hidden geometry, internal structures, and complex assemblies.
Inputs: input_data (required). Returns: object
create_sketchA
Create a new sketch on the specified plane.
Creates a new sketch on a reference plane and enters sketch edit mode. This is the first step for creating any 2D geometry that will be used for 3D features like extrusions, revolves, or sweeps.
Inputs: input_data (required). Returns: object
create_sweepA
Sweep the active profile sketch along a named path sketch.
Creates a swept boss/protrusion (Insert > Boss/Base > Sweep). Requires
two sketches in the active part: a closed profile sketch and an open
path sketch named by path. The profile is inferred as the sketch
that is not the path (in the usual "draw profile, draw path, sweep"
flow this is unambiguous). Optionally applies a constant twist along
the path.
Inputs: input_data (required). Returns: object
create_technical_drawingB
Create a technical drawing from a SolidWorks part or assembly.
Supports selecting a template, output path, sheet format, scale, and optional auto- population of standard views for documentation.
Inputs: input_data (required). Returns: object
create_templateC
Create a SolidWorks template file.
This tool creates templates for parts, assemblies, or drawings with standardized settings, materials, and configurations.
Inputs: input_data (required). Returns: object
delete_featureA
Delete a feature or sketch from the active model.
Deleting a parent feature also removes everything that depends on it — SolidWorks' normal cascade — so the response lists every feature that went, not just the one named.
Inputs: input_data (required). Returns: object
discover_solidworks_docsA
Discover and index SolidWorks COM and VBA documentation.
Creates a searchable index of all available COM objects, methods, properties, and VBA libraries for the installed SolidWorks version. Useful for building context for intelligent MCP tool selection and documentation queries.
Inputs: input_data. Returns: object
execute_macroA
Run a binary SolidWorks macro (.swp, or legacy .swb).
Calls ISldWorks::RunMacro2 on macro_path (or macro_file).
Only binary macros run: VBA source (.vb, .bas, plain text) is
rejected as invalid_input before anything reaches SolidWorks.
The macro must not be interactive (no MsgBox or user forms).
Inputs: input_data (required). Returns: object
execute_workflowC
Handle execute workflow.
This tool executes a series of automated steps in sequence, with support for parallel execution and error handling.
Inputs: input_data (required). Returns: object
exit_sketchA
Exit sketch editing mode.
Exits the current sketch editing mode and returns to the 3D modeling environment. This is required after completing sketch geometry before creating 3D features like extrusions, revolves, or sweeps.
Returns: dict[str, Any]: A dictionary containing the resulting values.
Example: ```python # Complete sketch workflow await create_sketch({"plane": "Top"}) await add_circle({"center_x": 0, "center_y": 0, "radius": 5})
result = await exit_sketch()
if result["status"] == "success":
print("Sketch completed, ready for 3D operations")
# Now ready for extrude, revolve, etc.
```
Note:
- Must be called after sketch geometry creation
- Required before executing 3D modeling operations
- Automatically validates sketch geometry
- Previous sketch remains selectable for feature creationInputs: no named parameters. Returns: object
export_dwgB
Export the current drawing to DWG format.
Converts SolidWorks drawings to DWG (Drawing) format, the native AutoCAD file format widely used in architecture, engineering, and construction industries for 2D technical drawings.
Inputs: input_data (required). Returns: object
export_flat_patternA
Export the active sheet-metal part's flat pattern to DXF or DWG.
Exports the flat-pattern geometry only (no bend lines or sketches),
for laser or waterjet cutting. A part without a sheet-metal body is
refused (not_found) and nothing is written.
Inputs: input_data (required). Returns: object
export_igesA
Export the current model to IGES format.
Exports SolidWorks models to IGES (Initial Graphics Exchange Specification) format, a legacy neutral CAD format still widely used for surface modeling and older CAD system compatibility.
Inputs: input_data (required). Returns: object
export_imageA
Export images of the current model.
Captures high-quality rendered images of SolidWorks models from various view orientations for documentation, presentations, marketing materials, and web publication.
Inputs: input_data (required). Returns: object
export_pdfA
Export the current model or drawing to PDF format.
Creates PDF documents from SolidWorks drawings, assemblies, or parts for documentation, sharing, review, and archival purposes. Essential for design review and manufacturing documentation.
Inputs: input_data (required). Returns: object
export_stepB
Export the current model to STEP format.
Exports SolidWorks models to STEP (Standard for the Exchange of Product Data) format, the preferred neutral CAD format for interoperability between different CAD systems and manufacturers.
Inputs: input_data (required). Returns: object
export_stlC
Export the current model to STL format.
Exports SolidWorks models to STL (Stereolithography) format, the standard file format for 3D printing, rapid prototyping, and additive manufacturing applications.
Inputs: input_data (required). Returns: object
extract_templateB
Extract template from existing SolidWorks model.
Inputs: input_data (required). Returns: object
generate_drawing_packageA
Create a complete A3 drawing of a part or assembly in one call.
A3 ISO frame with a filled title block (title, drawing number, material,
weight, drawn by/date, revision); front, plan, side and isometric views
in cells sized to fill the sheet at one standard scale (never stepped
down); model dimensions shown once and laid out in rows; bold view-name
captions; a NOTES block; nothing overlapping, checked on the read-back
geometry. Saves <drawing_number>.SLDDRW and a PDF.
The DWG NO. and TITLE are shrunk to fit their title-block boxes. For
smaller title-block text, pass title_block_text_height_mm (e.g.
3); a field that cannot fit even at 2 mm is reported as an
overlap, with that hint.
Inputs: input_data. Returns: object
generate_drawing_reportC
Generate comprehensive drawing analysis report.
Inputs: input_data (required). Returns: object
generate_vba_assembly_insertB
Generate VBA code for assembly component insertion.
Inputs: input_data (required). Returns: object
generate_vba_assembly_matesC
Generate VBA code for assembly mate creation.
Inputs: input_data (required). Returns: object
generate_vba_batch_exportB
Generate VBA code for batch file export operations.
Inputs: input_data (required). Returns: object
generate_vba_codeB
Generate VBA code for SolidWorks automation.
Analyzes operation description and generates appropriate VBA code with SolidWorks API calls, error handling, and documentation.
Inputs: input_data (required). Returns: object
generate_vba_drawing_dimensionsC
Generate VBA code for creating drawing dimensions.
Creates macro for various dimension types in drawings.
Inputs: input_data (required). Returns: object
generate_vba_drawing_viewsC
Generate VBA code for drawing view creation.
Inputs: input_data (required). Returns: object
generate_vba_extrusionC
Generate VBA code for complex extrusion operations.
Inputs: input_data (required). Returns: object
generate_vba_file_operationsC
Generate VBA code for file management operations.
Inputs: input_data (required). Returns: object
generate_vba_macro_recorderC
Generate VBA code using macro recording patterns.
Inputs: input_data (required). Returns: object
generate_vba_part_modelingC
Generate VBA code for complex part modeling operations.
Inputs: input_data (required). Returns: object
generate_vba_revolveC
Generate VBA code for complex revolve operations.
Inputs: input_data (required). Returns: object
get_custom_propertiesA
Read the active document's custom properties.
Read-only. File-level properties (the default) are what drawing title
blocks and BOMs usually link to; pass configuration for
configuration-specific ones.
Inputs: input_data. Returns: object
get_dimensionB
Get the value of a dimension from the current model.
Retrieves the current value of a named dimension from the active SolidWorks model. Dimensions can be from sketches, features, or global dimensions. Useful for parametric modeling and design validation.
Inputs: input_data (required). Returns: object
get_file_propertiesA
Get properties of the current SolidWorks file.
Retrieves comprehensive metadata and properties of the currently active SolidWorks document. Provides essential file information for document management, version control, and project organization.
Returns: dict[str, Any]: A dictionary containing the resulting values.
Example: ```python result = await get_file_properties()
if result["status"] == "success":
props = result["properties"]
# Basic file info
file_info = props["file_info"]
print(f"File: {file_info['file_name']}")
print(f"Size: {file_info['file_size']}")
print(f"Type: {file_info['file_type']}")
# Technical properties
tech = props["technical_properties"]
print(f"Material: {tech['material']}")
print(f"Units: {tech['units']}")
# Document info
doc = props["document_info"]
print(f"Author: {doc['author']}")
print(f"Description: {doc['description']}")
```
Note:
- Requires an active SolidWorks document
- Properties may vary based on document type
- Some properties may be empty if not set
- Technical properties depend on document configurationInputs: no named parameters. Returns: object
get_mass_propertiesD
Backward-compatible alias for calculate_mass_properties.
Inputs: input_data. Returns: object
get_materialA
Read the material assigned to the active part.
Read-only. Parts only (wrong_document_type otherwise).
Inputs: input_data. Returns: object
get_material_propertiesA
Get material properties of the current model.
This tool retrieves the material properties assigned to the model including density, elastic modulus, yield strength, etc.
Returns: dict[str, Any]: A dictionary containing the resulting values.
Inputs: no named parameters. Returns: object
get_model_infoA
Get metadata for the active SolidWorks document.
Returns a compact summary of the current model context that is useful for read-before- write LLM flows (document type, active configuration, and feature count).
Returns: dict[str, Any]: A dictionary containing the resulting values.
Inputs: no named parameters. Returns: object
get_selected_entitiesA
Report the faces/edges/vertices currently selected in the live SolidWorks UI.
Use this to find out exactly what the user has clicked on in SolidWorks before applying a feature (e.g. "chamfer the face I selected") instead of guessing from coordinates or a screenshot. Each entry includes enough geometry (bounding box, center, area/length, normal where applicable) to identify which face/edge is which, and the center coordinates can be fed straight into add_chamfer/add_fillet's "face:x,y,z" or coordinate edge_names syntax.
Returns:
dict[str, Any]: entities (list of selection descriptors) and
count on success.
Inputs: no named parameters. Returns: object
insert_bom_tableB
Insert a bill-of-materials table for an assembly view on the active drawing.
Inputs: input_data. Returns: object
insert_componentA
Insert a part or sub-assembly into the active assembly.
Call create_assembly first. Position is in millimetres from the
assembly origin.
The component file must contain solid geometry — SolidWorks silently refuses to insert an empty part, so a missing or empty component surfaces as an error rather than a fabricated success.
Inputs: input_data (required). Returns: object
insert_model_dimensionsA
Bring the model's dimensions into the active drawing's views.
Imports the model's "marked for drawing" dimensions view by view, each
dimension shown once on the sheet (a repeat in a later view is
deleted). Pictorial views (isometric, dimetric, trimetric) are skipped
unless named. Falls back to SolidWorks AutoDimension only when nothing
could be imported. SolidWorks places imported dimensions inside the
views, so run arrange_dimensions afterwards.
Inputs: input_data. Returns: object
list_available_materialsA
List materials in the installed SolidWorks material libraries.
Read-only; parses every .sldmat library SolidWorks is configured
to use. Filter with search (name or classification substring, e.g.
"steel" or "6061") and pass the exact name to
set_material.
Inputs: input_data. Returns: object
list_componentsA
List the top-level components of the active assembly.
Returns: dict[str, Any]: Status and the component instance names.
Inputs: no named parameters. Returns: object
list_configurationsA
List configuration names for the active SolidWorks document.
Returns all available configuration names so callers can select a stable target before invoking feature or export operations.
Returns: dict[str, Any]: A dictionary containing the resulting values.
Inputs: no named parameters. Returns: object
list_drawing_viewsA
List the views on the active drawing.
Read-only. Use it to find an existing view's name before targeting it
(e.g. with auto_center_marks). Errors when the active document is
not a drawing.
Returns:
dict[str, Any]: status, views (view names, sheet formats
excluded) and count.
Example:
python await list_drawing_views()
Inputs: no named parameters. Returns: object
list_featuresA
List feature-tree entries for the active SolidWorks document.
Useful for read-before-write workflows where the agent must inspect existing model structure before adding or editing downstream features.
Inputs: input_data (required). Returns: object
list_model_dimensionsA
List every dimension in the active part or assembly with its full name.
Read-only. Each entry's full_name (e.g. "D1@Sketch1") is the
name set_dimension / get_dimension accept, so this is how to
find and edit any driving dimension in an existing model. Pass
feature_name to list one feature's dimensions only.
Inputs: input_data. Returns: object
list_open_documentsA
List every SolidWorks document that is currently open.
Read-only — does not change which document is active. Use it to
discover what is open (an assembly plus its parts, a drawing plus its
model) before switching with activate_document.
Returns:
dict[str, Any]: status and documents — a list of
{title, path, type, is_active} entries, plus count.
Example:
python await list_open_documents()
Inputs: no named parameters. Returns: object
list_template_libraryB
List available templates from the template library.
This tool provides browsing and searching capabilities for the organization's template library.
Inputs: input_data (required). Returns: object
load_assemblyA
Load (open) a SolidWorks assembly file.
Convenience wrapper that opens a .sldasm file and makes it the active document. Provides a simpler alternative to open_model for assemblies.
Inputs: input_data (required). Returns: object
load_partA
Load (open) a SolidWorks part file.
Convenience wrapper that opens a .sldprt file and makes it the active document. Provides a simpler alternative to open_model for parts.
Inputs: input_data (required). Returns: object
lookup_api_interfaceC
List every indexed member (methods + properties) of a COM interface.
Inputs: input_data. Returns: object
lookup_api_methodA
Look up one SolidWorks API method or property by interface + name.
Confirms the member is indexed on that interface and returns its sibling members for context. The local index stores names only, so full signatures (parameters, return type) are not available here - use search_solidworks_api_help or help.solidworks.com for those.
Inputs: input_data. Returns: object
manage_design_tableB
Create or manage design tables for parametric modeling.
Design tables allow you to create multiple configurations of a part or assembly by driving parameters from an Excel spreadsheet.
Inputs: input_data (required). Returns: object
manage_file_propertiesB
Read, update, copy, move, rename, or delete file-related properties.
Uses the requested operation and file paths to manage SolidWorks file metadata or related file lifecycle tasks through the active adapter.
Inputs: input_data (required). Returns: object
measure_entitiesA
Measure faces, edges or vertices with SolidWorks' Measure tool.
One face gives its area and perimeter; one edge its length (and radius and diameter for an arc); two entities give the distance and angle between them. Entity coordinates are in metres. Clears the selection afterwards.
Inputs: input_data (required). Returns: object
mirror_featureA
Mirror solid bodies or features about a plane.
Selects the named sources and the mirror plane, then mirrors them. The mirror is verified by comparing model volume before and after: SolidWorks can report a feature even when it mirrored nothing, so a volume that did not grow is reported as an error rather than a false success.
Inputs: input_data (required). Returns: object
open_modelA
Open a SolidWorks model (part, assembly, or drawing).
Opens an existing SolidWorks file and makes it the active document for further operations. Supports all standard SolidWorks file formats and provides detailed model information upon successful opening.
Inputs: input_data (required). Returns: object
optimize_macroC
Optimize an existing macro for better performance and reliability.
This tool analyzes and suggests improvements to existing macro code.
Inputs: input_data (required). Returns: object
optimize_performanceC
Optimize SolidWorks performance settings.
This tool analyzes the current SolidWorks configuration and suggests or applies performance optimizations.
Inputs: input_data (required). Returns: object
pack_and_go_assemblyA
Copy a SolidWorks assembly and all its referenced parts to a self-contained folder.
Enumerates every component referenced by the active assembly, copies the
assembly and each part into target_dir, then rewrites the stored
component paths inside the copied assembly so it opens without any
dependency on the original file locations — equivalent to the SolidWorks
GUI Pack-and-Go operation.
Inputs: input_data. Returns: object
pattern_circularA
Pattern features around an axis.
Selects the named axis and features, then creates a circular pattern. The pattern is verified by comparing model volume before and after: SolidWorks can report a feature even when it patterned nothing, so a volume that did not grow is reported as an error rather than a false success.
Inputs: input_data (required). Returns: object
rebuild_modelA
Force a rebuild of the active model and report what is wrong.
Use after programmatic edits (set_dimension, feature edits) to
confirm the model rebuilds cleanly. When features fail, the response
is an error whose data.errors names each failing feature with its
SolidWorks error code, the features/sketches it depends on, and a
concrete hint for fixing it. Warnings alone still succeed.
Inputs: input_data. Returns: object
rename_featureA
Rename a feature on the feature tree.
SolidWorks silently refuses a rename onto a name another feature already uses, so the new name is read back and a mismatch is reported as an error rather than a quiet success. Renaming a feature to its current name is a no-op success.
Inputs: input_data (required). Returns: object
save_asB
Save the current model to a new location or format.
Saves the currently active SolidWorks document with a new filename, location, or file format. Supports multiple export formats for interoperability with other CAD systems and manufacturing workflows.
Inputs: input_data (required). Returns: object
save_assemblyA
Save the active SolidWorks assembly document.
Convenience wrapper that saves the currently active assembly. If no file_path is provided, saves to the existing location. Otherwise, saves as a new file.
Inputs: input_data. Returns: object
save_body_as_partA
Extract one solid body from the active multibody part to a new file.
Runs SolidWorks' Save Bodies on a single named body, writing a
standalone part to file_path. The body is matched by name against
the active part's solid bodies; the response lists every solid body
found, so an unknown name reports the real options. Success is
confirmed by the file existing on disk afterwards.
Inputs: input_data (required). Returns: object
save_fileA
Save the current SolidWorks model.
Saves the currently active SolidWorks document to its existing file location. Essential for preserving work and maintaining document version control. Handles both modified and unmodified documents based on force_save setting.
Inputs: input_data (required). Returns: object
save_partB
Save the active SolidWorks part document.
Convenience wrapper that saves the currently active part. If no file_path is provided, saves to the existing location. Otherwise, saves as a new file.
Inputs: input_data. Returns: object
save_to_template_libraryB
Save template to the organization's template library.
This tool manages a centralized template library with categorization and version control.
Inputs: input_data (required). Returns: object
search_solidworks_api_helpA
Search SolidWorks API help index and return coherent guidance.
This tool helps when the LLM gets stuck by mapping user intent to discovered COM members and practical MCP workflow guidance.
Inputs: input_data. Returns: object
select_face_edgesA
Select every edge of one face of the active part (multi-select).
Identify the face with exactly one of point (a point on it, mm),
side (top/bottom/front/back/right/left or
+X..-Z; top=+Y, front=+Z, right=+X as in SolidWorks' default
views - the furthest flat face facing that way) or plane (a
reference plane name - the body face lying on it). edge_type
narrows to linear or circular edges (e.g. hole rims).
The edges become the live SolidWorks selection, so the next
add_chamfer / add_fillet call with an empty edge_names
acts on exactly them. Anything that changes the selection in between
(including the user clicking in SolidWorks) changes what is used.
Inputs: input_data (required). Returns: object
select_featureA
Select a named feature, sketch, plane or component.
Replaces the current selection by default; pass append: true to
add to it (e.g. to select several features in turn). A name that
cannot be selected is an error, never a quiet success.
Inputs: input_data (required). Returns: object
set_custom_propertyA
Create or overwrite one text custom property on the active document.
Typical names: PartNo, Description, DrawnBy, Revision.
The value is read back after writing, so success means it was stored.
Inputs: input_data (required). Returns: object
set_dimensionA
Set the value of a dimension in the current model.
This tool modifies the value of a named dimension and rebuilds the model. Use this to parametrically modify your model dimensions.
Inputs: input_data (required). Returns: object
set_materialA
Assign a library material to the active part.
The material drives mass properties (get_mass_properties) and what
a title block's Material field shows. The name must match the library
exactly; find it with list_available_materials. The material is
read back after assignment, so success means it really applied.
Inputs: input_data (required). Returns: object
set_sheet_scaleB
Set the active drawing sheet's scale; views using the sheet scale follow.
Inputs: input_data. Returns: object
set_unitsA
Set the active document's linear unit system.
Accepts mm, cm, m, in or ft (plus common aliases
such as inch or millimeters). The setting is applied and then
read back from the document; if the readback disagrees the tool
reports an error rather than a false success.
Inputs: input_data (required). Returns: object
sketch_circular_patternA
Create a circular pattern of sketch entities around the sketch origin.
Generates a circular array of selected sketch entities. The
rotation axis is always the sketch origin — SOLIDWORKS'
CreateCircularSketchStepAndRepeat does not expose a
pattern-centre parameter. Position the seed entity at the
desired radius from the origin; the pattern derives its radius
from the seed's centre.
Essential for creating bolt circles, gear teeth, and other radially symmetric features around the sketch origin.
Inputs: input_data (required). Returns: object
sketch_linear_patternB
Create a linear pattern of sketch entities.
Generates a linear array of selected sketch entities in specified direction(s) with defined spacing and count. Essential for creating hole patterns, vent grilles, and repetitive geometric features.
Inputs: input_data (required). Returns: object
sketch_mirrorA
Mirror sketch entities about a centerline.
Creates mirrored copies of selected sketch entities about a reference centerline, maintaining symmetrical design relationships. Essential for creating symmetric parts and reducing modeling time.
Inputs: input_data (required). Returns: object
sketch_offsetA
Create an offset of sketch entities.
Generates offset copies of selected sketch entities at a specified distance, maintaining the original entity shape while creating parallel geometry. Essential for wall thickness, machining allowances, and clearance features.
Inputs: input_data (required). Returns: object
sketch_tutorial_simple_holeA
Tutorial: Create a simple circular hole sketch.
Demonstrates complete workflow for creating a basic hole sketch that can be used for through-holes, counterbores, or other circular features. This tutorial shows the fundamental sketch-to-feature process.
Returns: dict[str, Any]: A dictionary containing the resulting values.
Example: ```python # Learn basic sketching workflow result = await sketch_tutorial_simple_hole()
if result["status"] == "success":
print("Tutorial completed successfully!")
print("Steps performed:")
for step in result["steps"]:
print(f" - {step}")
print(f"Next: {result['next_steps']}")
```
Workflow:
1. Creates sketch on Top plane
2. Adds 2.5mm radius circle at origin (5mm diameter hole)
3. Exits sketch editing mode
4. Returns sketch ready for extrusion or cutting operations
Note:
- Demonstrates complete sketch creation workflow
- Creates standard 5mm diameter hole geometry
- Result is ready for negative extrusion to create hole
- Perfect starting point for learning SolidWorks automationInputs: no named parameters. Returns: object
start_macro_recordingA
Start recording a SolidWorks macro.
This tool initiates macro recording to capture user actions for later playback and automation.
Inputs: input_data (required). Returns: object
stop_macro_recordingA
Stop macro recording and save the recorded macro.
This tool stops the active recording session and saves the generated macro code to a file.
Inputs: input_data (required). Returns: object
suppress_featureA
Suppress or unsuppress a feature in the active model.
Suppressing rolls a feature and its children out of the model without deleting it — the reversible way to turn off a feature that is causing trouble.
Inputs: input_data (required). Returns: object
tutorial_simple_holeA
Create a simple hole as a guided tutorial workflow.
Builds a sketch circle on the selected plane, exits the sketch, and creates a cut feature using the supplied diameter and depth. Useful as an end-to-end example of a basic subtractive feature.
Inputs: input_data (required). Returns: object
undoA
Undo the last operations in the active model.
SolidWorks accepts an undo with nothing left to undo without complaining, so the response reports whether the feature tree actually changed rather than assuming it did.
Inputs: input_data. Returns: object
update_sheet_formatC
Update the sheet format and title block information.
Applies drawing templates and updates title block fields with project information, revision data, and drawing metadata. Essential for standardized documentation and drawing control.
Inputs: input_data (required). Returns: object
update_title_blockB
Update title block fields for the active drawing.
Applies drawing metadata such as title, drawing number, and approval fields to keep documentation aligned with standards.
Inputs: input_data (required). Returns: object
validate_drawing_completenessC
Validate drawing completeness for production readiness.
Inputs: input_data (required). Returns: object
verify_modelA
Check the active part or assembly against what you meant to build.
Call this as the last step of a build (and whenever a step looks suspicious). A modelling tool returning success does not prove the geometry is right; this reads the model back and compares it with your expectations. Give only the expectations you know; each becomes one check. With no expectations it just reports what it measured.
Units: mm, mm³ and kg. bounding_box_mm is the overall size
[x, y, z] in model axes (a sketch on the Front Plane extrudes
along z). Widen relative_tolerance when your hand calculation
ignores fillets or chamfers, and length_tolerance_mm when
measured.bounding_box_method is assembly_box (SolidWorks'
assembly box can be slightly larger than the parts). Mass depends on
the assigned material; without one SolidWorks uses a default density.
Each check reports expected, actual, tolerance and
passed: true, false, or null when the value could not
be measured (never counted as a pass). verdict is pass,
fail, inconclusive (nothing failed, something unmeasured) or
report_only. status stays success when the model does not
match: the tool worked, the model is what failed.
Inputs: input_data. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 154 tools
Many tools are functionally indistinguishable or duplicate aliases: get_mass_properties is literally a 'backward-compatible alias' for calculate_mass_properties, start_macro_recording/stop_macro_recording duplicate automation_start_macro_recording/automation_stop_macro_recording, batch_process_files vs batch_file_operations vs batch_export vs convert_file_format heavily overlap, and create_drawing / create_technical_drawing / generate_drawing_package all claim to produce drawings. add_dimension vs add_sketch_dimension vs insert_model_dimensions vs auto_dimension_view and the seven analyze_drawing_* / check_drawing_* tools are also hard to separate. Only the core sketching and modeling primitives (add_line, add_circle, exit_sketch, create_sketch) have clearly distinct purposes.
The dominant pattern is snake_case verb_noun (create_part, export_step, add_fillet), which is good, but there are notable deviations: adjective-suffixed names like analyze_drawing_comprehensive and analyze_geometry ('Handle analyze geometry'), prefix variants automation_start_macro_recording vs start_macro_recording, noun-first tutorial names (sketch_tutorial_simple_hole vs tutorial_simple_hole), and several bare/ambiguous verbs (undo, save_as). The parallel generate_vba_* family is consistent, but the duplication of naming across prefixes suggests two conventions merged.
154 tools is an extreme mismatch for a single MCP server — roughly ten times a well-scoped surface. Whole clusters (11 generate_vba_* tools, 9 analyze_drawing_* tools, a macro recording API duplicated twice, a template library suite, and an API-doc lookup suite) could be collapsed or moved out. Many of these tools clearly do not earn their individual place.
Coverage of the CAD lifecycle is genuinely broad: document creation/open/save, sketching primitives, boss and cut features, fillets/chamfers/patterns/mirror, assemblies with mates and interference checks, drawings with views, dimensions, GD&T and BOM, mass properties, and many export formats. Minor gaps exist — mating is limited to reference planes/axes, angled reference planes are unsupported, and no couple-level assembly mirror, but no major workflow dead end.
Maintenance
Related MCP Connectors
MCP server for progressive tool usage at any scale (see https://klavis.ai)
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP bridge server for SolidWorks that enables AI assistants to control SolidWorks programmatically via COM automation.MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that drives SolidWorks 2023+ on Windows, exposing CAD operations like sketching, extrusions, assemblies, and exports through tools for AI assistants like Kimi and Claude.1-
- AlicenseNot gradedqualityBmaintenanceMCP server for controlling a live SOLIDWORKS session through the Windows COM API, enabling native CAD operations like sketches, features, bodies, views, and exports, plus transactional plans and vectorization.10MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that controls SolidWorks via COM, enabling CAD automation with 138 tools for sketching, 3D features, assemblies, drawings, and more.MIT