Initial commit: forge-tools-proxmox — MCP-сервер для Proxmox VE
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
// forge-tools-proxmox — MCP-сервер для управления гипервизором Proxmox VE
|
||||
// (forge-tools). Покрывает только домен гипервизора: кластер/ноды, QEMU-ВМ,
|
||||
// LXC-контейнеры, снапшоты, бэкапы, задачи, хранилища, сеть и состояние —
|
||||
// и НЕ дублирует возможности других модулей (ssh — remote exec, filesystem —
|
||||
// локальные файлы, postgres — БД). stdio-only, одиночный потокобезопасный
|
||||
// Manager, ручные JSON-Schema, --health, graceful shutdown, isolation=pooled
|
||||
// (per-agent конфиг приходит на каждый вызов через _tenant_config).
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"forge-tools-proxmox/internal/pve"
|
||||
"forge-tools-proxmox/internal/tools"
|
||||
|
||||
"git.totmin.ru/en2zmax/forge-toolkit"
|
||||
"github.com/modelcontextprotocol/go-sdk/mcp"
|
||||
)
|
||||
|
||||
func main() {
|
||||
if toolkit.Health() {
|
||||
return
|
||||
}
|
||||
|
||||
// -config: легаси-одиночный режим (постоянный конфиг). Пусто = pooled:
|
||||
// per-agent конфиг приходит на вызов через _tenant_config (ядро
|
||||
// перезаписывает ключ, модель подменить не может).
|
||||
configPath := flag.String("config", "", "путь к pve.json (пусто = pooled через _tenant_config)")
|
||||
flag.Parse()
|
||||
|
||||
mgr := pve.NewManager(*configPath)
|
||||
defer mgr.Close()
|
||||
|
||||
if err := toolkit.Run("forge-tools-proxmox", func(s *mcp.Server) {
|
||||
tools.RegisterAll(s, mgr)
|
||||
}); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "forge-tools-proxmox: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user