github analyzed a7b182d unconfirmed MCP

ghbalf/freecad-ai

github

AI-powered assistant workbench for FreeCAD — generate 3D models from natural language

maintainer
ghbalf
license
LGPL-2.1
first seen
2026-06-01
last seen
2026-06-16
releases · 30d
7
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged dynamic code execution ×3 in ghbalf/freecad-ai
capabilities47 tools
transport counts 47 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • add_assembly_joint

    Joint two parts (Fixed, Revolute, Cylindrical, Slider, Ball)

  • add_part_to_assembly

    Add a part to an existing assembly

  • boolean_operation

    Fuse, Cut, or Common between two objects

  • capture_viewport

    Save a screenshot of the 3D viewport

  • chamfer_edges

    Chamfer edges

  • create_assembly

    Create an Assembly with grounded base part

  • create_body

    Create a PartDesign Body for parametric modeling

  • create_enclosure_lid

    Generate a snap-fit enclosure lid with correct dimensions

  • create_inner_ridge

    Add a snap-fit ridge inside a rectangular hollow

  • create_primitive

    Box, Cylinder, Sphere, Cone, Torus

  • create_sketch

    Sketch with lines, circles, arcs, rectangles + constraints (supports plane offset)

  • create_snap_tabs

    Add snap tabs on a lid lip (pairs with ridge)

  • create_spreadsheet

    Create a Spreadsheet with named variables for parametric modeling

  • create_variable_set

    Create a VarSet with named variables for parametric modeling

  • create_wedge

    Create a wedge/ramp shape

  • describe_model

    Comprehensive geometry summary: dimensions, wall thickness, hollow/solid detection

  • execute_code

    Fallback: run arbitrary Python

  • export_model

    Export to STL, STEP, or IGES

  • fillet_edges

    Round edges

  • get_document_state

    Inspect current objects and properties

  • linear_pattern

    Repeat a feature in a line

  • list_documents

    List all open documents with object counts and active indicator

  • list_edges

    List all edges with names, labels, lengths (optional filter)

  • list_faces

    List all faces with names, labels, normals, areas (optional filter)

  • loft_sketches

    Loft between sketches for tapered/organic shapes

  • measure

    Volume, area, bounding box, distance, edge listing

  • mirror_feature

    Mirror a PartDesign feature across a plane

  • modify_property

    Change any object property (supports relative: +10%, *1.5)

  • multi_transform

    Chain linear pattern + polar pattern + mirror in one feature

  • pad_sketch

    Extrude a sketch

  • pocket_sketch

    Cut a pocket from a sketch (auto-detects correct direction)

  • polar_pattern

    Repeat a feature in a circular pattern

  • redo

    Redo previously undone operations

  • revolve_sketch

    Revolve a sketch around an axis (vase, wheel, bottle)

  • scale_object

    Scale an object uniformly or per-axis

  • section_object

    Cross-section through a plane or another object

  • select_geometry

    Interactive viewport picking for edges, faces, vertices

  • set_expression

    Bind object properties to expressions (parametric relationships)

  • set_view

    Set camera orientation (front, top, isometric, etc.)

  • shell_object

    Hollow out a solid (PartDesign::Thickness)

  • sweep_sketch

    Sweep a profile along a spine path (pipe, tube)

  • switch_document

    Switch the active FreeCAD document by name or label

  • transform_object

    Move and/or rotate an object

  • undo

    Undo last N operations, or undo until a named transaction

  • undo_history

    Show the undo/redo stack with named transactions

  • use_skill

    Load a skill's instructions for complex tasks (enclosure, gear, etc.)

  • zoom_object

    Zoom the viewport to a specific object

skills & danger signalsgithub-tarball
code evidencevv0.16.2-alpha · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

filesystem 16

  • fs ghbalf-freecad-ai-a7b182d/freecad_ai/config.py :17 the first one that has data as the source, ``shutil.move``s it to the new
  • fs ghbalf-freecad-ai-a7b182d/freecad_ai/core/conversation.py :395 with open(path, "w") as f:
  • fs ghbalf-freecad-ai-a7b182d/freecad_ai/core/executor.py :18 import shutil
  • fs ghbalf-freecad-ai-a7b182d/freecad_ai/extensions/agents_md.py :92 with open(path, "r", encoding="utf-8") as f:
  • fs ghbalf-freecad-ai-a7b182d/freecad_ai/extensions/skill_evaluator.py :47 with open(self._history_path, "r") as f:
  • fs ghbalf-freecad-ai-a7b182d/freecad_ai/extensions/skills.py :15 import shutil
  • fs ghbalf-freecad-ai-a7b182d/freecad_ai/extensions/user_tools.py :63 with open(path, "r") as f:
  • fs ghbalf-freecad-ai-a7b182d/freecad_ai/llm/client.py :102 buf.open(_QtCore.QBuffer.WriteOnly)
  • fs ghbalf-freecad-ai-a7b182d/freecad_ai/tools/freecad_tools.py :3599 with open(path, "r", encoding="utf-8") as f:
  • fs ghbalf-freecad-ai-a7b182d/freecad_ai/tools/optimize_tools.py :245 with open(skill.validation_path) as f:
  • fs ghbalf-freecad-ai-a7b182d/freecad_ai/ui/chat_widget.py :620 buf.open(QtCore.QIODevice.WriteOnly)
  • fs ghbalf-freecad-ai-a7b182d/freecad_ai/ui/optimize_dialog.py :257 with open(skill.validation_path) as f:
  • fs ghbalf-freecad-ai-a7b182d/freecad_ai/ui/settings_dialog.py :1592 import shutil
  • fs ghbalf-freecad-ai-a7b182d/freecad_ai/utils/viewport.py :42 with open(tmp_path, "rb") as f:
  • fs ghbalf-freecad-ai-a7b182d/skills/optimize-skill/handler.py :79 os.remove(history_path)
  • fs ghbalf-freecad-ai-a7b182d/translations/compile_ts.py :93 with open(qm_path, "wb") as f:

shell / exec 3

  • shell ghbalf-freecad-ai-a7b182d/freecad_ai/core/executor.py :20 import subprocess
  • shell ghbalf-freecad-ai-a7b182d/freecad_ai/llm/client.py :20 import subprocess
  • shell ghbalf-freecad-ai-a7b182d/freecad_ai/mcp/transport.py :8 import subprocess

network 1

  • net ghbalf-freecad-ai-a7b182d/freecad_ai/llm/client.py :22 import urllib.request