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
|
# 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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user