create-template
Create reusable pod templates in RunPod by defining Docker images, configurations, ports, and environment variables for consistent deployment.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the template | |
| imageName | Yes | Docker image to use | |
| isServerless | No | Is this a serverless template | |
| ports | No | Ports to expose | |
| dockerEntrypoint | No | Docker entrypoint commands | |
| dockerStartCmd | No | Docker start commands | |
| env | No | Environment variables | |
| containerDiskInGb | No | Container disk size in GB | |
| volumeInGb | No | Volume size in GB | |
| volumeMountPath | No | Path to mount the volume | |
| readme | No | README content in markdown format |
Implementation Reference
- src/index.ts:555-566 (handler)The handler function that executes the create-template tool by sending a POST request to RunPod API /templates endpoint with input params and formatting the response as text content.async (params) => { const result = await runpodRequest('/templates', 'POST', params); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; }
- src/index.ts:530-554 (schema)Zod input schema defining parameters for creating a RunPod template, including name, Docker image, ports, environment variables, disk sizes, and README.{ name: z.string().describe('Name for the template'), imageName: z.string().describe('Docker image to use'), isServerless: z .boolean() .optional() .describe('Is this a serverless template'), ports: z.array(z.string()).optional().describe('Ports to expose'), dockerEntrypoint: z .array(z.string()) .optional() .describe('Docker entrypoint commands'), dockerStartCmd: z .array(z.string()) .optional() .describe('Docker start commands'), env: z.record(z.string()).optional().describe('Environment variables'), containerDiskInGb: z .number() .optional() .describe('Container disk size in GB'), volumeInGb: z.number().optional().describe('Volume size in GB'), volumeMountPath: z.string().optional().describe('Path to mount the volume'), readme: z.string().optional().describe('README content in markdown format'), },
- src/index.ts:528-567 (registration)MCP server.tool registration for 'create-template' tool, specifying the tool name, input schema, and handler function.server.tool( 'create-template', { name: z.string().describe('Name for the template'), imageName: z.string().describe('Docker image to use'), isServerless: z .boolean() .optional() .describe('Is this a serverless template'), ports: z.array(z.string()).optional().describe('Ports to expose'), dockerEntrypoint: z .array(z.string()) .optional() .describe('Docker entrypoint commands'), dockerStartCmd: z .array(z.string()) .optional() .describe('Docker start commands'), env: z.record(z.string()).optional().describe('Environment variables'), containerDiskInGb: z .number() .optional() .describe('Container disk size in GB'), volumeInGb: z.number().optional().describe('Volume size in GB'), volumeMountPath: z.string().optional().describe('Path to mount the volume'), readme: z.string().optional().describe('README content in markdown format'), }, async (params) => { const result = await runpodRequest('/templates', 'POST', params); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; } );