Metadata-Version: 2.4
Name: inventor-mcp-server
Version: 0.3.0
Summary: MCP server for parametric 3D modeling in Autodesk Inventor (parts, sheet metal, assemblies)
Author: inventor-mcp contributors
License-Expression: MIT
Project-URL: Homepage, https://github.com/cenitu/inventor-mcp-server
Project-URL: Issues, https://github.com/cenitu/inventor-mcp-server/issues
Project-URL: Changelog, https://github.com/cenitu/inventor-mcp-server/blob/main/CHANGELOG.md
Project-URL: Upstream, https://github.com/NeonGlay/inventor-mcp
Keywords: mcp,model-context-protocol,autodesk-inventor,cad,sheet-metal,llm
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Manufacturing
Classifier: Intended Audience :: Developers
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: mcp[cli]>=1.0.0
Requires-Dist: pywin32>=306; sys_platform == "win32"
Dynamic: license-file

# inventor-mcp-server

<!-- mcp-name: io.github.cenitu/inventor-mcp-server -->

[![PyPI](https://img.shields.io/pypi/v/inventor-mcp-server.svg)](https://pypi.org/project/inventor-mcp-server/)
[![CI](https://github.com/cenitu/inventor-mcp-server/actions/workflows/ci.yml/badge.svg)](https://github.com/cenitu/inventor-mcp-server/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![Contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg)](CONTRIBUTING.md)

> **Maintained continuation of [NeonGlay/inventor-mcp](https://github.com/NeonGlay/inventor-mcp).**
> The original repository has had no activity since its initial release (June 2026), and fresh
> installs there fail on MCP SDK 2.x. This repo carries the full original history plus the fixes
> and features that were submitted upstream as PRs and never reviewed. If the original author
> returns, everything here is available to be merged back. See [CHANGELOG.md](CHANGELOG.md).

**MCP server for parametric 3D modeling in Autodesk Inventor — drive Inventor with Claude (or any MCP client) in natural language.**

Build real parametric parts — flanges, shafts, nuts, brackets, sheet-metal enclosures — by talking to an AI assistant. The server wraps Inventor's COM API with high-level, millimeter-based tools and ships with battle-tested knowledge of Inventor 2026 API quirks that aren't documented anywhere else.

```
You:    "Build a DIN 934 M16 hex nut with proper conical chamfers"
Claude: creates sketch → hexagon → extrude → tapped M16×2 hole →
        revolve-cut chamfers → done. Fully parametric, dimensioned sketches.
```

## Features

- **49 MCP tools**: sketching, extrude/revolve, native hole features (drilled / tapped / counterbore), fillets, chamfers, circular patterns, sheet metal (named rules / Face / Flange / Cut with Flat Pattern support), parameters
- **Assemblies (IAM)**: place components, ground them, constrain by origin geometry (mate / flush / angle) or drop a bolt into a hole with a single Insert constraint
- **`execute_python` power tool** — run arbitrary Python against the live COM connection with a persistent namespace (escape hatch for anything not covered by dedicated tools)
- **Auto-reporting** — every feature operation returns a volume/topology delta (`Hole1 | V 23497 (-503 mm³) | F7 E14`), so the AI can self-verify each step
- **Transactions** — wrap multi-step builds, roll back everything with one call
- **Hot reload** — edit the API wrapper and reload without restarting the MCP client
- **Topology helpers** — find edges/faces by coordinates instead of guessing indices
- **Parametric discipline** — projected origin points, symmetry constraints, dimensioned sketches that survive parameter changes

## Requirements

- Windows with **Autodesk Inventor** (developed on Inventor 2026, also verified on **Inventor 2027**; older versions may need enum adjustments — see [docs/inventor-api-notes.md](docs/inventor-api-notes.md))
- **Python 3.12+**
- `pip install "mcp[cli]" pywin32` — MCP Python SDK **1.x and 2.x** are both supported (2.x renamed `FastMCP` to `MCPServer`; the server detects which is installed)

## Installation

1. Clone this repository:
   ```
   git clone https://github.com/cenitu/inventor-mcp-server.git
   ```

2. Install dependencies:
   ```
   pip install "mcp[cli]" pywin32
   ```

3. Register the server with your MCP client. For Claude Code, add to `.mcp.json` in your project root (see `.mcp.json.example`). Use the **absolute path** to `inventor_mcp_server/server.py`:
   ```json
   {
     "mcpServers": {
       "inventor": {
         "command": "python",
         "args": ["C:/path/to/inventor-mcp-server/inventor_mcp_server/server.py"]
       }
     }
   }
   ```

   > **Don't use `"cwd"` with `-m inventor_mcp_server`.** Claude Code ignores `cwd` and starts the server from
   > your project root, where the package can't be found — the process exits immediately and the client only
   > reports `Connection closed`. Pointing at the script by absolute path works from any directory.

   > Configs written for 0.2.x that point at `src/server.py` still work — that file now forwards to the
   > `inventor_mcp_server` package — but please update them; the shim will be removed in a later release.

   **Alternatively, install it as a package** — no clone needed, and the config gets a plain command:
   ```
   pip install git+https://github.com/cenitu/inventor-mcp-server.git
   ```
   ```json
   { "mcpServers": { "inventor": { "command": "inventor-mcp-server" } } }
   ```
   (If your MCP client can't find the command, use the full path printed by `where inventor-mcp-server`.)

4. Restart the MCP client (MCP servers load at session start), start Inventor, then ask your AI assistant to build something.

> **Do NOT use `win32com.client.gencache.EnsureDispatch`** in your own scripts against the same Python install — the generated `gen_py` cache breaks `GetActiveObject`. If it happens: delete `%LOCALAPPDATA%\Temp\gen_py`. See the API notes for the full story.

## Smoke test

`tests/smoke_test.py` exercises every geometry-creating code path once against a live
Inventor and reports PASS/FAIL per step — the quickest way to qualify a new Inventor
release or verify your install:

```
python tests/smoke_test.py            # starts Inventor if needed; closes only the docs it created
python tests/smoke_test.py --keep     # leave the test documents open for inspection
```

It also checks every hard-coded enum constant against the live COM type library, so a
renumbered enum in a future release shows up as a named failure instead of a cryptic
COM error. Exit code = number of failed steps.

Current results: **61/61 pass on Inventor 2027 and 2027.1** (Python 3.12, mcp 2.0).

`tests/assembly_smoke_test.py` does the same for the assembly tools — it builds a
plate and a pin on disk, places them, and exercises mate / flush / angle / insert
constraints (29/29 pass on Inventor 2027).

## Skills (optional, recommended)

The `skills/` directory contains two [Agent Skills](https://code.claude.com/docs/en/skills) that teach Claude the workflow and the Inventor 2026 API quirks:

- **inventor-modeling** — core patterns: units, sketch discipline, hole placement, sheet metal, diagnostic verification, common failure modes
- **inventor-din-parts** — parametric recipes for DIN/ISO standard parts (hex nuts DIN 934 / 439, bolts DIN 933, socket head cap screws DIN 912, countersunk screws DIN 7991, washers DIN 125, flanges DIN 2573) with dimension tables

Install by copying into your skills directory:
```
cp -r skills/inventor-modeling ~/.claude/skills/
cp -r skills/inventor-din-parts ~/.claude/skills/
```

## Why this exists

Inventor's COM API documentation is wrong or silent about many things in recent versions. This project encodes empirically verified knowledge:

- Correct Inventor 2026 enum values (`kPartDocumentObject = 12290`, dimension orientation `19201/19202/19203`, …)
- `ChamferFeatures.AddUsingDistance(EdgeCollection, d)` — the 2026 replacement for the removed `CreateChamferDefinition`
- Sheet-metal `FlangeDefinition`: the Distance argument is **silently ignored**; the real height is set via `feature.Definition.HeightExtent.Distance.Expression` (and the angle is in radians — pass `90` and you get 5156°)
- `CreateLinearPlacementDefinition` requires a `BiasPoint` argument that dynamic dispatch won't tell you about
- Edge indices renumber after every feature; fillets shift adjacent edges
- …and more in [docs/inventor-api-notes.md](docs/inventor-api-notes.md)

## Architecture

```
inventor_mcp_server/server.py        MCP server (FastMCP / MCPServer) — tool definitions (stdio transport)
inventor_mcp_server/inventor_api.py  InventorConnection — COM wrapper, all geometry logic (mm units)
skills/              Agent Skills for Claude
docs/                Hard-won API knowledge
```

## Contributing

Contributions welcome — see **[CONTRIBUTING.md](CONTRIBUTING.md)** for setup, the fast
edit → `reload_api` loop, and how to add a tool. Especially valuable:
- **Testing on Inventor 2024/2025** — run `tests/smoke_test.py` and file an
  *Inventor version test report* (no code needed)
- Drawing (IDW) support, and more modeling tools (shell, loft, sweep)
- More DIN/ISO part recipes
- Bug reports with the exact COM error and Inventor version

Start with a [`good first issue`](https://github.com/cenitu/inventor-mcp-server/labels/good%20first%20issue),
or ask and share what you built in [Discussions](https://github.com/cenitu/inventor-mcp-server/discussions).

## License

MIT — see [LICENSE](LICENSE).
