solidworks-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SOLIDWORKS_MCP_CONFIG | No | Path to the TOML configuration file. If unset, the server looks for `solidworks-mcp.toml` in its working directory, then `%APPDATA%\solidworks-mcp\config.toml`. | |
| SOLIDWORKS_MCP_ALLOW_MACRO | No | Set to `1` to enable the `execute_solidworks_macro` tool, or `0` to disable it. Overrides the `[macro] enabled` setting in the config file. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_active_document_infoA | Name, path and type of the active SolidWorks document, and the SolidWorks version. Starts SolidWorks if it is not running. |
| get_mass_propertiesA | Mass, volume, surface area and centre of mass of the active document (part or assembly). |
| get_feature_treeA | List of the features of the active document (design tree), with the type of each. |
| get_bounding_boxA | Bounding box of the solid bodies of the active part: min/max on X, Y, Z and overall size, in mm. |
| check_modelA | Checks the active part for rebuild errors, multiple bodies, and geometry faults. |
| get_screenshotA | PNG image of the active model, to check the result visually. Changes the view orientation (unless view='current') and zooms to fit; the model is not modified. |
| new_partB | Creates a new empty part from the default SolidWorks part template. |
| save_documentA | Saves the active document. With 'path' (e.g. C:\projects\part.SLDPRT, .step, .stl, .pdf...) saves/exports to that file: the format is taken from the extension. When the user has set a projects folder, relative paths are confined to it and missing folders inside it are created. If the target file already exists, overwrite must be True or the save is rejected. |
| export_documentA | Exports the active document to exchange formats, next to the document or in 'directory'. Existing files with the same name are replaced. formats: e.g. ["step", "stl"]; omit to use the formats set by the user in the configuration (STEP by default). Supported: step, stp, iges, igs, x_t, stl, 3mf, pdf, png. directory: absolute, or relative to the folder of the document; "{format}" is replaced by the format name. Omit to use the configured directory. Created if missing. Files are named after the document. The open document is left untouched. |
| new_assemblyB | Creates a new empty assembly in SolidWorks using the default or given assembly template. |
| insert_componentB | Inserts a part or sub-assembly component into the active assembly at (x, y, z) mm. |
| add_mateA | Adds a geometric mate constraint between two components in the active assembly. Specify entities either by 3D points [x, y, z] mm in assembly coordinates lying on the faces/edges, or by entity names (e.g. 'Plane1@Part1-1@Assembly1'). Supported mate types: coincident, concentric, parallel, perpendicular, tangent, distance, angle. |
| check_interferenceA | Checks the active assembly for volumetric interferences (collisions) between components. |
| new_drawingB | Creates a new 2D drawing from the currently active part or assembly document. Generates 3 standard 3rd-angle projection views (Front, Top, Right) and an Isometric view. |
| insert_model_dimensionsA | Inserts model dimensions marked for drawing across all views in the active 2D drawing. |
| list_configurationsA | Lists all configurations in the active part or assembly document, indicating the active one. |
| activate_configurationA | Activates an existing configuration by name in the active part or assembly. |
| add_configurationB | Adds a new configuration to the active part or assembly document and activates it. |
| select_planeA | Selects a plane: one of the base planes "front" (XY), "top" (XZ), "right" (YZ), which works with SolidWorks in any language, or a plane by name (e.g. one made by create_plane). |
| select_face_at_pointA | Selects the face of the part passing through the point (x, y, z) in mm, model coordinates. Use get_bounding_box to find the coordinates of the outer faces. |
| select_edge_at_pointA | Selects the edge of the part passing through the point (x, y, z) in mm, model coordinates. append=True adds it to the current selection. Tools such as fillet and chamfer take the points directly, so this is mostly useful to check that a point really lies on an edge. |
| start_sketchA | Opens a new sketch on the selected plane or face. |
| convert_pointA | Converts a point between model coordinates and the coordinates of the open sketch. to="sketch": (x, y, z) is a model point, returns its sketch (x, y) and its distance from the sketch plane. to="model": (x, y) is a sketch point (z ignored), returns the model point. |
| end_sketchA | Closes the open sketch without creating a feature. |
| sketch_rectangleA | Draws a rectangle in the open sketch, given centre and size (mm). |
| sketch_circleA | Draws a circle in the open sketch, given centre and DIAMETER (mm). |
| sketch_lineA | Draws a line in the open sketch between two points (mm). construction=True creates a construction line (e.g. the axis of a revolve). |
| sketch_polygonB | Draws a regular polygon (e.g. hexagon: sides=6) inscribed in a circle of the given diameter (mm). |
| sketch_arcC | Draws an arc given centre, start point and end point (mm). |
| sketch_slotA | Draws a straight slot (two half circles joined by lines) in the open sketch, given the centres of its two ends and its width (mm). |
| sketch_ellipseA | Draws an ellipse in the open sketch, given its two diameters (mm). rotation_deg turns the major axis counterclockwise from the sketch X axis. |
| sketch_splineA | Draws a smooth spline through the points [[x, y], ...] of the open sketch (mm, at least 2). Repeat the first point at the end to close it. |
| sketch_filletA | Rounds the corner of the open sketch at (x, y) (the point where two entities meet) with the given radius (mm). |
| sketch_offsetA | Offsets the chain of connected sketch entities passing through (x, y) by distance_mm. reverse=True offsets to the other side; both_sides=True offsets to both sides. |
| convert_entitiesA | Projects edges of the model into the open sketch (Convert Entities): all the edges of each face with a point in face_points, and each edge with a point in edge_points ([x, y, z] in mm, model coordinates). The new sketch entities follow the model when it changes. |
| fully_define_sketchA | Adds the relations and dimensions (measured from the sketch origin) that the open sketch needs to be fully defined, so it keeps its shape and can be edited later through its dimensions (get_dimensions / set_dimension). |
| add_sketch_dimensionA | Adds a driving dimension to the open sketch and sets it to 'value' (mm, or degrees for angles). (x, y): a point on the entity (sketch coordinates). One entity: length of a line, diameter of a circle, radius of an arc. With (x2, y2) on a second entity: distance between them, or the angle between two lines. (text_x, text_y) places the text (default: next to the entity). |
| add_sketch_relationB | Adds a geometric relation between sketch entities of the open sketch. points: [[x, y], ...] one point (sketch coordinates) on each entity involved. vertex: optional, one flag per point; true picks the sketch POINT there (an end point or centre) instead of the line/arc, as needed by coincident and midpoint (point first). |
| extrudeA | Extrudes the last sketch as a solid (closing it automatically if open). end_condition: blind = depth_mm on one side; midplane = depth_mm split on both sides; through_all = through the existing solid; up_to_surface = up to the face through up_to_point ([x, y, z] in mm, model coordinates). depth2_mm > 0 also extrudes that far in the opposite direction (not with midplane). draft_angle_deg tapers the sides (inwards, or outwards with draft_outward=True). thin_wall_mm > 0 makes a thin wall of that thickness along the profile instead of filling it; open profiles (e.g. a chain of lines) are then allowed. merge=False keeps the result as a separate body. |
| cut_extrudeA | Extruded cut (holes, pockets) with the last sketch. through_all=True goes right through (depth_mm ignored). reverse flips the direction; flip_side removes the material OUTSIDE the profile. up_to_point ([x, y, z] in mm on a face) cuts up to that face instead. depth2_mm > 0 also cuts that far in the opposite direction. draft_angle_deg tapers the walls (inwards, or outwards with draft_outward=True). |
| revolveA | Revolves the last sketch around the construction line it contains (create it with sketch_line construction=True). cut=True removes material instead of adding it. |
| ribA | Rib from the last sketch: usually an open line between walls of the part, drawn on a plane through the middle of the rib. thickness_mm is the total thickness, centred on the sketch unless one_side=True. direction: parallel = material grows in the sketch plane, normal = perpendicular to it. flip_material flips the side towards which material is added if the rib does not reach the part. |
| sweepA | Sweeps a profile along a path (pipes, springs, handles, grooves). path_sketch: name of the sketch with the path (open or closed curve). profile_sketch: name of the closed profile sketch, drawn on a plane crossing the start of the path; or leave it empty and give circle_diameter_mm for a round section. cut=True removes material instead of adding it. Close the sketches first (end_sketch). |
| loftA | Loft through two or more closed profiles drawn on different planes (see create_plane), in order. guide_sketches: optional guide curves touching every profile. cut=True removes material instead of adding it. Close the sketches first (end_sketch). |
| create_planeA | Creates a reference plane parallel to another one, offset_mm away (e.g. for loft profiles). reference: "front", "top", "right" or the name of a plane; or give face_point ([x, y, z] mm on a planar face) to offset from that face. flip=True puts it on the other side. Returns its name, to use with select_plane. |
| filletA | Rounds edges with a constant radius. edge_points: a point on each edge ([x, y, z] in mm, model coordinates); face_points: a point on each face whose edges are all rounded. Edges tangent to the chosen ones are rounded too. |
| chamferA | Bevels edges. edge_points / face_points as for fillet. Default: distance_mm at angle_deg (45 = equal sides). With distance2_mm > 0 the two sides are distance_mm and distance2_mm (angle ignored); flip swaps the sides of an unequal chamfer. |
| shellA | Hollows the part leaving walls thickness_mm thick. open_face_points: a point on each face to remove ([x, y, z] in mm), e.g. the top of a box; none gives a closed hollow part. outward=True adds the walls outside the current surfaces. |
| linear_patternA | Repeats features (names from get_feature_tree) in a row along a model axis: count copies in total (original included), spacing_mm apart, towards + (or - with reverse). direction2/count2/spacing2_mm add a second direction for a grid. |
| circular_patternA | Repeats features (names from get_feature_tree) around an axis: count copies in total (original included), spread evenly over angle_deg. axis: a model axis through the origin, or "edge" to turn around the circular or straight edge through axis_edge_point ([x, y, z] in mm, e.g. on the rim of a central hole). |
| mirrorB | Mirrors features (names from get_feature_tree) about a plane: "front", "top", "right", a plane name, or the planar face through face_point ([x, y, z] in mm). |
| holeA | Drills round holes into a planar face, perpendicular to it. centers: the hole centres [[x, y, z], ...] in mm, model coordinates, all on the SAME face (the face is found through the first one). size: metric screw size ("M3" ... "M24") with fit: close / normal / loose clearance hole (ISO 273) or tapped = tap drill diameter (no thread is modelled); or give diameter_mm. depth_mm or through_all=True. style: counterbore / countersink for socket head screws; with a metric size their dimensions are standard (ISO 4762 / ISO 10642, 90 degrees), otherwise give them. |
| base_flangeB | Creates a sheet metal base flange / tab from the open or selected sketch. |
| edge_flangeB | Creates a sheet metal edge flange on the selected or indicated edge. |
| export_flat_patternA | Exports the flat pattern of the active sheet metal part to a DXF file. Existing files with the same name are replaced. path: absolute path or relative filename for the DXF export. Omit to export next to the part. |
| list_materialsA | Materials available in the SolidWorks material databases, filtered by 'search' (part of the name or category, e.g. "6061", "steel", "abs"). Use the exact name with set_material. |
| set_materialA | Assigns a material to the active part (exact name, see list_materials), so that get_mass_properties gives the real mass. |
| get_dimensionsA | Dimensions of a feature or sketch (or of the whole part when 'feature' is empty), with their full names (e.g. D1@Boss-Extrude1) and values in mm or degrees, for set_dimension. |
| set_dimensionA | Changes a dimension (name from get_dimensions, e.g. "D1@Boss-Extrude1") to 'value' (mm, degrees for angles, a plain number for counts such as pattern instances) and rebuilds. |
| suppress_featureA | Suppresses (temporarily removes from the model, keeping it in the tree) or, with suppressed=False, restores a feature. |
| get_equationsB | Global variables and equations of the active document, with their index. |
| add_equationA | Adds a global variable or an equation and rebuilds. Names go in double quotes, e.g. '"width" = 80' (global variable), '"D1@Boss-Extrude1" = "width" / 2' (drives a dimension). Numbers without units take the document units. |
| delete_equationB | Deletes the equation with that index (see get_equations). |
| get_custom_propertiesB | Custom properties of the active document (description, part number, ...), as used in BOMs and title blocks. |
| set_custom_propertyA | Sets a custom property of the active document (created if missing). Replaces the current value. An empty value deletes it. |
| measureA | Measures one entity (area, length, diameter...) or the distance and angle between two, picked by a point lying on each ([x, y, z] in mm, model coordinates). Replaces the current selection. |
| undoC | Undoes the last operations in SolidWorks. |
| delete_featureB | Deletes a feature from the tree by name (see get_feature_tree). |
| zoom_to_fitA | Fits the view to show the whole model. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| design_part | Guidance and recommended workflow for modeling a 3D part in SolidWorks |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| resource_active_info | Active SolidWorks document information and version |
| resource_feature_tree | Active SolidWorks document feature tree |
| resource_materials | Available SolidWorks material databases and categories |
TDQS
Scored across 69 tools
Most tools have clearly distinct purposes across sketching, features, assemblies, drawings, and metadata. There is minor overlap between save_document/export_document and some dimension-related tools, but the descriptions generally make boundaries clear.
The set is overwhelmingly snake_case and operation-oriented, with predictable prefixes such as get_, add_, select_, and sketch_. A few names are single verbs or noun-like sheet-metal operations, but the convention remains readable and mostly consistent.
Although SolidWorks is a broad domain, 69 tools is a very heavy surface for an agent to manage and select from reliably. Many operations are justified, but the set exceeds a practical MCP scope and likely needs grouping or progressive disclosure.
Coverage is strong across parts, assemblies, drawings, sketches, features, sheet metal, configurations, equations, properties, and export. Minor lifecycle gaps remain, such as opening/closing existing documents, deleting or editing mates/configuration entries, and moving existing assembly components.