feat: migrate freecad-mcp to GitHub fork install and refactor deployments

- Switch freecad-mcp installation from PyPI to Heluca GitHub fork,
  using a configurable git ref (freecad_mcp_git_ref) instead of
  pinned PyPI version
- Retarget freecad-mcp deployment from Caliban to Larissa, update
  port from 22032 to 22063, and change service user to freecad-mcp
- Add git to apt dependencies for pip git+https installs
- Make deployment summary use inventory_hostname instead of hardcoded host
- Refactor kernos deploy to target all ubuntu hosts with service-based
  filtering via `services` host_var, replacing static host group
This commit is contained in:
2026-04-06 15:07:15 +00:00
parent cac18dc61f
commit 2ffcf00570
3 changed files with 24 additions and 14 deletions

View File

@@ -2,22 +2,21 @@
# ============================================================================= # =============================================================================
# FreeCAD Robust MCP Server — Ansible Deployment Playbook # FreeCAD Robust MCP Server — Ansible Deployment Playbook
# ============================================================================= # =============================================================================
# Deploys the FreeCAD MCP Server to Caliban as a systemd service. # Deploys the FreeCAD MCP Server to Larissa as a systemd service.
# #
# The server runs in xmlrpc mode with HTTP transport, exposing the MCP # The server runs in xmlrpc mode with HTTP transport, exposing the MCP
# protocol over streamable-http for consumption by MCP Switchboard on Oberon. # protocol over streamable-http for consumption by MCP Switchboard on Triton.
# #
# Pattern: venv + pip install from PyPI (matches Kernos deployment) # Pattern: venv + pip install from GitHub fork (fastmcp>=3.2.0)
# #
# Usage: # Usage:
# ansible-playbook freecad_mcp/deploy.yml # ansible-playbook freecad_mcp/deploy.yml
# #
# Required host_vars (caliban.incus.yml): # Required host_vars:
# freecad_mcp_user: harper # freecad_mcp_user: freecad-mcp
# freecad_mcp_group: harper # freecad_mcp_group: freecad-mcp
# freecad_mcp_directory: /srv/freecad-mcp # freecad_mcp_directory: /srv/freecad-mcp
# freecad_mcp_port: 22032 # freecad_mcp_port: 22063
# freecad_mcp_version: "0.5.0" # PyPI version to pin
# #
# Optional host_vars: # Optional host_vars:
# freecad_mcp_host: "0.0.0.0" # freecad_mcp_host: "0.0.0.0"
@@ -95,7 +94,7 @@
- name: Ensure Python 3, venv, dev headers, and FreeCAD are installed - name: Ensure Python 3, venv, dev headers, and FreeCAD are installed
become: true become: true
ansible.builtin.apt: ansible.builtin.apt:
name: [python3, python3-venv, python3-dev, freecad] name: [python3, python3-venv, python3-dev, git, freecad]
state: present state: present
update_cache: true update_cache: true
@@ -119,12 +118,12 @@
state: latest state: latest
virtualenv: "{{ freecad_mcp_directory }}/.venv" virtualenv: "{{ freecad_mcp_directory }}/.venv"
- name: Install freecad-robust-mcp from PyPI - name: Install freecad-robust-mcp from Heluca fork
become: true become: true
become_user: "{{ freecad_mcp_user }}" become_user: "{{ freecad_mcp_user }}"
ansible.builtin.pip: ansible.builtin.pip:
name: name:
- "freecad-robust-mcp=={{ freecad_mcp_version }}" - "freecad-robust-mcp @ git+https://github.com/heluca/freecad-addon-robust-mcp-server.git@{{ freecad_mcp_git_ref }}"
virtualenv: "{{ freecad_mcp_directory }}/.venv" virtualenv: "{{ freecad_mcp_directory }}/.venv"
virtualenv_command: python3 -m venv virtualenv_command: python3 -m venv
notify: restart freecad-mcp notify: restart freecad-mcp
@@ -205,7 +204,7 @@
ansible.builtin.debug: ansible.builtin.debug:
msg: >- msg: >-
FreeCAD MCP Server deployed successfully on FreeCAD MCP Server deployed successfully on
caliban.incus:{{ freecad_mcp_port }} {{ inventory_hostname }}:{{ freecad_mcp_port }}
# ========================================================================= # =========================================================================
# Handlers # Handlers

View File

@@ -40,6 +40,8 @@ freecad_mcp_version: 0.6.1
openwebui_rel: 0.8.3 openwebui_rel: 0.8.3
pulseaudio_module_xrdp_rel: devel pulseaudio_module_xrdp_rel: devel
searxng_oauth2_proxy_version: 7.6.0 searxng_oauth2_proxy_version: 7.6.0
# Git ref (branch, tag, or commit) - https://github.com/heluca/freecad-addon-robust-mcp-server
freecad_mcp_git_ref: "main"
# MCP URLs # MCP URLs
argos_mcp_url: http://miranda.incus:25534/mcp argos_mcp_url: http://miranda.incus:25534/mcp

View File

@@ -1,10 +1,19 @@
--- ---
- name: Deploy Kernos MCP Shell Server - name: Deploy Kernos MCP Shell Server
hosts: kernos hosts: ubuntu
vars: vars:
ansible_common_remote_group: "{{kernos_group}}" ansible_common_remote_group: "{{kernos_group | default([]) }}"
allow_world_readable_tmpfiles: true allow_world_readable_tmpfiles: true
tasks: tasks:
- name: Check if host has kernos service
ansible.builtin.set_fact:
has_kernos_service: "{{ 'kernos' in services | default([]) }}"
- name: Skip hosts without kernos service
ansible.builtin.meta: end_host
when: not has_kernos_service
- name: Create Kernos group - name: Create Kernos group
become: true become: true
ansible.builtin.group: ansible.builtin.group: