Skip to content

0.5.3 — one-click install

Choose a tag to compare

@github-actions github-actions released this 13 Sep 00:50
· 81 commits to main since this release
e9b8e1d

The release that makes AnkusDrive a one-click install. Every GitHub release now
carries an .mcpb bundle for Claude Desktop, the same file the Smithery listing
distributes, and it was verified end to end in Claude Desktop — including on a machine
with no uv, where the host downloads its own. Installing that way exposed a quieter
defect: the install hints assumed a plain venv, and every managed install (the
extension, uvx from the MCP Registry, pipx, uv tool) was being told to run a pip
that could not reach it. Both land here, with a reproducible FEM mesh behind them.

Added

  • An MCPB bundle, ankusdrive-<version>.mcpb, attached to every GitHub release — the
    one-click Claude Desktop install and the artifact the Smithery listing distributes.
    It carries no AnkusDrive code: mcpb/pyproject.toml pins the matching PyPI release
    and the host resolves it with uv (manifest 0.4, server.type: "uv"), so the bundle
    is ~34 kB and handles numpy/Pillow on every platform. One optional install field,
    the FreeCAD command path. A launcher shim drops ANKUSDRIVE_* values that arrive as
    unexpanded ${user_config.*} text, which the MCPB reference host leaves in place for
    an unset option and AnkusDrive would otherwise read as an explicit, nonexistent
    FreeCAD path. publish.yml builds it after the PyPI upload and creates the GitHub
    release from the changelog section when it does not exist yet
    (#201).

Fixed

  • Install hints now match how AnkusDrive was installed. setup_status, doctor,
    solve_capabilities and every *_submit degradation used to say
    pip install 'ankusdrive[X]', which under pipx, uv tool, uvx (the MCP Registry
    launch) and the Claude Desktop extension installs into a different Python and
    leaves the family missing with no explanation. ankusdrive/install_kind.py
    detects the install (ANKUSDRIVE_INSTALL_KIND, else the interpreter path) and
    rewrites pip hints: pipx runpip ankusdrive install …, uv tool install --reinstall 'ankusdrive[X]', uvx --from 'ankusdrive[X]' ankusdrive mcp, and for
    the extension a plain statement that extras cannot be added, with the pipx route.
    Non-pip hints and plain venvs are unchanged. The report gains install: {kind, source}; the FreeCAD worker receives the host's kind, since its own interpreter is
    FreeCAD's; the MCPB launcher announces mcpb. A fast-lane test fails any hint
    string that bypasses the routing
    (#347).

  • fem_mesh and fem_cantilever_demo mesh with serial Gmsh, like the Elmer and
    warpage bridges already did. Gmsh's threaded 3-D Delaunay is nondeterministic, so
    the same model meshed to a different tet count run to run (390–406 tets, max
    displacement 0.0497–0.0512 mm on one 24-core box) and a FEM test flaked; the result
    is now identical across runs, for ~3% more meshing time on a 440k-tet part
    (#344).

Changed

  • The FreeCAD-path config key is freecadcmd everywhere: smithery.yaml said
    freecadCmd while config.toml and the bundle say freecadcmd
    (#201).