Skip to main content
Glama
AstroQuestStudio

catia-v5-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CATIA_MCP_HOMENoState: log, lessons, lock, trace%APPDATA%\catia-mcp
CATIA_MCP_LOCKNoCross-process lock so several agents queue instead of interleaving0
CATIA_MCP_SAFETYNoSafety tier: read, write or dangerousdangerous
CATIA_MCP_OFFLINENoNever attach to or start CATIA (tests, CI, unlicensed machines)
CATIA_MCP_PROFILENoAppend to every call the split of its time (snapshot, execute, checks, naming)0
CATIA_MCP_TOOLSETSNoAdvertised groups or presets: part, assembly, surface, review, or a list of groupsfull
CATIA_MCP_WATCHDOGNoPopup watchdog1
CATIA_MCP_AUTOTRACENoCSV line + screenshot after every feature tool0
CATIA_MCP_HANG_KILLNoSet to 1 to also kill CATIA when a call blocks longer than CATIA_MCP_HANG_SECONDS
CATIA_MCP_HANG_SECONDSNoLog a call that blocks longer than this0
CATIA_MCP_DESIGNATION_CACHENoCache face/axis/edge designations per (file, modification time, point)1
CATIA_MCP_CLEANUP_ON_FAILURENoRemove the objects a failed creation tool left in the tree1
CATIA_MCP_DESIGNATION_CACHE_DISKNoKeep that cache on disk between sessions1

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
catia_connectA

Connect to CATIA V5. Attaches to a running instance or launches a new one. Must be called before any other CATIA tool.

catia_disconnectA

Disconnect from CATIA V5 (does not close CATIA).

catia_new_partA

Create a new empty Part document in CATIA V5. A Part is used for single-body 3D modeling (sketches + features).

catia_new_productA

Create a new empty Product (assembly) document in CATIA V5. A Product is used to assemble multiple Parts together.

catia_open_documentB

Open an existing CATIA document from a file path (.CATPart, .CATProduct, .CATDrawing).

catia_save_documentA

Save the active CATIA document. Optionally save to a new path (Save As).

catia_close_documentC

Close the active CATIA document.

catia_close_allA

Close EVERY open document without saving (fresh session). Use it before starting a new piece/assembly: stale documents from earlier work (duplicate parts, old copies) make Save As fail and confuse which file a product uses. Unsaved work is lost — save first.

catia_list_documentsA

List all open documents in CATIA V5 with their types and paths.

catia_get_active_document_infoB

Get detailed info about the active CATIA document: name, type, path, part bodies, features, etc.

catia_create_sketchA

Create a new 2D sketch (in the active body) and open it for editing. Support, in priority order: face_point (the planar face of the solid that passes through this 3D point, e.g. 'the top face of the boss'), else plane + offset (a named offset plane is inserted in the tree), else the origin plane. The sketch axes are aligned on the origin plane parallel to the support (xy: H=X,V=Y; yz: H=Y,V=Z; zx: H=Z,V=X) with its origin on the projection of (0,0,0), so 2D coordinates stay the ones read on the drawing's view. Close with catia_close_sketch.

catia_close_sketchA

Close the active sketch and return to Part Design. Must be called after finishing sketch geometry before applying 3D features.

catia_sketch_lineA

Draw a line in the active sketch from (x1, y1) to (x2, y2). Coordinates in mm. Set is_axis=true to make it the sketch's axis (Sketch.CenterLine), REQUIRED before catia_shaft/catia_groove: without it CATIA has no revolution axis and the feature fails at update (confirmed live 2026-09-28). The axis is excluded from the profile, so draw the closed profile entirely on one side of it.

catia_sketch_rectangleA

Draw a rectangle in the active sketch defined by two opposite corners. Creates 4 lines forming a closed profile. Coordinates in mm.

catia_sketch_centered_rectangleB

Draw a rectangle centered at (cx, cy) with given width and height. Coordinates and dimensions in mm.

catia_sketch_circleB

Draw a circle in the active sketch. Coordinates and radius in mm.

catia_sketch_profileA

