dsh-sw-cad
注册两个 MCP 服务器,在 Windows 上通过 COM 驱动本机安装的 AutoCAD 与 SolidWorks,另附两个按需技能。仅 Windows,需要 Python 3.11+;首次加载时自动安装钉死版本的上游服务器,并且只给真正装了的 CAD 应用注册对应的那一行。两者都只广告两个元工具而非完整工具表(SolidWorks 用本仓库的 discovery 垫片,AutoCAD 用上游 DISCOVERY_MODE=search),首次请求前加载的工具定义分别从 23,404 降到 256 token、从 83,732 降到 365 token。
安装
dsh plugin --profile web add dsh-sw-cad
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✓ |
| 2 列装 | ✓ |
| 3 挂载 | ✓ |
| 4 启动 | — |
四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
dsh-sw-cad


两个 MCP 服务器 + 两个 Skill,让 DeepSeek Harness 或 Codex 的 agent 真正操控 CAD 软件。
它们封装了两个现成的开源项目——U-C4N/Autocad-MCP 和
wzyn20051216/solidworks-automation-skill——
让 agent 能在 AutoCAD 里画图、在 SolidWorks 里建模,并把结果导出。本仓库是配置层:隔离环境、启动参数、
按需加载、客户端注册。它不 fork、不魔改、不重新分发这两个服务器。上游缺什么能力,本仓库就在它前面补一层
——比如 SolidWorks 没有办法收起自己那 66 个工具,那就加一个垫片,而不是动它。
[English](README.md) | 中文
它做什么,什么时候需要它
一个能"看懂"图纸的 CLI agent 有用,一个能"产出"图纸的 agent 是另一回事。装上本配置包后,dsh 或 Codex
能接住这样一句话——"按 ISO A3 图框画一个 M6 螺纹孔支座,标注后导出 PDF"——并且真的做出来:建图层、画几何、
标尺寸、盖标题栏、跑验证器,最后把文件交给你。
代价和所有 COM 自动化一样:CAD 软件必须开着,agent 必须和 CAD 同 Windows 用户、同完整性级别运行。
这不是云服务,原生 .dwg / .sldprt 输出也没有无头替代方案。
两个 Skill 是入口。它们按需加载——只有当请求命中 SKILL.md 的 description 时才被读取,所以空闲会话不为此
付出任何上下文成本:
Skill · 工作方式
solidworks-automation · 脚本驱动:66 个 Python 模块(30 个 sw_*.py COM 封装 + OCCT/FEA/DFM 工具),自带预检、能力门禁与证据链
autocad-mcp-pro · 本仓库原创(上游没有 AutoCAD skill),通过两个元工具驱动 AutoCAD MCP
两个 MCP 服务器是肌肉,注册在客户端配置里:
服务器 · 广告工具数 · 空闲成本 · 模式
autocad · 2 · 365 token · 上游自带 DISCOVERY_MODE=search:只广告 search_tools + call_tool,242 个工具的目录按关键词检索
solidworks · 2 · 256 token · 本仓库的 mcp-shim/ 挡在上游 66 工具服务器前面(50 个 solidworks_ + 14 个 cadstudio_ + 2 个 design_*),后者全量广告要 23,404 token
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/token-cost-dark.svg">
<img alt="常驻上下文成本柱状图:AutoCAD 直连 83,732 token,SolidWorks 直连 23,404,两个都直连 107,136,本仓库配置 621" src="docs/token-cost-light.svg">
</picture>
*工具定义是在你提出第一个请求之前就要付掉的。两台服务器直连要 107,136 token,走本仓库这套配置是 621,
省 99.4%。数字可用 mcp-shim/verify_shim.py 复现。*
你说人话
│
├─ dsh / Codex 按 SKILL.md 的 description 按需加载 Skill
│ ├─ solidworks-automation → sw_*.py 脚本 → COM → SolidWorks
│ └─ autocad-mcp-pro → search_tools / call_tool → MCP → AutoCAD
│
└─ MCP 服务器(cordis.patch.yml / codex config.toml)
├─ autocad 上游 discovery 模式,242 工具按需检索
└─ solidworks 本仓库垫片,2 个元工具,66 工具按需检索
└─ 首次调用时才拉起上游 server.py
哪些是上游的,哪些是本仓库的
这一点在这里比通常更重要——两个服务器都是别人的成果。分工如下:
部分 · 来源 · 许可证
AutoCAD MCP 服务器(autocad-mcp-pro) · U-C4N/Autocad-MCP,从 PyPI 安装 · MIT
SolidWorks Skill + MCP 服务器 · wzyn20051216/solidworks-automation-skill,安装时克隆 · MIT
skills/autocad-mcp-pro/SKILL.md · 本仓库原创——上游没有 AutoCAD skill · MIT
mcp-shim/(SolidWorks discovery 垫片 + 词表) · 本仓库原创——上游没有等价机制 · MIT
bin/、lib/(含探测 CAD COM 服务器的 probe.py)、package.json、cordis.patch.yml、install.ps1、bootstrap.ps1、codex-config.snippet.toml、assets/、两份 README · 本仓库原创 · MIT
上游代码一行都没有进仓库。 安装脚本在运行时才去 PyPI 取包、克隆(或 zip 下载)SolidWorks 仓库,所以
你拿到的永远是上游当前版本,著作权也始终归上游。本仓库补的是它们缺失的那一层:经过验证的启动参数、
discovery 模式配置、给缺这个机制的那台服务器补的垫片、按需 Skill 接线、把几个 G 的依赖挡在 C 盘之外的
junction 技巧,以及一个在 git 协议被拦时还能装完的安装器。
安装
三条路,挑一条。装之前先看本节末尾的前置条件。
1. 作为 dsh 插件安装(推荐)
dsh plugin --profile web add dsh-sw-cad
这就是全部。package.json 里声明了 dsh.bundle.patch,dsh 会读到本仓库的 cordis.patch.yml,
它只插入一行:这个包本身。包是一个真正的 cordis 插件(lib/index.js),不是包着一个可执行文件的壳,
所以 dsh 直接从 profile 里 import 它,不需要任何东西在 PATH 上。
首次加载时插件会自己解析路径,缺上游就把钉死版本的上游装好(几分钟,只一次),然后注册两个 MCP
客户端(绝对路径)。装不上就直接抛错,带上缺失的路径和重跑的命令——而不是注册两行起不来的配置,
让人以为装好了却没有工具。设 SW_CAD_NO_AUTO_INSTALL=1 可以关掉自动安装,把缺失项变成一条明确的报错。
2. npm 全局安装(附带 CLI)
npm install -g dsh-sw-cad dsh-sw-cad install
结果一样,额外把 dsh-sw-cad 放进 PATH,可以用 doctor、where、serve——不想启动 dsh 就想先查一下
装没装好时有用。
3. 不用 npm:bootstrap.ps1
git clone https://github.com/27painter/dsh-sw-cad.git cd dsh-sw-cad .\bootstrap.ps1 -Check # 只检测,不改动;缺东西时退出码为 1 .\bootstrap.ps1 # 缺什么装什么
它检查十项,只修缺失或过期的部分:
检查项 · 由谁修复
Python ≥ 3.11 · 不修——报出问题就停
venv-autocad + autocad-mcp-pro · install.ps1
venv-solidworks + mcp / pymupdf / ezdxf / pywin32 · install.ps1
SolidWorks skill 克隆 · install.ps1
discovery 垫片 · 从本仓库拷贝
垫片检索目录 · 用 --build-catalog 重建;比 server.py 旧时也会重建
~/.dsh/skills junction · 创建
~/.dsh/cordis.patch.yml 条目 · install.ps1(先备份)
~/.codex/skills junction · 创建
~/.codex/config.toml 条目 · 追加(先备份)
跑第二次是空操作。全部就绪时退出码 0,否则 1,所以可以放心塞进脚本或交给 agent。
除非核心组件真的缺失,否则不会下载任何东西。
[!WARNING]
第 3 条路还会写~/.dsh/cordis.patch.yml。如果你同时又装了插件,那就是用同一个serverName把同样
两个服务器注册了第二遍,dsh 会拒绝重复注册,会话直接起不来。两条路只能走一条:装了插件就把
~/.dsh/cordis.patch.yml留成[]。
命令一览
命令 · 作用
dsh-sw-cad install · 装钉死版本的上游服务器,并写 ~/.dsh/sw-cad.json
dsh-sw-cad doctor · 报告哪些有、哪些缺,并打印钉死的版本;不改动,缺东西时退出码 1
dsh-sw-cad where · 打印服务器会用到的每一条路径
dsh-sw-cad serve autocad\ · solidworks · 以 stdio 跑一个 MCP 服务器,用于手动测试
install 是幂等的,而且插件首次加载时会自动跑一遍。版本钉在 lib/upstream.json——autocad-mcp-pro 1.6.0
加一个固定的 SolidWorks skill 提交——所以今天装和一个月后装,拿到的是同一套服务器。
[!TIP]
不想自己敲这些命令? 把下面这段发给你的 agent(dsh、Codex,或任何能在这台机器上跑命令的 agent),
它会替你装完——后面几节只在出问题时才需要看。
在这台 Windows 机器上安装 https://github.com/27painter/dsh-sw-cad。 运行:npm install -g dsh-sw-cad && dsh-sw-cad install 第一条装包,第二条装两个上游服务器(AutoCAD MCP 与 SolidWorks skill)并写好客户端条目。 dsh-sw-cad install 是幂等的,只补缺失的部分。 不要提权运行:它必须和 AutoCAD、SolidWorks 是同一个 Windows 用户。 除 ~/.dsh 与 ~/.codex 之外不要往 C 盘写东西,也不要动 CAD 安装目录和注册表。 装完用 dsh-sw-cad doctor、dsh --profile headless --dump-config、codex mcp list 验证。 哪一步失败就如实报告,不要自己绕过。
前置条件
- Windows 10/11,已安装 AutoCAD 和/或 SolidWorks
- PATH 里有 Python ≥ 3.11(
python --version) - dsh(DeepSeek Harness)或 Codex CLI;第 1、2 条路还需要 Node ≥ 20
- Git —— 可选;git 被拦时安装器会自动降级为 codeload zip 下载
先把仓库拿到本地:
git clone https://github.com/27painter/dsh-sw-cad.git cd dsh-sw-cad
机器上没装 CAD
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:4,最后更新 2026-10-25