Skip to main content
Glama

list_oci_profiles

Retrieve available Oracle Cloud Infrastructure profiles from configuration files to select appropriate credentials before making API calls.

Instructions

List all available OCI profiles from ~/.oci/config file.

Returns a list of profiles with their configuration details.
Use this when you need to select a profile before making OCI API calls.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The MCP tool handler for 'list_oci_profiles', including registration decorator. Calls list_available_profiles helper and provides user feedback via ctx.info/error.
    @mcp.tool(name="list_oci_profiles")
    async def list_profiles_tool(ctx: Context) -> List[Dict[str, str]]:
        """
        List all available OCI profiles from ~/.oci/config file.
    
        Returns a list of profiles with their configuration details.
        Use this when you need to select a profile before making OCI API calls.
        """
        try:
            await ctx.info("Reading available OCI profiles from config file...")
            profiles = list_available_profiles()
    
            if not profiles:
                await ctx.info("No profiles found in OCI config file")
                return [{
                    "error": "No profiles found in OCI config file. Please configure OCI CLI first."
                }]
    
            await ctx.info(f"Found {len(profiles)} available profiles")
            return profiles
        except FileNotFoundError as e:
            error_msg = str(e)
            await ctx.error(error_msg)
            return [{"error": error_msg}]
        except Exception as e:
            error_msg = f"Error listing profiles: {str(e)}"
            await ctx.error(error_msg)
            logger.exception("Error listing OCI profiles")
            return [{"error": error_msg}]
  • Core helper function that implements the logic to parse ~/.oci/config file using configparser and extract profile details (name, user OCID, tenancy OCID, region, key fingerprint).
    def list_available_profiles() -> List[Dict[str, str]]:
        """
        List all available profiles from the OCI config file.
    
        Returns:
            List of dictionaries containing profile information:
            [
                {
                    "name": "DEFAULT",
                    "user": "ocid1.user...",
                    "tenancy": "ocid1.tenancy...",
                    "region": "us-ashburn-1",
                    "fingerprint": "aa:bb:cc:..."
                },
                ...
            ]
    
        Raises:
            FileNotFoundError: If OCI config file doesn't exist
            Exception: If config file cannot be parsed
        """
        config_path = get_oci_config_path()
    
        if not os.path.exists(config_path):
            raise FileNotFoundError(
                f"OCI config file not found at {config_path}. "
                f"Please create it or set OCI_CONFIG_FILE environment variable."
            )
    
        try:
            config = configparser.ConfigParser()
            config.read(config_path)
    
            profiles = []
            for section in config.sections():
                profile_info = {
                    "name": section,
                    "user": config.get(section, "user", fallback="N/A"),
                    "tenancy": config.get(section, "tenancy", fallback="N/A"),
                    "region": config.get(section, "region", fallback="N/A"),
                    "fingerprint": config.get(section, "fingerprint", fallback="N/A"),
                }
                profiles.append(profile_info)
    
            logger.info(f"Found {len(profiles)} profiles in {config_path}")
            return profiles
    
        except Exception as e:
            logger.exception(f"Error parsing OCI config file: {e}")
            raise Exception(f"Failed to parse OCI config file at {config_path}: {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/jopsis/mcp-server-oci'

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