get_alibaba_instance_info
Retrieve detailed Alibaba Cloud ECS instance information using a public IP address or instance ID, enabling efficient cloud server management and monitoring.
Instructions
获取阿里云ECS实例信息
Args:
ip_address_or_id (str): 公网IP地址或实例ID
Returns:
Dict: 阿里云实例信息
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ip_address_or_id | Yes |
Implementation Reference
- main.py:554-570 (handler)MCP tool handler for 'get_alibaba_instance_info'. Determines if input is instance ID or IP and delegates to the appropriate AlibabaProvider method.@mcp.tool() def get_alibaba_instance_info(ip_address_or_id: str) -> Dict: """ 获取阿里云ECS实例信息 Args: ip_address_or_id (str): 公网IP地址或实例ID Returns: Dict: 阿里云实例信息 """ # 阿里云实例ID通常以i-开头 if ip_address_or_id.startswith('i-'): return alibaba_provider.get_instance_by_id(ip_address_or_id) else: return alibaba_provider.get_instance_by_ip(ip_address_or_id)
- providers/alibaba_provider.py:51-115 (helper)Core logic for finding Alibaba ECS instance by public IP address using DescribeInstances API.def get_instance_by_ip(self, ip_address: str) -> Dict: """ 根据公网IP地址查找ECS实例 Args: ip_address (str): 公网IP地址 Returns: Dict: 实例信息或错误信息 """ if not self.available: return { 'error': f'阿里云服务不可用: {getattr(self, "error", "未知错误")}', 'provider': 'alibaba' } try: # 查询所有ECS实例 request = ecs_models.DescribeInstancesRequest( region_id=self.region_id, page_size=100 ) response = self.client.describe_instances(request) if not response.body.instances: return { 'provider': 'alibaba', 'found': False, 'message': f'未找到使用IP地址 {ip_address} 的ECS实例', 'searched_region': self.region_id } # 查找匹配的IP地址 for instance in response.body.instances.instance: # 检查公网IP public_ips = [] if hasattr(instance, 'public_ip_address') and instance.public_ip_address: public_ips.extend(instance.public_ip_address.ip_address) # 检查弹性公网IP if hasattr(instance, 'eip_address') and instance.eip_address.ip_address: public_ips.append(instance.eip_address.ip_address) if ip_address in public_ips: instance_info = self._format_instance_info(instance) return { 'provider': 'alibaba', 'found': True, 'instance_info': instance_info } return { 'provider': 'alibaba', 'found': False, 'message': f'未找到使用IP地址 {ip_address} 的ECS实例', 'total_instances_checked': len(response.body.instances.instance) } except Exception as e: return { 'error': f'查询ECS实例时发生错误: {str(e)}', 'provider': 'alibaba' }
- Core logic for retrieving Alibaba ECS instance by specific instance ID using DescribeInstances API.def get_instance_by_id(self, instance_id: str) -> Dict: """ 根据实例ID查找ECS实例 Args: instance_id (str): ECS实例ID Returns: 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 { 'provider': 'alibaba', 'found': False, 'message': f'未找到ID为 {instance_id} 的ECS实例' } instance = response.body.instances.instance[0] instance_info = self._format_instance_info(instance) return { 'provider': 'alibaba', 'found': True, 'instance_info': instance_info } except Exception as e: return { 'error': f'查询ECS实例时发生错误: {str(e)}', 'provider': 'alibaba' }