Skip to main content
Glama
rainhan99

Cloud Manage MCP Server

by rainhan99

manage_instance_power

Control cloud instance power states across multiple providers, enabling power on, power off, reboot, and shutdown operations with confirmation steps.

Instructions

通用的实例电源管理函数(支持所有云平台) Args: provider (str): 云服务提供商 ('digitalocean', 'vultr', 'alibaba') instance_id (str): 实例ID action (str): 操作类型 ('power_on', 'power_off', 'reboot', 'shutdown') ip_confirmation (str): 确认IP地址 name_confirmation (str): 确认实例名称 operation_confirmation (str): 确认操作类型 Returns: Dict: 操作结果

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
providerYes
instance_idYes
actionYes
ip_confirmationNo
name_confirmationNo
operation_confirmationNo

Implementation Reference

  • main.py:220-323 (handler)
    Primary handler and registration for the 'manage_instance_power' MCP tool. Validates provider and action, dispatches to provider-specific power management functions in DigitalOcean, Vultr, and Alibaba providers with triple confirmation security checks.
    @mcp.tool() def manage_instance_power( provider: str, instance_id: str, action: str, ip_confirmation: str = "", name_confirmation: str = "", operation_confirmation: str = "" ) -> Dict: """ 通用的实例电源管理函数(支持所有云平台) Args: provider (str): 云服务提供商 ('digitalocean', 'vultr', 'alibaba') instance_id (str): 实例ID action (str): 操作类型 ('power_on', 'power_off', 'reboot', 'shutdown') ip_confirmation (str): 确认IP地址 name_confirmation (str): 确认实例名称 operation_confirmation (str): 确认操作类型 Returns: Dict: 操作结果 """ provider_name = provider.lower() # AWS不支持电源管理 if provider_name == 'aws': return { 'error': 'AWS平台仅支持只读查询,不允许执行电源管理操作', 'provider': 'aws', 'suggestion': '如需管理AWS实例,请使用AWS控制台或CLI' } if provider_name not in ['digitalocean', 'vultr', 'alibaba']: return { 'error': f'不支持的云服务提供商: {provider_name}', 'supported_providers': ['digitalocean', 'vultr', 'alibaba'] } if action not in ['power_on', 'power_off', 'reboot', 'shutdown']: return { 'error': f'不支持的操作类型: {action}', 'supported_actions': ['power_on', 'power_off', 'reboot', 'shutdown'] } 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 } print(f"🎯 {provider_info['name']} 电源管理: {action} for {instance_id}") try: # 调用对应提供商的电源管理方法 if provider_name == 'digitalocean': droplet_id = int(instance_id) if instance_id.isdigit() else None if not droplet_id: return {'error': 'DigitalOcean Droplet ID必须是数字'} if action == 'power_on': return provider_obj.power_on_droplet(droplet_id, ip_confirmation, name_confirmation, operation_confirmation) elif action == 'power_off': return provider_obj.power_off_droplet(droplet_id, ip_confirmation, name_confirmation, operation_confirmation) elif action == 'reboot': return provider_obj.reboot_droplet(droplet_id, ip_confirmation, name_confirmation, operation_confirmation) elif action == 'shutdown': return provider_obj.shutdown_droplet(droplet_id, ip_confirmation, name_confirmation, operation_confirmation) elif provider_name == 'vultr': if action == 'power_on': return provider_obj.power_on_instance(instance_id, ip_confirmation, name_confirmation, operation_confirmation) elif action == 'power_off': return provider_obj.power_off_instance(instance_id, ip_confirmation, name_confirmation, operation_confirmation) elif action == 'reboot': return provider_obj.reboot_instance(instance_id, ip_confirmation, name_confirmation, operation_confirmation) elif action == 'shutdown': # Vultr可能不支持优雅关闭,使用强制关闭 return provider_obj.power_off_instance(instance_id, ip_confirmation, name_confirmation, operation_confirmation) elif provider_name == 'alibaba': if action == 'power_on': return provider_obj.power_on_instance(instance_id, ip_confirmation, name_confirmation, operation_confirmation) elif action == 'power_off': return provider_obj.power_off_instance(instance_id, ip_confirmation, name_confirmation, operation_confirmation) elif action == 'reboot': return provider_obj.reboot_instance(instance_id, ip_confirmation, name_confirmation, operation_confirmation) elif action == 'shutdown': # 阿里云使用power_off作为关闭操作 return provider_obj.power_off_instance(instance_id, ip_confirmation, name_confirmation, operation_confirmation) except Exception as e: return { 'error': f'执行 {action} 操作时发生错误: {str(e)}', 'provider': provider_name, 'instance_id': instance_id, 'action': action }

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