solidworks-mcp-python 1.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. solidworks_mcp_python-1.5.0/.gitignore +104 -0
  2. solidworks_mcp_python-1.5.0/LICENSE +21 -0
  3. solidworks_mcp_python-1.5.0/PKG-INFO +410 -0
  4. solidworks_mcp_python-1.5.0/README.md +302 -0
  5. solidworks_mcp_python-1.5.0/docs/agents/agent-memory-and-recovery.md +53 -0
  6. solidworks_mcp_python-1.5.0/docs/agents/agent-ui-workflows.md +81 -0
  7. solidworks_mcp_python-1.5.0/docs/agents/agents-and-testing.md +457 -0
  8. solidworks_mcp_python-1.5.0/docs/agents/com-api-pitfalls.md +1145 -0
  9. solidworks_mcp_python-1.5.0/docs/agents/family-gated-tool-routing.md +111 -0
  10. solidworks_mcp_python-1.5.0/docs/agents/logging-and-agent-invocation.md +534 -0
  11. solidworks_mcp_python-1.5.0/docs/agents/prompt-driven-design.md +378 -0
  12. solidworks_mcp_python-1.5.0/docs/agents/prompting-tutorials.md +447 -0
  13. solidworks_mcp_python-1.5.0/docs/agents/pydantic-ai-and-schemas.md +35 -0
  14. solidworks_mcp_python-1.5.0/docs/agents/reverse-engineering-workflow.md +353 -0
  15. solidworks_mcp_python-1.5.0/docs/agents/sample-models-guide.md +307 -0
  16. solidworks_mcp_python-1.5.0/docs/agents/worked-examples.md +229 -0
  17. solidworks_mcp_python-1.5.0/docs/demos.md +468 -0
  18. solidworks_mcp_python-1.5.0/docs/gen_ref_pages.py +54 -0
  19. solidworks_mcp_python-1.5.0/docs/getting-started/claude-code-setup.md +258 -0
  20. solidworks_mcp_python-1.5.0/docs/getting-started/installation.md +241 -0
  21. solidworks_mcp_python-1.5.0/docs/getting-started/local-llm.md +146 -0
  22. solidworks_mcp_python-1.5.0/docs/getting-started/quickstart.md +145 -0
  23. solidworks_mcp_python-1.5.0/docs/getting-started/solidworks-as-code.md +407 -0
  24. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/answer_key_bracket_isometric.png +0 -0
  25. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/answer_key_yoke_female_isometric.png +0 -0
  26. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/answer_key_yoke_male_isometric.png +0 -0
  27. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/build_u_bracket_artifact.py +281 -0
  28. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/build_u_bracket_runbook.py +144 -0
  29. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/build_yoke_female_artifact.py +316 -0
  30. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/build_yoke_male_artifact.py +375 -0
  31. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/build_yoke_male_checkpoint2.py +171 -0
  32. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/build_yoke_male_tutorial.py +395 -0
  33. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/demo_recording_heat_insert.py +194 -0
  34. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/heat_insert_recording_prompt.md +37 -0
  35. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/list_features_assembly_demo.py +171 -0
  36. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/read_yoke_female_geometry.py +134 -0
  37. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/read_yoke_geometry.py +191 -0
  38. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/u_bracket_from_prompt.SLDPRT +0 -0
  39. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/u_bracket_from_prompt_isometric.png +0 -0
  40. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/u_joint_rebuild_prompt.md +209 -0
  41. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/yoke_female_from_prompt.SLDPRT +0 -0
  42. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/yoke_female_from_prompt_isometric.png +0 -0
  43. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/yoke_male_checkpoint2.SLDPRT +0 -0
  44. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/yoke_male_checkpoint2.png +0 -0
  45. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/yoke_male_checkpoint_preStub.SLDPRT +0 -0
  46. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/yoke_male_from_prompt.SLDPRT +0 -0
  47. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/yoke_male_from_prompt_isometric.png +0 -0
  48. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/yoke_male_v2_from_prompt.SLDPRT +0 -0
  49. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/yoke_male_v2_from_prompt_isometric.png +0 -0
  50. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-parts/yoke_male_wrong_stub.SLDPRT +0 -0
  51. solidworks_mcp_python-1.5.0/docs/getting-started/tutorial-tracks.md +95 -0
  52. solidworks_mcp_python-1.5.0/docs/getting-started/tutorials/build_u_bracket_direct.py +320 -0
  53. solidworks_mcp_python-1.5.0/docs/getting-started/tutorials/u-joint-assembly-build.md +565 -0
  54. solidworks_mcp_python-1.5.0/docs/getting-started/tutorials/wave3-reference-geometry-and-drawings.md +298 -0
  55. solidworks_mcp_python-1.5.0/docs/getting-started/vscode-mcp-setup.md +79 -0
  56. solidworks_mcp_python-1.5.0/docs/index.md +199 -0
  57. solidworks_mcp_python-1.5.0/docs/javascripts/extra.js +135 -0
  58. solidworks_mcp_python-1.5.0/docs/javascripts/mathjax.js +14 -0
  59. solidworks_mcp_python-1.5.0/docs/planning/roadmap.md +217 -0
  60. solidworks_mcp_python-1.5.0/docs/planning/solidworks-api-coverage.md +840 -0
  61. solidworks_mcp_python-1.5.0/docs/source/conf.py +98 -0
  62. solidworks_mcp_python-1.5.0/docs/stylesheets/extra.css +86 -0
  63. solidworks_mcp_python-1.5.0/docs/user-guide/architecture.md +328 -0
  64. solidworks_mcp_python-1.5.0/docs/user-guide/integration-testing.md +157 -0
  65. solidworks_mcp_python-1.5.0/docs/user-guide/platform-connectivity.md +68 -0
  66. solidworks_mcp_python-1.5.0/docs/user-guide/prompting-best-practices.md +129 -0
  67. solidworks_mcp_python-1.5.0/docs/user-guide/real-tool-validation-matrix.md +107 -0
  68. solidworks_mcp_python-1.5.0/docs/user-guide/screenshot-equivalence.md +167 -0
  69. solidworks_mcp_python-1.5.0/docs/user-guide/solidworks-ui-llm-tutorial.md +178 -0
  70. solidworks_mcp_python-1.5.0/docs/user-guide/tool-catalog/analysis.md +192 -0
  71. solidworks_mcp_python-1.5.0/docs/user-guide/tool-catalog/automation.md +226 -0
  72. solidworks_mcp_python-1.5.0/docs/user-guide/tool-catalog/docs-discovery.md +113 -0
  73. solidworks_mcp_python-1.5.0/docs/user-guide/tool-catalog/drawing-analysis.md +169 -0
  74. solidworks_mcp_python-1.5.0/docs/user-guide/tool-catalog/drawing-automation.md +79 -0
  75. solidworks_mcp_python-1.5.0/docs/user-guide/tool-catalog/drawing.md +368 -0
  76. solidworks_mcp_python-1.5.0/docs/user-guide/tool-catalog/engineering-data.md +158 -0
  77. solidworks_mcp_python-1.5.0/docs/user-guide/tool-catalog/export.md +194 -0
  78. solidworks_mcp_python-1.5.0/docs/user-guide/tool-catalog/file-management.md +445 -0
  79. solidworks_mcp_python-1.5.0/docs/user-guide/tool-catalog/index.md +110 -0
  80. solidworks_mcp_python-1.5.0/docs/user-guide/tool-catalog/macro-recording.md +165 -0
  81. solidworks_mcp_python-1.5.0/docs/user-guide/tool-catalog/modeling.md +428 -0
  82. solidworks_mcp_python-1.5.0/docs/user-guide/tool-catalog/sketching.md +481 -0
  83. solidworks_mcp_python-1.5.0/docs/user-guide/tool-catalog/template-management.md +151 -0
  84. solidworks_mcp_python-1.5.0/docs/user-guide/tool-catalog/vba-generation.md +231 -0
  85. solidworks_mcp_python-1.5.0/docs/user-guide/tools-overview.md +606 -0
  86. solidworks_mcp_python-1.5.0/examples/configurations/security_config.py +458 -0
  87. solidworks_mcp_python-1.5.0/examples/vba-templates/batch_export.vba +122 -0
  88. solidworks_mcp_python-1.5.0/examples/vba-templates/batch_process.vba +86 -0
  89. solidworks_mcp_python-1.5.0/examples/vba-templates/create_drawing.vba +91 -0
  90. solidworks_mcp_python-1.5.0/examples/vba-templates/create_part.vba +102 -0
  91. solidworks_mcp_python-1.5.0/examples/vba-templates/modify_dimensions.vba +35 -0
  92. solidworks_mcp_python-1.5.0/pyproject.toml +369 -0
  93. solidworks_mcp_python-1.5.0/src/solidworks_mcp/__init__.py +57 -0
  94. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/__init__.py +40 -0
  95. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/base.py +1882 -0
  96. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/circuit_breaker.py +2052 -0
  97. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/com_executor.py +252 -0
  98. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/complexity_analyzer.py +272 -0
  99. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/connection_pool.py +1884 -0
  100. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/factory.py +366 -0
  101. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/intelligent_router.py +218 -0
  102. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/mock_adapter.py +4016 -0
  103. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/pywin32_adapter.py +2842 -0
  104. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/solidworks/__init__.py +17 -0
  105. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/solidworks/bitmap.py +180 -0
  106. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/solidworks/com_utils.py +56 -0
  107. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/solidworks/dimension_layout.py +753 -0
  108. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/solidworks/documentation.py +1476 -0
  109. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/solidworks/drawing_standard.py +1993 -0
  110. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/solidworks/face_selection.py +392 -0
  111. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/solidworks/features.py +3362 -0
  112. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/solidworks/io.py +3649 -0
  113. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/solidworks/rebuild_diagnostics.py +269 -0
  114. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/solidworks/rebuild_inspector.py +146 -0
  115. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/solidworks/selection.py +308 -0
  116. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/solidworks/sketch.py +2545 -0
  117. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/sw_feature_errors.py +66 -0
  118. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/sw_type_info.py +317 -0
  119. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/vba_adapter.py +318 -0
  120. solidworks_mcp_python-1.5.0/src/solidworks_mcp/adapters/vba_macro_executor.py +215 -0
  121. solidworks_mcp_python-1.5.0/src/solidworks_mcp/agents/__init__.py +68 -0
  122. solidworks_mcp_python-1.5.0/src/solidworks_mcp/agents/design_knowledge/assembly_patterns.md +127 -0
  123. solidworks_mcp_python-1.5.0/src/solidworks_mcp/agents/design_knowledge/hinges.md +118 -0
  124. solidworks_mcp_python-1.5.0/src/solidworks_mcp/agents/design_knowledge/snap_fits.md +93 -0
  125. solidworks_mcp_python-1.5.0/src/solidworks_mcp/agents/design_knowledge/solidworks_basics.md +3 -0
  126. solidworks_mcp_python-1.5.0/src/solidworks_mcp/agents/design_knowledge/tolerancing.md +128 -0
  127. solidworks_mcp_python-1.5.0/src/solidworks_mcp/agents/harness.py +216 -0
  128. solidworks_mcp_python-1.5.0/src/solidworks_mcp/agents/history_db.py +1508 -0
  129. solidworks_mcp_python-1.5.0/src/solidworks_mcp/agents/retrieval_index.py +164 -0
  130. solidworks_mcp_python-1.5.0/src/solidworks_mcp/agents/schemas.py +165 -0
  131. solidworks_mcp_python-1.5.0/src/solidworks_mcp/agents/smoke_test.py +285 -0
  132. solidworks_mcp_python-1.5.0/src/solidworks_mcp/agents/soc_exporter.py +650 -0
  133. solidworks_mcp_python-1.5.0/src/solidworks_mcp/agents/soc_pickup.py +332 -0
  134. solidworks_mcp_python-1.5.0/src/solidworks_mcp/agents/soc_rewind.py +221 -0
  135. solidworks_mcp_python-1.5.0/src/solidworks_mcp/agents/vector_rag.py +665 -0
  136. solidworks_mcp_python-1.5.0/src/solidworks_mcp/cache/__init__.py +5 -0
  137. solidworks_mcp_python-1.5.0/src/solidworks_mcp/cache/response_cache.py +164 -0
  138. solidworks_mcp_python-1.5.0/src/solidworks_mcp/config.py +729 -0
  139. solidworks_mcp_python-1.5.0/src/solidworks_mcp/exceptions.py +37 -0
  140. solidworks_mcp_python-1.5.0/src/solidworks_mcp/security/__init__.py +68 -0
  141. solidworks_mcp_python-1.5.0/src/solidworks_mcp/security/auth.py +128 -0
  142. solidworks_mcp_python-1.5.0/src/solidworks_mcp/security/cors.py +27 -0
  143. solidworks_mcp_python-1.5.0/src/solidworks_mcp/security/rate_limiting.py +90 -0
  144. solidworks_mcp_python-1.5.0/src/solidworks_mcp/security/runtime.py +155 -0
  145. solidworks_mcp_python-1.5.0/src/solidworks_mcp/server.py +777 -0
  146. solidworks_mcp_python-1.5.0/src/solidworks_mcp/server_cli_fixed.py +120 -0
  147. solidworks_mcp_python-1.5.0/src/solidworks_mcp/setup/__init__.py +1 -0
  148. solidworks_mcp_python-1.5.0/src/solidworks_mcp/setup/cli.py +399 -0
  149. solidworks_mcp_python-1.5.0/src/solidworks_mcp/setup/clients.py +157 -0
  150. solidworks_mcp_python-1.5.0/src/solidworks_mcp/setup/config_file.py +230 -0
  151. solidworks_mcp_python-1.5.0/src/solidworks_mcp/setup/handshake.py +202 -0
  152. solidworks_mcp_python-1.5.0/src/solidworks_mcp/setup/launcher.py +102 -0
  153. solidworks_mcp_python-1.5.0/src/solidworks_mcp/setup/legacy.py +100 -0
  154. solidworks_mcp_python-1.5.0/src/solidworks_mcp/setup/registration.py +193 -0
  155. solidworks_mcp_python-1.5.0/src/solidworks_mcp/setup/solidworks.py +49 -0
  156. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/__init__.py +64 -0
  157. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/analysis.py +723 -0
  158. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/automation.py +578 -0
  159. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/docs_discovery.py +1476 -0
  160. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/drawing.py +1015 -0
  161. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/drawing_analysis.py +456 -0
  162. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/drawing_automation.py +627 -0
  163. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/engineering_data.py +466 -0
  164. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/error_classifier.py +232 -0
  165. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/export.py +833 -0
  166. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/file_facts.py +40 -0
  167. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/file_management.py +1473 -0
  168. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/input_compat.py +17 -0
  169. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/macro_recording.py +464 -0
  170. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/modeling.py +2360 -0
  171. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/sketching.py +1422 -0
  172. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/template_management.py +367 -0
  173. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/tool_boundary.py +280 -0
  174. solidworks_mcp_python-1.5.0/src/solidworks_mcp/tools/vba_generation.py +1145 -0
  175. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/__init__.py +9 -0
  176. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/local_llm.py +725 -0
  177. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/routers/__init__.py +10 -0
  178. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/routers/checkpoint.py +24 -0
  179. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/routers/docs.py +47 -0
  180. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/routers/llm.py +83 -0
  181. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/routers/local_model.py +69 -0
  182. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/routers/model.py +75 -0
  183. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/routers/preview.py +38 -0
  184. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/routers/session.py +161 -0
  185. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/routers/viewer.py +154 -0
  186. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/schemas.py +502 -0
  187. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/server.py +298 -0
  188. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/service.py +481 -0
  189. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/services/__init__.py +136 -0
  190. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/services/_utils.py +958 -0
  191. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/services/checkpoint_service.py +1110 -0
  192. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/services/docs_service.py +282 -0
  193. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/services/llm_service.py +956 -0
  194. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/services/model_service.py +459 -0
  195. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/services/parameter_repair_service.py +314 -0
  196. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/services/preview_service.py +489 -0
  197. solidworks_mcp_python-1.5.0/src/solidworks_mcp/ui/services/session_service.py +1389 -0
  198. solidworks_mcp_python-1.5.0/src/solidworks_mcp/utils/__init__.py +9 -0
  199. solidworks_mcp_python-1.5.0/src/solidworks_mcp/utils/feature_tree_classifier.py +342 -0
  200. solidworks_mcp_python-1.5.0/src/solidworks_mcp/utils/logging.py +76 -0
  201. solidworks_mcp_python-1.5.0/src/solidworks_mcp/utils/validation.py +77 -0
  202. solidworks_mcp_python-1.5.0/src/solidworks_mcp/version.py +8 -0
  203. solidworks_mcp_python-1.5.0/src/utils/check_tool_docs_consistency.py +283 -0
  204. solidworks_mcp_python-1.5.0/src/utils/convert_step_to_sldprt.py +372 -0
  205. solidworks_mcp_python-1.5.0/src/utils/generate_tool_catalog.py +851 -0
  206. solidworks_mcp_python-1.5.0/src/utils/screenshot_compare.py +252 -0
  207. solidworks_mcp_python-1.5.0/src/utils/start_local_server.py +459 -0
  208. solidworks_mcp_python-1.5.0/src/utils/start_local_server_claude.py +141 -0
  209. solidworks_mcp_python-1.5.0/src/utils/verify_tool_count.py +185 -0
  210. solidworks_mcp_python-1.5.0/tests/__init__.py +14 -0
  211. solidworks_mcp_python-1.5.0/tests/conftest.py +478 -0
  212. solidworks_mcp_python-1.5.0/tests/integration/__init__.py +0 -0
  213. solidworks_mcp_python-1.5.0/tests/integration/test_all_endpoints_harness.py +1002 -0
  214. solidworks_mcp_python-1.5.0/tests/integration/test_architecture_runtime_features.py +456 -0
  215. solidworks_mcp_python-1.5.0/tests/integration/test_demo_scripts_integration.py +193 -0
  216. solidworks_mcp_python-1.5.0/tests/integration/test_integration.py +403 -0
  217. solidworks_mcp_python-1.5.0/tests/integration/test_issue106_adapter_chain.py +130 -0
  218. solidworks_mcp_python-1.5.0/tests/integration/test_no_fabricated_payloads.py +336 -0
  219. solidworks_mcp_python-1.5.0/tests/integration/test_no_solidworks_launch.py +103 -0
  220. solidworks_mcp_python-1.5.0/tests/integration/test_pypi_readme.py +74 -0
  221. solidworks_mcp_python-1.5.0/tests/integration/test_real_solidworks_integration.py +457 -0
  222. solidworks_mcp_python-1.5.0/tests/integration/test_smoke_agents_live.py +239 -0
  223. solidworks_mcp_python-1.5.0/tests/integration/test_test_layout.py +50 -0
  224. solidworks_mcp_python-1.5.0/tests/live/conftest.py +398 -0
  225. solidworks_mcp_python-1.5.0/tests/live/evidence.py +320 -0
  226. solidworks_mcp_python-1.5.0/tests/live/recorder.py +167 -0
  227. solidworks_mcp_python-1.5.0/tests/live/test_live_sw_add_chamfer_tool.py +322 -0
  228. solidworks_mcp_python-1.5.0/tests/live/test_live_sw_contributor_fixes.py +437 -0
  229. solidworks_mcp_python-1.5.0/tests/live/test_live_sw_cut_extrude_sketch_fix.py +159 -0
  230. solidworks_mcp_python-1.5.0/tests/live/test_live_sw_documentation_tools.py +356 -0
  231. solidworks_mcp_python-1.5.0/tests/live/test_live_sw_drawing_package_tools.py +295 -0
  232. solidworks_mcp_python-1.5.0/tests/live/test_live_sw_issue106_tools.py +263 -0
  233. solidworks_mcp_python-1.5.0/tests/live/test_live_sw_readme_demo.py +587 -0
  234. solidworks_mcp_python-1.5.0/tests/live/test_live_sw_regression.py +2839 -0
  235. solidworks_mcp_python-1.5.0/tests/live/test_live_sw_verify_model.py +287 -0
  236. solidworks_mcp_python-1.5.0/tests/live/test_live_sw_wave2.py +233 -0
  237. solidworks_mcp_python-1.5.0/tests/live/test_live_sw_wave3.py +354 -0
  238. solidworks_mcp_python-1.5.0/tests/reports/real_integration_report.md +28 -0
  239. solidworks_mcp_python-1.5.0/tests/scripts/cleanup_generated_integration_artifacts.py +147 -0
  240. solidworks_mcp_python-1.5.0/tests/scripts/docs_discovery_smoke.py +62 -0
  241. solidworks_mcp_python-1.5.0/tests/scripts/layout_open_drawing.py +95 -0
  242. solidworks_mcp_python-1.5.0/tests/scripts/live_demo.ps1 +64 -0
  243. solidworks_mcp_python-1.5.0/tests/scripts/make_demo_gif.py +254 -0
  244. solidworks_mcp_python-1.5.0/tests/scripts/readme_demo_continue.py +174 -0
  245. solidworks_mcp_python-1.5.0/tests/scripts/sw_close_all_and_settle.py +141 -0
  246. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/__init__.py +0 -0
  247. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/__init__.py +0 -0
  248. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/drawing_dimensions_stub.py +48 -0
  249. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/drawing_package_stub.py +98 -0
  250. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/engineering_data_stub.py +78 -0
  251. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/pywin32/__init__.py +0 -0
  252. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/__init__.py +0 -0
  253. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_bitmap.py +173 -0
  254. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_com_utils.py +28 -0
  255. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_dimension_layout.py +548 -0
  256. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_documentation.py +777 -0
  257. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_documentation_drawing_dimensions.py +603 -0
  258. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_drawing_standard.py +754 -0
  259. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_drawing_standard_gdt.py +413 -0
  260. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_drawing_standard_generator.py +1126 -0
  261. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_face_selection.py +452 -0
  262. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_features.py +3227 -0
  263. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_io.py +4170 -0
  264. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_io_geometry_summary.py +386 -0
  265. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_io_save_file.py +181 -0
  266. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_rebuild_diagnostics.py +96 -0
  267. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_rebuild_inspector.py +318 -0
  268. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_selection.py +1006 -0
  269. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_selection_assembly_features.py +293 -0
  270. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/solidworks/test_sketch.py +2435 -0
  271. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_base.py +1206 -0
  272. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_base_drawing_dimensions.py +18 -0
  273. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_base_drawing_package.py +28 -0
  274. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_base_engineering_data.py +30 -0
  275. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_base_geometry_summary.py +21 -0
  276. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_circuit_breaker.py +1079 -0
  277. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_circuit_breaker_drawing_dimensions.py +19 -0
  278. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_circuit_breaker_drawing_package.py +16 -0
  279. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_circuit_breaker_engineering_data.py +36 -0
  280. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_circuit_breaker_geometry_summary.py +34 -0
  281. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_com_executor.py +212 -0
  282. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_connection_pool.py +1804 -0
  283. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_connection_pool_drawing_dimensions.py +25 -0
  284. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_connection_pool_drawing_package.py +22 -0
  285. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_connection_pool_engineering_data.py +22 -0
  286. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_connection_pool_geometry_summary.py +47 -0
  287. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_factory.py +264 -0
  288. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_mock_adapter.py +2072 -0
  289. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_mock_adapter_assembly_features.py +153 -0
  290. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_mock_adapter_drawing_dimensions.py +81 -0
  291. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_mock_adapter_drawing_package.py +151 -0
  292. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_mock_adapter_engineering_data.py +107 -0
  293. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_mock_adapter_geometry_summary.py +76 -0
  294. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_mock_adapter_selection_rebuild.py +216 -0
  295. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_mock_adapter_sketch_composition.py +252 -0
  296. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_pywin32_adapter.py +1068 -0
  297. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_pywin32_adapter_settle_pause.py +93 -0
  298. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_sw_type_info.py +247 -0
  299. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_sw_type_info_cache_reuse.py +126 -0
  300. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_vba_adapter.py +149 -0
  301. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/adapters/test_vba_macro_executor.py +73 -0
  302. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/agents/__init__.py +0 -0
  303. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/agents/test_harness.py +554 -0
  304. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/agents/test_history_db.py +970 -0
  305. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/agents/test_history_db_conversation_events.py +318 -0
  306. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/agents/test_retrieval_index.py +125 -0
  307. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/agents/test_schemas.py +359 -0
  308. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/agents/test_smoke_test.py +60 -0
  309. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/agents/test_smoke_test_cli.py +484 -0
  310. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/agents/test_soc_exporter.py +646 -0
  311. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/agents/test_soc_pickup.py +592 -0
  312. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/agents/test_soc_rewind.py +408 -0
  313. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/agents/test_vector_rag.py +1126 -0
  314. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/cache/__init__.py +0 -0
  315. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/cache/test_response_cache.py +68 -0
  316. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/security/__init__.py +0 -0
  317. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/security/test_auth.py +209 -0
  318. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/security/test_cors.py +41 -0
  319. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/security/test_rate_limiting.py +31 -0
  320. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/security/test_runtime.py +134 -0
  321. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/setup/__init__.py +0 -0
  322. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/setup/test_cli.py +444 -0
  323. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/setup/test_clients.py +120 -0
  324. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/setup/test_config_file.py +203 -0
  325. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/setup/test_handshake.py +128 -0
  326. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/setup/test_launcher.py +119 -0
  327. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/setup/test_legacy.py +86 -0
  328. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/setup/test_registration.py +150 -0
  329. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/setup/test_solidworks.py +58 -0
  330. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/test_config.py +271 -0
  331. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/test_init.py +40 -0
  332. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/test_server.py +1169 -0
  333. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/test_server_cli_fixed.py +135 -0
  334. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/__init__.py +0 -0
  335. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_analysis.py +493 -0
  336. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_analysis_verify_model.py +412 -0
  337. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_automation.py +775 -0
  338. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_docs_discovery.py +2593 -0
  339. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_drawing.py +1165 -0
  340. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_drawing_analysis.py +1189 -0
  341. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_drawing_automation.py +349 -0
  342. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_engineering_data.py +299 -0
  343. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_error_classifier.py +188 -0
  344. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_export.py +781 -0
  345. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_file_facts.py +31 -0
  346. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_file_management.py +2280 -0
  347. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_macro_recording.py +993 -0
  348. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_modeling.py +2062 -0
  349. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_modeling_measured_change.py +161 -0
  350. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_sketching.py +1361 -0
  351. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_template_management.py +778 -0
  352. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_tool_boundary.py +348 -0
  353. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/tools/test_vba_generation.py +740 -0
  354. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/__init__.py +0 -0
  355. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/routers/__init__.py +0 -0
  356. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/routers/test_docs.py +37 -0
  357. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/routers/test_llm.py +87 -0
  358. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/routers/test_local_model.py +201 -0
  359. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/routers/test_model.py +60 -0
  360. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/routers/test_preview.py +33 -0
  361. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/routers/test_session.py +126 -0
  362. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/services/__init__.py +0 -0
  363. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/services/test__utils.py +1004 -0
  364. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/services/test_checkpoint_service.py +824 -0
  365. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/services/test_docs_service.py +76 -0
  366. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/services/test_llm_service.py +732 -0
  367. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/services/test_llm_service_bracket_planning.py +91 -0
  368. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/services/test_model_service.py +323 -0
  369. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/services/test_parameter_repair_service.py +165 -0
  370. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/services/test_preview_service.py +628 -0
  371. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/services/test_preview_service_model_binding.py +80 -0
  372. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/services/test_session_service.py +560 -0
  373. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/test_local_llm.py +920 -0
  374. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/test_server.py +646 -0
  375. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/test_service.py +1806 -0
  376. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/test_service_branches.py +581 -0
  377. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/test_service_helpers.py +349 -0
  378. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/ui/test_service_new_helpers.py +469 -0
  379. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/utils/__init__.py +0 -0
  380. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/utils/test_feature_tree_classifier.py +448 -0
  381. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/utils/test_logging.py +92 -0
  382. solidworks_mcp_python-1.5.0/tests/solidworks_mcp/utils/test_validation.py +232 -0
