Skip to main content
Glama
allen2123231

inventor-mcp

by allen2123231
README.md
# Inventor MCP

透過自然語言操作 Autodesk Inventor,建立參數化零件、草圖、孔位與鈑金特徵,並儲存或匯出模型。

本儲存庫提供 MCP 伺服器、建模 Skills 與 API 技術筆記。高階建模工具的長度參數以 **毫米(mm)** 為單位;透過 `execute_python` 直接操作 Inventor COM 時,內部長度單位為 **公分(cm)**,需自行換算。

## 功能介紹

目前 `src/server.py` 定義 **36 個 MCP 工具**:

| 類別 | 工具 | 用途 |
| --- | --- | --- |
| 連線 | `connect`、`status` | 連接 Inventor,查看目前文件資訊 |
| 文件 | `create_part`、`save_document`、`export_document` | 建立零件、儲存 IPT、匯出 STEP/STL/SAT/IGES |
| 草圖 | `create_sketch`、`draw_rectangle`、`draw_circle`、`draw_line`、`draw_polygon`、`draw_closed_profile` | 建立工作平面或面上的草圖與輪廓 |
| 實體特徵 | `extrude`、`revolve`、`fillet`、`chamfer`、`hole`、`hole_linear`、`circular_pattern` | 擠出、旋轉、圓角、倒角、孔與環形陣列 |
| 參數 | `get_parameters`、`set_parameter`、`add_parameter` | 查詢與調整模型參數 |
| 鈑金 | `set_sheet_metal_thickness`、`sheet_metal_face`、`flange`、`sheet_metal_cut` | 板厚、基礎板面、凸緣與切割 |
| 幾何檢查 | `inspect`、`list_edges`、`list_faces`、`find_edge`、`find_face` | 查看體積、邊界及拓撲,依位置尋找邊與面 |
| 特徵管理 | `list_features`、`delete_feature`、`suppress_feature` | 列出、刪除或抑制特徵 |
| 進階操作 | `transaction`、`execute_python`、`reload_api` | 交易與回復、執行 Python、重新載入 API 包裝程式 |

`execute_python` 可以處理專用工具尚未涵蓋的操作。鈑金展開可透過 Inventor API 與附帶 Skill 操作,目前沒有獨立的展開 MCP 工具。

## 系統需求

- Windows 電腦及已安裝、可正常啟動的 Autodesk Inventor。
- 此程式包含針對 Inventor 2026 的 API 處理;其他版本需另外驗證。
- Python 3.12 以上。
- Git,以及可連線下載 Python 套件的環境。

此 MCP 透過 Windows COM 操作本機 Inventor,不能直接在 macOS、Linux 或 WSL 的 Linux Python 中執行。

## 安裝方式

### 1. 下載程式並安裝依賴

在 PowerShell 執行,將專案放在固定資料夾:

```powershell
git clone https://github.com/allen2123231/inventor-mcp.git
cd inventor-mcp
python --version
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .
```

請確認 `python --version` 顯示 3.12 以上,再建立虛擬環境。依賴套件由 `pyproject.toml` 管理,包含 `mcp[cli]` 與 `pywin32`。

### 2. 設定 MCP 用戶端

以下為使用 `mcpServers` 格式的設定範例,亦可參考 [.mcp.json.example](.mcp.json.example)。請把 `C:/path/to/inventor-mcp` 換成實際安裝位置。

```json
{
  "mcpServers": {
    "inventor": {
      "command": "C:/path/to/inventor-mcp/.venv/Scripts/python.exe",
      "args": ["-X", "utf8", "-m", "src.server"],
      "cwd": "C:/path/to/inventor-mcp"
    }
  }
}
```

MCP 使用 **stdio** 通訊。不同用戶端的設定格式可能不同,請依用戶端規格填入相同的 Python 路徑與啟動參數。完成設定後,重新載入 MCP 連線。

### 3. 開啟 Inventor 並驗證

先開啟 Inventor,再由 AI 助理呼叫:

```text
connect()
status()
```

`connect` 會嘗試連接已執行的 Inventor;無法取得現有執行個體時,會嘗試啟動 Inventor。`status` 可檢查連線與目前文件資訊;尚未開啟文件時,會回報已連線但沒有文件。

目前工具未提供依視窗 HWND 選擇執行個體的參數。若同時開啟多個 Inventor,修改前必須先確認連上的文件。

## 中文操作範例

- 「先確認 Inventor 的連線狀態與目前零件。」
- 「建立直徑 50 mm、高 10 mm 的圓柱,檢查體積後另存 IPT。」
- 「在指定面建立孔,先列出面與位置,再執行建模。」
- 「列出零件參數,將指定長度改為 120 mm,檢查特徵是否正常。」
- 「建立指定板厚的鈑金零件,加入凸緣並確認高度。」
- 「把確認完成的零件匯出成 STEP。」

