Skip to main content
Glama
rainhan99

Cloud Manage MCP Server

by rainhan99

get_instance_by_provider

Retrieve cloud instance details by specifying the provider and instance identifier. Use this tool to query instance information from AWS, DigitalOcean, Vultr, or Alibaba Cloud.

Instructions

通过明确指定的云服务提供商查询实例信息

Args:
    provider (str): 云服务提供商 ('aws', 'digitalocean', 'vultr', 'alibaba')
    identifier (str): 实例标识符(IP地址或实例ID)
    
Returns:
    Dict: 实例信息

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
providerYes
identifierYes

Implementation Reference

  • main.py:149-218 (handler)
    The handler function implementing the 'get_instance_by_provider' MCP tool. It is registered via @mcp.tool() decorator. Dispatches to provider-specific methods based on provider name and identifier type (IP or ID).
    def get_instance_by_provider(provider: str, identifier: str) -> Dict:
        """
        通过明确指定的云服务提供商查询实例信息
        
        Args:
            provider (str): 云服务提供商 ('aws', 'digitalocean', 'vultr', 'alibaba')
            identifier (str): 实例标识符(IP地址或实例ID)
            
        Returns:
            Dict: 实例信息
        """
        provider_name = provider.lower()
        
        if provider_name not in PROVIDERS:
            return {
                'error': f'不支持的云服务提供商: {provider_name}',
                'supported_providers': list(PROVIDERS.keys())
            }
        
        provider_obj = PROVIDERS[provider_name]
        provider_info = get_cloud_provider_info(provider_name)
        
        # 检查提供商是否可用
        if not getattr(provider_obj, 'available', False):
            error_msg = getattr(provider_obj, 'error', '提供商不可用')
            return {
                'error': f'{provider_info["name"]} 提供商不可用: {error_msg}',
                'provider': provider_name,
                'suggestion': '请检查相关环境变量是否正确配置'
            }
        
        print(f"🎯 直接查询 {provider_info['name']} 实例: {identifier}")
        
        try:
            # 根据标识符类型判断查询方式
            if provider_name == 'aws':
                if identifier.startswith('i-'):
                    result = provider_obj.get_instance_by_id(identifier)
                else:
                    result = provider_obj.get_instance_by_ip(identifier)
            elif provider_name == 'digitalocean':
                if identifier.isdigit():
                    result = provider_obj.get_droplet_by_id(int(identifier))
                else:
                    result = provider_obj.get_droplet_by_ip(identifier)
            elif provider_name == 'vultr':
                # Vultr实例ID通常是UUID格式
                if len(identifier) > 16 and '-' in identifier:
                    result = provider_obj.get_instance_by_id(identifier)
                else:
                    result = provider_obj.get_instance_by_ip(identifier)
            elif provider_name == 'alibaba':
                if identifier.startswith('i-'):
                    result = provider_obj.get_instance_by_id(identifier)
                else:
                    result = provider_obj.get_instance_by_ip(identifier)
            
            # 添加提供商信息
            result['provider'] = provider_name
            result['provider_info'] = provider_info
            result['search_identifier'] = identifier
            
            return result
            
        except Exception as e:
            return {
                'error': f'查询 {provider_info["name"]} 实例时发生错误: {str(e)}',
                'provider': provider_name,
                'identifier': identifier
            }

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/rainhan99/cloud_manage_mcp_server'

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