first commit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
// Command forge-tools-lexicomai — MCP-сервер (stdio) для управления
|
||||
// жизненным циклом продуктов Lexicom AI на выделенных машинах: инвентарь,
|
||||
// статус, конфигурация, лицензии, health и диагностика.
|
||||
//
|
||||
// Архитектура такая же, как у остальных встроенных MCP-серверов: stdio-only,
|
||||
// одиночный потокобезопасный Manager, ручные JSON-схемы, --health, graceful
|
||||
// shutdown и live-reload конфига. Модуль намеренно НЕ дублирует удалённый
|
||||
// exec/файлы/гипервизор/HTTP (это зоны других серверов): здесь только
|
||||
// доменная семантика продукта, а SSH-транспорт к машинам — внутренняя
|
||||
// «сантехника».
|
||||
//
|
||||
// Каноническое имя аддона: module forge-tools-lexicomai, сервер «lexicomai».
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"forge-tools-lexicomai/internal/lexicomai"
|
||||
"forge-tools-lexicomai/internal/tools"
|
||||
|
||||
"git.totmin.ru/en2zmax/forge-toolkit"
|
||||
"github.com/modelcontextprotocol/go-sdk/mcp"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// --health: дешёвая проверка живости без чтения конфига и подключений.
|
||||
if toolkit.Health() {
|
||||
return
|
||||
}
|
||||
|
||||
configPath := flag.String("config", "",
|
||||
"путь к config.json (фолбэк, если нет per-agent <FORGE_TENANT_CONFIG>/lexicomai.json)")
|
||||
flag.Parse()
|
||||
|
||||
// Конфиг: per-agent файл (live-reload) → статический -config. Источник,
|
||||
// приоритет и фолбэк инкапсулированы в lexicomai.Loader.
|
||||
loader := lexicomai.NewLoader(os.Getenv("FORGE_TENANT_CONFIG"), *configPath)
|
||||
mgr := lexicomai.NewManager(loader)
|
||||
defer mgr.Close()
|
||||
|
||||
if err := toolkit.Run("lexicomai", func(s *mcp.Server) {
|
||||
tools.RegisterAll(s, mgr)
|
||||
}); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "forge-tools-lexicomai: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user