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:
@@ -2,22 +2,21 @@
|
||||
# =============================================================================
|
||||
# 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
|
||||
# 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:
|
||||
# ansible-playbook freecad_mcp/deploy.yml
|
||||
#
|
||||
# Required host_vars (caliban.incus.yml):
|
||||
# freecad_mcp_user: harper
|
||||
# freecad_mcp_group: harper
|
||||
# Required host_vars:
|
||||
# freecad_mcp_user: freecad-mcp
|
||||
# freecad_mcp_group: freecad-mcp
|
||||
# freecad_mcp_directory: /srv/freecad-mcp
|
||||
# freecad_mcp_port: 22032
|
||||
# freecad_mcp_version: "0.5.0" # PyPI version to pin
|
||||
# freecad_mcp_port: 22063
|
||||
#
|
||||
# Optional host_vars:
|
||||
# freecad_mcp_host: "0.0.0.0"
|
||||
@@ -95,7 +94,7 @@
|
||||
- name: Ensure Python 3, venv, dev headers, and FreeCAD are installed
|
||||
become: true
|
||||
ansible.builtin.apt:
|
||||
name: [python3, python3-venv, python3-dev, freecad]
|
||||
name: [python3, python3-venv, python3-dev, git, freecad]
|
||||
state: present
|
||||
update_cache: true
|
||||
|
||||
@@ -119,12 +118,12 @@
|
||||
state: latest
|
||||
virtualenv: "{{ freecad_mcp_directory }}/.venv"
|
||||
|
||||
- name: Install freecad-robust-mcp from PyPI
|
||||
- name: Install freecad-robust-mcp from Heluca fork
|
||||
become: true
|
||||
become_user: "{{ freecad_mcp_user }}"
|
||||
ansible.builtin.pip:
|
||||
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_command: python3 -m venv
|
||||
notify: restart freecad-mcp
|
||||
@@ -205,7 +204,7 @@
|
||||
ansible.builtin.debug:
|
||||
msg: >-
|
||||
FreeCAD MCP Server deployed successfully on
|
||||
caliban.incus:{{ freecad_mcp_port }}
|
||||
{{ inventory_hostname }}:{{ freecad_mcp_port }}
|
||||
|
||||
# =========================================================================
|
||||
# Handlers
|
||||
|
||||
@@ -40,6 +40,8 @@ freecad_mcp_version: 0.6.1
|
||||
openwebui_rel: 0.8.3
|
||||
pulseaudio_module_xrdp_rel: devel
|
||||
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
|
||||
argos_mcp_url: http://miranda.incus:25534/mcp
|
||||
|
||||
@@ -1,10 +1,19 @@
|
||||
---
|
||||
- name: Deploy Kernos MCP Shell Server
|
||||
hosts: kernos
|
||||
hosts: ubuntu
|
||||
vars:
|
||||
ansible_common_remote_group: "{{kernos_group}}"
|
||||
ansible_common_remote_group: "{{kernos_group | default([]) }}"
|
||||
allow_world_readable_tmpfiles: true
|
||||
|
||||
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
|
||||
become: true
|
||||
ansible.builtin.group:
|
||||
|
||||
Reference in New Issue
Block a user