Skip to main content
Glama

list_disks

Retrieve and list Compute Engine persistent disks within a specified GCP project. Optionally filter results by zone for targeted disk management and monitoring.

Instructions

    List Compute Engine persistent disks in a GCP project.
    
    Args:
        project_id: The ID of the GCP project to list disks for
        zone: Optional zone to filter disks (e.g., "us-central1-a")
    
    Returns:
        List of persistent disks in the specified GCP project
    

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
project_idYes
zoneNo

Implementation Reference

  • Registers the list_disks tool using the @mcp.tool() decorator, which also derives the schema from the function signature and docstring.
    @mcp.tool()
  • The handler function that implements the list_disks tool. It lists persistent disks in a GCP project, optionally filtered by zone, using the Google Cloud Compute API. Formats and returns a string list of disks with details like name, type, size, status, and attachment info.
        def list_disks(project_id: str, zone: str = "") -> str:
            """
            List Compute Engine persistent disks in a GCP project.
            
            Args:
                project_id: The ID of the GCP project to list disks for
                zone: Optional zone to filter disks (e.g., "us-central1-a")
            
            Returns:
                List of persistent disks in the specified GCP project
            """
            try:
                from google.cloud import compute_v1
                
                # Initialize the Disks client
                client = compute_v1.DisksClient()
                
                disks_list = []
                
                if zone:
                    # List disks in the specified zone
                    request = compute_v1.ListDisksRequest(
                        project=project_id,
                        zone=zone
                    )
                    disks = client.list(request=request)
                    
                    for disk in disks:
                        size_gb = disk.size_gb
                        disk_type = disk.type.split('/')[-1] if disk.type else "Unknown"
                        status = disk.status
                        users = len(disk.users) if disk.users else 0
                        users_str = f"Attached to {users} instance(s)" if users > 0 else "Not attached"
                        
                        disks_list.append(f"- {disk.name} (Zone: {zone}, Type: {disk_type}, Size: {size_gb} GB, Status: {status}, {users_str})")
                else:
                    # List disks in all zones
                    zones_client = compute_v1.ZonesClient()
                    zones_request = compute_v1.ListZonesRequest(project=project_id)
                    zones = zones_client.list(request=zones_request)
                    
                    for zone_item in zones:
                        zone_name = zone_item.name
                        request = compute_v1.ListDisksRequest(
                            project=project_id,
                            zone=zone_name
                        )
                        try:
                            disks = client.list(request=request)
                            
                            for disk in disks:
                                size_gb = disk.size_gb
                                disk_type = disk.type.split('/')[-1] if disk.type else "Unknown"
                                status = disk.status
                                users = len(disk.users) if disk.users else 0
                                users_str = f"Attached to {users} instance(s)" if users > 0 else "Not attached"
                                
                                disks_list.append(f"- {disk.name} (Zone: {zone_name}, Type: {disk_type}, Size: {size_gb} GB, Status: {status}, {users_str})")
                        except Exception:
                            # Skip zones where we can't list disks
                            continue
                
                if not disks_list:
                    zone_msg = f" in zone {zone}" if zone else ""
                    return f"No persistent disks found{zone_msg} for project {project_id}."
                
                disks_str = "\n".join(disks_list)
                zone_msg = f" in zone {zone}" if zone else ""
                
                return f"""
    Persistent Disks{zone_msg} in GCP Project {project_id}:
    {disks_str}
    """
            except Exception as e:
                return f"Error listing persistent disks: {str(e)}"

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/henihaddad/gcp-mcp'

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