
KVM/libvirt VMs and backups (Fedora)
io.github.amineutron由 GitHub 帳號 amineutron 發布v1.3.0更新於 Oct 24, 2026
Manage local KVM/libvirt VMs and Timeshift/Borg backups on Fedora: start, stop, clone, snapshot.
概覽
一個用於 Fedora 的本地 MCP 伺服器,讓 AI 代理可以管理 KVM/libvirt 虛擬機並執行 Borg/Timeshift 備份。
- 可以做什麼
- 管理 Fedora 上的本地 KVM/libvirt 虛擬機和 Timeshift/Borg 備份:啟動、停止、複製、快照。工具包括 VM 控制功能,例如啟動、停止和在虛擬機內執行命令,以及備份管理功能,例如列出、建立、驗證和還原備份。它提供進階功能,如可追蹤的呼叫、冪等讀取的重試以及為 AI 代理提供類型安全的錯誤代碼。
- 適用情境
- 當您需要 AI 助理直接與 Fedora 主機上的虛擬機生命週期和系統備份互動和管理時,請使用此伺服器。
- 執行需求
- 作為用戶機器上的本地程序運行。需要安裝特定的套件,例如 libvirt-client、qemu-utils、borgbackup 和 Node.js >= 18。某些操作需要 root 權限。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 KVM/libvirt VMs and backups (Fedora),將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
fedora-agents MCP Server
[CI] [npm] [License: MIT] [TypeScript]
English summary. MCP server that gives an AI agent hands on KVM/libvirt virtual machines and Borg/Timeshift backups on Fedora. Each tool declares whether it needs sudo and whether it is destructive; the client must confirm destructive calls. Arguments are validated with Zod before any script runs. Install with npx fedora-agents-mcp (--help lists the settings) or npm ci && npm run build. Security policy and tool table: SECURITY.md.
Serveur MCP (Model Context Protocol) qui expose les agents VM-Controller et Backup-Manager via le protocole MCP. Permet a Claude Code de gerer les VMs KVM et les backups directement.
Pourquoi c'est conçu pour des agents LLM
Un script virsh suffit à un humain qui lit la sortie et réagit. Un agent LLM (grand
modèle de langage) qui pilote des machines a besoin d'autres garanties, et c'est ce que
ce serveur ajoute autour des scripts :
- Chaque appel est traçable. Un identifiant de corrélation est créé par appel d'outil
et suit toutes les lignes du journal ; le journal d'audit JSON est écrit de façon
synchrone, sur disque avant la réponse à l'agent (
src/logger.ts). - Le réessai dépend de la nature de l'outil. Seules les lectures idempotentes
(
vm_status,backup_status,backup_list,backup_verify) sont retentées, trois fois avec un délai croissant de 1, 2 puis 5 s ; une action qui modifie (démarrer, arrêter, restaurer, nettoyer) ne l'est jamais. Une erreur de validation ou de permission arrête tout de suite (src/utils/executor.ts). - Le code de sortie devient une erreur typée. Les scripts renvoient un code (délai
dépassé, verrou déjà pris, espace insuffisant...) que le serveur traduit en
ErrorCodelisible par l'agent, au lieu d'un texte à interpréter (EXIT_CODE_MAP,src/config.ts). - Les droits root sont donnés script par script. Aucune règle sudoers sur
virsh,virt-cloneouqemu-img; seuls les scripts système qui en ont besoin sont autorisés, un par un (voir Emplacement des scripts et sudoers). - La progression des tâches longues est publiée. Clone, export ou sauvegarde reportent
leurs étapes à mcp-tracking
(
scripts/utils/tracking.sh) : l'agent vérifie l'avancement plus tard au lieu de bloquer. - Le client sait ce qui est dangereux sans liste à maintenir. Chaque outil publie ses
annotations MCP (
readOnlyHint,destructiveHint,idempotentHint) ; Lyra y lit la dangerosité et fait confirmer l'humain avant une action destructrice.
Local-first et self-hosted : tout tourne sur la machine (on-prem), sans service tiers, avec un modèle local via Ollama dans Lyra ou n'importe quel client MCP.
Demo
[Client MCP : liste des 19 outils, aide, puis etat des VMs KVM]
Enregistree sur la machine reelle avec docs/demo/record.sh : un client MCP minimal (docs/demo/mcp_demo.py) demarre le serveur en stdio, liste les outils, appelle help puis vm_status (lecture seule). Les adresses IP sont remplacees par des adresses d'exemple.
Architecture
Outils MCP exposes
help
Liste tous les outils disponibles avec leurs descriptions.
- Script sous-jacent: aucun (genere directement dans index.ts)
VM Controller
Backup Manager
VM Portabilite
Scripts helpers non exposes
Ces scripts sont utilises en interne mais pas directement accessibles via MCP:
Emplacement des scripts et sudoers
src/config.ts resout la racine des scripts dans cet ordre :
LYRA_SCRIPTS_DIR(variable d'environnement)/usr/local/lib/lyra/scripts: copieroot:root 0755installee par l'installeur Lyrascripts/du depot (mode developpement)
Les outils sans sudo (vm_status, vm_start, vm_stop, vm_exec, vm_copy, vm_snapshot,
vm_export, vm_verify) pilotent libvirt directement : l'utilisateur doit etre membre du groupe
libvirt, que polkit autorise sur qemu:///system :
Aucune regle sudoers ne vise virsh, virt-clone ou qemu-img : un NOPASSWD sur ces binaires
equivaut a root (un domaine peut monter le disque de l'hote). Les outils qui demandent root
(vm_destroy, vm_clone, vm_clone_system, vm_import et les backup_*) lancent leur script
entier via sudo. Ces regles visent uniquement la copie systeme, script par script, jamais un
glob sur un dossier inscriptible par l'utilisateur (sinon n'importe quel processus de son uid obtient
root en y deposant un .sh) :
L'installeur Lyra genere ce fichier (/etc/sudoers.d/lyra) et le valide avec
visudo -cf avant de l'activer. Installation manuelle :
Configuration
Le serveur est un composant de Lyra mais fonctionne seul : SCRIPTS_DIR=./scripts node dist/index.js démarre sans sudoers (les outils marqués requiresSudo échoueront alors proprement).
- Timeouts:
src/config.ts(TIMEOUTS) - Permissions sudo:
src/config.ts(TOOL_PERMISSIONS) - Retry:
src/config.ts(RETRY_CONFIG) - Config locale:
scripts/config.env(copier depuisscripts/config.env.example)
Logs
Les logs JSON structures sont ecrits dans:
/var/log/mcp-agents/(si accessible en ecriture)~/.local/state/mcp-agents/(fallback utilisateur)/tmp/mcp-agents-logs/(fallback final)
Installation en une ligne
Configuration Claude Desktop / Claude Code (mcpServers) :
Politique de securite et tableau des outils : SECURITY.md.
Installation et demarrage
Paquets a installer sur l'hote (noms Fedora ; Debian/Ubuntu entre parentheses quand ils different) :
Les cles d'hote SSH des VMs sont conservees dans $XDG_STATE_HOME/fedora-agents/known_hosts (a defaut ~/.local/state/fedora-agents/known_hosts) : premier contact accepte, cle modifiee refusee.
La configuration MCP pour Claude Code ou Claude Desktop est decrite dans la section Installation en une ligne.
Part of the Lyra ecosystem
來源:README.md,提交 12eaed2
工具
0版本歷史
2- v1.3.0最新Sep 25, 2026
- v1.2.2Sep 24, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分