|
2 | 2 | Instance related tool functions |
3 | 3 | """ |
4 | 4 |
|
5 | | -from typing import List |
| 5 | +from typing import Any, List |
6 | 6 |
|
7 | 7 | import volcenginesdkecs |
8 | 8 | from mcp import types |
|
14 | 14 | from mcp_server_ecs.tools import mcp |
15 | 15 |
|
16 | 16 |
|
| 17 | +def _sdk_model_to_api_dict(value: Any) -> Any: |
| 18 | + """Convert Volcengine SDK models to API response field names.""" |
| 19 | + if isinstance(value, list): |
| 20 | + return [_sdk_model_to_api_dict(item) for item in value] |
| 21 | + if isinstance(value, dict): |
| 22 | + return {key: _sdk_model_to_api_dict(item) for key, item in value.items()} |
| 23 | + |
| 24 | + attribute_map = getattr(value, "attribute_map", None) |
| 25 | + swagger_types = getattr(value, "swagger_types", None) |
| 26 | + if attribute_map and swagger_types: |
| 27 | + return { |
| 28 | + api_key: _sdk_model_to_api_dict(getattr(value, sdk_key, None)) |
| 29 | + for sdk_key, api_key in attribute_map.items() |
| 30 | + } |
| 31 | + |
| 32 | + return value |
| 33 | + |
| 34 | + |
17 | 35 | @mcp.tool( |
18 | 36 | name="describe_instances", |
19 | 37 | description="查询实例列表 (Query instance list)\n\n查询一个或多个ECS实例的详细信息,包括实例ID、规格、状态、可用区、计费方式等。\n支持按实例ID、名称、状态、规格族、可用区、计费方式等条件过滤。", |
@@ -110,6 +128,9 @@ async def describe_instances( |
110 | 128 | "StoppedMode": instance.stopped_mode, |
111 | 129 | "ZoneId": instance.zone_id, |
112 | 130 | "LocalVolumes": instance.local_volumes, |
| 131 | + "NetworkInterfaces": _sdk_model_to_api_dict( |
| 132 | + getattr(instance, "network_interfaces", None) or [] |
| 133 | + ), |
113 | 134 | } |
114 | 135 | total_results.append(filtered_instance) |
115 | 136 |
|
|
0 commit comments