Skip to main content
Glama
code-alchemist01

MCP Cloud Services Server

gcp_list_compute_instances

List all Compute Engine instances in a specified GCP project and region to manage cloud resources.

Instructions

List all Compute Engine instances in GCP

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectIdNoGCP project ID
regionNoGCP regionus-central1

Implementation Reference

  • Core handler implementation that lists GCP Compute Engine instances by fetching zones, listing VMs per zone, and extracting detailed instance information including IPs, status, machine type, etc.
    async listComputeInstances(): Promise<GCPComputeInstance[]> {
      await this.initializeClients();
      if (!this.compute) throw new Error('Compute client not initialized');
    
      try {
        const instances: GCPComputeInstance[] = [];
        const [zones] = await this.compute.getZones();
    
        for (const zone of zones) {
          const zoneName = zone.name || '';
          const vm = this.compute.zone(zoneName);
          const [vms] = await vm.getVMs();
    
          for (const instance of vms) {
            const networkInterfaces = instance.networkInterfaces || [];
            const privateIp = networkInterfaces[0]?.networkIP;
            const publicIp = networkInterfaces[0]?.accessConfigs?.[0]?.natIP;
    
            instances.push({
              id: instance.id?.toString() || instance.name || '',
              type: 'instance',
              name: instance.name || '',
              projectId: this.projectId,
              zone: zoneName,
              region: this.extractRegion(zoneName),
              status: this.mapInstanceStatus(instance.status),
              machineType: this.extractMachineType(instance.machineType || ''),
              image: this.extractImage(instance.disks?.[0]?.initializeParams?.sourceImage || ''),
              privateIp,
              publicIp,
              creationTimestamp: instance.creationTimestamp ? new Date(instance.creationTimestamp) : undefined,
              labels: instance.labels,
            });
          }
        }
    
        return instances;
      } catch (error) {
        throw new Error(`Failed to list compute instances: ${error instanceof Error ? error.message : String(error)}`);
      }
    }
  • Tool handler case within handleGCPTool function that invokes the GCPAdapter's listComputeInstances and formats the output for the MCP response.
    case 'gcp_list_compute_instances': {
      const instances = await adapter.listComputeInstances();
      return {
        total: instances.length,
        instances: instances.map((inst) => ({
          id: inst.id,
          name: inst.name,
          machineType: inst.machineType,
          zone: inst.zone,
          region: inst.region,
          status: inst.status,
          privateIp: inst.privateIp,
          publicIp: inst.publicIp,
        })),
      };
    }
  • Input schema and metadata definition for the gcp_list_compute_instances tool, specifying parameters for projectId and optional region.
    {
      name: 'gcp_list_compute_instances',
      description: 'List all Compute Engine instances in GCP',
      inputSchema: {
        type: 'object',
        properties: {
          projectId: {
            type: 'string',
            description: 'GCP project ID',
          },
          region: {
            type: 'string',
            description: 'GCP region',
            default: 'us-central1',
          },
        },
      },
    },
  • src/server.ts:19-27 (registration)
    Registration of all tools including gcpTools (which contains gcp_list_compute_instances) into the MCP server's tool list.
    const allTools = [
      ...awsTools,
      ...azureTools,
      ...gcpTools,
      ...resourceManagementTools,
      ...costAnalysisTools,
      ...monitoringTools,
      ...securityTools,
    ];
  • src/server.ts:68-69 (registration)
    Dispatch registration in the MCP server's CallToolRequest handler that routes calls to gcp_list_compute_instances to the specific GCP handler.
    } else if (gcpTools.some((t) => t.name === name)) {
      result = await handleGCPTool(name, args || {});

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/code-alchemist01/Cloud-mcp_server'

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