create-network-volume
Create persistent network storage volumes for RunPod pods, specifying name, size, and data center location to manage cloud infrastructure.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the network volume | |
| size | Yes | Size in GB (1-4000) | |
| dataCenterId | Yes | Data center ID |
Implementation Reference
- src/index.ts:673-684 (handler)Handler function that creates a network volume by making a POST request to the RunPod API /networkvolumes endpoint using the shared runpodRequest helper and returns the JSON response formatted as text content.async (params) => { const result = await runpodRequest('/networkvolumes', 'POST', params); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; }
- src/index.ts:668-672 (schema)Zod input schema defining required parameters: name (string), size (number in GB between 1-4000), and dataCenterId (string).{ name: z.string().describe('Name for the network volume'), size: z.number().describe('Size in GB (1-4000)'), dataCenterId: z.string().describe('Data center ID'), },
- src/index.ts:666-685 (registration)MCP server tool registration call that defines the 'create-network-volume' tool, including its schema and inline handler function.server.tool( 'create-network-volume', { name: z.string().describe('Name for the network volume'), size: z.number().describe('Size in GB (1-4000)'), dataCenterId: z.string().describe('Data center ID'), }, async (params) => { const result = await runpodRequest('/networkvolumes', 'POST', params); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; } );
- src/index.ts:27-66 (helper)Shared helper function used by the tool handler to make authenticated HTTP requests to the RunPod API, handling JSON responses and errors.async function runpodRequest( endpoint: string, method: string = 'GET', body?: Record<string, unknown> ) { const url = `${API_BASE_URL}${endpoint}`; const headers = { Authorization: `Bearer ${API_KEY}`, 'Content-Type': 'application/json', }; const options: NodeFetchRequestInit = { 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(`RunPod 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 RunPod API:', error); throw error; } }