package toolkit import ( "context" "fmt" "os" "os/signal" "syscall" "github.com/modelcontextprotocol/go-sdk/mcp" ) // version — версия MCP-сервера в handshake. Модули не версионируются // отдельно (образ общий), поэтому фиксирована. const version = "1.0.0" // Health сообщает, запрошен ли `--health`, и, если да, печатает "ok". // Вызывается в начале main ДО построения Manager: health должен быть дешёвым // (без чтения конфига и подключений). func Health() bool { if len(os.Args) > 1 && os.Args[1] == "--health" { fmt.Println("ok") return true } return false } // Run поднимает stdio-цикл MCP-сервера: graceful shutdown по SIGINT/SIGTERM, // NewServer(name), register, StdioTransport. Возвращает ошибку запуска — // main решает, как её залогировать и выйти. func Run(name string, register func(*mcp.Server)) error { ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGTERM, syscall.SIGINT) defer stop() s := mcp.NewServer(&mcp.Implementation{ Name: name, Version: version, }, &mcp.ServerOptions{}) register(s) return s.Run(ctx, &mcp.StdioTransport{}) }