delete-gpu-instance
Delete a GPU instance on Novita MCP Server using its unique instance ID, ensuring resource management by removing unnecessary instances efficiently.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| instanceId | Yes | ID of the instance to delete. Before calling the MCP tool to delete the instance, MUST show me the details of the instance to help me identify it, including id, name, etc. |
Implementation Reference
- src/tools.ts:244-260 (handler)Complete inline implementation of the 'delete-gpu-instance' tool, including registration with server.tool, input schema validation using Zod for instanceId, and the async handler function that calls the Novita API to delete the GPU instance and returns the result as formatted JSON text.server.tool("delete-gpu-instance", { instanceId: z .string() .describe("ID of the instance to delete. Before calling the MCP tool to delete the instance, MUST show me the details of the instance to help me identify it, including id, name, etc."), }, async (params) => { const result = await novitaRequest(`/gpu/instance/delete`, "POST", { instanceId: params.instanceId, }); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; });
- src/utils.ts:15-55 (helper)The 'novitaRequest' utility function used by the tool handler to make authenticated HTTP requests to the Novita AI GPU instance management API endpoints.export async function novitaRequest( endpoint: string, method: string = "GET", body: any = null ) { // Base URL for Novita AI API const API_BASE_URL = "https://api.novita.ai/gpu-instance/openapi/v1"; // Get API key from environment variable const API_KEY = process.env.NOVITA_API_KEY; const url = `${API_BASE_URL}${endpoint}`; const headers = { Authorization: `Bearer ${API_KEY}`, "Content-Type": "application/json", }; const options: any = { method, headers, }; if (body && (method === "POST" || method === "PATCH")) { options.body = JSON.stringify(body); } try { const response = await fetch(url, options); if (!response.ok) { const errorText = await response.text(); throw new Error(`Novita AI API Error: ${response.status} - ${errorText}`); } // Some endpoints might not return JSON const contentType = response.headers.get("content-type"); if (contentType && contentType.includes("application/json")) { return await response.json(); } return { success: true, status: response.status }; } catch (error) { console.error("Error calling Novita AI API:", error); throw error; } }