内容
# Inventor MCP 服务器
一个 [模型上下文协议(MCP)](https://modelcontextprotocol.io) 服务器,通过 COM 自动化将 Autodesk Inventor 置于 AI 助手的控制之下。它作为一个独立的进程与正在运行的 Inventor 实例一起运行,并为支持 MCP 的客户端(如 Claude Desktop、Claude Cowork 或 Cursor)提供工具,以直接驱动 Inventor:草图、创建特征、装配零件、生成图纸和导出文件。
无需插件,无需云连接:服务器通过 `pywin32`/COM 直接与本地 Inventor 安装程序通信。
## 要求
- 安装有 **Autodesk Inventor** 的 Windows(测试版本为 2027.1,其他合理的新版本也应适用)
- Python 3.10+
- 支持 MCP 的客户端(Claude Desktop、Claude Cowork、Cursor、VS Code 等)
## 安装
```bash
pip install "mcp[cli]" pywin32
```
在调用第一个工具时,Inventor 需要正在运行(服务器连接到活动实例,如果需要则启动新实例)。
## 添加到您的 MCP 客户端
将服务器添加到客户端的配置文件中(对于 Claude Desktop/Cowork,这是 `claude_desktop_config.json`):
```json
{
"mcpServers": {
"inventor-mcp": {
"command": "python",
"args": ["C:/path/to/inventor_mcp_server.py"]
}
}
}
```
重启客户端以便工具被获取。
## 功能概述
### 连接
| 工具 | 描述 |
|---|---|
| `ping` | 检查与 Inventor 的连接并返回版本 |
### 基本几何和草图
| 工具 | 描述 |
|---|---|
| `create_part` | 创建一个新的空零件文档(`.ipt`) |
| `create_box` | 从矩形草图 + 拉伸创建方块 |
| `create_cylinder` | 从圆形草图 + 拉伸创建圆柱体 |
| `create_revolve` | 回转实体(圆盘、圆柱体、管/环、部分回转) |
| `extrude_cut` | 从现有实体中切出矩形凹槽 |
所有基于草图的工具都尝试使草图 **完全约束** —— 使用实际尺寸(`DimensionConstraints`)和几何约束(`GeometricConstraints`)代替松散的、约束不足的几何图形。每个工具的响应都报告生成的约束状态(`fully` / `partially`);约束是尽力而为的,绝不会以牺牲几何图形本身为代价而失败。
### 特征
| 工具 | 描述 |
|---|---|
| `add_hole` | 在位置 (x, y) 处创建孔;通孔或给定深度 |
| `add_fillet` | 圆角;可选过滤为 `all`、`top`、`bottom` 或 `vertical` 边 |
| `add_chamfer` | 倒角;与 `add_fillet` 相同的边过滤 |
| `pattern_rectangular` | 最近创建的孔的矩形阵列 |
| `pattern_circular` | 最近创建的孔的圆形阵列(螺栓圆) |
### 参数
| 工具 | 描述 |
|---|---|
| `get_parameters` | 列出所有模型参数,包含名称、表达式和值 |
| `set_parameter` | 通过表达式(例如 `"50 mm"`)更改参数并更新模型 |
### 检查
| 工具 | 描述 |
|---|---|
| `get_properties` | 读取 iProperties(设计跟踪) |
| `get_mass_properties` | 质量、体积、表面积、质心 |
| `list_features` | 按类型列出现有特征 |
### 文件和导出
| 工具 | 描述 |
|---|---|
| `save_document` | 保存活动文档 |
| `open_document` | 打开现有的 `.ipt`/`.iam`/`.idw` |
| `export_step` | STEP 导出 |
| `export_stl` | STL 导出(3D 打印) |
| `export_dxf` | DXF 导出(主要用于钣金平面展开图) |
| `export_dwg` | 图纸的 DWG 导出 |
### 装配
| 工具 | 描述 |
|---|---|
| `create_assembly` | 创建新的空装配(`.iam`) |
| `place_component` | 在位置 (x, y, z) 处放置零件/装配 |
| `list_occurrences` | 列出活动装配中的组件 |
### 图纸
| 工具 | 描述 |
|---|---|
| `create_drawing` | 从模型创建带有 4 个标准视图(正面、顶部、侧面、等轴测)的图纸 |
## 已知限制
- **无实际装配约束。** `place_component` 仅通过坐标定位组件;它不设置配合/对齐关系。没有 UI 的交互式面/边选择很脆弱,因此故意省略了这一点,以免交付不可靠的功能。
- **图案仅作用于最近创建的孔。** `pattern_rectangular` 和 `pattern_circular` 故意仅复制最后的 `add_hole` 特征,而不是任意特征。
- **圆角/倒角如果没有过滤器,则会影响所有边** 的第一个实体。使用 `edges="top"/"bottom"/"vertical"` 来缩小范围;更精细的选择(例如单个命名边)不可用。
- **完全约束是尽力而为的。** 在混合位置情况下(一个坐标恰好为 0,另一个坐标不是 —— 例如 `create_revolve` 具有内半径),草图目前仅部分约束,因为仅应用位置尺寸,而不应用对零轴的对齐约束。
- **无钣金,无自动图纸尺寸标注/标题栏填充。** `create_drawing` 仅放置视图,而不自动尺寸标注。
- 在 Inventor 2027.1 的 Windows 上测试。较旧/更新的版本应该通常有效,因为代码一致地使用 `win32com.client.gencache`(从类型库中提取的实际常量),而不是猜测的枚举值 —— 但未测试个别版本。
## 贡献者须知
- 服务器使用 `win32com.client.gencache.EnsureDispatch` 从 Inventor 的类型库(`win32com.client.constants`)加载实际的枚举常量,而不是猜测数值。
- 许多 COM 返回值是通用类型的(例如 `Document` 而不是 `PartDocument`,`SketchEntity` 而不是 `SketchLine`),在访问类型特定属性之前,需要通过 `win32com.client.CastTo(...)` 强制转换为具体类型。这影响 `PartDocument.ComponentDefinition`、`TranslatorAddIn.SaveCopyAs` 和 `SketchLine.StartSketchPoint` 等。
- 尺寸处理特殊情况:投影模型原点到已具有相同位置点的草图中,会导致 Inventor 自动合并两个点。然后,合并后的对之间的显式重合约束无效(`E_INVALIDARG`)且不必要 —— 服务器通过坐标比较检测到这一点并跳过约束。
- 每个工具调用一个操作;将多个操作批处理到单个 COM 调用中已被证明是不稳定的。
## 许可证
GPL-3.0
## 免责声明
该项目是一个非官方的社区工具,与 Autodesk 无关。请自担风险 —— 特别是,写入操作(创建特征、保存、导出)直接作用于打开的 Inventor 实例。