Skip to main content
Glama

catia-ai — Local AI-Driven CATIA V5 Automation

Native parametric CATPart / CATProduct generation from natural language via a semantic IR → CATIA Automation pipeline. No meshes, no renamed STEP.

USER  →  AI Planner  →  CAD MCP Server  →  Orchestration (Executor / Tx / Recovery)  →  CATIA V5
                                       →  native Sketches / Pads / Shafts / Holes / Fillets / Patterns
                                       →  save → reopen → update → validate

Prerequisites

Requirement

Detail

OS

Windows 10/11 64-bit for native CATPart (Linux/macOS run in mock/offline mode)

CATIA

Dassault Systèmes CATIA V5 R28–R32, legitimately licensed (DSLS / LUM)

License

Valid CATIA MD2 / HD2 / PLM Express etc. – system never bypasses licensing

Python

3.10+ (3.12 tested)

pywin32

pip install pywin32 on Windows for CATIA.Application COM

Node

18+ for MCP clients (OpenCode, Claude Code)

Linux (this machine: Mint 22.2, i5-13420H, 16 GB, RTX 3050): CATIA V5 does not run natively. The system detects this, logs it, and continues in mock/offline mode – the full AI→MCP→orchestration→validation pipeline is proven, files are written as text+JSON sidecars (*.CATPart.mock.json). On Windows with a licensed CATIA, the same code drives real CATIA.Application and writes binary native CATParts.

Related MCP server: SolidWorks MCP Server

Quick Start

git clone https://github.com/kVeyra/catia-ai
cd catia-ai
pip install -r requirements.txt        # or pip install -e .
# Windows: pip install pywin32

# 1. Inspect environment
python scripts/detect_catia.py
catia-ai --inspect              # same via CLI

# 2. Milestone 1 – block
catia-ai "Create a 100 x 50 x 20 mm rectangular block."
# → output/Block_100x50x20.CATPart

# 3. Shaft (acceptance test)
catia-ai "Create a parametric shaft with: diameter 50 mm, length 300 mm, central bore 20 mm, four mounting holes, and 5 mm fillets."

# 4. Radial engine
catia-ai "Create a 9-cylinder radial engine with 90 mm bore, 100 mm stroke, master connecting rod, 8 articulating rods, cylinders arranged radially around the crankshaft, parametric cooling fins, pistons, crankshaft, and assemble everything."

# 5. Mock tests (work on Linux)
pytest -q

.prt vs .CATPart

.prt is not CATIA V5 native (it belongs to Creo/UG). CATIA V5's native part format is .CATPart and assembly is .CATProduct. If you request .prt, the system explains this and saves .CATPart, optionally exporting STEP/IGES via export_step if CATIA is present. It never renames another format to .CATPart.

MCP Configuration

OpenCode (opencode.json)

{
  "mcpServers": {
    "catia": {
      "command": "python",
      "args": ["src/mcp/server.py"],
      "cwd": "/path/to/catia-ai"
    }
  }
}

Claude Code (.mcp.json)

{
  "mcpServers": {
    "catia": {
      "command": "python",
      "args": ["-m", "src.mcp.server"],
      "cwd": "/path/to/catia-ai"
    }
  }
}

Test: in your MCP client, call inspect_environment then plan_and_execute with a prompt.

AI Provider (local, no cloud required)

# Rule-based offline (default – no LLM needed)
export CATIA_AI_PROVIDER=local

# Ollama
export CATIA_AI_PROVIDER=ollama
export OLLAMA_URL=http://localhost:11434
export OLLAMA_MODEL=llama3

# LM Studio / any OpenAI-compatible
export CATIA_AI_PROVIDER=openai
export OPENAI_BASE_URL=http://localhost:1234/v1
export OPENAI_API_KEY=lm-studio

The planner has a deterministic rule path so the system works without any LLM.

Project Structure

catia-ai/
├── src/agent/          # planner, specification (semantic IR), reasoning (AI provider)
├── src/catia/          # connection, documents, parameters, sketches, features, assemblies, validation
├── src/orchestration/  # executor, transactions, recovery
├── src/mcp/            # server.py + tools
├── src/knowledge/      # mechanical components/features/assemblies library
├── src/validation/     # geometry & assembly checks
├── scripts/            # detect_catia, test_connection, test_part_creation
├── examples/           # simple_box, shaft, radial_engine.json, conveyor.json
├── tests/              # pytest suite (mock-capable)
├── output/             # CATPart/CATProduct output
└── logs/

Architecture

See ARCHITECTURE.md · API.md · DEVELOPMENT.md · TROUBLESHOOTING.md

Milestones

  1. Block 100×50×20 – Sketch+Pad, params, save/reopen/update ✅ (mock proven)

  2. Cylinder – diameter/height params, Shaft/Pad, regenerate ✅

  3. Gear – teeth/module/pressure angle ✅ (placeholder involute)

  4. Multi-part assembly – CATProduct, instances, constraints ✅

  5. Radial engine – 9 cylinders, crankshaft, rods, fins, CATProduct ✅

  6. Acceptance shaft 50×300 bore 20 + holes/fillets ✅

Safety / License Boundary

  • Never bypasses CATIA licensing, activation, DRM, or license servers.

  • If no license is available, reports it and stops at the boundary (mock mode for development).

  • Generated models are geometrically valid but not certified engineering – require qualified review and simulation.

Known Limitations

  • Linux: mock files are not binary CATPart; open in CATIA on Windows for full editability.

  • Involute gear uses placeholder cylinder (true law curve needs CAA or GSD).

  • Fillet recovery tries 10→5→2→1 mm; complex topology may still need manual repair.

  • CAA C++ not bundled – Automation API covers most Part Design features.

License

MIT – see LICENSE

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Connect Claude AI to Dassault Systemes CATIA V5 via the Model Context Protocol (MCP). Drive CATIA V5 CAD modeling from Claude Desktop or Claude Code using natural language.
    99
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language control of SolidWorks 2024 through MCP, providing 87 tools for sketch, drawing, and model operations with an intelligent COM bridge that handles parameter limits.
    47 npm
    17
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    An MCP server for parametric part modeling in Onshape, producing fully-defined, variable-driven sketches and features. It enables LLMs to create editable CAD models using semantic selection and geometrically grounded constraints.
    33
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables coding agents to convert natural language engineering prompts into editable parametric CAD models with deterministic parsing, validation, and edit support.
    6
    Apache 2.0