Skip to main content
Glama
FreeCAD Tutor MCP
by alex-r-t

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

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

You are connected to a live FreeCAD 1.0/1.1+ instance via FreeCAD Tutor MCP.

Workflow rules:

  1. Inspect before acting: use get_document_graph, get_sketch_diagnostics, get_selection, get_recent_activity, and get_console_output to observe the student's real model state.

  2. Search for specialized tools before scripting: Claude Desktop may defer some tools behind tool search. Before falling back to execute_script, search for and load matching 1-to-1 tools (partdesign_*, find_edges, find_faces, measure_distance, set_view, save_document/open_document/close_document/export_document, set_property, set_appearance, create_datum_plane, create_varset, add_techdraw_*, export_techdraw_page, explain_freecad_error).

  3. Never guess FreeCAD menu or toolbar locations: call find_ui_command to get exact live menu paths, shortcuts, and why a button might be greyed out, and use highlight_ui_element to put a temporary spotlight on the button, menu, or panel in the live FreeCAD window.

  4. Do not mutate the student's active coursework file unless explicitly asked; prefer create_document(name="Tutor_Demo") for demonstrations, and never discard unsaved changes without consent.

  5. All editing tools are wrapped in FreeCAD undo transactions (Ctrl+Z / undo).

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

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

Tools

Functions exposed to the LLM to take actions

NameDescription
get_rpc_statusA

Check connection health, addon protocol version, FreeCAD PID, and dispatch status.

list_documentsA

List all open FreeCAD documents (active_document, count, and documents list).

get_document_graphB

Inspect the feature tree, dependencies, error messages, UI edit state, and TNP warnings.

Args: doc_name: Document name; empty string uses the active document. include_properties: Keep False (default) for a compact graph; set True for all properties.

inspect_objectB

Dump all properties, validity state, error description, and shape metadata for one object.

analyze_shapeA

Inspect face/edge topology, bounding box, volume, and validity (optional OCC BOPCheck).

Args: name: Object name in the document. deep_check: Set True to run OCC's slower deep Shape.check(True) BOP validity test. doc_name: Target document name (empty string uses ActiveDocument).

find_edgesC

Find EdgeN names on a shape matching direction ('X'/'Y'/'Z'/'+Z'/'-Z'), length, or location.

find_facesC

Find FaceN names on a shape matching normal ('+Z', '-Z', 'X'), area, surface type, or point.

measure_distanceB

Measure minimum 3D distance and delta vector between two objects or Face/Edge/Vertex refs.

get_sketch_diagnosticsB

Inspect Sketch DoF, OpenVertices, missing/conflicting/redundant constraints, and tutor hints.

tracked_recomputeB

Recompute the document and report new, resolved, and persistent object errors.

get_console_outputA

Read recent lines from FreeCAD's Report view / console log (1-1000 lines).

get_recent_activityB

Read recent student/model events recorded by the FreeCAD observer (edits, undos, dialogs).

explain_freecad_errorA

Translate a cryptic FreeCAD/OpenCASCADE error message into beginner causes and fixes.

find_ui_commandA

Search live FreeCAD commands for menu paths, toolbars, shortcuts, and why a button is greyed out.

Args: query: Keyword such as 'Pad', 'Fillet', 'Sketch', or 'TechDraw'. workbench_filter: Optional command prefix filter (e.g. 'PartDesign', 'Sketcher'). limit: Max results (1-50).

highlight_ui_elementA

Put a temporary, click-through visual spotlight on a FreeCAD button, menu, panel, or workbench selector.

Args: target: Command name (e.g. 'PartDesign_Pad'), button label ('Pad'), or panel name ('Model', 'Tasks', 'Report view', 'Workbench'). label: Optional short callout text shown next to the highlight frame. duration_s: Auto-dismiss time in seconds (1.0-20.0). clear: Set True to immediately remove any active highlight.

list_workbenchesA

List all FreeCAD workbenches and show which one is currently active.

activate_workbenchB

Switch FreeCAD's active workbench (e.g., 'PartDesignWorkbench', 'PartWorkbench', 'TechDrawWorkbench').

get_selectionA

Get objects and sub-elements (Face1, Edge2, etc.) currently selected by the user in FreeCAD.

set_selectionC

Highlight/select objects or sub-elements (e.g. ['Pad', 'Pad.Face1']) in FreeCAD's viewport.

set_viewA

Orient and zoom the 3D camera (Isometric, Front, Top, Right, Back/Rear, Left, Bottom) without screenshot.

get_viewA

Capture the 3D viewport (capture_scope='viewport') or full FreeCAD window ('window') as PNG.

Args: view_name: 'Current', 'Isometric', 'Front', 'Top', 'Right', 'Back', 'Left', 'Bottom', 'Dimetric', or 'Trimetric'. width: Optional explicit image width (auto-scaled <=1024px viewport / <=1280px window). height: Optional explicit image height. focus_object: Optional object name to zoom/fit before capturing. capture_scope: 'viewport' for clean 3D render, or 'window' to include Task panels, Combo View, and dialogs.

create_documentB

Create a new FreeCAD document (defaults to a safe 'Tutor_Demo' scratch file for demonstrations).

save_documentB

Save an open document to its existing .FCStd path or a new destination path.

open_documentA

Open a .FCStd file (or import a .step/.stp/.iges/.igs file into a new document).

close_documentA

Close a document safely (refuses if modified unless save_before_close or discard_unsaved is True).

export_documentB

Export Bodies or solids to .step/.stp, .stl, .obj, .3mf, .iges, or .brep.

