by daiemon12
Provides a Model Context Protocol server that lets Claude AI drive Dassault Systèmes CATIA V5 through natural‑language commands, exposing more than 50 CAD operations via COM automation.
Catia V5 MCP Server enables Claude Desktop or Claude Code to control CATIA V5 on Windows by sending JSON‑RPC calls over stdio. The server translates these calls into COM automation commands that perform document management, sketching, part design, assembly, measurement, export, and view‑control tasks.
git clone https://github.com/daiemon12/catia-v5-mcp-server.git
cd catia-v5-mcp-server
bash setup.sh # or `pip install -e .`
claude_desktop_config.json (Windows) or use claude mcp add for Claude Code:
{
"mcpServers": {
"catia-v5": {
"command": "python",
"args": ["-m", "catia_mcp"]
}
}
}
pywin32 for direct interaction with CATIA V5.catia_mcp/tools/*.py) and can be extended.Q: Does this work on macOS or Linux? A: No. The server relies on Windows COM automation, so it runs only on Windows where CATIA V5 is installed.
Q: What CATIA versions are supported?
A: Any licensed CATIA V5 release from R2016 onward that registers cnext.exe as a COM server.
Q: Which Python version is required? A: Python 3.10 or newer.
Q: How are errors reported back to Claude? A: The server returns JSON‑RPC error objects containing the exception message; Claude displays them as textual feedback.
Q: Can I use a different backend like pycatia? A: The project welcomes contributions; a pycatia‑based backend can be added as an alternative implementation.
Q: How do I add new tools?
A: Create a new module under catia_mcp/tools/, register the function in server.py, and implement the COM calls.
Connect Claude AI to Dassault Systemes CATIA V5 via the Model Context Protocol (MCP).
The first open-source MCP server for CATIA V5. Drive CATIA V5 CAD modeling from Claude Desktop or Claude Code using natural language.

This MCP server exposes 50+ tools that let Claude:
git clone https://github.com/daiemon12/catia-v5-mcp-server.git
cd catia-v5-mcp-server
bash setup.sh
The script handles everything: dependencies, Claude Desktop config, and verification.
git clone https://github.com/daiemon12/catia-v5-mcp-server.git
cd catia-v5-mcp-server
pip install -e .
Or manually:
pip install mcp pywin32
Edit your Claude Desktop config file:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.jsonAdd the server:
{
"mcpServers": {
"catia-v5": {
"command": "python",
"args": ["-m", "catia_mcp"]
}
}
}
Or with an absolute path:
{
"mcpServers": {
"catia-v5": {
"command": "python",
"args": ["C:/path/to/catia-v5-mcp-server/catia_mcp/server.py"]
}
}
}
claude mcp add catia-v5 python -- -m catia_mcp
Make sure CATIA V5 is running before asking Claude to interact with it. The server will automatically connect to the running instance.
If CATIA V5 is not running, the server will attempt to launch it (requires CATIA to be registered as COM server: cnext.exe /regserver).
Once configured, just talk to Claude:
"Create a new CATIA part. Draw a 100x60mm rectangle centered at the origin on the XY plane, then extrude it 40mm."
"Design a mounting bracket: start with a 120x80mm base plate, 5mm thick. Add 4 M6 mounting holes at the corners with 10mm edge distance. Then add two vertical ribs 30mm tall."
"Show me all parameters of the active part. Then change the pad height to 60mm."
"Export the current part to STEP format at C:/export/bracket.stp and take a screenshot of the isometric view."
"Create a new assembly. Add the bracket from C:/parts/bracket.CATPart and the base from C:/parts/base.CATPart. Fix the base, then create a coincidence constraint between the two."
catia-v5-mcp-server/
├── catia_mcp/
│ ├── __init__.py
│ ├── __main__.py # python -m catia_mcp entry point
│ ├── server.py # MCP Server — tool registration & routing
│ ├── connection.py # COM connection manager (win32com)
│ └── tools/
│ ├── __init__.py
│ ├── document.py # Document management (9 tools)
│ ├── sketcher.py # 2D Sketch tools (11 tools)
│ ├── part_design.py # 3D Part Design features (15 tools)
│ ├── assembly.py # Assembly/Product tools (9 tools)
│ ├── measurement.py # Measurement & analysis (6 tools)
│ └── export.py # Export & view control (4 tools)
├── pyproject.toml
├── requirements.txt
└── README.md
Claude (Desktop/Code)
│
│ stdio (MCP JSON-RPC)
▼
catia_mcp/server.py (MCP Server)
│
│ Tool routing
▼
catia_mcp/tools/*.py (Tool modules)
│
│ win32com.client (COM Automation)
▼
CATIA V5 Application
win32com.client to drive CATIA V5 via COM| Tool | Description |
|---|---|
catia_connect |
Connect to CATIA V5 |
catia_disconnect |
Disconnect from CATIA V5 |
catia_new_part |
Create a new Part document |
catia_new_product |
Create a new Product (assembly) |
catia_open_document |
Open an existing document |
catia_save_document |
Save / Save As |
catia_close_document |
Close active document |
catia_list_documents |
List all open documents |
catia_get_active_document_info |
Get detailed info about active document |
| Tool | Description |
|---|---|
catia_create_sketch |
Create sketch on XY/YZ/ZX plane |
catia_close_sketch |
Close sketch, return to Part Design |
catia_sketch_line |
Draw a line |
catia_sketch_rectangle |
Draw a rectangle (2 corners) |
catia_sketch_centered_rectangle |
Draw a centered rectangle |
catia_sketch_circle |
Draw a circle |
catia_sketch_arc |
Draw an arc |
catia_sketch_spline |
Draw a spline through points |
catia_sketch_point |
Create a point |
catia_sketch_constraint |
Add dimensional/geometric constraint |
catia_sketch_get_geometry |
List sketch geometry elements |
| Tool | Description |
|---|---|
catia_pad |
Pad (extrusion) |
catia_pocket |
Pocket (cut extrusion) |
catia_shaft |
Shaft (revolution) |
catia_groove |
Groove (revolution cut) |
catia_fillet |
Fillet (edge rounding) |
catia_chamfer |
Chamfer (edge bevel) |
catia_hole |
Hole (simple, counterbored, countersunk) |
catia_rect_pattern |
Rectangular pattern |
catia_circ_pattern |
Circular pattern |
catia_mirror |
Mirror about a plane |
catia_shell |
Shell (hollow out) |
catia_draft |
Draft angle |
catia_thickness |
Thickness offset |
catia_list_features |
List features in body |
catia_list_edges |
List edges for fillet/chamfer |
| Tool | Description |
|---|---|
catia_add_component |
Add existing part to assembly |
catia_add_new_part |
Create new part in assembly |
catia_fix_constraint |
Fix a component in place |
catia_coincidence_constraint |
Coincidence constraint |
catia_offset_constraint |
Offset constraint |
catia_angle_constraint |
Angle constraint |
catia_move_component |
Move/rotate a component |
catia_list_components |
List assembly components |
catia_list_constraints |
List assembly constraints |
| Tool | Description |
|---|---|
catia_measure_distance |
Measure distance between elements |
catia_get_inertia |
Volume, area, mass, center of gravity |
catia_get_bounding_box |
Bounding box dimensions |
catia_get_parameters |
List all parameters |
catia_set_parameter |
Modify a parameter value |
catia_update_part |
Force rebuild |
| Tool | Description |
|---|---|
catia_export |
Export to STEP/IGES/STL/3DXML/VRML |
catia_screenshot |
Capture 3D view to image |
catia_set_view |
Set view orientation |
catia_fit_all |
Fit all in view |
pip install pywin32
This server requires Windows. It will not work on macOS or Linux.
C:\Program Files\Dassault Systemes\B<version>\<os>\code\bin\ and run cnext.exe /regserverCreate or open a document first using catia_new_part or catia_open_document.
Some measurement methods may not work with late binding. If you encounter issues, try using pycatia as an alternative backend (contribution welcome).
This project is open-source. Contributions welcome:
MIT
Inspired by:
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by robotmcp
Enables bidirectional integration of large language models with ROS‑enabled robots, allowing natural language commands and real‑time access to robot state, topics, services and parameters.
by sunsetcoder
Track flights in real time, retrieve arrival and departure times, view airport status, and monitor emergency situations using Flightradar24 data via a Model Context Protocol server.
by EduBase
Enables Claude and other LLMs to interact with the EduBase e‑learning platform via the Model Context Protocol, allowing automated quiz creation, exam scheduling, and result analysis.
by gNucleus
Generate editable CAD parts or assemblies directly from natural‑language prompts by leveraging gNucleus generative AI models through a lightweight MCP server.
by jyjune
Provides control and access to a video surveillance system, allowing retrieval of live and recorded video streams, channel status queries, PTZ camera positioning, and playback dialog management.
by hessius
Automatically creates espresso profiles, analyzes shot data, and provides AI coaching through a web interface, REST API, and MQTT bridge, all packaged in a single Docker container.
by Casys-AI
Provides a Model Context Protocol server that connects AI agents to ERPNext instances, exposing 120 tools across 14 functional categories and seven interactive UI viewers for seamless data exploration and actions.
by litmusautomation
Enables LLMs and other intelligent agents to configure, monitor, and manage Litmus Edge devices through real‑time Model Context Protocol communication.
by NonicaTeam
Enables AI desktop applications to read and select Revit model elements through a set of predefined micro‑tools, integrated directly into the Nonicatab toolbar.
{
"mcpServers": {
"catia-v5": {
"command": "python",
"args": [
"-m",
"catia_mcp"
],
"env": {}
}
}
}claude mcp add catia-v5 python -m catia_mcp