CATIA V5 MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CATIA V5 MCP ServerCreate a 100x60mm rectangle and extrude it 40mm."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CATIA V5 MCP Server
Connect AI agents to Dassault Systemes CATIA V5 via the Model Context Protocol (MCP) — works with Claude, Cursor, Windsurf, Cline, VS Code, Codex and any MCP-compatible client.
The first open-source MCP server for CATIA V5. Drive parametric CAD modeling, measurement, drawing export and COM automation in natural language, from any AI agent that speaks MCP.

What it does
This MCP server exposes 98 tools that let an AI agent:
Create and manage documents — new Part, Product (assembly), open, save, close
2D Sketching — lines, rectangles, circles, arcs, splines, points, constraints
Part Design — Pad, Pocket, Shaft, Groove, Fillet, Chamfer, Hole, Shell, Draft, Thickness, Patterns (rectangular/circular/user), Mirror
Generative Shape Design (GSD) — 3D wireframe (points, lines, planes, splines, circles), Multi-sections Surface (loft), Sweep, Extrude, Revolve, Fill, Blend, Offset, Join, Split, Trim, Symmetry, ThickSurface/CloseSurface to solids
Assembly — add components, Fix/Coincidence/Offset/Angle constraints, move/rotate
Measurement — distance, inertia, bounding box, parameters
Knowledgeware — user parameters, formulas, design tables, relations
Export — STEP, IGES, STL, 3DXML, VRML, screenshots
View control — set standard views, fit all, capture screenshots
Drafting — Drawing documents, generative views (axis- or face-driven), projection/section/detail views, 3D-driven dimensions, text and tables (experimental, field-contributed)
Diagnostics — report the CATIA release and probe which automation APIs the installation exposes
Related MCP server: solidworks-mcp
Requirements
Windows (COM automation is Windows-only)
CATIA V5 installed and licensed (R2016+)
Python 3.10+
Any MCP client: Claude Desktop, Claude Code, Cursor, Windsurf, Cline, VS Code (Copilot/MCP), Codex CLI, ChatGPT via an HTTP bridge, and others
Compatibility notes (field reports)
V5R20 (2010): core workflow confirmed working end to end (document management, sketcher, Part Design pad creation, GSD geometrical sets, views, screenshots). An initial report of
ShapeFactory.AddNewPadbeing missing turned out to be a stale pywin32gen_pycache, not the release: clearing the cache restored the methods (see Troubleshooting). Measurement notes for R20: volume, area and parameters work directly; array-returning measures go through the SystemService.Evaluate detour (proven there for GetPlane; GetCOG and GetPoint use the same route and the same mm coordinate convention). The inertia matrix (Inertia object) and the vertex-sweep bounding box await live confirmation.V5-6 2020: full tool surface in active use by contributors.
Working alongside the agent: a contributor reports dimensioning and testing by hand in the same CATIA session while an agent runs tools in the background, for a whole night, without conflicts. The automation layer is nearly invisible to the interactive user. The one thing to avoid is switching the active document while a tool call is in flight, since most tools resolve "the active document" at call time.
catia_measure_distance accepts tree names (Pad.1, Sketch.2) and indexed
topology (Face.N / Edge.N from catia_list_faces / catia_list_edges).
The topology path follows a V5R20 field diagnosis (selection Reference
property instead of CreateReferenceFromObject, which rejects HSO topology)
and awaits live confirmation on real CATIA; reports welcome.
Reports from other releases are welcome, open an issue with your CATIA version
and the tool results (the catia_diagnose tool output is the ideal payload).
Quick Install (Recommended)
git clone https://github.com/daiemon12/catia-v5-mcp-server.git
cd catia-v5-mcp-server
bash setup.shThe script handles everything: dependencies, Claude Desktop configuration, and verification. Using another MCP client? See the per-client setup below.
Manual Installation
1. Clone the repository
git clone https://github.com/daiemon12/catia-v5-mcp-server.git
cd catia-v5-mcp-server2. Install dependencies
pip install -e .Or manually:
pip install mcp pywin323. Connect your MCP client
The server speaks standard MCP over stdio, so it works with every
MCP-compatible client. The command is always the same:
python -m catia_mcp (or an absolute path to catia_mcp/server.py).
Edit the config file:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"catia-v5": {
"command": "python",
"args": ["-m", "catia_mcp"]
}
}
}claude mcp add catia-v5 python -- -m catia_mcpAdd to ~/.cursor/mcp.json (or .cursor/mcp.json in your project):
{
"mcpServers": {
"catia-v5": {
"command": "python",
"args": ["-m", "catia_mcp"]
}
}
}Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"catia-v5": {
"command": "python",
"args": ["-m", "catia_mcp"]
}
}
}In VS Code: Cline icon > MCP Servers > Configure, then add:
{
"mcpServers": {
"catia-v5": {
"command": "python",
"args": ["-m", "catia_mcp"]
}
}
}Add to .vscode/mcp.json:
{
"servers": {
"catia-v5": {
"type": "stdio",
"command": "python",
"args": ["-m", "catia_mcp"]
}
}
}Add to ~/.codex/config.toml:
[mcp_servers.catia-v5]
command = "python"
args = ["-m", "catia_mcp"]ChatGPT only connects to remote MCP servers over HTTP, not to local
stdio processes. Expose this server through a stdio-to-HTTP bridge such
as mcp-proxy or supergateway on the CATIA machine, then add the
resulting URL as a connector in ChatGPT's developer mode. A native HTTP
transport is on the roadmap.
Any client that launches stdio MCP servers works: configure a server
named catia-v5 with command python and args ["-m", "catia_mcp"],
run from a machine where CATIA V5 is installed.
4. Start CATIA V5
Make sure CATIA V5 is running before asking your agent 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).
Usage Examples
Once configured, just talk to your AI agent:
Create a simple part
"Create a new CATIA part. Draw a 100x60mm rectangle centered at the origin on the XY plane, then extrude it 40mm."
Design a bracket
"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."
Parametric modification
"Show me all parameters of the active part. Then change the pad height to 60mm."
Export for manufacturing
"Export the current part to STEP format at C:/export/bracket.stp and take a screenshot of the isometric view."
Assembly
"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."
Architecture
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 (18 tools)
│ ├── gsd.py # Generative Shape Design — wireframe & surfaces (24 tools)
│ ├── assembly.py # Assembly/Product tools (9 tools)
│ ├── measurement.py # Measurement & analysis (6 tools)
│ ├── drawing.py # Drafting: drawings, views, dimensions, text & tables (11 tools)
│ ├── knowledge.py # Knowledgeware: parameters, formulas, design tables (5 tools)
│ ├── diagnostics.py # Installation diagnostics (1 tool)
│ └── export.py # Export & view control (4 tools)
├── pyproject.toml
├── requirements.txt
└── README.mdHow it works
AI agent (Claude, Cursor, Windsurf, Cline, ...)
│
│ stdio (MCP JSON-RPC)
▼
catia_mcp/server.py (MCP Server)
│
│ Tool routing
▼
catia_mcp/tools/*.py (Tool modules)
│
│ win32com.client (COM Automation)
▼
CATIA V5 ApplicationThe MCP client sends tool calls over stdio
The server routes each call to the appropriate tool module
Each tool module uses
win32com.clientto drive CATIA V5 via COMResults (JSON, text) are returned to the agent
Tool Reference
Document Tools (9)
Tool | Description |
| Connect to CATIA V5 |
| Disconnect from CATIA V5 |
| Create a new Part document |
| Create a new Product (assembly) |
| Open an existing document |
| Save / Save As |
| Close active document |
| List all open documents |
| Get detailed info about active document |
Sketcher Tools (11)
Tool | Description |
| Create sketch on XY/YZ/ZX plane |
| Close sketch, return to Part Design |
| Draw a line |
| Draw a rectangle (2 corners) |
| Draw a centered rectangle |
| Draw a circle |
| Draw an arc |
| Draw a spline through points |
| Create a point |
| Add dimensional/geometric constraint |
| List sketch geometry elements |
Part Design Tools (18)
Tool | Description |
| Pad (extrusion) |
| Pocket (cut extrusion) |
| Shaft (revolution) |
| Groove (revolution cut) |
| Fillet (edge rounding) |
| Chamfer (edge bevel) |
| Hole (simple, counterbored, countersunk) |
| Rectangular pattern |
| Circular pattern around a chosen axis and center |
| User pattern: copies placed on the points of a sketch |
| Mirror about a plane |
| Shell (hollow out) |
| Draft angle |
| Thickness offset |
| List features in body |
| Delete a feature by name |
| List edges of the final solid as indexed Edge.N names |
| List faces of the final solid as indexed Face.N names |
Generative Shape Design Tools (24)
Tool | Description |
| Create a Geometrical Set and make it active |
| Select the target Geometrical Set |
| List geosets, wireframe/surface elements, sketches |
| 3D point at (x, y, z) |
| 3D line between two points |
| Plane offset from a reference plane |
| Plane through three points |
| 3D spline through points |
| 3D circle on a support plane |
| Project a curve/point onto a support |
| Intersection of two elements |
| Multi-sections Surface (loft) through sections + guides |
| Swept surface (profile along guide) |
| Extruded surface along a direction |
| Surface of revolution around an axis |
| Fill surface from boundary curves |
| Blend surface between two curves |
| Offset surface |
| Join curves/surfaces into one element |
| Split an element by a cutter |
| Mutual trim of two elements |
| Mirror an element about a plane |
| Surface → solid by thickness (Part Design) |
| Closed surface → solid (Part Design) |
Assembly Tools (9)
Tool | Description |
| Add existing part to assembly |
| Create new part in assembly |
| Fix a component in place |
| Coincidence constraint |
| Offset constraint |
| Angle constraint |
| Move/rotate a component |
| List assembly components |
| List assembly constraints |
Measurement Tools (6)
Tool | Description |
| Measure distance between elements |
| Volume, area, mass, center of gravity |
| Bounding box from a vertex sweep of the final shape |
| List all parameters |
| Modify a parameter value |
| Force rebuild |
Export Tools (4)
Tool | Description |
| Export to STEP/IGES/STL/3DXML/VRML |
| Capture 3D view to image |
| Set view orientation |
| Fit all in view |
Drafting Tools (11) — experimental
Tool | Description |
| Create a Drawing document (CATDrawing) |
| Add a generative view of a part or a single body: xy/yz/zx projection, or face-driven (projected on a chosen planar face), with in-plane rotation |
| Right/left/top/bottom/rear projection of an existing view |
| Section view or section cut along a polyline profile |
| Circular detail view of a region |
| Text annotation in a view (Background View for title blocks) |
| Table with optional cell contents (title blocks, revision tables, BOM) |
| Generate associative dimensions from the part's 3D sketch constraints (the only route to dimension generated geometry in V5) |
| List a view's dimensions with values and status |
| List a view's manually drawn 2D geometry (generated curves are not exposed by CATIA) |
| Add a dimension between manually drawn 2D elements |
Knowledgeware Tools (5)
Tool | Description |
| Create or set a user parameter (length, angle, real, integer, string, boolean) |
| Create or update a formula driving a parameter |
| List formulas, design tables, rules and checks |
| Delete a relation by name |
| Create a design table from a sheet and associate parameters |
Diagnostics (1)
Tool | Description |
| Report CATIA version/release/SP and probe which automation APIs this installation exposes. Run it first when tools fail with UNSUPPORTED_CAPABILITY, and paste its output in compatibility reports |
Troubleshooting
Structured tool errors and cancellation
Errors returned by the server boundary for all 98 tools now set MCP
isError=true and include structuredContent with ok=false, code,
message, operation_id, tool, data, effects, diagnostics, warnings
and recovery. The text content contains the same JSON. Clients should inspect
isError and the error code rather than matching a plain-text error phrase.
Successful text responses and input schemas remain unchanged.
An ordinary exception, including ValueError, does not block the next call.
Cancelling a request does not cancel its COM operation: the STA worker finishes
that operation before running queued calls. Cancellation does not prove rollback.
A modal dialog can still block the worker; resolve it in CATIA before continuing.
See runtime behavior and recovery.
"AttributeError" on methods that should exist (AddNewPad, etc.)
A stale pywin32 COM cache is the most common cause, confirmed in the field: methods that genuinely exist stop resolving. Delete the generated bindings cache and restart the server:
%LOCALAPPDATA%\Temp\gen_py\ (or %TEMP%\gen_py\)Close CATIA and the MCP server first, delete the whole gen_py folder, then
restart. Run catia_diagnose to verify which APIs resolve afterwards.
"pywin32 is not installed"
pip install pywin32This server requires Windows. It will not work on macOS or Linux.
"Failed to connect to CATIA V5"
Make sure CATIA V5 is running
Register CATIA as COM server: navigate to
C:\Program Files\Dassault Systemes\B<version>\<os>\code\bin\and runcnext.exe /regserverCheck that no modal dialog is blocking CATIA
"No active document"
Create or open a document first using catia_new_part or catia_open_document.
COM ByRef array limitations
Some measurement methods may not work with late binding. If you encounter issues, try using pycatia as an alternative backend (contribution welcome).
Contributing
This project is open-source. See CONTRIBUTING.md for guidelines. Contributions welcome:
Drafting extras: frames and title-block generators, BOM automation
pycatia backend as alternative to raw win32com
Tests with COM mocking
3DEXPERIENCE CATIA support
Services and support
The server is free and MIT licensed. If your company runs CATIA V5 and wants to go further, the maintainer is available for paid work:
Custom tools: new MCP tools for your workflows (drawing frames and title blocks, BOM automation, Knowledgeware templates, batch exports).
Macro modernization: turning legacy VBA/CATScript macros into agent-callable tools, or auditing them before migration.
Pilot and training: a one-day workshop on agent-driven CATIA automation, followed by a pilot on one of your real parts.
Priority support: a dedicated channel and response times for teams running the server in production.
Contact: open a discussion on GitHub, join the Discord, or reach the maintainer on LinkedIn. Sponsorship through GitHub Sponsors keeps the free version maintained.
License
MIT
Credits
Inspired by:
This server cannot be deployed
Maintenance
Related MCP Connectors
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Any REST/SOAP/GraphQL/OData/SQL API as MCP tools for Claude & ChatGPT. 352 connectors: SAP, ERP.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConnects Claude AI to AutoCAD for architectural design, enabling natural language to execute 684 commands. Automates drawing creation and editing through the Model Context Protocol.16 npm8MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI (e.g., Claude) to control SolidWorks via natural language, automating part creation, sketching, and feature operations through the Model Context Protocol.1MIT
- AlicenseNot gradedqualityBmaintenanceBridges Claude Desktop to the HOOPS AI WebAPI, enabling 3D CAD analysis and interactive model operations through natural language.MIT
- FlicenseCqualityAmaintenanceMCP bridge to live SysML v1 models in CATIA Magic / Cameo Systems Modeler (No Magic MSoSA). Lets Claude Code or any MCP agent query, audit, and edit MBSE models — blocks, requirements, diagrams, parametrics, traceability — over a local, air-gapped connection.1334-