Skip to main content
Glama

list-pods

Retrieve and filter your RunPod compute instances by GPU type, data center, name, and other parameters to manage cloud resources.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
computeTypeNoFilter to only GPU or only CPU Pods
gpuTypeIdNoFilter to Pods with any of the listed GPU types
dataCenterIdNoFilter to Pods in any of the provided data centers
nameNoFilter to Pods with the provided name
includeMachineNoInclude information about the machine
includeNetworkVolumeNoInclude information about attached network volumes

Implementation Reference

  • The async handler function for the 'list-pods' tool. It constructs URL query parameters from the input params and makes an API request to RunPod's /pods endpoint using the runpodRequest helper, then returns the JSON response as text content.
    async (params) => { // Construct query parameters const queryParams = new URLSearchParams(); if (params.computeType) queryParams.append('computeType', params.computeType); if (params.gpuTypeId) params.gpuTypeId.forEach((type) => queryParams.append('gpuTypeId', type)); if (params.dataCenterId) params.dataCenterId.forEach((dc) => queryParams.append('dataCenterId', dc) ); if (params.name) queryParams.append('name', params.name); if (params.includeMachine) queryParams.append('includeMachine', params.includeMachine.toString()); if (params.includeNetworkVolume) queryParams.append( 'includeNetworkVolume', params.includeNetworkVolume.toString() ); const queryString = queryParams.toString() ? `?${queryParams.toString()}` : ''; const result = await runpodRequest(`/pods${queryString}`); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; }
  • Zod input schema defining optional parameters for filtering and including details in the pod list: computeType, gpuTypeId, dataCenterId, name, includeMachine, includeNetworkVolume.
    { computeType: z .enum(['GPU', 'CPU']) .optional() .describe('Filter to only GPU or only CPU Pods'), gpuTypeId: z .array(z.string()) .optional() .describe('Filter to Pods with any of the listed GPU types'), dataCenterId: z .array(z.string()) .optional() .describe('Filter to Pods in any of the provided data centers'), name: z .string() .optional() .describe('Filter to Pods with the provided name'), includeMachine: z .boolean() .optional() .describe('Include information about the machine'), includeNetworkVolume: z .boolean() .optional() .describe('Include information about attached network volumes'), },
  • src/index.ts:71-134 (registration)
    Registration of the 'list-pods' MCP tool on the McpServer instance, providing the tool name, input schema, and handler function.
    server.tool( 'list-pods', { computeType: z .enum(['GPU', 'CPU']) .optional() .describe('Filter to only GPU or only CPU Pods'), gpuTypeId: z .array(z.string()) .optional() .describe('Filter to Pods with any of the listed GPU types'), dataCenterId: z .array(z.string()) .optional() .describe('Filter to Pods in any of the provided data centers'), name: z .string() .optional() .describe('Filter to Pods with the provided name'), includeMachine: z .boolean() .optional() .describe('Include information about the machine'), includeNetworkVolume: z .boolean() .optional() .describe('Include information about attached network volumes'), }, async (params) => { // Construct query parameters const queryParams = new URLSearchParams(); if (params.computeType) queryParams.append('computeType', params.computeType); if (params.gpuTypeId) params.gpuTypeId.forEach((type) => queryParams.append('gpuTypeId', type)); if (params.dataCenterId) params.dataCenterId.forEach((dc) => queryParams.append('dataCenterId', dc) ); if (params.name) queryParams.append('name', params.name); if (params.includeMachine) queryParams.append('includeMachine', params.includeMachine.toString()); if (params.includeNetworkVolume) queryParams.append( 'includeNetworkVolume', params.includeNetworkVolume.toString() ); const queryString = queryParams.toString() ? `?${queryParams.toString()}` : ''; const result = await runpodRequest(`/pods${queryString}`); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; } );
  • Reusable helper function for making authenticated HTTP requests to the RunPod API, used by the 'list-pods' handler and other tools.
    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; } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/runpod/runpod-mcp-ts'

If you have feedback or need assistance with the MCP directory API, please join our Discord server