stop-gpu-instance
Stop a GPU instance on the Novita MCP Server by specifying its instance ID. Use this tool to manage GPU resources effectively and halt operations when needed.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| instanceId | Yes | ID of the instance to stop. Before calling the MCP tool to stop the instance, MUST show me the details of the instance to help me identify it, including id, name, etc. |
Implementation Reference
- src/tools.ts:230-242 (handler)The handler function that implements the logic for the 'stop-gpu-instance' tool. It sends a POST request to the Novita AI API endpoint `/gpu/instance/stop` with the provided instanceId and returns the result as a formatted text response.}, async (params) => { const result = await novitaRequest(`/gpu/instance/stop`, "POST", { instanceId: params.instanceId, }); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; });
- src/tools.ts:227-229 (schema)The Zod schema defining the input parameters for the 'stop-gpu-instance' tool, requiring a single 'instanceId' string parameter.instanceId: z .string() .describe("ID of the instance to stop. Before calling the MCP tool to stop the instance, MUST show me the details of the instance to help me identify it, including id, name, etc."),
- src/tools.ts:226-242 (registration)The registration of the 'stop-gpu-instance' tool using server.tool(), including schema validation and handler function within the registerGPUInstanceTools function.server.tool("stop-gpu-instance", { instanceId: z .string() .describe("ID of the instance to stop. Before calling the MCP tool to stop 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/stop`, "POST", { instanceId: params.instanceId, }); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; });
- src/utils.ts:15-55 (helper)Shared helper function novitaRequest used by the tool handler to make authenticated API calls 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; } }
- src/index.ts:23-23 (registration)High-level registration call in the main server setup that triggers the registration of all tools, including 'stop-gpu-instance' via registerAllTools.registerAllTools(server);