
AutoCAD MCP Pro, the community AutoCAD MCP server by U-C4N
Lets your AI assistant draw, edit and read AutoCAD drawings, live in AutoCAD on Windows or on DXF files with no AutoCAD at all.
This is a community server, not one from Autodesk. It lets Claude, Cursor and other assistants draw and edit AutoCAD drawings, read drawings other people made, and check them for drafting mistakes. On Windows it controls your running AutoCAD; anywhere else it works on DXF files without AutoCAD. Before you start, know that it can run raw AutoCAD commands and save files, so point it at a copy of your drawings first.
Good for
- Mechanical engineers who want dimensioned part sheets with ISO title blocks and fits drawn for them
- Process and plant engineers drafting or reading P&IDs and pulling instrument and line lists
- Architects sketching floor plans with walls, doors, windows and measured room areas
- Engineers estimating pipe and cable lengths from drawings into a spreadsheet
- Developers on Mac or Linux who need to generate DXF files without an AutoCAD licence
Works in
3 supported · 9 should work
Tap an app to see how to set it up and any known problems.
The README covers a Claude Code plugin that installs the server and a drafting skill together. It needs uv. GitHub
The README names Claude Desktop and gives the config to paste. Live mode needs AutoCAD on Windows.
Known problems
- Fixed
Tools failed at random when AutoCAD was not the window in front
Workaround: Update to 1.7.0, which retries rejected calls and keeps to the server's own drawing.
Reported Oct 2026 · GitHub
The README names Cursor and gives the same config to paste. GitHub
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
A user runs it in opencode and reports that the basic tools work.
Known problems
- Fixed
Drawing a linear dimension failed on live AutoCAD
Reported Jul 2026 · GitHub
Client does not support this transport.
Client does not support this transport.
Install Autocad MCP
Claude Code
- 1
Copy this prompt.
Add the Autocad MCP server to Claude Code. Run this command: claude plugin marketplace add U-C4N/Autocad-MCP && claude plugin install autocad-mcp-pro@autocad-mcp Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires uv (Python).
The plugin installs the server with all extras plus a drafting skill. Pick the Live AutoCAD option if you run AutoCAD on Windows and want it to draw in your open drawing. Pick DXF files on Mac or Linux, or without an AutoCAD licence; it reads and writes DXF files instead. Set ALLOWED_PATHS to your drawings folder before you start.
From the project README. Source.
Tools
Compare two revisions of a drawing: what moved, changed, was added or removed
Compare two revisions of a drawing: what moved, changed, was added or removed.
Try: “What changed between rev A and rev B of this drawing?”
Write ·
drawing_diffIs this drawing to scale against a reference? Tag distances, ratios, a verdict
Is this drawing to scale against a reference? Tag distances, ratios, a verdict.
Try: “Is this P&ID drawn to scale against the layout?”
Read ·
drawing_scale_checkFind dangling ends, near misses and unjoined crossings in a pipe or cable network
Find dangling ends, near misses and unjoined crossings in a pipe or cable network.
Try: “Find dangling pipe ends and near misses in this network”
Read ·
drawing_topology_checkRead a foreign drawing: units, extents, clusters, layers, tags, rooms, languages
Read a foreign drawing: units, extents, clusters, layers, tags, rooms, languages.
Try: “Read this drawing someone sent me and tell me what is in it”
Read ·
drawing_understandChecks the drawn geometry against the sizes you asked for, pass or fail
Verify source requirements on the CAD geometry: pass/fail/unknown each, with evidence.
Try: “Check that the bore is 40 mm and there are six 8 mm holes on a 100 mm circle”
Read ·
drawing_verify_requirementsScan the drawing for structural errors and repair what it finds
Scan the drawing for structural errors and repair what it finds.
Try: “Audit the drawing and repair any errors”
Write ·
drawing_auditClose the drawing, saving first unless you say otherwise
Close the drawing, saving first unless you say otherwise.
Try: “Close the drawing without saving”
Delete ·
drawing_closeWrite a DXF interchange copy of the drawing
Write a DXF interchange copy of the drawing.
Try: “Export a DXF copy of this drawing”
Write ·
drawing_export_dxfPlot the drawing, or one paper-space layout, to PDF
Plot the drawing, or one paper-space layout, to PDF.
Try: “Export the A3 layout to PDF”
Write ·
drawing_export_pdfStart a drawing: blank with the engineering layers, or from a bundled/own template
Start a drawing: blank with the engineering layers, or from a bundled/own template.
Try: “Start a new drawing from the ISO A3 mechanical template”
Write ·
drawing_newLoad an existing DXF from disk (DWG only on the live AutoCAD backend)
Load an existing DXF from disk (DWG only on the live AutoCAD backend). DWG files open only when it controls a live AutoCAD.
Try: “Open C:/Drawings/bracket.dxf”
Write ·
drawing_openStrip unused layers, blocks, linetypes and styles out of the file
Strip unused layers, blocks, linetypes and styles out of the file.
Try: “Purge unused layers and blocks”
Delete ·
drawing_purgeReapply the operation you just undid
Reapply the operation you just undid.
Try: “Redo the last change”
Write ·
drawing_redoWrite the drawing back to its file, or to a path you give
Write the drawing back to its file, or to a path you give.
Try: “Save the drawing”
Write ·
drawing_saveSave a copy under a new name; the extension picks DXF, DWG or DWT
Save a copy under a new name; the extension picks DXF, DWG or DWT.
Try: “Save a copy of this drawing as bracket-rev-b.dwg”
Write ·
drawing_save_asStep back one operation
Step back one operation.
Try: “Undo that”
Write ·
drawing_undoDraw a circular arc from a centre, a radius and two angles
Draw a circular arc from a centre, a radius and two angles.
Try: “Draw an arc of radius 30 at the origin from 0 to 90 degrees”
Write ·
entity_create_arcDraw a circle: a hole, a bore, a pitch circle
Draw a circle: a hole, a bore, a pitch circle.
Try: “Draw a 20 mm hole at 50,50”
Write ·
entity_create_circleDraw an ellipse from its centre, major axis vector and axis ratio
Draw an ellipse from its centre, major axis vector and axis ratio.
Try: “Draw an ellipse 80 wide and 40 tall at 100,100”
Write ·
entity_create_ellipseFills a closed area with a section pattern or solid fill
Fill a closed boundary with a section pattern such as ANSI31 or SOLID.
Try: “Hatch the section area with ANSI31”
Write ·
entity_create_hatchDraw a straight line between two points
Draw a straight line between two points.
Try: “Draw a line from 0,0 to 100,50”
Write ·
entity_create_linePlace a wrapped paragraph note in a text box of a given width
Place a wrapped paragraph note in a text box of a given width.
Try: “Add a general notes paragraph in the lower left corner”
Write ·
entity_create_mtextPlace a point marker (node) at a coordinate
Place a point marker (node) at a coordinate.
Try: “Put a point marker at 25,25”
Write ·
entity_create_pointDraw a connected outline or closed profile through a list of points
Draw a connected outline or closed profile through a list of points.
Try: “Draw a closed outline through these points”
Write ·
entity_create_polylineDraw a closed rectangle from two opposite corners
Draw a closed rectangle from two opposite corners.
Try: “Draw a 200 by 100 rectangle starting at the origin”
Write ·
entity_create_rectangleDraw a revision cloud around an area
Draw a revision cloud around an area.
Try: “Put a revision cloud around the changed corner”
Write ·
entity_create_revcloudDraws a smooth curve through the points you give
Draw a smooth NURBS curve through fit points.
Try: “Draw a smooth curve through these five points”
Write ·
entity_create_splinePlace a parts list, BOM or schedule as a table with headers and rows
Place a parts list, BOM or schedule as a table with headers and rows.
Try: “Add a table listing these five parts”
Write ·
entity_create_tablePlace a single-line text label
Place a single-line text label.
Try: “Add the label PUMP ROOM at 10,200”
Write ·
entity_create_textMask whatever is behind a closed polygon on the sheet
Mask whatever is behind a closed polygon on the sheet.
Try: “Mask the area behind the title note”
Write ·
entity_create_wipeoutAdd a boundary path to a hatch, arcs and ellipses included
Add a boundary path to a hatch, arcs and ellipses included.
Try: “Add this circle as a hole in the hatch”
Write ·
hatch_add_boundaryChange a hatch's pattern, scale, angle, colour or island style
Change a hatch's pattern, scale, angle, colour or island style.
Try: “Change that hatch to a larger scale”
Write ·
hatch_editReplace a hatch's fill with a two-colour gradient
Replace a hatch's fill with a two-colour gradient.
Try: “Give that area a blue-to-white gradient fill”
Write ·
hatch_set_gradientAdd a callout: an arrow with a note on the end
Add a callout: an arrow with a note on the end.
Try: “Add a callout pointing to the hole that says 4x M8”
Write ·
leader_create_mleaderRead the current drawing's name, path, extents and object counts
Read the current drawing's name, path, extents and object counts.
Try: “What units and size is this drawing?”
Read ·
drawing_infoInspect one entity by handle: type, layer, colour and geometry
Inspect one entity by handle: type, layer, colour and geometry.
Try: “Show me the details of that line”
Read ·
entity_getReads extra data stored on an object by another app
Read an entity's extended data (XDATA) by application name.
Try: “What extra data is stored on this block?”
Read ·
entity_get_xdataBrowse the drawing's entities and their handles, filtered by type or layer
Browse the drawing's entities and their handles, filtered by type or layer.
Try: “List all the circles on layer HOLES”
Read ·
entity_listSelect entities by layer, type, colour, linetype or minimum area
Select entities by layer, type, colour, linetype or minimum area.
Try: “Select every red object larger than 100 square mm”
Read ·
selection_filterReads what you already selected in AutoCAD
Read what the user already picked in the AutoCAD viewport (COM backend). Works only when the server controls a live AutoCAD on Windows.
Try: “What have I selected in AutoCAD?”
Read ·
selection_getSelect entities inside or crossing an arbitrary polygon
Select entities inside or crossing an arbitrary polygon.
Try: “Select everything inside this shape”
Read ·
selection_polygonSelect entities inside or crossing a rectangle
Select entities inside or crossing a rectangle.
Try: “Select everything inside this rectangle”
Read ·
selection_windowRepeat an entity around a centre: a bolt circle or radial pattern
Repeat an entity around a centre: a bolt circle or radial pattern.
Try: “Repeat this hole six times around the centre”
Write ·
entity_array_polarRepeat an entity in a grid of rows and columns
Repeat an entity in a grid of rows and columns.
Try: “Make a 3 by 4 grid of this hole, 20 mm apart”
Write ·
entity_array_rectangularDuplicate an entity and offset the copy
Duplicate an entity and offset the copy.
Try: “Copy the bolt hole 50 mm up”
Write ·
entity_copyErase one entity by handle
Erase one entity by handle.
Try: “Delete that line”
Delete ·
entity_deleteErase a whole list of entities in one call
Erase a whole list of entities in one call.
Try: “Delete all the construction lines”
Delete ·
entity_delete_manyChange a circle's radius, a line's endpoints or an arc's angles in place
Change a circle's radius, a line's endpoints or an arc's angles in place.
Try: “Change that circle's radius to 12”
Write ·
entity_edit_geometryReword a label, or change its height or rotation, keeping its handle
Reword a label, or change its height or rotation, keeping its handle.
Try: “Change the label to PUMP ROOM 2”
Write ·
entity_edit_textReflect an entity across a mirror line, keeping or dropping the original
Reflect an entity across a mirror line, keeping or dropping the original.
Try: “Mirror the left half across the centre line”
Write ·
entity_mirrorShift an entity by a displacement vector
Shift an entity by a displacement vector.
Try: “Move that circle 20 mm to the right”
Write ·
entity_moveMake a parallel copy of a line, circle or polyline at a set distance
Make a parallel copy of a line, circle or polyline at a set distance.
Try: “Offset the outline 5 mm outward”
Write ·
entity_offsetTurn an entity about a base point by an angle in degrees
Turn an entity about a base point by an angle in degrees.
Try: “Rotate the bracket 45 degrees about its corner”
Write ·
entity_rotateResize an entity uniformly about a base point
Resize an entity uniformly about a base point.
Try: “Scale the logo to half size”
Write ·
entity_scaleChange an entity's layer, colour, linetype, lineweight or visibility
Change an entity's layer, colour, linetype, lineweight or visibility.
Try: “Put these objects on layer HIDDEN in red”
Write ·
entity_set_propertiesAttaches or replaces extra data stored on an object
Attach or replace extended data (XDATA) on an entity.
Try: “Tag this object with part number P-104”
Write ·
entity_set_xdataFind and replace text across the drawing
Find and replace text across the drawing.
Try: “Replace REV A with REV B everywhere”
Write ·
text_find_replacePuts an opaque background box behind a paragraph note
Put an opaque background box behind an MTEXT.
Try: “Give the notes box a white background”
Write ·
text_set_backgroundBevel a corner between two lines by two setback distances
Bevel a corner between two lines by two setback distances.
Try: “Chamfer that corner 2 by 2”
Write ·
entity_chamferLengthen a line until it meets a boundary line
Lengthen a line until it meets a boundary line.
Try: “Extend that line to meet the edge”
Write ·
entity_extendRound a corner between two lines with a tangent arc
Round a corner between two lines with a tangent arc.
Try: “Round that corner with a 5 mm radius”
Write ·
entity_filletCut a line back to where another crosses it, keeping the side you point at
Cut a line back to where another crosses it, keeping the side you point at.
Try: “Trim the line back to the wall”
Write ·
entity_trimDimension the true distance between two points, along a slope
Dimension the true distance between two points, along a slope.
Try: “Dimension the true length of the sloped edge”
Write ·
dimension_alignedDimension the included angle between two rays from a vertex
Dimension the included angle between two rays from a vertex.
Try: “Dimension the angle between these two lines”
Write ·
dimension_angularCall out a hole or shaft diameter, optionally to a fit such as H7
Call out a hole or shaft diameter, optionally to a fit such as H7.
Try: “Dimension the bore as 40 H7”
Write ·
dimension_diameterDimension a horizontal or vertical size, with an ISO 129 tolerance or ISO 286 fit
Dimension a horizontal or vertical size, with an ISO 129 tolerance or ISO 286 fit.
Try: “Dimension the overall width with a +/-0.1 tolerance”
Write ·
dimension_linearCall out the radius of a circle or arc, optionally toleranced
Call out the radius of a circle or arc, optionally toleranced.
Try: “Dimension the fillet radius”
Write ·
dimension_radiusDraw ISO 128-23 centre marks or centre lines on circles, read from the drawing
Draw ISO 128-23 centre marks or centre lines on circles, read from the drawing.
Try: “Add centre marks to all the holes”
Write ·
centre_marksHatch a region with the ISO 128-50 section pattern for a named material
Hatch a region with the ISO 128-50 section pattern for a named material.
Try: “Hatch this section as steel”
Write ·
hatch_materialDimension a drawn part: ISO 129 dimensions, ISO 286 fits, a hole table
Dimension a drawn part: ISO 129 dimensions, ISO 286 fits, a hole table.
Try: “Dimension the part with a hole table”
Write ·
mech_dimension_partDraw a linear, grid or polar hole pattern with centre marks on any drawing
Draw a linear, grid or polar hole pattern with centre marks on any drawing.
Try: “Add six 8 mm holes on a 100 mm circle”
Write ·
mech_hole_patternDraw a machine part from a segment list or an outline plus typed features
Draw a machine part from a segment list or an outline plus typed features.
Try: “Draw a stepped shaft 120 mm long, 30 and 20 mm diameters”
Write ·
mech_part_drawDraw a whole mechanical sheet - several parts and their views - in one transaction
Draw a whole mechanical sheet - several parts and their views - in one transaction.
Try: “Draw this part with front, side and section views on one sheet”
Write ·
mech_part_from_specRead the part model back off the drawing: segments, features, views, omissions
Read the part model back off the drawing: segments, features, views, omissions.
Try: “Read back the part model from this drawing”
Read ·
mech_part_inspectAdd another view of a drawn part: side, top, section (full/half/offset) or detail
Add another view of a drawn part: side, top, section (full/half/offset) or detail.
Try: “Add a section view of the part”
Write ·
mech_view_addDraw an ISO 128-40 cutting-plane line and return the plane the section view uses
Draw an ISO 128-40 cutting-plane line and return the plane the section view uses.
Try: “Add a section line A-A through the middle”
Write ·
section_lineDraws a standard feature such as a thread, undercut or groove onto a part
Draw a standard feature - thread, undercut, ring or O-ring groove, centre hole - onto existing geometry.
Try: “Add an M10 thread to that hole”
Write ·
std_feature_drawInserts an ISO bolt, nut, washer, cap screw or bearing as a tagged block
Insert an ISO standard part - hex bolt, nut, washer, cap screw or ball bearing - as a tagged block.
Try: “Insert an M12x60 hex bolt and nut”
Write ·
std_part_insertSearch the standard-parts catalogue: ISO bolts, nuts, washers, cap screws, bearings
Search the standard-parts catalogue: ISO bolts, nuts, washers, cap screws, bearings.
Try: “Which M12 bolts are in the catalogue?”
Read ·
std_part_listDraw an ISO 21920-1 surface-texture symbol: Ra/Rz, process, lay, allowance
Draw an ISO 21920-1 surface-texture symbol: Ra/Rz, process, lay, allowance.
Try: “Add a surface finish symbol Ra 1.6 to that face”
Write ·
surface_textureDraw an ISO 2553 weld symbol: reference line, identification line, size and pitch
Draw an ISO 2553 weld symbol: reference line, identification line, size and pitch.
Try: “Add a 5 mm fillet weld symbol”
Write ·
weld_symbolMark a datum on a feature: filled triangle plus the boxed datum letter
Mark a datum on a feature: filled triangle plus the boxed datum letter.
Try: “Mark the bottom face as datum A”
Write ·
datum_featureHand the drawing off: a hashed, validated bundle of files plus a manifest
Hand the drawing off: a hashed, validated bundle of files plus a manifest. It exports the files, reopens them and checks them again against your requirements.
Try: “Package this drawing as DXF, PDF and PNG with a checksum manifest”
Delete ·
drawing_deliverFinish the drawing: validate, critique, save, screenshot and score it
Finish the drawing: validate, critique, save, screenshot and score it. It returns a 0 to 100 score and can block on any requirement that fails.
Try: “Finish the drawing, save it and give it a score”
Delete ·
drawing_finalizeDraw an ISO 1101 feature control frame: symbol, tolerance zone and datums
Draw an ISO 1101 feature control frame: symbol, tolerance zone and datums.
Try: “Add a flatness tolerance of 0.05 to the top face”
Write ·
gd_frameDraw a helical gear front view: true involute teeth, circles, bore and keyway
Draw a helical gear front view: true involute teeth, circles, bore and keyway.
Try: “Draw a helical gear with 30 teeth and a 15 degree helix”
Write ·
gear_draw_helical_front_viewDraw the hatched side cross-section A-A of a gear you already drew
Draw the hatched side cross-section A-A of a gear you already drew.
Try: “Add the section A-A of the gear”
Write ·
gear_draw_section_aaDraw a straight-tooth spur gear front view with true involute teeth
Draw a straight-tooth spur gear front view with true involute teeth.
Try: “Draw a module 6, 24-tooth spur gear with a 40 mm bore”
Write ·
gear_draw_spur_front_viewDraw a bore with a DIN 6885 keyway, auto-sized from the bore diameter
Draw a bore with a DIN 6885 keyway, auto-sized from the bore diameter.
Try: “Draw a 40 mm bore with a DIN 6885 keyway”
Write ·
keyway_draw_keyed_boreDraw the side cross-section of a keyed bore
Draw the side cross-section of a keyed bore.
Try: “Draw the side section of the keyed bore”
Write ·
keyway_draw_sectionStamp an ISO 7200 title block and sheet frame onto an A3 drawing
Stamp an ISO 7200 title block and sheet frame onto an A3 drawing.
Try: “Add an A3 title block titled Spur Gear”
Write ·
titleblock_apply_iso_a3Add an ISO 6433 balloon linked to its item row
Add an ISO 6433 balloon linked to its item row.
Try: “Add a balloon for item 3”
Write ·
balloon_addRead the bill of materials out of the drawing's block references
Read the bill of materials out of the drawing's block references.
Try: “List the parts used in this drawing”
Read ·
bom_extractDraw the parts list as a real TABLE above the title block
Draw the parts list as a real TABLE above the title block.
Try: “Add a parts list above the title block”
Write ·
bom_tableWrites the bill of materials to a CSV or Excel file
Write the bill of materials to a CSV file, or to XLSX when openpyxl is present.
Try: “Export the parts list to Excel”
Files ·
data_extractWrite the drawing as a real DWG at a chosen AutoCAD version
Write the drawing as a real DWG at a chosen AutoCAD version. Without live AutoCAD this needs the ODA File Converter installed.
Try: “Save this as a DWG for AutoCAD 2018”
Write ·
drawing_export_dwgAttach a raster image (PNG/JPG) as an underlay
Attach a raster image (PNG/JPG) as an underlay.
Try: “Attach this photo as an underlay”
Write ·
image_attachAppend a revision row, with optional revision clouds and triangular tags
Append a revision row, with optional revision clouds and triangular tags.
Try: “Add revision B: hole moved, with a cloud”
Write ·
revision_addDraw an ISO 5457 sheet frame with the zone grid and centring marks
Draw an ISO 5457 sheet frame with the zone grid and centring marks.
Try: “Add an A3 sheet frame”
Write ·
sheet_frameStamp an ISO 7200 title block (and frame) on any sheet from A4 to A0
Stamp an ISO 7200 title block (and frame) on any sheet from A4 to A0.
Try: “Add an A1 title block with these details”
Write ·
titleblock_applyAttach a DWG/DXF as an external reference (attachment or overlay)
Attach a DWG/DXF as an external reference (attachment or overlay).
Try: “Attach site-plan.dwg as a reference”
Write ·
xref_attachList, reload, bind, detach or repath an external reference
List, reload, bind, detach or repath an external reference.
Try: “Reload all external references”
Write ·
xref_manageInsert a furniture or sanitary item - bed, sofa, WC, basin, bathtub - as a block
Insert a furniture or sanitary item - bed, sofa, WC, basin, bathtub - as a block.
Try: “Put a double bed in the bedroom”
Write ·
arch_catalogue_insertSearch the furniture and sanitary catalogue in English or Turkish
Search the furniture and sanitary catalogue in English or Turkish.
Try: “Which bathroom fittings are in the catalogue?”
Read ·
arch_catalogue_listDimension the plan's facades: openings, walls and overall chains outside each side
Dimension the plan's facades: openings, walls and overall chains outside each side.
Try: “Dimension the outside of the plan”
Write ·
arch_dimension_chainsDraw a structural grid: axis lines with numbered and lettered bubbles at both ends
Draw a structural grid: axis lines with numbered and lettered bubbles at both ends.
Try: “Draw a structural grid 6 m by 5 m”
Write ·
arch_gridHost a door or a window in a drawn wall by distance along it; the wall is cut
Host a door or a window in a drawn wall by distance along it; the wall is cut.
Try: “Put a 900 mm door 1 m along the north wall”
Write ·
arch_openingDraws a whole floor plan with walls, doors, windows, stairs and rooms in one go
Draw a whole floor plan - walls, doors, windows, stairs, rooms, chains, schedules - in one transaction.
Try: “Draw a two-room plan with two doors and two windows at 1:50”
Write ·
arch_plan_from_specLabel a room with its name, number and measured area
Label a room with its name, number and measured area.
Try: “Label this room Kitchen”
Write ·
arch_roomFind the rooms of any plan and measure them; never modifies it
Find the rooms of any plan and measure them; never modifies it.
Try: “Find the rooms in this plan and give me their areas”
Read ·
arch_rooms_detectDraw a door, window or room schedule from the plan records
Draw a door, window or room schedule from the plan records.
Try: “Add a door schedule”
Write ·
arch_scheduleDraw a straight, L or U stair in plan and report its Blondel step rule
Draw a straight, L or U stair in plan and report its Blondel step rule.
Try: “Draw a straight stair with 16 steps”
Write ·
arch_stairDraw a plan symbol: north arrow, section mark, level mark or elevation mark
Draw a plan symbol: north arrow, section mark, level mark or elevation mark.
Try: “Add a north arrow”
Write ·
arch_symbolAdd walls to the plan: clean L/T/X junctions, cut openings, material poché
Add walls to the plan: clean L/T/X junctions, cut openings, material poché.
Try: “Draw a 250 mm brick wall around a 6 by 5 m room”
Write ·
arch_wallBuilds the equipment list from a P&ID, optionally as a CSV file
Equipment list derived from the P&ID graph (tag, kind, ports, connections); optional CSV.
Try: “Make an equipment list from this P&ID”
Files ·
pid_equipment_listDraw a whole P&ID from one declarative spec in one transaction; returns graph + critique
Draw a whole P&ID from one declarative spec in one transaction; returns graph + critique.
Try: “Draw a P&ID with a pump, control valve and vessel”
Write ·
pid_from_specRead the P&ID back as a graph: symbols, lines, junctions, dangling ends, confidence
Read the P&ID back as a graph: symbols, lines, junctions, dangling ends, confidence.
Try: “Read this P&ID and tell me what connects to what”
Read ·
pid_graphBuilds the instrument index from a P&ID, optionally as a CSV file
Instrument index derived from the P&ID graph (tag, function, loop, connections); optional CSV.
Try: “Make an instrument index from this P&ID”
Files ·
pid_instrument_indexDraws a P&ID process line between two ports, with its class and line number
Draw a P&ID line port-to-port: orthogonal route, ISA-5.1 class, line number, markers, arrow.
Try: “Connect the pump outlet to the vessel inlet”
Write ·
pid_line_drawBuilds the line list from a P&ID, optionally as a CSV file
Line list derived from the P&ID graph (number, class, size, spec, from/to); optional CSV.
Try: “Make a line list from this P&ID”
Files ·
pid_line_listPlaces a P&ID symbol such as a valve, pump or vessel, with its tag
Place a P&ID symbol (valve, pump, vessel, instrument bubble, connector) as a tagged block with ports.
Try: “Place a centrifugal pump tagged P-101”
Write ·
pid_symbol_insertList the P&ID symbol catalogue: families, variants, ports, parameters
List the P&ID symbol catalogue: families, variants, ports, parameters.
Try: “Which valve symbols are available?”
Read ·
pid_symbol_listParse an ISA-5.1 instrument tag or an equipment tag; explains every letter
Parse an ISA-5.1 instrument tag or an equipment tag; explains every letter.
Try: “What does the tag FIC-101 mean?”
Read ·
pid_tag_parseEstimates cable length from each load to its panel, rounded up to the metre
Cable takeoff: one row per load, Manhattan length to its panel, rounded up to the metre.
Try: “Estimate cable lengths from each load to its panel”
Files ·
cable_takeoffPipe takeoff from a P&ID and its layout: rows by room, service and diameter
Pipe takeoff from a P&ID and its layout: rows by room, service and diameter.
Try: “Estimate pipe lengths from this P&ID and layout”
Files ·
pipe_takeoffWipe the construction scaffolding off the drawing before finalize
Wipe the construction scaffolding off the drawing before finalize.
Try: “Remove all the guide lines”
Delete ·
construction_clearLay down an infinite guide line to build geometry against
Lay down an infinite guide line to build geometry against.
Try: “Add a vertical guide line at x = 50”
Write ·
construction_xlineDimension a set of entities at once, as a chain, baseline or ordinate run
Dimension a set of entities at once, as a chain, baseline or ordinate run.
Try: “Add chain dimensions along the top edge”
Write ·
dimension_autoSet up a standard ISO layer set with the right colours and lineweights
Set up a standard ISO layer set with the right colours and lineweights.
Try: “Add the ISO mechanical layer set”
Write ·
drawing_apply_iso_layersReviews the drawing for drafting mistakes
Review the drawing for drafting mistakes: must come back empty before finalize.
Try: “Check this drawing for drafting mistakes”
Read ·
drawing_critiqueCommit sheet size, scale, layer set and dimension style before any geometry
Commit sheet size, scale, layer set and dimension style before any geometry.
Try: “Plan an A3 sheet at 1:2 with ISO layers and dimension style”
Write ·
drawing_planCheck the brief before you draw: units, part type, tolerances, missing inputs
Check the brief before you draw: units, part type, tolerances, missing inputs.
Try: “Before you draw, check my brief for missing sizes or tolerances”
Read ·
drawing_preflightAuto-repair what the critique found, then re-check, up to three rounds
Auto-repair what the critique found, then re-check, up to three rounds.
Try: “Fix the drafting issues you found and check again”
Delete ·
drawing_refinePick every entity matching a description: type, layer, colour, length, location
Pick every entity matching a description: type, layer, colour, length, location.
Try: “Select all red lines longer than 100 mm”
Read ·
entity_select_smartSanity-check the drawing for empty layers, zero-length lines and duplicates
Sanity-check the drawing for empty layers, zero-length lines and duplicates.
Try: “Check for zero-length lines and duplicates”
Read ·
validation_checkGet the overall extents of everything drawn
Get the overall extents of everything drawn.
Try: “How big is everything in this drawing?”
Read ·
analysis_bounding_boxCount the drawing's objects, broken down by type and by layer
Count the drawing's objects, broken down by type and by layer.
Try: “How many objects of each type are in this drawing?”
Read ·
analysis_entity_statsList everything that falls inside a rectangular window
List everything that falls inside a rectangular window.
Try: “What is inside the rectangle from 0,0 to 100,100?”
Read ·
analysis_find_in_regionReport how many entities, and which types, sit on each layer
Report how many entities, and which types, sit on each layer.
Try: “How many objects are on each layer?”
Read ·
analysis_layer_statsLists every stored property of one object
Dump every DXF property of one entity, like LIST.
Try: “List every property of that object”
Read ·
analysis_list_propertiesMeasure a polygon's area and perimeter from its vertices
Measure a polygon's area and perimeter from its vertices.
Try: “What is the area of this outline?”
Read ·
analysis_measure_areaMeasure the gap between two points: distance, dx/dy and angle
Measure the gap between two points: distance, dx/dy and angle.
Try: “How far apart are these two points?”
Read ·
analysis_measure_distanceArea and perimeter of an existing entity, by handle
Area and perimeter of an existing entity, by handle.
Try: “What is the area of that polyline?”
Read ·
analysis_measure_entityGrab the handles of everything sitting on one layer
Grab the handles of everything sitting on one layer.
Try: “Select everything on layer NOTES”
Read ·
analysis_select_by_layerGrab the handles of every entity of one type: all the circles, all the lines
Grab the handles of every entity of one type: all the circles, all the lines.
Try: “Select all the circles”
Read ·
analysis_select_by_typeJoin named entities into one closed boundary polyline
Join named entities into one closed boundary polyline.
Try: “Join these lines into one closed outline”
Write ·
boundary_from_entitiesTraces the closed outline around a point you pick
Trace the closed boundary around a point, like BOUNDARY.
Try: “Make a closed outline around the point 50,50”
Write ·
boundary_traceTurn existing entities into a reusable block definition
Turn existing entities into a reusable block definition.
Try: “Turn these objects into a block called BOLT”
Write ·
block_create_from_entitiesDefines a reusable block from shapes and attribute fields
Define a block from typed primitives and attribute definitions, on both engines.
Try: “Define a block for a pump symbol with a TAG field”
Write ·
block_defineBreak a block reference apart into its component entities
Break a block reference apart into its component entities.
Try: “Explode that block”
Delete ·
block_explodeFind every place a given block is inserted
Find every place a given block is inserted.
Try: “Where is the VALVE block used?”
Read ·
block_find_referencesRead the tag/value pairs off a block reference
Read the tag/value pairs off a block reference.
Try: “What does the title block say?”
Read ·
block_get_attributesPlace a block, filling in its attribute values as you go
Place a block, filling in its attribute values as you go.
Try: “Insert the title block and fill in the part name”
Write ·
block_insertList the block definitions the drawing already carries
List the block definitions the drawing already carries.
Try: “Which blocks does this drawing have?”
Read ·
block_listFill in a block reference's attributes, such as title-block fields
Fill in a block reference's attributes, such as title-block fields.
Try: “Set the title block's drawn-by field to AB”
Write ·
block_set_attributesDrop an instance of an existing block definition into the drawing
Drop an instance of an existing block definition into the drawing.
Try: “Insert the VALVE block at 300,150”
Write ·
entity_create_block_refAdd a layer with a colour, linetype and lineweight
Add a layer with a colour, linetype and lineweight.
Try: “Create a layer called HIDDEN, blue, dashed”
Write ·
layer_createRemove an empty layer from the drawing
Remove an empty layer from the drawing.
Try: “Delete the empty TEMP layer”
Delete ·
layer_deleteFreeze a layer so it stops drawing and regenerating
Freeze a layer so it stops drawing and regenerating.
Try: “Freeze the FURNITURE layer”
Write ·
layer_freezeTurn a layer off so its entities stop showing
Turn a layer off so its entities stop showing.
Try: “Turn off the DIMENSIONS layer”
Write ·
layer_hideHide every layer except one, to work on it alone
Hide every layer except one, to work on it alone.
Try: “Show only the PIPING layer”
Write ·
layer_isolateList every layer with its colour, linetype and visibility state
List every layer with its colour, linetype and visibility state.
Try: “List all layers in this drawing”
Read ·
layer_listLock a layer so its entities can be seen but not edited
Lock a layer so its entities can be seen but not edited.
Try: “Lock the WALLS layer”
Write ·
layer_lockChange an existing layer's colour, linetype or lineweight
Change an existing layer's colour, linetype or lineweight.
Try: “Make the WALLS layer thicker”
Write ·
layer_modifyChoose the layer that new geometry lands on
Choose the layer that new geometry lands on.
Try: “Draw on the CENTER layer from now on”
Write ·
layer_set_currentTurn a layer that was switched off back on
Turn a layer that was switched off back on.
Try: “Turn the DIMENSIONS layer back on”
Write ·
layer_showBring a frozen layer back into view
Bring a frozen layer back into view.
Try: “Thaw the FURNITURE layer”
Write ·
layer_thawUnlock a layer so its entities can be edited again
Unlock a layer so its entities can be edited again.
Try: “Unlock the WALLS layer”
Write ·
layer_unlockList the dash patterns currently loaded in the drawing
List the dash patterns currently loaded in the drawing.
Try: “Which linetypes are loaded?”
Read ·
linetype_listLoads a dash pattern such as CENTER or HIDDEN into the drawing
Load a linetype such as CENTER or HIDDEN, without the FILEDIA dialog trap.
Try: “Load the CENTER linetype”
Write ·
linetype_loadCreate a dimension style from the ISO-25 or ANSI preset, with per-variable overrides
Create a dimension style from the ISO-25 or ANSI preset, with per-variable overrides.
Try: “Create an ISO-25 dimension style”
Write ·
dimstyle_createList dimension styles with their ISO-25/ANSI variables and the current one
List dimension styles with their ISO-25/ANSI variables and the current one.
Try: “Which dimension styles are in this drawing?”
Read ·
dimstyle_listChanges settings on an existing dimension style
Change DIM* variables on an existing dimension style; reports only what moved.
Try: “Make the arrows on the current dimension style 3 mm”
Write ·
dimstyle_modifyMake a dimension style current so new dimensions use it
Make a dimension style current so new dimensions use it.
Try: “Use the ISO-25 style for new dimensions”
Write ·
dimstyle_set_currentPut the drawing on ISO or ANSI in one call: dimstyle, text style, units, mech layers
Put the drawing on ISO or ANSI in one call: dimstyle, text style, units, mech layers.
Try: “Set this drawing up to ISO standards”
Write ·
drawing_apply_standardCreates a callout style from the ISO or ANSI preset
Create a multileader style from the ISO or ANSI preset, on both engines.
Try: “Create an ISO callout style”
Write ·
mleaderstyle_createList multileader styles: arrow size, landing gap, text style and height
List multileader styles: arrow size, landing gap, text style and height.
Try: “List the callout styles”
Read ·
mleaderstyle_listCreate a text style from a bundled font (isocp, isocpeur, arial, romans) or any file
Create a text style from a bundled font (isocp, isocpeur, arial, romans) or any file.
Try: “Create a text style using isocp”
Write ·
textstyle_createList text styles: font file, height, width factor, oblique angle
List text styles: font file, height, width factor, oblique angle.
Try: “List the text styles”
Read ·
textstyle_listMake a text style current so new text uses it
Make a text style current so new text uses it.
Try: “Use the ISOCP text style for new text”
Write ·
textstyle_set_currentMove entities between model space and a sheet through a viewport
Move entities between model space and a sheet through a viewport.
Try: “Move the notes from the model onto the sheet”
Write ·
entity_change_spaceDuplicate a sheet with its page setup and geometry
Duplicate a sheet with its page setup and geometry.
Try: “Copy the A3-01 sheet”
Write ·
layout_copyAdd a new paper-space sheet tab to the drawing
Add a new paper-space sheet tab to the drawing.
Try: “Add a sheet called A3-01”
Write ·
layout_createDelete a sheet tab and everything drawn on it
Delete a sheet tab and everything drawn on it.
Try: “Delete the empty Layout2 sheet”
Delete ·
layout_deleteList the sheet tabs: Model plus every paper-space layout
List the sheet tabs: Model plus every paper-space layout.
Try: “Which sheets are in this drawing?”
Read ·
layout_listRename a sheet tab, keeping its geometry and handles
Rename a sheet tab, keeping its geometry and handles.
Try: “Rename Layout1 to General Arrangement”
Write ·
layout_renameSwitch to a sheet tab, or back to model space
Switch to a sheet tab, or back to model space.
Try: “Switch to the A3-01 sheet”
Write ·
layout_set_currentPut a scaled window onto model space on a sheet, at 1:1, 1:2 and so on
Put a scaled window onto model space on a sheet, at 1:1, 1:2 and so on.
Try: “Add a 1:2 viewport on the sheet”
Write ·
viewport_createRemove a viewport from a sheet
Remove a viewport from a sheet.
Try: “Remove the second viewport”
Delete ·
viewport_deleteList the viewports on a sheet with their scales and locks
List the viewports on a sheet with their scales and locks.
Try: “List the viewports on this sheet”
Read ·
viewport_listLock a viewport so its scale cannot be zoomed away
Lock a viewport so its scale cannot be zoomed away.
Try: “Lock the viewport scale”
Write ·
viewport_lockSet a viewport's scale, e.g. 1:2 or 1:50
Set a viewport's scale, e.g. 1:2 or 1:50.
Try: “Set that viewport to 1:50”
Write ·
viewport_set_scalePlot every sheet (or the named ones) to PDF; each sheet size is read back from its PDF
Plot every sheet (or the named ones) to PDF; each sheet size is read back from its PDF.
Try: “Plot every sheet to PDF”
Write ·
batch_plotList the five bundled drawing templates: standard, sheet, layers, styles, page setup
List the five bundled drawing templates: standard, sheet, layers, styles, page setup.
Try: “Which drawing templates are available?”
Read ·
drawing_template_listSave the current drawing as a template: .dwt on live AutoCAD, .dxf headlessly
Save the current drawing as a template: .dwt on live AutoCAD, .dxf headlessly.
Try: “Save this drawing as our company template”
Write ·
drawing_template_saveSets a sheet's paper size, orientation, plot style, scale and printer
Set a sheet's paper, orientation, ctb, plot scale and device (PAGESETUP).
Try: “Set this sheet to A3 landscape”
Write ·
page_setup_applyShows each sheet's paper size, orientation, plot style, scale and printer
Read each sheet's page setup: paper, orientation, ctb, scale, device.
Try: “What paper size is each sheet set to?”
Read ·
page_setup_listLists the plot style tables AutoCAD offers and which are installed
List the plot style tables (ctb): the AutoCAD catalogue, plus what is installed.
Try: “Which plot styles are available?”
Read ·
plot_style_listCreate a standard layer set: architectural, mechanical, electrical or piping
Create a standard layer set: architectural, mechanical, electrical or piping.
Try: “Add the piping layer set”
Write ·
template_apply_layersShow the available layer templates and the layers in each
Show the available layer templates and the layers in each.
Try: “Which layer templates do you have?”
Read ·
template_listSwitch which open document every later tool call targets
Switch which open document every later tool call targets.
Try: “Switch to the flange drawing”
Write ·
document_activateClose one open document by name; never drops unsaved work unless told to
Close one open document by name; never drops unsaved work unless told to.
Try: “Close the gear drawing”
Delete ·
document_closeList the open documents: which is active, which have unsaved changes
List the open documents: which is active, which have unsaved changes.
Try: “Which drawings are open right now?”
Read ·
document_listRead the drawing's title, subject, author, keywords, comments and custom properties
Read the drawing's title, subject, author, keywords, comments and custom properties.
Try: “Who is listed as the author of this drawing?”
Read ·
drawing_properties_getSet the drawing's summary fields and add, change or delete custom properties
Set the drawing's summary fields and add, change or delete custom properties.
Try: “Set the drawing title to Pump Skid Layout”
Write ·
drawing_properties_setDelete one saved layer state from the drawing
Delete one saved layer state from the drawing.
Try: “Delete the OLD layer setup”
Delete ·
layer_state_deleteList the layer states saved in this drawing
List the layer states saved in this drawing.
Try: “Which layer setups are saved?”
Read ·
layer_state_listRestore a saved layer state, all properties or a chosen subset
Restore a saved layer state, all properties or a chosen subset.
Try: “Restore the PRINT layer setup”
Write ·
layer_state_restoreSaves the current on, off, frozen and colour setup of all layers under a name
Save the layer table (on/frozen/locked/colour/linetype/lineweight/plot + current) under a name, in the file.
Try: “Save the current layer setup as PRINT”
Write ·
layer_state_saveAttach to the running AutoCAD or start it, optionally opening a file (live only)
Attach to the running AutoCAD or start it, optionally opening a file (live only).
Try: “Start AutoCAD and open plan.dwg”
Write ·
system_launchRead AutoCAD preferences from the whitelist (OPTIONS dialog values; live only)
Read AutoCAD preferences from the whitelist (OPTIONS dialog values; live only).
Try: “What is AutoCAD's autosave interval?”
Read ·
system_preferences_getChange one whitelisted AutoCAD preference; reports old and new (live only)
Change one whitelisted AutoCAD preference; reports old and new (live only).
Try: “Set autosave to every 5 minutes”
Write ·
system_preferences_setPrint a message on AutoCAD's command line (live only)
Print a message on AutoCAD's command line (live only).
Try: “Show a message in AutoCAD's command line”
Write ·
system_prompt_messageList the user coordinate systems, with the implicit world one
List the user coordinate systems, with the implicit world one.
Try: “List the coordinate systems”
Read ·
ucs_listSwitches to a saved coordinate system, or back to the world one
Make a saved UCS current, or world to reset to WCS.
Try: “Go back to the world coordinate system”
Write ·
ucs_restoreDefines a named coordinate system from an origin and two axes
Define (or replace) a named UCS from an origin and two perpendicular axes, and make it current.
Try: “Set up a coordinate system rotated 30 degrees”
Write ·
ucs_setAsk the operator to pick a point on screen (live only; blocks until they do)
Ask the operator to pick a point on screen (live only; blocks until they do).
Try: “Let me pick the insertion point”
Read ·
user_pick_pointAsk the operator to select one entity or a set on screen (live only)
Ask the operator to select one entity or a set on screen (live only).
Try: “Let me select the objects to move”
Read ·
user_selectList the named views saved in this drawing
List the named views saved in this drawing.
Try: “Which named views are saved?”
Read ·
view_named_listRestore a named view
Restore a named view.
Try: “Go back to the DETAIL view”
Read ·
view_named_restoreSave a named view: a centre and height (and width) to come back to
Save a named view: a centre and height (and width) to come back to.
Try: “Save this view as DETAIL”
Write ·
view_named_saveCapture a PNG picture of the drawing as it currently looks
Capture a PNG picture of the drawing as it currently looks.
Try: “Take a picture of the drawing as it is now”
Read ·
view_screenshotFit the drawing on screen, then capture it: the quickest visual check
Fit the drawing on screen, then capture it: the quickest visual check.
Try: “Show me what the drawing looks like”
Read ·
view_zoom_and_screenshotZoom out until every entity fits on screen
Zoom out until every entity fits on screen.
Try: “Zoom to fit everything”
Read ·
view_zoom_extentsZoom in on a rectangular region of the drawing
Zoom in on a rectangular region of the drawing.
Try: “Zoom in on the top left corner”
Read ·
view_zoom_windowUnion, subtract or intersect two 3D solids; the tool solid is consumed
Union, subtract or intersect two 3D solids; the tool solid is consumed.
Try: “Subtract the cylinder from the box”
Delete ·
solid_booleanCreates a 3D solid box (live AutoCAD, off by default)
Create a 3D solid box (live AutoCAD, opt-in via ENABLE_3D).
Try: “Make a 3D box 100 by 50 by 20”
Write ·
solid_boxCreates a 3D solid cylinder or shaft (live AutoCAD, off by default)
Create a 3D solid cylinder or shaft (live AutoCAD, opt-in via ENABLE_3D).
Try: “Make a 3D cylinder 30 mm across and 80 tall”
Write ·
solid_cylinderPulls a closed profile up into a 3D solid (live AutoCAD, off by default)
Pull a closed profile up into a 3D solid (live AutoCAD, opt-in via ENABLE_3D).
Try: “Extrude this outline 25 mm”
Write ·
solid_extrudeSpins a closed profile around an axis into a 3D solid (off by default)
Spin a closed profile around an axis into a 3D solid (opt-in via ENABLE_3D).
Try: “Revolve this profile around the axis”
Write ·
solid_revolveRead or change drawing units, precision, linetype and dimension scale by name
Read or change drawing units, precision, linetype and dimension scale by name.
Try: “Set units to millimetres with two decimal places”
Write ·
drawing_settingsRead one AutoCAD system variable, such as DIMSCALE or LTSCALE
Read one AutoCAD system variable, such as DIMSCALE or LTSCALE.
Try: “What is LTSCALE set to?”
Read ·
system_get_variableSends a raw command to AutoCAD's command line (live AutoCAD only)
Send a raw command string to the AutoCAD command line (COM only). A blocklist stops the most dangerous commands, but it is not a full safety barrier.
Try: “Run OVERKILL on the whole drawing”
Delete ·
system_run_commandRuns an AutoLISP expression inside AutoCAD (live AutoCAD only)
Evaluate an AutoLISP expression inside AutoCAD (COM only). A blocklist stops the most dangerous cases, but it is not a full safety barrier.
Try: “Run this LISP expression”
Delete ·
system_run_lispSet one AutoCAD system variable by name
Set one AutoCAD system variable by name.
Try: “Set LTSCALE to 10”
Write ·
system_set_variableDraw many entities in one call instead of one round trip each
Draw many entities in one call instead of one round trip each.
Try: “Draw these 40 lines in one go”
Write ·
entity_batch_createMove, rotate, scale, restyle or delete many entities in one call
Move, rotate, scale, restyle or delete many entities in one call.
Try: “Move every object on layer NOTES up by 10”
Delete ·
entity_batch_modifyUsed by the assistant behind the scenes
Ask the active backend which features it really supports
Ask the active backend which features it really supports.
Try: “Can this setup save DWG files?”
Read ·
system_capabilitiesGet an exact endpoint, midpoint, centre, quadrant or perpendicular foot
Get an exact endpoint, midpoint, centre, quadrant or perpendicular foot.
Try: “Get the midpoint of that line”
Read ·
point_from_snapFind where two lines or circles cross, exactly
Find where two lines or circles cross, exactly.
Try: “Where do these two lines cross?”
Read ·
point_intersectionFind where a line from an outside point touches a circle
Find where a line from an outside point touches a circle.
Try: “Find the tangent point from 0,0 to that circle”
Read ·
point_tangentExplains an AutoCAD system variable: type, range and default
Explain a system variable: type, range, default, where it is saved, which engine honours it.
Try: “What does DIMSCALE do?”
Read ·
system_variable_describeSee what this server can do: version, tool groups and active profile
See what this server can do: version, tool groups and active profile.
Try: “Which version of the server is this?”
Read ·
system_aboutCheck the connection: which engine is live and what document is open
Check the connection: which engine is live and what document is open.
Try: “Is AutoCAD connected?”
Read ·
system_statusRuns a list of drawing steps in one go, passing results between them
Run an ordered list of tool calls in one round trip, binding results between steps. It can include edits and deletions, and can preview the changes first.
Try: “Draw the outline, holes and dimensions in one go”
Delete ·
cad_batchSets a checkpoint you can roll back to before a risky edit
Open a rollback checkpoint before a risky edit.
Try: “Set a checkpoint before you change the walls”
Write ·
transaction_beginKeep the changes and drop the checkpoint
Keep the changes and drop the checkpoint.
Try: “Keep those changes”
Write ·
transaction_commitThrows away every change made since the last checkpoint
Throw away every change made since the last checkpoint.
Try: “Undo everything since the checkpoint”
Delete ·
transaction_rollback
Read from the source code
Pros and cons
Good
- Free and open source under the MIT licence.
- Works without AutoCAD on any OS by writing DXF files.
- Controls a running AutoCAD on Windows, including real DWG saves.
- Covers mechanical sheets, P&IDs, floor plans and pipe and cable takeoffs in one server.
- Can check a drawing against the sizes you asked for and report pass or fail per requirement.
- Lets you load only the tool packs you need to save context.
- Updated often, with a new release every month from July to October 2026.
Watch out
- The full tool set uses about 89,000 tokens of context before you ask anything.
- No live control on AutoCAD for Mac; it falls back to DXF files.
- No read-only mode.
- File access is unscoped until you set ALLOWED_PATHS.
- Saving DWG without AutoCAD needs the separate ODA File Converter.
- Four DIN and ISO groove and hole tables ship empty, so those sizes are refused.
- Made by one developer, not by Autodesk.
Permissions
high risk · 4 things to watch
High risk
The assistant can run AutoCAD commands, erase objects and save files anywhere your account can reach. Set ALLOWED_PATHS to one drawings folder and test on copies first.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It can run raw AutoCAD commands and LISP
A blocklist of 36 commands stops the obvious cases, but the README says it is not a security boundary. Never turn on DANGEROUS_COMMANDS_ENABLED. github.com
File access is open until you set ALLOWED_PATHS
With ALLOWED_PATHS empty, it can open and save files almost anywhere your user account can. Set it to your drawings folder. github.com
It edits the drawing you have open
In live mode it draws, erases and saves inside your running AutoCAD. Work on a copy until you trust the results. github.com
Remote HTTP access needs a token
HTTP mode only listens on your own computer. Opening it to the network needs ALLOW_REMOTE_HTTP and a bearer token. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | No read-only switch. TOOL_PACKS and TOOL_PROFILE=lean shrink the tool set but keep edit tools; ALLOWED_PATHS limits which folders it can open and save. |
|---|---|
| Sign-in and keys | No sign-in for local use. Remote HTTP mode needs a bearer token in MCP_AUTH_TOKEN. |
Alternatives
Use this server for most AutoCAD work on Windows or for DXF files anywhere. Pick multiCAD-mcp if you use BricsCAD, ZWCAD or GstarCAD, autocad-mac-mcp for live control on a Mac, and the Electrical server for schematics.
| Server | Official | Runs | Can change things | GitHub stars |
|---|---|---|---|---|
| For AutoCAD | ||||
| Autocad-MCPThis page | Community | Local | Yes | 206 |
| AutoCAD-MCP (beiming183) | Community | – | – | 40 |
| AutoCAD Electrical MCP | Community | – | – | 19 |
| autocad-mac-mcp | Community | – | – | 2 |
| Other tools for the same job | ||||
| multiCAD-mcp | Community | – | – | 153 |
What people say
The few users who post about it like how fast bugs get fixed and dislike how much context it uses.
What people like
- Bugs reported on GitHub get fixed fast; a broken dimension tool was fixed three days after the report.
- A user in opencode reports the basic tools work out of the box.
Common complaints
- Users ask how to cut its token cost, and the maintainer says there is little to do until 1.8.0.
- On AutoCAD for Mac it never controls the running app.
- Before 1.7.0, calls on Windows failed when AutoCAD was not the window in front.
In their words
“Is there some settings related with performance and token cost?”xiaofeiyun123GitHub issueOct 2026
“Honestly, there is not much you can do.Token usage depends on the project model and harness. I'm trying to reduce it and I will focus more on this in version 1.8.0”U-C4NGitHub issueOct 2026
“On AutoCAD for Mac the server never controls the running AutoCAD.”Mats2208GitHub issueJul 2026
“I try to use this mcp with opencode. Basicaly it works. But when i ask to draw dimentions, i got error”zella
Questions
Is there an official Autodesk AutoCAD MCP server?
Autodesk lists an AutoCAD and Civil 3D MCP server as a tech preview that runs inside AutoCAD 2027 on Windows. Autodesk's own posts describe it working through its built-in Autodesk Assistant, and setup for Claude or Cursor is not documented there yet. This server is a community project that works with those apps today.
Do I need AutoCAD installed?
No for working on DXF files, which runs on any computer. Yes for controlling a running AutoCAD, which needs AutoCAD on Windows.
Does it work on a Mac?
Only on files. On AutoCAD for Mac it cannot control the running app and quietly works on a DXF copy instead, so nothing appears in AutoCAD.
Is it free?
Yes. It is open source under the MIT licence. Live mode still needs your own AutoCAD licence.
Is it safe to use on real drawings?
Use care. It can run AutoCAD commands, erase objects and save files, and there is no read-only mode. Limit it to one folder with ALLOWED_PATHS and test on copies first.
Why does it use so much of my assistant's context?
The full tool set takes about 89,000 tokens before you ask anything. Load only the packs you need with TOOL_PACKS, switch to the lean profile, or turn on search mode, which drops it to about 500 tokens.
Can it save DWG files?
Yes when it controls a live AutoCAD. Without AutoCAD it saves DXF, and DWG only if the free ODA File Converter is installed.
Does it work with BricsCAD, ZWCAD or AutoCAD LT?
Not tested. You can point it at another CAD app's automation name, but only the connection has been tried. multiCAD-mcp targets BricsCAD, ZWCAD and GstarCAD.
How do I add it to Claude Code?
Use the plugin install in the setup box above. It installs the server and a drafting skill together, and needs uv.
Examples
Draw a dimensioned gear sheet with an ISO title block and check it for drafting issues
Draw a module-6, 24-tooth spur gear with a 40 mm H7 bore on an ISO A3 sheet, then check the drawing for drafting issues.
Read a P&ID someone else drew and list its instruments, lines and equipment
Open plant-pid.dxf and give me the instrument index and line list.
Lay out a two-room floor plan with doors, windows and measured room areas
Draw a two-room plan with 250 mm brick walls, two doors and two windows at 1:50, and label each room's area.
Estimate pipe and cable lengths from a P&ID and its layout into a spreadsheet
Use the P&ID and the layout drawing to estimate pipe and cable lengths and save them as an Excel file.
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
autocad-mcp-pro- Registry
- PyPI
- Transport
- stdio, Streamable HTTP
- Auth
- None
- Version
- 1.7.0
- License
- MIT
- Last commit
- Oct 27, 2026
- Open issues
- 1
Other AutoCAD MCP servers
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 14Hide
- AutoCAD MCP Pro README · github.com
- autocad-mcp-pro Claude Code plugin · github.com
- AutoCAD MCP Pro tool inventory · github.com
- Autodesk MCP Server Help · help.autodesk.com
- AutoCAD 2027 と AI エージェント · blog.autodesk.io
- AutoCAD for Mac: no live control · github.com
- Windows/COM: calls fail when AutoCAD is not in front · github.com
- dimension_linear fails in opencode · github.com
- How to improve performance? How to saving token? · github.com
- multiCAD-mcp · github.com
- autocad-mac-mcp · github.com
- AUTOCAD-ELECTRICAL-MCP · github.com
- AutoCAD-MCP (beiming183-cloud) · github.com
- AutoCAD MCP Pro CHANGELOG · github.com