Draw a connected chain of lines and arcs whose ends are SHARED sketch points (a real closed contour, unlike separate lines/arcs whose ends only nearly meet). The tool of choice for any non-trivial Pad/Pocket profile and for half-profiles of revolution (Shaft/Groove: add the axis with catia_sketch_line(is_axis=true) or use axis='h'/'v'). Arcs are given by center + end point (radius = distance center-start; the end must be at the same distance).

catia_sketch_two_circle_contourC

Closed outer contour of two circles joined by their external tangent lines (connecting rod, lever, tow bar, arm). Tangent points are computed exactly and all ends are shared points.

catia_sketch_arcA

Draw a circular arc defined by center, radius, and start/end angles (degrees). Angles are measured counter-clockwise from the positive X axis.

catia_sketch_splineB

Draw a spline through a list of control points. Each point is [x, y] in mm.

catia_sketch_pointA

Create a point in the active sketch. Coordinates in mm.

catia_sketch_constraintB

Add a dimensional constraint to the active sketch. Supported types: distance, radius, angle, coincidence, tangent, perpendicular, parallel, horizontal, vertical, fix.

catia_sketch_get_geometryA

List all geometry elements in the active sketch with their indices and types.

catia_padB

Create a Pad (extrusion) from the last sketch. Extrudes a 2D profile into a 3D solid along the normal to the sketch plane.

catia_pocketA

Create a Pocket (cut extrusion) from the last sketch. With direction='auto' (default) the tool checks that material was really removed and flips the direction if not (CATIA's default side is unreliable — proven live). Limits: fixed depth, 'up_to_next' (Jusqu'à la suivante) or 'up_to_last' (through).

catia_shaftA

Create a Shaft (revolution) from the last sketch. The revolution axis is the sketch axis: either a line drawn with catia_sketch_line(is_axis=true) (axis='sketch_line', default), or the sketch's own H or V axis (axis='h'/'v', e.g. 'the X axis available in the sketch' on an XY sketch). The closed profile must lie entirely on one side of the axis.

catia_grooveA

Create a Groove (revolution cut). Same axis rules as catia_shaft. Works as the FIRST feature of an empty body (it then holds the removed volume; assemble that body into the main one to cut it — the 'Machined' body pattern).

catia_filletA

