// 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 /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) } }