Content
# SolidWorks MCP Server 🔧
> Automate SolidWorks using natural language through Claude AI and the Model Context Protocol (MCP)
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://www.solidworks.com/)
[](https://modelcontextprotocol.io/)
---
## 🎯 What is This?
**SolidWorks MCP Server** is a production-ready [Model Context Protocol](https://modelcontextprotocol.io/) server that lets Claude AI control SolidWorks through natural language. Instead of manually clicking through menus, you simply tell Claude what to design — and it builds it for you.
**Example prompts you can use:**
- *"Create a new part, draw a circle with radius 30mm and extrude it 15mm"*
- *"Add a fillet of 2mm to all edges"*
- *"Draw a hexagon and cut extrude it 10mm"*
- *"List all features in the current part"*
---
## ✨ Features
- ✅ **22 Tools** covering parts, sketches, features, and utilities
- ✅ **SolidWorks 2023–2025 Compatible** with version-aware API fallbacks
- ✅ **Auto-detects SolidWorks** installation via Windows registry
- ✅ **Multi-unit support** — mm, cm, inch, meter, foot
- ✅ **Modular architecture** — clean, extensible Python package
- ✅ **Robust error handling** — cascading fallback chains for COM API
- ✅ **JSON configuration** — easy to customize without touching code
- ✅ **Comprehensive logging** — full debug output for troubleshooting
---
## 🛠️ Available Tools
| Category | Tool | Description |
|----------|------|-------------|
| **Connection** | `connect_solidworks` | Connect to running SolidWorks instance |
| **Connection** | `get_solidworks_info` | Get version and installation info |
| **Documents** | `create_new_part` | Create a new part document |
| **Documents** | `create_new_assembly` | Create a new assembly document |
| **Documents** | `open_document` | Open an existing SolidWorks file |
| **Documents** | `close_document` | Close the active document |
| **Documents** | `save_document` | Save the active document |
| **Documents** | `list_open_documents` | List all open documents |
| **Sketches** | `create_sketch` | Create a sketch on a plane (Front/Top/Right) |
| **Sketches** | `close_sketch` | Exit the active sketch |
| **Sketches** | `draw_circle` | Draw a circle by center and radius |
| **Sketches** | `draw_rectangle` | Draw a rectangle by two corners |
| **Sketches** | `draw_line` | Draw a line between two points |
| **Sketches** | `draw_arc` | Draw an arc by center and angles |
| **Sketches** | `draw_polygon` | Draw a regular polygon (triangle, hex, etc.) |
| **Features** | `extrude_sketch` | Boss-extrude the active sketch |
| **Features** | `cut_extrude` | Cut-extrude to remove material |
| **Features** | `fillet_edges` | Add fillets to selected edges |
| **Features** | `chamfer_edges` | Add chamfers to selected edges |
| **Features** | `list_features` | List all features in the model |
| **Utilities** | `set_units` | Change default unit (mm/inch/cm/m/ft) |
| **Utilities** | `execute_python` | Execute custom Python code in SW context |
---
## 📋 Requirements
- **OS:** Windows 10 or Windows 11
- **SolidWorks:** 2023, 2024, or 2025 (must be installed and licensed)
- **Python:** 3.10 or higher
- **Claude:** Claude Desktop app or Claude Code
---
## ⚡ Quick Start
### 1. Clone the Repository
```bash
git clone https://github.com/alisamsam/solidworks-mcp.git
cd solidworks-mcp
```
### 2. Install Dependencies
```bash
pip install -r requirements.txt
```
### 3. Configure Claude Desktop
Add the following to your `claude_desktop_config.json`:
**Location:** `C:\Users\YOUR_NAME\AppData\Roaming\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"solidworks": {
"command": "python",
"args": ["C:\\path\\to\\solidworks-mcp\\solidworks_mcp_server.py"]
}
}
}
```
### 4. Launch
1. Open **SolidWorks** first
2. Restart **Claude Desktop**
3. In Claude, type: *"Connect to SolidWorks"*
4. Start designing! 🎉
---
## 📁 Project Structure
```
solidworks-mcp/
├── solidworks_mcp_server.py # Entry point
├── solidworks_mcp/ # Main package
│ ├── __init__.py # Package exports (v3.0.0)
│ ├── server.py # MCP server & tool definitions
│ ├── config.py # Configuration management
│ ├── config.json # Default settings
│ ├── constants.py # SolidWorks constants & enums
│ ├── automation/ # Core automation modules
│ │ ├── base.py # Connection management
│ │ ├── documents.py # Document operations
│ │ ├── sketches.py # Sketch operations
│ │ └── features.py # Feature operations (SW 2025 fixed)
│ └── utils/ # Utility modules
│ ├── units.py # Unit conversion system
│ └── sw_finder.py # Auto-detect SolidWorks
├── requirements.txt
├── .gitignore
└── DEVELOPMENT_ROADMAP.md # Future development plan
```
---
## ⚙️ Configuration
Edit `solidworks_mcp/config.json` to customize behavior:
```json
{
"exe_path": "auto",
"default_unit": "mm",
"startup_timeout": 120,
"log_level": "INFO",
"default_extrude_depth": 10.0,
"default_fillet_radius": 2.0
}
```
| Setting | Default | Description |
|---------|---------|-------------|
| `exe_path` | `"auto"` | Path to SLDWORKS.exe or auto-detect |
| `default_unit` | `"mm"` | Default unit for all dimensions |
| `startup_timeout` | `120` | Seconds to wait for SW startup |
| `log_level` | `"INFO"` | Logging verbosity |
---
## 🔧 SolidWorks 2025 Compatibility
This server includes special handling for SolidWorks 2025 API changes:
- **Extrusion fallback chain:** `FeatureExtrusion3` → `FeatureExtrusion2` → `FeatureBossSimple`
- **Safe property access** for `feat.Name`, `feat.GetTypeName2()`, `IsSuppressed2()`
- **stdout capture** fix for `execute_python` tool
- **Registry-based** SolidWorks auto-detection
---
## 🤝 Contributing
Contributions are welcome! Please:
1. Fork the repository
2. Create a feature branch: `git checkout -b feature/my-feature`
3. Commit your changes: `git commit -m "Add my feature"`
4. Push to the branch: `git push origin feature/my-feature`
5. Open a Pull Request
---
## 📄 License
This project is licensed under the **MIT License** — see the [LICENSE](LICENSE) file for details.
---
## 👤 Author
**Samsaam Ali Baig**
- GitHub: [@alisamsam](https://github.com/alisamsam)
---
## 🙏 Acknowledgements
- [Anthropic](https://anthropic.com) for Claude AI and the MCP framework
- [SolidWorks](https://www.solidworks.com) COM API documentation
- Inspired by [ros2-claude-code-template](https://github.com/harunkurt/ros2-claude-code-template) by Harun KURT
---
⭐ **If this project helps you, please give it a star!**
MCP Config
Below is the configuration for this MCP Server. You can copy it directly to Cursor or other MCP clients.
mcp.json
Connection Info
You Might Also Like
everything-claude-code
Complete Claude Code configuration collection - agents, skills, hooks,...
markitdown
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
firecrawl
Firecrawl MCP Server enables web scraping, crawling, and content extraction.
cc-switch
All-in-One Assistant for Claude Code, Codex & Gemini CLI across platforms.
servers
Model Context Protocol Servers
servers
Model Context Protocol Servers