首次測試請使用新零件。可依序執行:

```text
connect()
create_part(name="MCP_Test", template="metric")
create_sketch(plane="XY")
draw_circle(x=0, y=0, diameter=50)
extrude(distance=10)
inspect()
```

理想圓柱體積約為 **19,634.95 mm³**。確認特徵與尺寸後,再以指定的完整路徑呼叫 `save_document`,並重新開啟檔案核對。

## 附帶 Skills

| Skill | 內容 |
| --- | --- |
| [inventor-modeling](skills/inventor-modeling/SKILL.md) | 建模流程、單位換算、草圖約束、孔位、鈑金與模型檢查 |
| [inventor-din-parts](skills/inventor-din-parts/SKILL.md) | DIN/ISO 標準零件的建模流程與尺寸表,例如螺帽、螺栓、墊圈及法蘭 |

Skills 提供操作流程,MCP 提供實際工具;使用 Skills 前仍須先完成 MCP 設定。Skill 內的參考尺寸需依實際採用的標準版本與加工需求確認。

在 Codex 中,可將這兩個 Skill 資料夾安裝到個人的 `.agents/skills/`。例如在本專案根目錄執行:

```powershell
$cadSkillsDir = Join-Path $env:USERPROFILE '.agents\skills'
New-Item -ItemType Directory -Force -Path $cadSkillsDir | Out-Null
Copy-Item -LiteralPath '.\skills\inventor-modeling' -Destination $cadSkillsDir -Recurse
Copy-Item -LiteralPath '.\skills\inventor-din-parts' -Destination $cadSkillsDir -Recurse
```

以上為首次安裝範例;若同名 Skill 已存在,請先比較內容再更新,避免覆蓋自己的修改。其他 AI 用戶端請使用其支援的 Skill 安裝位置。

## 使用注意與問題排除

- **連線失敗:** 確認 Inventor 能正常啟動、Python 是 Windows 版本,且使用安裝依賴的同一個虛擬環境。
- **找不到範本:** 檢查 Inventor 的範本設定;`create_part` 可傳入實際 IPT 範本完整路徑。鈑金可使用 `template="sheet_metal"`,仍需存在可用的鈑金範本。
- **草圖或特徵錯誤:** 先確認目前文件是目標零件,並檢查輪廓是否閉合、邊與面的選取是否正確。
- **邊與面編號改變:** 建立特徵後重新查詢幾何;可用 `find_edge`、`find_face` 依位置搜尋,避免沿用舊編號。
- **單位換算:** 高階工具長度使用 mm;直接呼叫 COM 時,長度常用 cm,角度需依 API 規格處理。
- **中文輸出:** 啟動參數加入 `-X utf8`,減少 Windows 編碼問題。
- **COM 快取問題:** 避免隨意混用 `EnsureDispatch` 與動態 COM;錯誤原因及排查方式見 [API 技術筆記](docs/inventor-api-notes.md)。
- **交易回復:** `transaction(action="begin")` 開始一組操作;成功後 `commit`,需要回復時 `abort`。檔案備份仍應獨立保留。

## 專案結構

```text
src/server.py          MCP 工具定義與 stdio 入口
src/inventor_api.py    Inventor COM 包裝與幾何操作
skills/                建模與標準零件 Skills
docs/                  API 技術筆記
assets/                專案資源
llms-install.md        AI 助理安裝與驗證指引
.mcp.json.example      MCP 設定範例
pyproject.toml         套件資訊與依賴
LICENSE                MIT 授權
```

## 後續開發方向

以下為規劃項目,尚未代表已完成功能。

### 第一階段:連線與驗證

- [ ] 新增多執行個體辨識,明確選擇目標 Inventor 視窗與文件。
- [ ] 補齊安裝診斷、連線失敗及 COM 中斷的中文提示。
- [ ] 建立特徵健康度、尺寸、儲存及重新開啟的驗證流程。
- [ ] 加入可重現的基本零件與鈑金測試案例。

### 第二階段:鈑金與加工圖

- [ ] 提供獨立的展開、展開尺寸讀取與 DXF 匯出工具。
- [ ] 增加折彎規則、扣料參數與材料設定管理。
- [ ] 擴充工程圖、視圖比例、尺寸與圖框操作。
- [ ] 支援板件編號、批次處理及逐件結果報告。

### 第三階段:Skills 與整合安裝

- [ ] 整理繁體中文建模 Skills、操作範例與驗收規則。
- [ ] 與 Rhino、AutoCAD 流程統一板件編號、單位及交換格式。
- [ ] 納入 CAD 整合 Plugin,提供集中安裝與連線檢查。
- [ ] 建立版本相容性清單、更新檢查及回復舊版機制。

## 授權

採用 [MIT License](LICENSE),使用與散布時請保留該文件中的版權及授權聲明。