From 54905bd7bbd42b16ed85bff318b737e7b48d7044 Mon Sep 17 00:00:00 2001 From: Prophet731 Date: Mon, 16 Mar 2026 00:25:23 -0400 Subject: [PATCH] fix: correct CPU throttle param and enforce server delete safety delay - servers_throttle_cpu: send `percent` instead of `cpuThrottle` in request body to match VirtFusion API spec - servers_delete: enforce minimum 300s (5 min) delay on all deletions as a safety margin to prevent accidental destruction - Bump version to 1.0.1 Co-Authored-By: Claude Opus 4.6 (1M context) --- package.json | 2 +- src/tools/servers.ts | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index d79a3eb..f80803e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ezscale/virtfusion-mcp", - "version": "1.0.0", + "version": "1.0.1", "description": "Model Context Protocol (MCP) server for the VirtFusion virtualization control panel API", "type": "module", "main": "dist/index.js", diff --git a/src/tools/servers.ts b/src/tools/servers.ts index f5de295..b97ad14 100644 --- a/src/tools/servers.ts +++ b/src/tools/servers.ts @@ -100,14 +100,15 @@ export function registerServerTools(server: McpServer, client: VirtFusionClient) server.tool( 'servers_delete', - 'Delete a server', + 'Delete a server. A minimum 5-minute (300s) delay is enforced as a safety margin.', { serverId: z.number().describe('The server ID'), - delay: z.number().optional().describe('Delay in seconds before deletion'), + delay: z.number().optional().describe('Delay in seconds before deletion (minimum 300)'), }, async ({ serverId, delay }) => { try { - const result = await client.delete(`/servers/${serverId}`, undefined, { delay }); + const safeDelay = Math.max(delay ?? 300, 300); + const result = await client.delete(`/servers/${serverId}`, undefined, { delay: safeDelay }); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } catch (error) { return formatErrorResponse(error); @@ -220,11 +221,11 @@ export function registerServerTools(server: McpServer, client: VirtFusionClient) "Throttle a server's CPU", { serverId: z.number().describe('The server ID'), - cpuThrottle: z.number().describe('CPU throttle value'), + cpuThrottle: z.number().describe('CPU throttle percentage (0-99). 0 removes throttle.'), }, async ({ serverId, cpuThrottle }) => { try { - const result = await client.put(`/servers/${serverId}/modify/cpuThrottle`, { cpuThrottle }); + const result = await client.put(`/servers/${serverId}/modify/cpuThrottle`, { percent: cpuThrottle }); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } catch (error) { return formatErrorResponse(error);