Constant-radius edge fillet on one or more edges, as ONE fillet feature (like selecting several edges in the Congé d'arête dialog). Edges are designated by a 3D point lying on each of them (e.g. the midpoint of the edge read on the drawing); searched in the active body. Tangent edges are propagated automatically. Use catia_list_edges to see edge endpoints if unsure.

catia_chamferA

Chamfer one or more edges as ONE feature. Edges designated by a 3D point on each (same as catia_fillet). Mode length+angle (default 45°) or two lengths.

catia_holeA

Create a Hole (Trou) at a 3D point on a planar face, drilled along the face normal into the material. The face is the one through 'point' (active body first, then other bodies — a hole in a 'Machined' body on a face of the 'Rough' body works). Types: simple, tapered (conique, taper_angle), counterbored (lamé, head_diameter + head_depth), countersunk (fraisé, head_diameter + head_angle). Limit: fixed 'depth', or 'up_to_point' = a point inside the plane/face where the hole must stop (Jusqu'au plan).

catia_rect_patternB

Rectangular Pattern (Répétition rectangulaire) of a feature along two global axes.

catia_circ_patternA

Circular Pattern (Répétition circulaire) of a feature around an axis: the normal of an origin plane through the origin (axis_plane, e.g. 'zx' = around Y), or the axis of the cylindrical face through axis_face_point. count instances including the original; default spacing 360/count = complete crown.

catia_mirrorB

Symmetry of the whole active body's current solid about a plane (Symétrie): the result is the body plus its mirror image. Plane = an origin plane, or the planar face through plane_face_point.

catia_shellB

Shell (Coque): hollow the solid, keeping walls of 'thickness' mm inside (outer_thickness adds material outside). The faces through open_face_points are removed (openings). Verified live.

catia_draftC

Draft (Dépouille) of the faces through face_points by 'angle' degrees, about the neutral face through neutral_face_point (or an origin plane neutral_plane), pulling along 'direction'. Verified live.

catia_thicknessC

Thickness (Épaisseur): offset the faces through face_points by 'offset' mm (negative removes). Verified live.

catia_threadA

Thread / tap (Filetage / Taraudage, cosmetic as in the GUI) on a cylindrical face, starting from a planar limit face. Faces designated by a 3D point on each (lateral_face_point on the cylinder, limit_face_point on the end face where the thread starts). E.g. M100x4 over 47 mm: diameter=100, pitch=4, depth=47. Verified live.

catia_rename_featureA

Rename a feature or sketch in the active Part Body. Sets the .Name COM property directly (CATIA V5 exposes Feature.Name and Sketch.Name as read/write) — no macro/VBA bridge required. Use this right after creating a feature (catia_pad, catia_pocket, ...) instead of asking the user to rename it by hand in the GUI.

catia_delete_featureA

Delete a feature or sketch from the active Body (right-click > Delete in the GUI). Use this to clean up after a failed/wrong operation instead of closing and recreating the whole document — e.g. a Shaft/Groove that raised an UpdateObject error can still leave a broken feature behind in the tree; delete it, fix the sketch, and retry.

catia_list_featuresA

List all features in the active Part Body with their names and types.

catia_list_edgesA

List the edges of a body's current solid with length and start/middle/end points (mm) — pick an edge's middle point to pass to catia_fillet / catia_chamfer edge_points.

catia_list_facesA

List the faces of a body's current solid: type, area, centre of gravity; planar faces: plane, parallel origin plane (xy/yz/zx + offset) and an inside_point guaranteed ON the face (the COG of a holed face is in the hole) — use it as face_point; cylinders/cones: radius and axis — any point on them works as axis_point.

catia_new_bodyA

Insert a new Body in the active Part (Insertion > Corps in the French UI). This is the entry point of the multi-corps method: create one Body per functional zone of the piece, then combine them later with catia_boolean_operation. The new body is NOT made active automatically; call catia_activate_body next.

catia_rename_bodyB

Rename a Body (in Part.Bodies) via the .Name COM property.

catia_activate_bodyA

Set a Body as the active 'in work object' (Part.InWorkObject) — the 'Define In Work Object' right-click action from the CATIA GUI. After calling this, catia_create_sketch/catia_pad/catia_pocket/etc. create their features inside this body instead of MainBody. Call this right after catia_new_body to start working in it.

catia_list_bodiesA

List all Bodies in the active Part, their feature counts, and which one is currently active (InWorkObject).

catia_get_treeA

Specification tree of the active Part, as a reviewer sees it: every body (including those absorbed by Assemble/Add/Remove...), its sketches, features and planes, plus geometrical sets. Includes a naming AUDIT listing every element still carrying a default name (anything ending in '.N' like 'Extrusion.3'/'Pad.1'/'Esquisse.2', or 'Corps principal'/'PartBody'). Run it after each piece and fix every flagged name before saving.

catia_hide_show_bodyB

Show or hide a Body in the 3D view (does not delete it).

catia_boolean_operationA

Combine two Bodies with a boolean operation (right-click a body > x.Objet > ... in the GUI). This is how the multi-corps method produces the final solid: model each functional zone in its own Body, then combine them here.

  • assemble: union that respects each body's feature nature (a Pocket in the tool body removes material — most common case).

  • add: union that always adds material, even if the tool body's first feature is a Pocket (it's reinterpreted as a Boss).

  • remove: target_body minus tool_body.

  • intersect: keeps only material common to both bodies.

  • union_trim: union with control over which side to keep/remove (faces_to_remove_points / faces_to_keep_points: one [x, y, z] inside each face of the tool body; see catia_list_faces).

catia_gsd_create_geosetA

Create a new Geometrical Set (HybridBody) in the active Part and make it the active target for subsequent GSD elements.

catia_gsd_set_active_geosetA

Select which Geometrical Set receives subsequently created GSD elements.

catia_gsd_list_elementsB

List all geometrical sets with their wireframe/surface elements and sketches, plus sketches in solid bodies. Use this to find element names for other GSD tools.

catia_gsd_pointB

Create a 3D point at (x, y, z). Coordinates in mm.

catia_gsd_lineA

Create a 3D line between two points. Each point is an existing element name or [x, y, z] coordinates.

catia_gsd_plane_offsetB

Create a plane offset from a reference plane. Reference is 'xy', 'yz', 'zx', or the name of an existing plane element.

catia_gsd_plane_3pointsB

Create a plane through three points (element names or [x,y,z]).

catia_gsd_splineB

Create a 3D spline through a list of points. Each point is an existing element name or [x, y, z] coordinates in mm.

catia_gsd_circleB

Create a full 3D circle from a center point, a support plane, and a radius. Useful as a section for multi-sections surfaces.

catia_gsd_projectB

Project a curve/point onto a support surface or plane.

catia_gsd_intersectionB

Create the intersection of two elements (e.g. surface ∩ plane).

catia_gsd_multi_section_surfaceA

Create a Multi-sections Surface (loft) through 2+ section curves (sketches, circles, splines...), optionally following guide curves. Sections should be listed in order along the lofting direction.

catia_gsd_sweepC

Create a swept surface by sweeping a profile curve along a guide curve (explicit sweep).

catia_gsd_extrudeA

Extrude a profile (curve/sketch) into a surface along a direction vector. limit1/limit2 are the extents on each side (mm).

catia_gsd_revolveB

Revolve a profile curve around an axis line to create a surface of revolution. Angles in degrees.

catia_gsd_fillB

Create a Fill surface bounded by a closed contour of curves (one closed curve or several connected curves).

catia_gsd_blendC

Create a Blend surface connecting two curves.

catia_gsd_offset_surfaceB

Create a surface offset from an existing surface.

catia_gsd_joinC

Join (assemble) two or more curves or surfaces into one element.

catia_gsd_splitB

Split an element by a cutting element, keeping one side. Use orientation to flip which side is kept.

catia_gsd_trimB

Mutually trim two elements, keeping one side of each. Use reverse flags to flip which sides are kept.

catia_gsd_symmetryC

Mirror an element about a plane ('xy', 'yz', 'zx', or plane name).

catia_gsd_thick_surfaceA

Turn a surface into a SOLID by adding thickness (Part Design ThickSurface). The solid is created in the active body.

catia_gsd_close_surfaceA

Turn a closed (watertight) surface into a SOLID (Part Design CloseSurface). The solid is created in the active body.

catia_add_componentA

Insert existing CATPart/CATProduct file(s) into the active assembly (Insérer un composant existant), optionally inside a sub-assembly. Returns the new instance name(s), to use in constraints.

catia_add_new_partA

Create a new empty Part inside the assembly (or a sub-assembly), with its part number. It must be modelled and then saved (catia_save_all) before faces can be designated for constraints.

catia_add_sub_assemblyA

Create a new sub-assembly (Product) inside the assembly: the way to structure a big assembly (e.g. Wheel / Shaft sub-assemblies).

catia_duplicate_componentA

Insert N more instances of an existing component (same reference, like 'Définir une multi-instance'), each shifted by 'step' mm from the previous one. Constrain them afterwards.

catia_prepare_geometryA

Resolve ALL the geometry designations an assembly will need in ONE pass, before adding constraints. Designating a face/axis/edge inside a part re-opens that part in CATIA (a window opens, is searched and closes again, the screen reloads), which is the slowest thing an assembly does; done per constraint it costs ~1 s each and flickers the screen. Here every part is opened ONCE and all its points are searched together; the results are cached, so the constraints that follow are instant. Give one item per (component, element) you will use in constraints. Already-cached items are skipped. A wrong point is reported here, with the distance of the closest element, before any constraint exists. Safe to call repeatedly (idempotent).

catia_fix_constraintB

Fix a component in space (Fixer). The first/reference component of an assembly must be fixed.

catia_coincidence_constraintB

Coincidence (Coïncidence) between two elements of two components: axis/axis (use axis_point on both), plane/plane, face/face, point/axis...

catia_contact_constraintC

Surface contact (Contact) between two faces of two components (type verified: catCstTypeSurfContact = 20).

catia_offset_constraintB

Offset (Décalage) between two planar faces/planes: signed distance in mm (0 = touching).

catia_angle_constraintC

Angle between two planes/faces/axes of two components, in degrees.

catia_update_assemblyB

Update the assembly (Mise à jour): solves the constraints and moves the components.

catia_move_componentB

Translate/rotate a component (before constraining it, to pre-place it).

catia_list_componentsA

Product tree: every component (recursively), its part number, file and position (origin + axes). With no argument: the whole tree as a JSON list (unchanged). On a big assembly do NOT list everything: pass path (one sub-assembly, e.g. 'Gearbox.1/Housing.1'), depth (levels to descend, 1 = direct children only) and limit/offset (pages of direct children). Then the answer is an object {total, offset, returned, components}. A listing of more than 5000 components is cut and flagged truncated.

catia_list_constraintsA

Every constraint of the root assembly with its type and status (OK / broken...), plus a naming audit.

catia_clash_analysisA

Interference check of the whole assembly (Analyse > Interférence, DMU Space Analysis): lists every CLASH (two components interpenetrate; 'at' = a point of the interference, assembly coordinates) and counts the CONTACTS. A correct assembly has 0 clash (except intended press fits / cosmetic threads). The analysis object is removed afterwards so the product tree stays clean.

catia_clean_displayA

Presentation view before screenshots: hide every origin/offset plane, sketch and axis system of every part, and the assembly constraint symbols (green markers). Display only: nothing is saved (call it AFTER saving).

catia_save_allA

Save the whole assembly (Gestion des enregistrements): every new or modified part/sub-product is saved into 'folder' as .CATPart/.CATProduct, then the root product as . Documents that already have a file and are unmodified are left untouched.

catia_measure_distanceB

Measure the minimum distance between two geometry elements. Returns distance in mm.

catia_get_inertiaA

Get inertia properties of the active part: volume, surface area, center of gravity, mass (if density is defined), moments of inertia.

catia_get_bounding_boxA

Exact bounding box (mm) of a body's solid, curved shapes included: x/y/z [min, max] and size. Use it to check a piece against its drawing.

catia_get_parametersB

List all user-defined and computed parameters of the active part. Includes dimensions, formulas, and design tables.

catia_set_parameterB

Set the value of a named parameter in the active part. Useful for parametric design modifications.

catia_update_partA

Force update/rebuild of the active part. Recalculates all features.

catia_exportA

Export the active document to a file. Supported formats: STEP (.stp), IGES (.igs), STL (.stl), 3DXML (.3dxml), VRML (.wrl), PDF (2D drawings).

catia_screenshotA

Capture CATIA. mode='window' (default): the whole CATIA window, specification tree included, as PNG — rendered by CATIA itself, so it is correct even when CATIA is behind other windows (what report screenshots need). mode='viewer': only the 3D view through CATIA's CaptureToFile (JPG/BMP/TIFF; a .png path becomes .jpg).

catia_set_viewA

Set the 3D view orientation (Z up, as CATIA's standard views) and reframe. front = looking along +Y; isometric = from (+X+Y+Z) corner; isometric_back/left/right = the three other upper corners.

catia_fit_allA

Fit all geometry in the current 3D view (zoom to fit).

drawing_extract_geometryA

Extract EXACT geometry from a vector PDF drawing: numbered circles, arcs and line segments with centre, radius R and diameter D in part mm. Dimension values are drawn as vector strokes, not text: read them by eye on drawing_render, then CONFIRM with this measured geometry (they must agree; when they do not, the measurement wins). Workflow: (1) drawing_render the whole page to find the views and title block scale; (2) call this on one view's region WITHOUT origin to find the centre/axis (each entity lists its paper position); (3) call again with origin and scale to get part coordinates to feed the sketch tools. Beware: R vs D, rounded dimensions (a drawn tangent may differ from the written value by a few hundredths), wrong title block scale.

drawing_renderA

Render a page or region of a PDF drawing to a PNG and return its path (view it with an image reader). Use it to locate views and to READ the dimension values by eye: they are vectorised, so text search cannot find them. Zoom with region + higher dpi (300-400) for small annotations. With grid (part mm) and origin, a graduated grid in PART millimetres is drawn to help read positions.

drawing_overlayA

Draw a CATIA sketch (in part mm) on top of the PDF drawing and return the PNG path: the coloured sketch must follow the black drawing lines everywhere. Do this for every non-trivial profile BEFORE pad/shaft, then LOOK at the image. sketch takes the same arguments as the sketch tools: a catia_sketch_profile object {start, segments}, an entity {type: line|circle|arc|rectangle, ...}, or a list of them. hv maps the sketch (h, v) axes to the view (X right, Y up): 'h,v', '-h,v', 'v,h', ...

catia_drawing_createA

Create a new CATDrawing with an ISO 5457 sheet (A0-A4), a main scale (ISO 5455), the projection method (first_angle = Europe/ISO default, third_angle = USA) and the 0.7 mm drawing frame (20 mm left margin, 10 mm elsewhere). Then call catia_drawing_add_view for each view, catia_drawing_title_block, catia_drawing_export_pdf and catia_drawing_check. sheet='auto' and/or scale='auto' need source (an OPEN CATPart/CATProduct): the tool measures the views listed in views and picks the smallest sheet and the largest recommended scale (>= min_scale) that hold them with room for dimensions and the title block; the plan (sheet, scale, view centres) is returned and used by add_view when position='auto'. Units: mm. Returns JSON {drawing, sheet, scale, projection, frame, plan, warnings}. The drawing is left open and active; nothing is saved.

catia_drawing_add_viewA

Add one view of the 3D source to the drawing and place it. kind: front (the base view, create it first), top/bottom/left/right/rear (orthographic projections of the front view: 'right' = seen from the right of the front view), isometric, section, detail. Placement (position='auto', default): ISO 5456-2 arrangement from the plan of catia_drawing_create (first angle: top view BELOW the front, right view on its LEFT; third angle mirrored), else beside the parent in a free spot. Give position [x, y] (sheet mm, origin bottom-left, view CENTRE) to override. A view that would overlap another one or leave the frame is refused and removed. View coordinates (u, w), used by section/detail/dimensions, are millimetres at MODEL scale with the origin on the projection of the model origin; u to the right, w up. With view_from='-Y': front u=X, w=Z; top u=X, w=Y; right u=Y, w=Z; left u=-Y, w=Z; bottom u=X, w=-Y; rear u=-X, w=Z. section: give parent, cut_direction ('vertical' = cutting line x=cut_at, 'horizontal' = line y=cut_at, in the parent's (u,w)) or cutting_line [[u1,w1],[u2,w2]]; the tool draws the cutting-plane arrows, labels (A-A) and hatching; flip with side=1 if the wrong half is shown. detail: parent, centre [u,w], radius (mm, model scale), scale (default '5:1'). Returns JSON: view name, kind, scale, centre, paper box, origin, and the axes needed by catia_drawing_check.

catia_drawing_generate_dimensionsA

Run CATIA's 'Generate Dimensions' on the active sheet: creates the dimensions driven by the 3D constraints of the model (pad lengths, hole diameters...). It does NOT dimension everything (overall sizes and hole positions are usually missing) and CATIA draws them green: complete the drawing with catia_drawing_add_dimension. Returns JSON with every dimension per view (type, value, mm).

catia_drawing_add_dimensionA

Add ONE dimension to a view, in view coordinates (u, w) (mm, model scale, see catia_drawing_add_view). type='linear': from and to points, orientation horizontal | vertical | aligned, the dimension line is placed offset_mm (paper) away on side (below/above for horizontal, right/left for vertical, left/right of the from->to direction for aligned). type='diameter' or 'radius': centre and diameter/radius of the circle, leader at leader_angle_deg. Take the values from the model (catia_list_faces gives cylinder radii and axes), never from memory: the dimension shows the value you give, the tool cannot attach it to the generated edge; catia_drawing_check compares it with the PDF. ISO 129-1: one dimension per feature, keep dimension lines >= 10 mm from the outline (offset_mm default 10), each following line 7 mm further. prefix e.g. '4x ' for identical holes. Returns JSON {dimension, type, value_mm, expected_mm, line}; a value that differs from the request by more than 0.005 mm removes the dimension and fails.

catia_drawing_add_centerlinesA

Draw centre lines (thin chain lines, ISO 128-2 type 04.1) crossing at each given circle centre of a view, extending extension_mm (paper) beyond the circle. centres: [{u, w, radius}] in view coordinates. Returns the number of lines created.

catia_drawing_title_blockA

Draw the ISO 7200:2004 title block (180 mm wide table in the bottom right corner of the frame), the scale, the general tolerance note (ISO 2768) and the projection symbol of ISO 5456-2. fields: legal_owner, identification_number, date_of_issue, sheet_number, title, approval_person, creator, document_type are MANDATORY (missing ones are refused); optional: supplementary_title, revision_index, number_of_sheets, responsible_department, technical_reference, document_status, classification, paper_size. general_tolerance: f, m (default), c or v. Nothing is invented: only what you pass is written. Returns JSON with the block rectangle, rows written and ISO warnings (e.g. too long a title).

catia_drawing_export_pdfB

Export the drawing to a vector PDF (DrawingDocument.ExportData). Checks the file exists and, when PyMuPDF is installed, that the PDF page equals the sheet (mm). Returns JSON {path, bytes, page_mm, sheet_mm, page_matches_sheet}. Overwrites an existing file.

catia_drawing_closeA

Close ONE drawing (the named one, else the drawing this session last used) without touching any other document; the 3D source stays open. save=false (default) discards changes, save=true saves it first (the drawing must already have a file name: use catia_save_document with a path beforehand).

catia_drawing_infoA

Read the drawing back: sheet format, scale, projection, every view (kind, scale, centre, paper box, origin) and every dimension (type, value). Read-only.

catia_drawing_checkA

CLOSED-LOOP CHECK: export the drawing to PDF, read it back and compare it with the 3D model. For every orthographic view created by add_view: circles (diameters within 0.02 mm, centres within 0.05 mm, hole pitches), the four sides of the projected outline, the view size on paper vs the 3D bounding box x scale. The 3D side is read from source (catia_list_faces cylinders + catia_get_bounding_box of the active body) unless expected is given. Diameter/radius dimensions are cross-checked against the circles found in the PDF. Limits: a blind hole is only visible from its open side (list the views that show it in views); circles under 2 mm are text-sized and ignored. Returns JSON with ok and per-view details.

catia_describe_modelA

Reverse-engineer the ACTIVE document without modifying it. CATPart: bodies, features in tree order, sketches with exact geometry (mm, sketch axes) and constraints, parameters, plane frames, volume, bounding box, inertia, plus the source of a replayable PartScript that rebuilds the part in a NEW document. A feature the reader does not understand is listed under 'opaque' (name, type, what is known, why) and the spec says replay.complete=false: nothing is guessed. CATProduct: components, poses, constraints and statuses. Limits: sketch constraints are described, not replayed; patterns, shell, draft, thickness and surfaces are opaque; edges are reproduced by a point on them. Units mm and degrees. Set output_dir to write _spec.json and _replay.py.

catia_audit_modelA

Audit the ACTIVE document's tree WITHOUT modifying it. Returns issues ranked error > warning > info, each with a code, where, message and the exact tool calls that fix it ('fix', a list of {tool, args}) or a 'manual' instruction when no tool can. Part: default names, bodies without result or empty, hidden or unmerged bodies, features not up to date or deactivated, sketches unused, open profiles, unsatisfied constraints, order (dress-up before material). Assembly: constraints not OK, default names, components not constrained outside the fixed one, broken links. 'not_checked' says what the API cannot tell (degrees of freedom of a sketch).

catia_measure_modelA

Measure each body of the ACTIVE part: volume (mm3), area, centre of gravity, exact bounding box (mm) and inertia (principal moments and matrix at the COG, kg.mm2, and mass at the part density). Read-only. Use it to compare an original with its replay.

catia_batchA

Run MANY catia_* tool calls in ONE round trip (10-100x fewer LLM turns). Every step is validated against the tool schemas BEFORE anything runs (unknown tool, misspelt/missing argument, wrong type, bad enum value): a typo in step 31 is reported up front and CATIA is left untouched. Steps then run in order and stop at the first failure (stop_on_error). Use dry_run=true to only validate. Compact per-step report with timings. Not nestable. Prefer it for any sequence you already know (sketch -> pad -> rename -> check), and keep separate calls for steps that depend on a value you must read first (e.g. face points from catia_list_faces).

catia_get_safety_stateA

Current safety tier of this session: read (inspect only), write (model and save) or dangerous (may also delete features and close documents), and what each tier allows.

catia_set_safetyA

LOWER the safety tier of this session (dangerous -> write -> read), for instance before a review or when handing the session to a less trusted step. It can never be raised from a tool call: raising it needs a human to restart the server with CATIA_MCP_SAFETY.

catia_lessonsA

Search the knowledge base of proven CATIA V5 automation pitfalls and rules (each one verified live). Call it BEFORE a risky operation (topology selection, boolean ops, assembly constraints, measurements) or right after an unexplained COM error. With no query it returns the critical rules.

catia_add_lessonA

Record a NEW pitfall or rule you discovered so that every future session (yours and other agents') is warned automatically. Use it as soon as you find something that failed, surprised you, or needed a workaround. Give the exact observed error text in error_patterns (regex) so the hint is attached to that error next time, and state how it was proven. Stored in the user's lessons file (not in the package); duplicates are refused.

Prompts

Interactive templates invoked by user choice

NameDescription
model_part_from_drawingModel one part from a PDF drawing: exact geometry, multi-body, verified.
assemble_productAssemble existing parts with constraints that hold, poses verified.
large_assemblyStrategy for an assembly of hundreds or thousands of parts (vehicle, aircraft).
audit_modelAudit the active model: tree quality, naming, volume/bbox sanity.
reverse_engineer_partEXPERIMENTAL: describe an existing part and rebuild or document it cleanly.

Resources

Contextual data attached and managed by the client

NameDescription
Golden rulesCondensed rules every session must follow (same text as the server instructions).
All verified lessonsEvery proven CATIA V5 automation pitfall with cause, rule and proof.
Part modelling guideMulti-body method, naming, feature order, checks, geometry designation by points.
Assembly guidePoses, constraints that hold, pose verification, clash analysis, large assemblies.
Reading vector drawingsExact geometry from PDF drawings, overlays, pitfalls (scale, diameter vs radius).

TDQS

B3.4/5.0

Scored across 121 tools

Disambiguation4/5

Most tools target clearly distinct CAD operations (sketching vs pad vs fillet vs assembly constraint), and descriptions provide strong context. However, with 121 tools there are some overlaps, such as multiple measurement and document-close/save variants, that could cause confusion.

Naming Consistency4/5

The overwhelming majority of tools use a consistent snake_case verb_noun pattern with a catia_ prefix. The only deviation is the drawing helper tools (drawing_render, drawing_extract_geometry, drawing_overlay) which lack the catia_ prefix used by the rest of the drawing family.

Tool Count1/5

121 tools far exceeds the 50+ threshold for an extreme mismatch, making the set difficult to navigate even for a complex CAD automation domain. Each tool may earn its place individually, but the sheer count creates a heavy cognitive load.

Completeness5/5

The surface covers the full CATIA V5 lifecycle: connection, document management, sketching, part design features, generative surface design, assembly, drawing, analysis, export, safety, and a lessons knowledge base. No obvious operations are missing for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues