Skip to main content
Glama
rainhan99

Cloud Manage MCP Server

by rainhan99

manage_instance_power

Control and manage cloud instance power operations, including power on, power off, reboot, and shutdown, across multiple providers like DigitalOcean, Vultr, and Alibaba, ensuring precise configuration via IP and instance validation.

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
actionYes
instance_idYes
ip_confirmationNo
name_confirmationNo
operation_confirmationNo
providerYes

Implementation Reference

  • main.py:220-323 (handler)
    The core handler function for the 'manage_instance_power' tool. It validates inputs, checks provider availability, and dispatches power management actions (power_on, power_off, reboot, shutdown) to the appropriate cloud provider objects. Includes security confirmations via ip_confirmation, name_confirmation, and operation_confirmation parameters. AWS is explicitly excluded for power operations.
    @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 }
  • main.py:220-220 (registration)
    Registration of the 'manage_instance_power' tool using the @mcp.tool() decorator in main.py.
    @mcp.tool()

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