SolidWorks MCP server for CAD automation and document management
marydworks-mcp defines 13 SolidWorks automation tools with Korean descriptions and reasonable parameter schemas. Naming follows verb_noun convention (sw_*). Most tools have input schemas with type definitions and descriptions. However, descriptions are dense and technical (often 100+ chars), parameter descriptions are minimal or absent in several tools, and output schemas are not formally documented. Error handling delegates to a generic ToolError wrapper without recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Composition is sound, tools chain via plan_id/change_set_id, but descriptions lack LLM-friendly guidance on when to use each tool.
어셈블리에 부품 삽입(position_mm) + 단순 메이트(coincident/concentric/distance; 엔티티는 {type,xyz_mm,name?}). 실패 시 rollback=delete_component(기본). dry_run→plan_id→적용, 저장은 sw_save.
어셈블리 점검: 필수 속성 누락(required_props 기본 SPEC/Material/QT'Y/DATE), 실제 수량 vs QT'Y 불일치, '복사본' 파일 참조, 재질 미지정, lightweight/억제, interference=true면 간섭 쌍.
비가시(백그라운드) SolidWorks 인스턴스. action=start(paths[]: 열 파일; 사용자 창에 열린 파일은 거부)면 창 없는 SolidWorks를 띄워 문서를 열고, 이후 모든 sw_* 도구가 그 인스턴스를 대상으로 동작. status로 확인, stop(discard_changes)으로 종료. 사용자 화면을 전혀 건드리지 않는 일괄 작업용.
어셈블리 부품 집계. structure: top_level(직계만)|parts_only(모든 파트 평면)|indented(계층). instances=실제 개수, qty_property=QT'Y 속성값, qty_mismatch로 불일치 표시. lightweight는 resolve_lightweight=true일 때만 해석.
모델에서 도면 생성(메모리): 템플릿 기본 도면.DRWDOT, views front/top/right/iso, 어셈블리면 BOM 표, auto_dimension 옵션. 저장은 sw_save(doc, out_path), PDF는 sw_export. 치수 배치는 사람이 정리.
어셈블리 직계 컴포넌트 삭제(메모리). names[] 정확 일치 또는 path_contains 경로 필터. dry_run=true(기본)가 삭제 대상 전수 목록과 plan_id를 반환하고, dry_run=false+plan_id로만 실행. 저장은 별도 sw_save.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite explicit risk levels. Tools marked DESTRUCTIVE (sw_delete_components) and WRITE (sw_set_properties, sw_save, etc.) lack machine-readable hints for agent safety.
Output schemas not formally documented. Tools return envelope(data, effects=...) but LLMs cannot see the structure of 'data' or 'effects' fields. No JSON Schema for responses.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
내보내기: step/stl/png(파트·어셈블리), pdf/dxf(도면). 기존 파일은 overwrite=true일 때만. 생성 후 크기·sha256 검증.
어셈블리 안의 부품 파일 이름 변경(RenameDocument). dry_run으로 영향(열린 참조 문서·기존 파일 충돌·백업)을 먼저 보고, 적용 후 sw_save(change_set_id)로 부모 어셈블리를 저장해야 파일명이 바뀜. 닫힌 문서 참조는 update_unopened_references+search_folders. sync_properties로 RELATION NO./TITLE 동시 갱신.
저장. change_set_id(적용된 변경의 문서를 파트→어셈블리→도면 순서로) 또는 doc 하나. 저장된 적 없는 문서는 out_path 필요(기존 파일 덮어쓰지 않음). only_under=[폴더…]면 그 밖의 문서는 저장 거부(공용 라이브러리 보호). dry_run=true면 저장 목록만.
사용자 속성 변경. dry_run=true(기본)는 plan_id와 변경 전/후만 반환; dry_run=false+plan_id로 적용(메모리, 저장은 sw_save). doc 하나 또는 docs[] 여러 개, scope file|configuration. 값 특수어: $today, $instances(assembly 지정 시 실제 개수), $expr:수식. 수식 속성은 $expr: 없이는 보존.
문서를 iso/front/top/right/back/left/bottom 뷰로 캡처해 BMP 저장, 경로·sha256 반환. 시점·활성 문서 복원. views 기본 [iso,front,top,right].
SolidWorks 연결 상태·버전·열린 문서 목록(수정됨/읽기전용/활성)·최상위 어셈블리·Simulation 상태·최근 operation(timeout 후 실행 중인 쓰기 포함). SolidWorks를 실행하지는 않음.
파트/어셈블리 사양 요약: 경로·구성·사용자속성(파일+구성)·재질·바디·질량·외형치수(근사)·피처 수. doc 생략 시 활성 문서. doc={active|path|title, configuration?}.
Error handling is generic. SwError exceptions are caught and wrapped in ToolError with code + message, but no recovery guidance. LLMs cannot determine if an error is retryable, user-fixable, or fatal.
Descriptions are dense, technical, and Korean-language. While detailed, they lack LLM-friendly guidance on WHEN to use each tool vs. alternatives. E.g., sw_bom vs sw_summary distinction is unclear from descriptions alone.
Parameter descriptions are minimal or absent in several tools. E.g., sw_snapshot 'views' param has description 'List of views: iso/front/top/right/back/left/bottom' but no guidance on when to use each view or what they represent.