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 banner

solidworks-mcp

CI License: MIT Python 3.10+

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:

CategoriaFerramentas
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:

ClienteConfiguração
Claude Codeclaude mcp add --transport http solidworks http://<sw-host>:8080/mcp
Codex CLIconfig.toml: [mcp_servers.solidworks]
url = "http://<sw-host>:8080/mcp"
Gemini CLIgemini mcp add --transport http solidworks http://<sw-host>:8080/mcp
Cursormcp.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" } } }
Clinecline_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 / Gooseconsulte 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ávelPadrãoDescrição
SW_MCP_HOST0.0.0.0Endereço ao qual o servidor se vincula
SW_MCP_PORT8080Porta do servidor
SW_MCP_SMB_PATHC:\mcp-sharePasta 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_SIZEA3Tamanho padrão do papel
SW_MCP_MAX_BASE641048576Tamanho 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_HOST a uma interface de LAN específica em vez de 0.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

FerramentaDescrição
open_documentAbrir um documento do SolidWorks (.sldprt / .sldasm / .slddrw)
close_documentFechar o documento especificado
list_open_documentsListar todos os documentos atualmente abertos no SolidWorks

Vistas de desenho

FerramentaDescrição
create_drawingCriar um novo documento de desenho a partir de um modelo
insert_standard_viewsInserir vistas padrão independentes (sem alinhamento de projeção, escala personalizada)
insert_standard_views_alignedCriar vistas alinhadas em primeiro diedro frontal / superior / direita com escala automática
insert_section_viewCriar uma vista em corte em uma vista pai
insert_detail_viewCriar uma vista de detalhe (ampliada) em uma vista pai
insert_custom_viewInserir uma vista com orientação nomeada ou rotação XYZ arbitrária

Anotação

FerramentaDescrição
insert_model_dimensionsImportar cotas do modelo para vistas de desenho
probe_drawing_edgesInspecionar arestas visíveis (índice / tipo / coordenadas em mm) antes de cotar
add_dimensionAdicionar uma cota linear / de diâmetro / de raio / angular entre arestas inspecionadas
auto_add_reference_dimensionsAdicionar automaticamente cotas de referência (caixa delimitadora + círculos) para geometria não paramétrica
insert_balloonInserir balões em uma vista de desenho de montagem (opcionalmente filtrados por componente)
insert_bom_tableInserir uma tabela de BOM apenas com nível superior

Exportar

FerramentaDescrição
capture_drawingCapturar o desenho atual como JPEG (base64 inline ou caminho de pasta compartilhada)
capture_viewCapturar capturas de tela de múltiplos ângulos do modelo 3D
save_as_pdfExportar o desenho atual para PDF
save_drawingSalvar o desenho atual (.slddrw)

Análise de montagem

FerramentaDescrição
read_assembly_matesLer todas as relações de restrição de um componente em uma montagem
get_feature_treeLer 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.

Licença

MIT