Solidworks MCP
Servidor MCP para SolidWorks 2021 - crie desenhos de engenharia a partir de qualquer cliente MCP (Claude Code, Codex, Gemini CLI, Cursor...) via COM
Documentação
solidworks-mcp
English | 繁體中文
Um servidor MCP que permite ao Claude — ou a qualquer cliente MCP que fale Streamable HTTP — controlar o SolidWorks 2021 para criar desenhos técnicos pela sua rede local, por meio da API COM pywin32.
Abra uma peça, gere vistas padrão em primeiro diedro, adicione cotas e balões, insira uma tabela de BOM e exporte para PDF — tudo a partir de uma conversa com o Claude.
Recursos
21 ferramentas em 5 categorias:
| Categoria | Ferramentas |
|---|---|
| Operações de arquivo (3) | abrir / fechar / listar documentos |
| Vistas de desenho (6) | criar desenho a partir de modelo, vistas padrão, 3 vistas alinhadas em primeiro diedro, vista em corte, vista de detalhe, vista com orientação personalizada |
| Anotação (6) | importar cotas do modelo, inspecionar arestas, adicionar cotas (linear / diâmetro / raio / ângulo), cotas de referência automáticas, balões, tabela de BOM |
| Exportar (4) | capturar desenho (JPEG), capturar vistas do modelo, salvar como PDF, salvar desenho |
| Análise de montagem (2) | ler restrições de encaixe, ler árvore de recursos |
Consulte a referência de ferramentas completa abaixo.
Arquitetura
Claude Code ◄── Streamable HTTP ──► src/server.py (FastMCP)
│
async tool handlers
│
sw.execute(func) ← asyncio + Future
│
COM Worker Thread (STA, singleton)
│
pywin32 COM → SolidWorks 2021
O COM do SolidWorks deve ser controlado a partir de uma única thread STA. Todos os manipuladores de ferramentas são assíncronos e enviam suas chamadas COM para uma thread de trabalho dedicada, com ponte de retorno via concurrent.futures.Future.
Requisitos
- Host com Windows 10/11 e SolidWorks 2021 instalado
- Python 3.10+
- Um cliente MCP que suporte Streamable HTTP (por exemplo, Claude Code, Codex CLI, Gemini CLI, Cursor — consulte Clientes MCP compatíveis) na mesma LAN confiável
- Opcional: um modelo de desenho (
.drwdot) e uma pasta compartilhada SMB para capturas de tela / PDFs grandes
Apenas o SolidWorks 2021 foi testado. Outras versões podem funcionar, pois a API COM é em grande parte estável, mas não há garantias.
Início Rápido
1. Instalar (no host do SolidWorks)
git clone https://github.com/haunchen/solidworks-mcp.git
cd solidworks-mcp
python -m venv .venv
.venv\Scripts\pip install -r requirements.txt
Instalação offline (host sem acesso à internet)
Em uma máquina com acesso à internet:
pip download -d ./wheels -r requirements.txt
Copie o repositório (incluindo wheels/) para o host do SolidWorks e, em seguida:
.venv\Scripts\pip install --no-index --find-links wheels -r requirements.txt
2. Configurar
Copy-Item .env.example .env
# edit .env — see Configuration below
3. Executar
.venv\Scripts\python src\server.py
4. Conectar a partir do Claude Code (máquina cliente)
claude mcp add --transport http solidworks http://<sw-host>:8080/mcp
Em seguida, basta pedir ao Claude: "Abra bracket.sldprt e crie um desenho com 3 vistas em primeiro diedro com cotas e exporte como PDF."
Clientes MCP compatíveis
Qualquer cliente MCP que suporte Streamable HTTP e execute na sua máquina (ou dentro da LAN) pode se conectar. Exemplos verificados:
| Cliente | Configuração |
|---|---|
| Claude Code | claude mcp add --transport http solidworks http://<sw-host>:8080/mcp |
| Codex CLI | config.toml: [mcp_servers.solidworks]url = "http://<sw-host>:8080/mcp" |
| Gemini CLI | gemini mcp add --transport http solidworks http://<sw-host>:8080/mcp |
| Cursor | mcp.json: { "mcpServers": { "solidworks": { "url": "http://<sw-host>:8080/mcp" } } } |
| VS Code Copilot | .vscode/mcp.json: { "servers": { "solidworks": { "type": "http", "url": "http://<sw-host>:8080/mcp" } } } |
| Cline | cline_mcp_settings.json: { "mcpServers": { "solidworks": { "type": "streamableHttp", "url": "http://<sw-host>:8080/mcp" } } } |
| Windsurf | ~/.codeium/windsurf/mcp_config.json: { "mcpServers": { "solidworks": { "serverUrl": "http://<sw-host>:8080/mcp" } } } |
| Continue / Zed / JetBrains AI Assistant / opencode / Goose | consulte a documentação de MCP deles (campo url / uri) |
Frameworks de agentes também funcionam: OpenAI Agents SDK (MCPServerStreamableHttp), LangChain (langchain-mcp-adapters).
Conectores intermediados por nuvem não conseguem alcançar um servidor somente LAN: o Claude Desktop / conectores personalizados do claude.ai e o conector MCP da API de Mensagens da Anthropic conectam-se a partir da nuvem do fornecedor, que é exatamente o que o modelo de segurança de LAN confiável bloqueia.
Configuração
Todas as configurações são carregadas de .env (consulte .env.example):
| Variável | Padrão | Descrição |
|---|---|---|
SW_MCP_HOST | 0.0.0.0 | Endereço ao qual o servidor se vincula |
SW_MCP_PORT | 8080 | Porta do servidor |
SW_MCP_SMB_PATH | C:\mcp-share | Pasta do lado do servidor para capturas de tela / PDFs que excedem o limite de base64 |
SW_MCP_SMB_CLIENT_PATH | (vazio) | A mesma pasta vista do lado do cliente (por exemplo, U:\mcp-share); usada para reescrever caminhos retornados |
SW_MCP_TEMPLATE | (vazio) | Modelo de desenho (.drwdot) usado por create_drawing |
SW_MCP_PAPER_SIZE | A3 | Tamanho padrão do papel |
SW_MCP_MAX_BASE64 | 1048576 | Tamanho máximo de captura de tela (bytes) retornado inline como base64; imagens maiores são salvas na pasta compartilhada |
Segurança
Este servidor não possui autenticação. Qualquer pessoa que consiga alcançar a porta pode controlar sua instância do SolidWorks e ler/gravar arquivos por meio dela.
- Implante em uma LAN confiável apenas — nunca exponha a porta à internet
- Prefira vincular
SW_MCP_HOSTa uma interface de LAN específica em vez de0.0.0.0 - Considere regras de firewall do nível do sistema operacional que restrinjam o acesso a IPs de clientes conhecidos
Referência de Ferramentas
Operações de arquivo
| Ferramenta | Descrição |
|---|---|
open_document | Abrir um documento do SolidWorks (.sldprt / .sldasm / .slddrw) |
close_document | Fechar o documento especificado |
list_open_documents | Listar todos os documentos atualmente abertos no SolidWorks |
Vistas de desenho
| Ferramenta | Descrição |
|---|---|
create_drawing | Criar um novo documento de desenho a partir de um modelo |
insert_standard_views | Inserir vistas padrão independentes (sem alinhamento de projeção, escala personalizada) |
insert_standard_views_aligned | Criar vistas alinhadas em primeiro diedro frontal / superior / direita com escala automática |
insert_section_view | Criar uma vista em corte em uma vista pai |
insert_detail_view | Criar uma vista de detalhe (ampliada) em uma vista pai |
insert_custom_view | Inserir uma vista com orientação nomeada ou rotação XYZ arbitrária |
Anotação
| Ferramenta | Descrição |
|---|---|
insert_model_dimensions | Importar cotas do modelo para vistas de desenho |
probe_drawing_edges | Inspecionar arestas visíveis (índice / tipo / coordenadas em mm) antes de cotar |
add_dimension | Adicionar uma cota linear / de diâmetro / de raio / angular entre arestas inspecionadas |
auto_add_reference_dimensions | Adicionar automaticamente cotas de referência (caixa delimitadora + círculos) para geometria não paramétrica |
insert_balloon | Inserir balões em uma vista de desenho de montagem (opcionalmente filtrados por componente) |
insert_bom_table | Inserir uma tabela de BOM apenas com nível superior |
Exportar
| Ferramenta | Descrição |
|---|---|
capture_drawing | Capturar o desenho atual como JPEG (base64 inline ou caminho de pasta compartilhada) |
capture_view | Capturar capturas de tela de múltiplos ângulos do modelo 3D |
save_as_pdf | Exportar o desenho atual para PDF |
save_drawing | Salvar o desenho atual (.slddrw) |
Análise de montagem
| Ferramenta | Descrição |
|---|---|
read_assembly_mates | Ler todas as relações de restrição de um componente em uma montagem |
get_feature_tree | Ler a árvore de recursos de um documento |
Desenvolvimento
# run all tests (no SolidWorks needed — the COM layer is fully mocked)
.venv\Scripts\pytest tests/ -v
Os contratos de comportamento estão em docs/specs/ — especificações com status: active descrevem o comportamento esperado dos recursos fornecidos. O histórico de design está em docs/plans/.
Consulte CONTRIBUTING.md para a configuração de desenvolvimento e diretrizes de PR.