Skip to main content
Glama
rainhan99

Cloud Manage MCP Server

by rainhan99

reboot_alibaba_instance

Restart an Alibaba Cloud ECS instance with triple confirmation for safety. Use this tool to reboot cloud servers when needed.

Instructions

重启阿里云ECS实例(需要三次确认)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
instance_idYes
ip_confirmationNo
name_confirmationNo
operation_confirmationNo

Implementation Reference

  • main.py:599-612 (handler)
    MCP tool handler for 'reboot_alibaba_instance'. Registers the tool and proxies to alibaba_provider.reboot_instance with security confirmation parameters.
    @mcp.tool()
    def reboot_alibaba_instance(
        instance_id: str, 
        ip_confirmation: str = "", 
        name_confirmation: str = "", 
        operation_confirmation: str = ""
    ) -> Dict:
        """
        重启阿里云ECS实例(需要三次确认)
        """
        return alibaba_provider.reboot_instance(
            instance_id, ip_confirmation, name_confirmation, operation_confirmation
        )
  • AlibabaProvider.reboot_instance method: Entry point for reboot logic, delegates to _execute_power_operation with 'reboot' action.
    def reboot_instance(
        self, 
        instance_id: str, 
        ip_confirmation: str = "", 
        name_confirmation: str = "", 
        operation_confirmation: str = ""
    ) -> Dict:
        """
        重启ECS实例(需要三次确认)
        """
        return self._execute_power_operation(
            instance_id, 'reboot', ip_confirmation, name_confirmation, operation_confirmation
        )
  • Core helper implementing power operations (including reboot). Fetches instance details, validates triple confirmation, and executes Alibaba Cloud ECS RebootInstance API call.
    def _execute_power_operation(
        self, 
        instance_id: str, 
        operation: str, 
        ip_confirmation: str, 
        name_confirmation: str, 
        operation_confirmation: str
    ) -> Dict:
        """
        执行电源操作的通用函数
        """
        if not self.available:
            return {
                'error': f'阿里云服务不可用: {getattr(self, "error", "未知错误")}',
                'provider': 'alibaba'
            }
        
        # 首先获取实例信息
        try:
            request = ecs_models.DescribeInstancesRequest(
                region_id=self.region_id,
                instance_ids=json.dumps([instance_id])
            )
            
            response = self.client.describe_instances(request)
            
            if not response.body.instances or not response.body.instances.instance:
                return {
                    'error': f'未找到ID为 {instance_id} 的ECS实例',
                    'provider': 'alibaba'
                }
            
            instance = response.body.instances.instance[0]
            
            # 格式化实例信息用于确认
            instance_info = self._format_instance_for_confirmation(instance)
            
        except Exception as e:
            return {
                'error': f'获取ECS实例信息时发生错误: {str(e)}',
                'provider': 'alibaba'
            }
        
        # 检查是否提供了确认信息
        if not ip_confirmation or not name_confirmation or not operation_confirmation:
            # 转换操作名称
            operation_mapping = {
                'start': 'power_on',
                'stop': 'power_off',
                'reboot': 'reboot'
            }
            mapped_operation = operation_mapping.get(operation, operation)
            return require_triple_confirmation(instance_info, mapped_operation)
        
        # 验证确认信息
        security = SecurityConfirmation()
        operation_mapping = {
            'start': 'power_on',
            'stop': 'power_off',
            'reboot': 'reboot'
        }
        mapped_operation = operation_mapping.get(operation, operation)
        
        is_valid, error_message = security.validate_power_operation(
            instance_info, mapped_operation, ip_confirmation, name_confirmation, operation_confirmation
        )
        
        if not is_valid:
            return {
                'error': f'确认验证失败: {error_message}',
                'provider': 'alibaba',
                'requires_confirmation': True
            }
        
        # 执行实际操作
        try:
            if operation == 'start':
                request = ecs_models.StartInstanceRequest(
                    instance_id=instance_id
                )
                response = self.client.start_instance(request)
            elif operation == 'stop':
                request = ecs_models.StopInstanceRequest(
                    instance_id=instance_id,
                    force_stop=True
                )
                response = self.client.stop_instance(request)
            elif operation == 'reboot':
                request = ecs_models.RebootInstanceRequest(
                    instance_id=instance_id,
                    force_stop=True
                )
                response = self.client.reboot_instance(request)
            else:
                return {
                    'error': f'不支持的操作类型: {operation}',
                    'provider': 'alibaba'
                }
            
            return {
                'provider': 'alibaba',
                'instance_id': instance_id,
                'operation_success': True,
                'operation': operation,
                'request_id': response.body.request_id,
                'message': f'已成功提交 {operation} 操作',
                'confirmation_validated': True
            }
            
        except Exception as e:
            return {
                'error': f'执行 {operation} 操作时发生错误: {str(e)}',
                'provider': 'alibaba'
            }

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