39 lines
1.6 KiB
Go
39 lines
1.6 KiB
Go
package tools
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/modelcontextprotocol/go-sdk/mcp"
|
|
)
|
|
|
|
// maintain.go — обслуживание: очистка старых версий.
|
|
|
|
func registerMaintainTools(s *mcp.Server) {
|
|
// cleanup_old_versions не эмитит паттерн по конкретному ресурсу: операция
|
|
// затрагивает всю БД версий, поэтому используем release-паттерн стенда.
|
|
addPatternTool(s, &mcp.Tool{
|
|
Name: "cleanup_old_versions",
|
|
Description: "Удалить версии compose/env и логи миграций старше N дней (текущие версии не трогаются). Разрушительно: требует confirm=\"true\".",
|
|
InputSchema: schema(map[string]any{
|
|
"server": serverProp(),
|
|
"days": intProps("Порог в днях (по умолчанию 90)", false),
|
|
"confirm": boolProps("Подтверждение разрушительной операции (обязательно true)", true),
|
|
}, []string{"confirm"}),
|
|
}, releasePatterns, func(ctx context.Context, req *mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
|
args := requestArgs(req)
|
|
if res := confirmGate(args, "cleanup_old_versions"); res != nil {
|
|
return res, nil
|
|
}
|
|
days := getInt(args, "days", 90)
|
|
if days <= 0 {
|
|
return errorResult("days должен быть положительным"), nil
|
|
}
|
|
api, res := openAPI(ctx, args, true)
|
|
if res != nil {
|
|
return res, nil
|
|
}
|
|
defer api.Close()
|
|
return result(api.CleanupOldVersions(ctx, days))
|
|
})
|
|
}
|