@@ -0,0 +1,104 @@
1
+ # Dependencies
2
+ node_modules/
3
+ yarn.lock
4
+ pnpm-lock.yaml
5
+
6
+ # Build output
7
+ dist/
8
+ build/
9
+ *.tsbuildinfo
10
+ info/
11
+
12
+ # Environment files
13
+ .env
14
+ .env.local
15
+ .env.*.local
16
+
17
+ # Logs
18
+ logs/
19
+ *.log
20
+ npm-debug.log*
21
+ yarn-debug.log*
22
+ yarn-error.log*
23
+ pnpm-debug.log*
24
+ lerna-debug.log*
25
+
26
+ # OS files
27
+ .DS_Store
28
+ Thumbs.db
29
+
30
+ # IDE files
31
+ .vscode/
32
+ .idea/
33
+ *.swp
34
+ *.swo
35
+ *~
36
+ .project
37
+ .classpath
38
+ .c9/
39
+ *.launch
40
+ .settings/
41
+ *.sublime-workspace
42
+
43
+ # Testing
44
+ coverage/
45
+ .nyc_output
46
+
47
+ # State files
48
+ .solidworks-state.json
49
+ *.state.json
50
+
51
+ # Temporary files
52
+ *.tmp
53
+ *.temp
54
+ .cache/
55
+ .tmp_diag_*.py
56
+
57
+ # npm pack output
58
+ *.tgz
59
+
60
+ # Python virtualenv (for any Python integrations)
61
+ venv/
62
+ __pycache__/
63
+ *.pyc
64
+ EOF < /dev/null
65
+ .prettierrc
66
+
67
+ # docs folder (if built locally)
68
+ site/
69
+ coverage.xml
70
+ .coverage
71
+ .coverage.*
72
+
73
+ # Generated test artifacts
74
+ tests/.generated/
75
+
76
+ # Runtime-generated agent / cache artifacts
77
+ .generated/
78
+ .solidworks_mcp/
79
+ htmlcov/
80
+ .playwright-mcp/
81
+ tmp/ui_smoke/
82
+
83
+ # Claude local settings (personal, machine-specific)
84
+ .claude/*
85
+ !.claude/commands/
86
+ !.claude/commands/**
87
+ !.claude/skills/
88
+ !.claude/skills/**
89
+
90
+ # random mypy artifacts
91
+ mypy_*
92
+
93
+ .mypy_cache/
94
+ uv.lock
95
+ .venv
96
+ .venv/
97
+
98
+ # Live-demo artefacts produced by scripts/demo_sketches.py
99
+ out/
100
+
101
+ # Live demo recordings: the raw frames and the README demo's stills are
102
+ # working files; the GIFs and the call transcript are what gets published.
103
+ docs/assets/demos/*/recording/
104
+ docs/assets/demos/readme/*.png
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 ESPO Corporation
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,410 @@
1
+ Metadata-Version: 2.5
2
+ Name: solidworks-mcp-python
3
+ Version: 1.5.0
4
+ Summary: Python MCP server for SolidWorks: lets Claude and other AI agents build parts, assemblies and drawings through the SolidWorks COM API.
5
+ Project-URL: Homepage, https://github.com/andrewbartels1/SolidworksMCP-python
6
+ Project-URL: Documentation, https://andrewbartels1.com/SolidworksMCP-python/
7
+ Project-URL: Bug Reports, https://github.com/andrewbartels1/SolidworksMCP-python/issues
8
+ Project-URL: Source, https://github.com/andrewbartels1/SolidworksMCP-python
9
+ Project-URL: Changelog, https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/CHANGELOG.md
10
+ Author: Andrew Bartels
11
+ Maintainer: Andrew Bartels
12
+ License-Expression: MIT
13
+ License-File: LICENSE
14
+ Keywords: ai-agents,cad,cad-automation,claude,mcp,mcp-server,model-context-protocol,pywin32,solidworks,solidworks-api
15
+ Classifier: Development Status :: 4 - Beta
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Operating System :: Microsoft :: Windows
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
+ Classifier: Topic :: System :: Software Distribution
24
+ Requires-Python: >=3.13
25
+ Requires-Dist: aiosqlite>=0.19.0
26
+ Requires-Dist: chardet<6
27
+ Requires-Dist: charset-normalizer>=3.4.0
28
+ Requires-Dist: comtypes>=1.4.0; platform_system == 'Windows'
29
+ Requires-Dist: defusedxml>=0.7.1
30
+ Requires-Dist: fastmcp>=3.2.2
31
+ Requires-Dist: httpx>=0.24.0
32
+ Requires-Dist: jinja2>=3.1.0
33
+ Requires-Dist: loguru>=0.7.0
34
+ Requires-Dist: mcp>=1.28.1
35
+ Requires-Dist: pyasn1>=0.6.4
36
+ Requires-Dist: pydantic-ai-slim[anthropic,mcp,openai]<2,>=1.107.4
37
+ Requires-Dist: pydantic>=2.5.0
38
+ Requires-Dist: python-dotenv>=1.0.0
39
+ Requires-Dist: pywin32-ctypes>=0.2.0; platform_system == 'Windows'
40
+ Requires-Dist: pywin32>=306; platform_system == 'Windows'
41
+ Requires-Dist: rich>=13.0.0
42
+ Requires-Dist: sqlalchemy>=2.0.0
43
+ Requires-Dist: sqlmodel>=0.0.22
44
+ Requires-Dist: typer>=0.12.0
45
+ Requires-Dist: typing-extensions>=4.8.0
46
+ Requires-Dist: urllib3>=2.7.0
47
+ Requires-Dist: uvicorn>=0.24.0
48
+ Provides-Extra: dev
49
+ Requires-Dist: black>=23.9.0; extra == 'dev'
50
+ Requires-Dist: build>=1.0.0; extra == 'dev'
51
+ Requires-Dist: coverage[toml]>=7.3.0; extra == 'dev'
52
+ Requires-Dist: doc8>=1.1.0; extra == 'dev'
53
+ Requires-Dist: factory-boy>=3.3.0; extra == 'dev'
54
+ Requires-Dist: hatch-fancy-pypi-readme>=24; extra == 'dev'
55
+ Requires-Dist: mypy>=1.6.0; extra == 'dev'
56
+ Requires-Dist: numpy>=1.26.0; extra == 'dev'
57
+ Requires-Dist: pre-commit>=3.4.0; extra == 'dev'
58
+ Requires-Dist: pydocstyle>=6.3.0; extra == 'dev'
59
+ Requires-Dist: pypdfium2>=4.30.0; extra == 'dev'
60
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
61
+ Requires-Dist: pytest-benchmark>=4.0.0; extra == 'dev'
62
+ Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
63
+ Requires-Dist: pytest-mock>=3.11.0; extra == 'dev'
64
+ Requires-Dist: pytest-timeout>=2.1.0; extra == 'dev'
65
+ Requires-Dist: pytest-xdist>=3.3.0; extra == 'dev'
66
+ Requires-Dist: pytest>=7.4.0; extra == 'dev'
67
+ Requires-Dist: ruff>=0.1.0; extra == 'dev'
68
+ Requires-Dist: sphinx-autodoc-typehints>=1.24.0; extra == 'dev'
69
+ Requires-Dist: sphinx>=7.0.0; extra == 'dev'
70
+ Requires-Dist: tox>=4.11.0; extra == 'dev'
71
+ Provides-Extra: docs
72
+ Requires-Dist: mike>=2.0.0; extra == 'docs'
73
+ Requires-Dist: mkdocs-autorefs>=0.5.0; extra == 'docs'
74
+ Requires-Dist: mkdocs-awesome-pages-plugin>=2.9.0; extra == 'docs'
75
+ Requires-Dist: mkdocs-gen-files>=0.5.0; extra == 'docs'
76
+ Requires-Dist: mkdocs-include-markdown-plugin>=6.0.0; extra == 'docs'
77
+ Requires-Dist: mkdocs-literate-nav>=0.6.0; extra == 'docs'
78
+ Requires-Dist: mkdocs-material>=9.4.0; extra == 'docs'
79
+ Requires-Dist: mkdocs-mermaid2-plugin>=1.1.0; extra == 'docs'
80
+ Requires-Dist: mkdocs-minify-plugin>=0.7.0; extra == 'docs'
81
+ Requires-Dist: mkdocs-section-index>=0.3.0; extra == 'docs'
82
+ Requires-Dist: mkdocs<2,>=1.5.0; extra == 'docs'
83
+ Requires-Dist: mkdocstrings[python]>=0.24.0; extra == 'docs'
84
+ Requires-Dist: pygments>=2.16.0; extra == 'docs'
85
+ Provides-Extra: rag
86
+ Requires-Dist: faiss-cpu>=1.7.0; extra == 'rag'
87
+ Requires-Dist: numpy>=1.26.0; extra == 'rag'
88
+ Requires-Dist: sentence-transformers>=2.7.0; extra == 'rag'
89
+ Provides-Extra: test
90
+ Requires-Dist: coverage[toml]>=7.3.0; extra == 'test'
91
+ Requires-Dist: fastapi>=0.115.0; extra == 'test'
92
+ Requires-Dist: hatch-fancy-pypi-readme>=24; extra == 'test'
93
+ Requires-Dist: numpy>=1.26.0; extra == 'test'
94
+ Requires-Dist: pypdfium2>=4.30.0; extra == 'test'
95
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == 'test'
96
+ Requires-Dist: pytest-cov>=4.1.0; extra == 'test'
97
+ Requires-Dist: pytest-mock>=3.11.0; extra == 'test'
98
+ Requires-Dist: pytest-timeout>=2.1.0; extra == 'test'
99
+ Requires-Dist: pytest-xdist>=3.3.0; extra == 'test'
100
+ Requires-Dist: pytest>=7.4.0; extra == 'test'
101
+ Provides-Extra: ui
102
+ Requires-Dist: fastapi>=0.115.0; extra == 'ui'
103
+ Provides-Extra: vision
104
+ Requires-Dist: numpy>=1.26.0; extra == 'vision'
105
+ Requires-Dist: pillow>=10.0.0; extra == 'vision'
106
+ Requires-Dist: scikit-image>=0.23.0; extra == 'vision'
107
+ Description-Content-Type: text/markdown
108
+
109
+ # SolidWorks CAD Assistant & MCP Server
110
+
111
+ <!-- mcp-name: io.github.andrewbartels1/solidworks-mcp-python -->
112
+
113
+ **Languages:** [English](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/README.md) | [Español](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/README.es-ES.md)
114
+
115
+ [![Python 3.13+](https://img.shields.io/badge/python-3.13+-blue.svg)](https://www.python.org/downloads/)
116
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
117
+ [![Windows](https://img.shields.io/badge/Windows-10%2F11-blue?logo=windows)](https://www.microsoft.com/windows)
118
+ [![SolidWorks](https://img.shields.io/badge/tested%20on-SolidWorks%202026-red)](https://www.solidworks.com/)
119
+ [![Coverage](https://codecov.io/gh/andrewbartels1/SolidworksMCP-python/branch/main/graph/badge.svg)](https://codecov.io/gh/andrewbartels1/SolidworksMCP-python)
120
+
121
+ Python MCP server for SolidWorks automation with 154 tools, plus an optional agent/prompt-testing layer for AI-assisted workflows.
122
+
123
+ ## See it work
124
+
125
+ > Make a 100 x 50 x 10 mm AISI 1020 mounting plate with four M5 clearance holes, 10 mm in from each edge, and draw it fully dimensioned. Stack two of them 10 mm apart, check the result, and draw the assembly with a BOM.
126
+
127
+ ![A fully dimensioned plate, its drawing with GD&T, two plates mated 10 mm apart and the assembly drawing with a BOM, built in SolidWorks through the MCP tools](https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/readme/test_plate_stack_from_prompt_to_drawing-motion.gif)
128
+
129
+ The 58 tool calls an agent made from that prompt, run against SolidWorks 2026 through the same MCP tools a client calls, and recorded (sped up five times). Each result is checked against a hand calculation: the plate's volume and mass, the 10 mm gap and the BOM quantity. This is a replay of the calls, not a recorded model session.
130
+
131
+ > **Note:** the demo is not perfect, and is not the most efficient way to get this result. The run pauses after each call so it can be read, and the calls are chosen to show what the tools can do: every sketch dimension is added one at a time, and the mate distance is stepped down only so the plates are seen coming together.
132
+
133
+ The [walkthrough in the docs](https://andrewbartels1.github.io/SolidworksMCP-python/demos/#prompt-to-drawing) has the agent's plan and every call with its arguments. Run it yourself with the [README demo](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/tests/live/test_live_sw_readme_demo.py); the calls are also in [`plate_stack_calls.json`](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/assets/demos/readme/plate_stack_calls.json).
134
+
135
+ <details>
136
+ <summary>The 58 tool calls</summary>
137
+
138
+ 1. **Sketch** (24 calls): `create_sketch` on Top; four `add_line` for the 100 x 50 outline; `add_circle` for each Ø5.5 hole; `add_sketch_dimension` for the 100, the 50, one Ø5.5 and each hole 10 mm from two edges; `add_sketch_constraint` making the other three holes equal; `exit_sketch`
139
+ 2. **Check and extrude**: `check_sketch_fully_defined`, `create_extrusion` 10 mm (+49 049.7 mm³ read back)
140
+ 3. **Material and check**: `list_model_dimensions` (finds the Ø5.5 by value), `set_material` AISI 1020, `verify_model` (volume, mass 0.3875 kg, size, 1 feature, 1 body)
141
+ 4. **Plate drawing**: `generate_drawing_package` PS-01 (A3, four views, every model dimension laid out with no overlaps, notes, title block, PDF), `auto_center_marks`
142
+ 5. **GD&T**: `add_datum_tag` A, B and C, then `add_gtol` ⊕ Ø0.2 Ⓜ A|B|C on the Ø5.5
143
+ 6. **Assembly**: `insert_component` twice, `list_components`, `add_mate` Front and Right coincident and Top planes 60 mm apart, `set_dimension` stepping that distance down to 20 mm (10 calls), `verify_model` (2 parts, 3 mates, no interference; the stack measures 30 mm, so the gap is 10 mm)
144
+ 7. **Assembly drawing**: `set_custom_property` Material, `generate_drawing_package` PS-02 with `include_bom` (the BOM above the isometric: Demo Plate, QTY 2), then the same datums and position frame
145
+
146
+ </details>
147
+
148
+ ## Overview
149
+
150
+ > **Tried it?** Tell us what worked and what didn't in a [feedback issue](https://github.com/andrewbartels1/SolidworksMCP-python/issues/new?template=feedback.yml). Reports from real setups decide what gets fixed next.
151
+
152
+ This project focuses on practical SolidWorks automation with an AI-friendly loop:
153
+
154
+ 1. describe intent
155
+ 2. generate a plan
156
+ 3. execute MCP tools
157
+ 4. inspect results
158
+ 5. iterate
159
+
160
+ It includes:
161
+
162
+ - core MCP runtime for SolidWorks tool execution
163
+ - COM/VBA routing and adapter safety wrappers
164
+ - tool coverage across modeling, sketching, drawing, analysis, export, automation, templates, and macros
165
+ - optional agent orchestration/testing utilities under `src/solidworks_mcp/agents/`
166
+
167
+ ## Demos
168
+
169
+ Each GIF is a live test driving SolidWorks 2026 through the MCP tools, with the call and its result captioned beneath. Click one to see what it checks, a prompt that asks for it, and its tool calls.
170
+
171
+ <table>
172
+ <tr>
173
+ <td width="33%" valign="top"><a href="https://andrewbartels1.github.io/SolidworksMCP-python/demos/#verify-block"><img src="https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/verify-model/test_verify_model_passes_a_block_and_names_what_is_wrong.gif" alt="verify_model passes a block and names what is wrong" width="100%"></a><br><sub><code>verify_model</code> passes a block and names what is wrong</sub></td>
174
+ <td width="33%" valign="top"><a href="https://andrewbartels1.github.io/SolidworksMCP-python/demos/#verify-assembly"><img src="https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/verify-model/test_assembly_counts_components_mates_and_interference.gif" alt="An assembly: parts, mates and interference" width="100%"></a><br><sub>An assembly: parts, mates and interference</sub></td>
175
+ <td width="33%" valign="top"><a href="https://andrewbartels1.github.io/SolidworksMCP-python/demos/#verify-cut"><img src="https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/verify-model/test_cut_reports_the_volume_it_removed.gif" alt="A cut reports the volume it removed" width="100%"></a><br><sub>A cut reports the volume it removed</sub></td>
176
+ </tr>
177
+ <tr>
178
+ <td width="33%" valign="top"><a href="https://andrewbartels1.github.io/SolidworksMCP-python/demos/#verify-revolve"><img src="https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/verify-model/test_revolve_reports_the_volume_it_added.gif" alt="A revolve reports the volume it added" width="100%"></a><br><sub>A revolve reports the volume it added</sub></td>
179
+ <td width="33%" valign="top"><a href="https://andrewbartels1.github.io/SolidworksMCP-python/demos/#verify-round"><img src="https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/verify-model/test_round_part_size_is_exact.gif" alt="A round part's size is exact" width="100%"></a><br><sub>A round part's size is exact</sub></td>
180
+ <td width="33%" valign="top"><a href="https://andrewbartels1.github.io/SolidworksMCP-python/demos/#verify-selection"><img src="https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/verify-model/test_reading_the_model_keeps_the_selection.gif" alt="Reading the model keeps the selection" width="100%"></a><br><sub>Reading the model keeps the selection</sub></td>
181
+ </tr>
182
+ <tr>
183
+ <td width="33%" valign="top"><a href="https://andrewbartels1.github.io/SolidworksMCP-python/demos/#package-block"><img src="https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/drawing-package/test_generate_drawing_package_on_a_block.gif" alt="A full drawing package from one call" width="100%"></a><br><sub>A full drawing package from one call</sub></td>
184
+ <td width="33%" valign="top"><a href="https://andrewbartels1.github.io/SolidworksMCP-python/demos/#sheet-scale"><img src="https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/drawing-package/test_set_sheet_scale_halves_the_views.gif" alt="Setting the sheet scale" width="100%"></a><br><sub>Setting the sheet scale</sub></td>
185
+ <td width="33%" valign="top"><a href="https://andrewbartels1.github.io/SolidworksMCP-python/demos/#bom"><img src="https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/drawing-package/test_insert_bom_table_lists_both_parts.gif" alt="A BOM on an assembly drawing" width="100%"></a><br><sub>A BOM on an assembly drawing</sub></td>
186
+ </tr>
187
+ <tr>
188
+ <td width="33%" valign="top"><a href="https://andrewbartels1.github.io/SolidworksMCP-python/demos/#insert-model-dimensions"><img src="https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/drawing-dimensions/test_insert_model_dimensions_shows_each_dimension_once.gif" alt="Each model dimension shown once" width="100%"></a><br><sub>Each model dimension shown once</sub></td>
189
+ <td width="33%" valign="top"><a href="https://andrewbartels1.github.io/SolidworksMCP-python/demos/#arrange-dimensions"><img src="https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/drawing-dimensions/test_arrange_dimensions_clears_every_overlap.gif" alt="Clearing every overlap" width="100%"></a><br><sub>Clearing every overlap</sub></td>
190
+ <td width="33%" valign="top"><a href="https://andrewbartels1.github.io/SolidworksMCP-python/demos/#material"><img src="https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/engineering-data/test_material_applies_and_changes_mass.gif" alt="Material and mass" width="100%"></a><br><sub>Material and mass</sub></td>
191
+ </tr>
192
+ <tr>
193
+ <td width="33%" valign="top"><a href="https://andrewbartels1.github.io/SolidworksMCP-python/demos/#dimensions-and-measure"><img src="https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/engineering-data/test_dimensions_list_and_measure.gif" alt="Listing dimensions and measuring a face" width="100%"></a><br><sub>Listing dimensions and measuring a face</sub></td>
194
+ <td width="33%" valign="top"><a href="https://andrewbartels1.github.io/SolidworksMCP-python/demos/#flat-pattern"><img src="https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/engineering-data/test_export_flat_pattern_writes_a_dxf.gif" alt="Flat pattern of a sheet-metal part" width="100%"></a><br><sub>Flat pattern of a sheet-metal part</sub></td>
195
+ <td width="33%" valign="top"><a href="https://andrewbartels1.github.io/SolidworksMCP-python/demos/#custom-property"><img src="https://raw.githubusercontent.com/andrewbartels1/SolidworksMCP-python/main/docs/assets/demos/engineering-data/test_custom_property_round_trip.gif" alt="Custom properties" width="100%"></a><br><sub>Custom properties</sub></td>
196
+ </tr>
197
+ </table>
198
+
199
+ **[See every demo in the docs](https://andrewbartels1.github.io/SolidworksMCP-python/demos/)**: what each one shows, its prompt, every tool call with its arguments (all 58 for the demo at the top), and how to run them yourself.
200
+
201
+ ## Supported Today
202
+
203
+ - Windows + SolidWorks COM automation for the main CAD lifecycle.
204
+ - Tested on SolidWorks 2026. Earlier versions may work but are untested; if you try one, please [open an issue](https://github.com/andrewbartels1/SolidworksMCP-python/issues/new/choose) with what worked.
205
+ - Modeling, sketching, drawing, analysis, export, automation, templates, and macro tools.
206
+
207
+ ## Not Yet / Simulated
208
+
209
+ - Mock adapter output is simulated and should not be treated as engineering truth.
210
+ - Live 3D viewport streaming in a UI.
211
+ - Checkpoint-level interference validation.
212
+ - Simple simulation and fluid workflows
213
+ - Simple Topology Optimization via SimulationXpress etc.
214
+
215
+ ## Install
216
+
217
+ You need Windows 10 or 11 and SolidWorks (opened at least once). In PowerShell, install [uv](https://docs.astral.sh/uv/), then open a new PowerShell window and run setup:
218
+
219
+ ```powershell
220
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
221
+ uvx solidworks-mcp-python setup
222
+ ```
223
+
224
+ uv fetches Python 3.13 and the server from PyPI by itself; nothing to clone. The guided setup then:
225
+
226
+ 1. finds your SolidWorks version and the MCP clients on your PC: Claude Desktop, Claude Code, VS Code, Cursor and LM Studio;
227
+ 2. lets you pick which clients to connect;
228
+ 3. starts the server once to check that it lists its tools (in mock mode, so SolidWorks isn't touched);
229
+ 4. adds a `solidworks` entry to each client you picked, then tells you what to restart.
230
+
231
+ Nothing needs a login or an API key, and the server runs only on your PC. Setup changes only the `solidworks` entry in each client's config. It backs the file up first and never shows or changes your other servers. Other entries that start this server the old way (`run-mcp.ps1` and the like) are offered for removal, so tools don't load twice.
232
+
233
+ **To check it worked:** open SolidWorks, restart your client, and ask *"What model is open in SolidWorks?"*
234
+
235
+ The package is `solidworks-mcp-python`. `uvx solidworks-mcp` installs a different project. To work on the server itself, [install from a clone](https://andrewbartels1.github.io/SolidworksMCP-python/getting-started/installation/#install-from-source). More fixes are in [Troubleshooting](https://andrewbartels1.github.io/SolidworksMCP-python/getting-started/installation/#troubleshooting).
236
+
237
+ ## Connect your client
238
+
239
+ Run setup again whenever you want to add a client:
240
+
241
+ ```powershell
242
+ uvx solidworks-mcp-python setup
243
+ ```
244
+
245
+ | Option | What it does |
246
+ | --- | --- |
247
+ | `--client claude-desktop` | Configure one client without the list. Repeat it for several (`claude-code`, `vscode`, `cursor`, `lmstudio`). |
248
+ | `--dry-run` | Show what would change, and change nothing. |
249
+ | `--yes` | Don't ask: configure every client found. |
250
+ | `--remove` | Take the `solidworks` entry out again. |
251
+ | `--replace-old` | Remove older entries for this server without asking. |
252
+ | `--mock` | Configure mock mode, which answers without SolidWorks (for trying the tools). |
253
+
254
+ To set up a client by hand instead, each one runs `uvx solidworks-mcp-python`. If a client can't find `uvx`, use its full path, from `(Get-Command uvx).Source`.
255
+
256
+ <details>
257
+ <summary><b>Claude Desktop</b></summary>
258
+
259
+ Add this to `claude_desktop_config.json`, alongside anything already in it. Depending on how Claude Desktop was installed, the file is in one of:
260
+
261
+ - `%LOCALAPPDATA%\Claude-Data\claude_<id>\` (current releases)
262
+ - `%LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude\`
263
+ - `%APPDATA%\Claude\`
264
+
265
+ ```json
266
+ {
267
+ "mcpServers": {
268
+ "solidworks": {
269
+ "command": "uvx",
270
+ "args": ["solidworks-mcp-python"]
271
+ }
272
+ }
273
+ }
274
+ ```
275
+
276
+ Quit Claude Desktop from the system tray (closing the window isn't enough) and reopen it. **Settings > Developer** should show `solidworks` as running.
277
+
278
+ </details>
279
+
280
+ <details>
281
+ <summary><b>Claude Code</b></summary>
282
+
283
+ ```powershell
284
+ claude mcp add --scope user solidworks -- uvx solidworks-mcp-python
285
+ ```
286
+
287
+ Run `/mcp` in a new session to check that `solidworks` is connected.
288
+
289
+ </details>
290
+
291
+ <details>
292
+ <summary><b>VS Code</b></summary>
293
+
294
+ Add this to `%APPDATA%\Code\User\mcp.json`:
295
+
296
+ ```json
297
+ {
298
+ "servers": {
299
+ "solidworks": {
300
+ "type": "stdio",
301
+ "command": "uvx",
302
+ "args": ["solidworks-mcp-python"]
303
+ }
304
+ }
305
+ }
306
+ ```
307
+
308
+ Run **MCP: List Servers** from the Command Palette and start `solidworks`. Its output should end with `Discovered 154 tools` (the count grows as tools are added).
309
+
310
+ </details>
311
+
312
+ <details>
313
+ <summary><b>LM Studio</b></summary>
314
+
315
+ Add this to `%USERPROFILE%\.lmstudio\mcp.json`:
316
+
317
+ ```json
318
+ {
319
+ "mcpServers": {
320
+ "solidworks": {
321
+ "command": "uvx",
322
+ "args": ["solidworks-mcp-python"]
323
+ }
324
+ }
325
+ }
326
+ ```
327
+
328
+ Restart LM Studio and enable `solidworks` in the Program tab.
329
+
330
+ </details>
331
+
332
+ For mock mode, which needs no SolidWorks, use `"args": ["solidworks-mcp-python", "--mock"]`. Linux and WSL work for the docs, the tests and mock mode, but not for driving SolidWorks.
333
+
334
+ <details>
335
+ <summary><b>Optional features (environment variables)</b></summary>
336
+
337
+ Set these in your client's `env` block for the server, or in the shell before starting it by hand. Every `SOLIDWORKS_MCP_<FIELD>` maps to the config field of the same name.
338
+
339
+ **SolidWorks-as-Code session logging (off by default).** Logs every adapter tool call to a local SQLite database, so a session can be replayed or exported as a runnable Python script (see [docs/getting-started/solidworks-as-code.md](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/getting-started/solidworks-as-code.md)).
340
+
341
+ | Variable | Default | Meaning |
342
+ | --- | --- | --- |
343
+ | `SOLIDWORKS_MCP_SOC_LOGGING_ENABLED` | `false` | Turn logging on. |
344
+ | `SOLIDWORKS_MCP_SOC_SESSION_ID` | *(generated)* | Session name to log under. If unset while logging is on, a `soc-YYYYMMDD-HHMMSS` id is generated at startup. |
345
+ | `SOLIDWORKS_MCP_SOC_DB_PATH` | `.solidworks_mcp/agent_memory.sqlite3` | Override the database file. |
346
+
347
+ ```powershell
348
+ $env:SOLIDWORKS_MCP_SOC_LOGGING_ENABLED = "true"
349
+ $env:SOLIDWORKS_MCP_SOC_SESSION_ID = "my-bracket"
350
+ .\.venv\Scripts\solidworks-mcp.exe
351
+ # ...work in your MCP client...
352
+ .\.venv\Scripts\python.exe -m solidworks_mcp.agents.soc_exporter my-bracket my_bracket.py
353
+ ```
354
+
355
+ It works only with the circuit-breaker adapter wrapper (the default for real SolidWorks); the mock adapter does not log.
356
+
357
+ **API docs index auto-refresh (on by default).** The API-lookup tools (`lookup_api_interface`, `lookup_api_method`, `find_related_api_members`) and `search_solidworks_api_help` read a JSON index built by `discover_solidworks_docs`. When the index is older than the threshold, the next lookup rebuilds it.
358
+
359
+ | Variable | Default | Meaning |
360
+ | --- | --- | --- |
361
+ | `SOLIDWORKS_MCP_DOCS_INDEX_AUTO_REFRESH` | `true` | Rebuild a stale index automatically. No-op without SolidWorks + win32com; a failed rebuild keeps serving the existing index. |
362
+ | `SOLIDWORKS_MCP_DOCS_INDEX_MAX_AGE_DAYS` | `21` | Age after which the index counts as stale. |
363
+
364
+ </details>
365
+
366
+ ## Contributing
367
+
368
+ `install.ps1` gives you an editable install, so code changes take effect the next time a client starts the server. For the development tools, install the extras:
369
+
370
+ ```powershell
371
+ .\.venv\Scripts\python.exe -m pip install -e ".[dev,test,docs]"
372
+ ```
373
+
374
+ `.\dev-commands.ps1` lists the common workflows:
375
+
376
+ - `dev-install`: install or update the local dev environment
377
+ - `dev-test`: run the standard test suite (the CI-safe subset)
378
+ - `dev-test-full`: run the full suite, including smoke and integration paths
379
+ - `dev-lint` and `dev-format`: lint checks and formatting
380
+ - `dev-docs-build`, `dev-docs-strict` and `dev-docs-audit`: build the docs, build them failing on warnings, or write an audit report to `.generated/docs`
381
+
382
+ To mirror GitHub Actions CI locally (Ubuntu, the conda env from `solidworks_mcp.yml`, and `make test`), run `.\scripts\run-ci-local.ps1`. The first run builds the image; add `-NoBuild` to re-run tests without rebuilding.
383
+
384
+ ## Docs
385
+
386
+ - Main docs site: <https://andrewbartels1.github.io/SolidworksMCP-python/>
387
+ - Home/overview: [docs/index.md](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/index.md)
388
+
389
+ Key docs sections:
390
+
391
+ - Getting Started: [docs/getting-started](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/getting-started)
392
+ - MCP Server Guide: [docs/user-guide](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/user-guide)
393
+ - Tool Catalog: [docs/user-guide/tool-catalog](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/user-guide/tool-catalog)
394
+ - Agents and Skills: [docs/agents](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/agents)
395
+ - Planning/Roadmap: [docs/planning](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/planning)
396
+
397
+ Direct links:
398
+
399
+ - [Installation](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/getting-started/installation.md)
400
+ - [Quick Start](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/getting-started/quickstart.md)
401
+ - [Tutorial: U-Joint Assembly Build](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/getting-started/tutorials/u-joint-assembly-build.md)
402
+ - [Tutorial Tracks](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/getting-started/tutorial-tracks.md)
403
+ - [VS Code MCP Setup](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/getting-started/vscode-mcp-setup.md)
404
+ - [Architecture](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/user-guide/architecture.md)
405
+ - [Agents and Prompt Testing](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/agents/agents-and-testing.md)
406
+ - [PydanticAI and Schemas](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/docs/agents/pydantic-ai-and-schemas.md)
407
+
408
+ ## License
409
+
410
+ MIT License. See [LICENSE](https://github.com/andrewbartels1/SolidworksMCP-python/blob/main/LICENSE).