undoB

Undo the most recent FreeCAD transaction.

redoB

Redo the most recently undone FreeCAD transaction.

get_undo_redo_statusB

Check available undo/redo steps and transaction names.

create_partdesign_bodyC

Create a PartDesign::Body container (undoable).

create_sketchB

Create a Sketcher::SketchObject on an Origin plane or face (undoable).

edit_sketchC

Add/edit/delete Sketch geometry & constraints with automatic Coincident/H/V constraining (undoable).

pad_sketchB

Extrude a Sketch inside a PartDesign Body using Pad (undoable; rolls back if invalid).

pocket_sketchC

Cut material from a PartDesign Body using Pocket (undoable; rolls back if invalid).

partdesign_thicknessB

Hollow out a PartDesign solid by opening selected faces and setting wall thickness (undoable).

partdesign_holeB

Drill parametric simple, counterbore, countersink, or threaded holes from a Sketch (undoable).

partdesign_revolutionB

Revolve a Sketch around an axis to add solid material in PartDesign (undoable).

partdesign_grooveB

Revolve a Sketch around an axis to subtract/cut material in PartDesign (undoable).

partdesign_loftC

Loft between two or more Sketches (AdditiveLoft or SubtractiveLoft) (undoable).

partdesign_sweepB

Sweep a profile Sketch along a spine path (AdditivePipe or SubtractivePipe) (undoable).

partdesign_mirroredC

Mirror PartDesign feature(s) across a plane (PartDesign::Mirrored) (undoable).

partdesign_linear_patternC

Repeat PartDesign feature(s) along a line (PartDesign::LinearPattern) (undoable).

partdesign_polar_patternC

Repeat PartDesign feature(s) around an axis (PartDesign::PolarPattern) (undoable).

partdesign_draftC

Taper selected solid faces by a draft angle (PartDesign::Draft) (undoable).

create_datum_planeC

Create a PartDesign::Plane Datum Plane inside a Body (TNP-safe sketch plane) (undoable).

create_varsetB

Create a FreeCAD 1.0/1.1 App::VarSet parametric variable table (undoable).

set_propertyB

Update a Data-tab property (Pad.Length, Fillet.Radius, VarSet fields) or bind an expression (undoable).

set_appearanceB

Set object Visibility, Transparency (0-100), or ShapeColor [r, g, b] in the View tab (undoable).

create_part_primitiveC

Create a Part CSG primitive ('Box', 'Cylinder', 'Sphere', or 'Cone') (undoable).

boolean_operationB

Run a Part CSG Boolean ('Fuse', 'Cut', or 'Common') between two objects (undoable).

fillet_edgesB

Round selected edges (e.g. ['Edge1', 'Edge2']) on a feature or shape (undoable).

chamfer_edgesC

Bevel selected edges (e.g. ['Edge1']) on a feature or shape (undoable).

create_techdraw_pageB

Create a TechDraw 2D drawing sheet with an SVG template (undoable).

add_techdraw_viewB

Add an orthographic view or multi-view Projection Group to a TechDraw page (undoable).

add_techdraw_dimensionB

Add a 2D TechDraw dimension (Distance, Radius, Diameter, Angle) referencing view edges/vertices (undoable).

add_techdraw_sectionB

Add a TechDraw cross-section view (DrawViewSection) cutting through a BaseView (undoable).

export_techdraw_pageC

Export a TechDraw drawing page to PDF or SVG.

execute_scriptA

Execute Python inside FreeCAD's main thread (escape hatch; undoable when wrap_transaction=True).

Prompts

Interactive templates invoked by user choice

NameDescription
tutor_modeActivate FreeCAD 1.0/1.1+ CAD Tutor mode for coursework.
diagnose_broken_modelRun a full diagnostic sweep on the active FreeCAD document.
compare_workflowsDemonstrate PartDesign vs. Part CSG side-by-side in a safe Tutor_Demo doc.

Resources

Contextual data attached and managed by the client

NameDescription
guide_partdesign_vs_partCompare PartDesign (feature-based single solid) vs. Part (CSG booleans).
guide_sketcher_constraintsGuide to Sketcher constraints, Degrees of Freedom (DOF), and conflicts.
guide_tnp_best_practicesGuide to avoiding the Topological Naming Problem (TNP) in FreeCAD.
guide_techdraw_basicsGuide to creating 2D engineering drawings in the TechDraw workbench.

TDQS

B3.1/5.0

Scored across 58 tools

Disambiguation4/5

Most tools target clearly distinct CAD actions or resources, especially across document, sketch, PartDesign, TechDraw, and UI-guidance domains. There is some potential confusion among diagnostic tools like get_document_graph, inspect_object, analyze_shape, and get_sketch_diagnostics, but their descriptions define different scopes.

Naming Consistency4/5

The set is predominantly snake_case and mostly follows a verb_noun pattern such as create_sketch, list_documents, and export_document. Deviations like partdesign_thickness, boolean_operation, and tracked_recompute are readable but keep it from being fully uniform.

Tool Count1/5

At 58 tools, the surface is far beyond the typical 3-15 range and almost certainly overwhelms an agent choosing among many partially adjacent operations. Even for a complex CAD application, the tool set is excessively large and would benefit from consolidation or higher-level composite tools.

Completeness4/5

Coverage is broad: document lifecycle, sketching, PartDesign features, Part primitives/booleans, TechDraw, exports, diagnostics, undo/redo, and UI tutoring are all represented. Notable gaps remain, such as an explicit delete-object/delete-feature tool and broader assembly or datum-line/point coverage.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues