Skip to main content
Glama
runpod

RunPod MCP Server

Official
by runpod

get-endpoint

Retrieve configuration and status details for a specific RunPod endpoint, including optional template and worker information.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
endpointIdYesID of the endpoint to retrieve
includeTemplateNoInclude template information
includeWorkersNoInclude information about workers

Implementation Reference

  • The handler function for the 'get-endpoint' tool. It constructs query parameters based on optional inputs and makes an authenticated GET request to the RunPod API at `/endpoints/${endpointId}`. Returns the API response as formatted JSON text content.
      async (params) => {
        // Construct query parameters
        const queryParams = new URLSearchParams();
    
        if (params.includeTemplate)
          queryParams.append('includeTemplate', params.includeTemplate.toString());
        if (params.includeWorkers)
          queryParams.append('includeWorkers', params.includeWorkers.toString());
    
        const queryString = queryParams.toString()
          ? `?${queryParams.toString()}`
          : '';
        const result = await runpodRequest(
          `/endpoints/${params.endpointId}${queryString}`
        );
    
        return {
          content: [
            {
              type: 'text',
              text: JSON.stringify(result, null, 2),
            },
          ],
        };
      }
    );
  • Input schema for the 'get-endpoint' tool using Zod validation: requires endpointId (string), optional includeTemplate and includeWorkers (booleans).
    {
      endpointId: z.string().describe('ID of the endpoint to retrieve'),
      includeTemplate: z
        .boolean()
        .optional()
        .describe('Include template information'),
      includeWorkers: z
        .boolean()
        .optional()
        .describe('Include information about workers'),
    },
  • src/index.ts:358-397 (registration)
    Registration of the 'get-endpoint' tool with the MCP server via server.tool(), including the tool name, input schema, and handler function.
    server.tool(
      'get-endpoint',
      {
        endpointId: z.string().describe('ID of the endpoint to retrieve'),
        includeTemplate: z
          .boolean()
          .optional()
          .describe('Include template information'),
        includeWorkers: z
          .boolean()
          .optional()
          .describe('Include information about workers'),
      },
      async (params) => {
        // Construct query parameters
        const queryParams = new URLSearchParams();
    
        if (params.includeTemplate)
          queryParams.append('includeTemplate', params.includeTemplate.toString());
        if (params.includeWorkers)
          queryParams.append('includeWorkers', params.includeWorkers.toString());
    
        const queryString = queryParams.toString()
          ? `?${queryParams.toString()}`
          : '';
        const result = await runpodRequest(
          `/endpoints/${params.endpointId}${queryString}`
        );
    
        return {
          content: [
            {
              type: 'text',
              text: JSON.stringify(result, null, 2),
            },
          ],
        };
      }
    );
  • Shared helper function used by the 'get-endpoint' handler (and other tools) to make authenticated HTTP requests to the RunPod API.
    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