delete-gpu-instance
Delete GPU instances on the Novita AI platform to manage resources and control costs. Specify the instance ID after confirming details to remove unused compute resources.
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:248-260 (handler)The handler function that executes the deletion logic by making a POST request to the Novita API's /gpu/instance/delete endpoint using the provided instanceId and returns the formatted result.}, async (params) => { const result = await novitaRequest(`/gpu/instance/delete`, "POST", { instanceId: params.instanceId, }); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; });
- src/tools.ts:245-247 (schema)Input schema using Zod, defining the required 'instanceId' as a string with description.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."),
- src/tools.ts:244-260 (registration)Registers the 'delete-gpu-instance' tool on the MCP server within the registerGPUInstanceTools function, specifying the input schema and inline handler.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)Shared utility function used by the handler (and other tools) to make authenticated API requests to the Novita.ai GPU instance management 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; } }