Skip to content

Commit a07514c

Browse files
authored
fix: ecs查询实例补充网络参数 (#410)
1 parent b204659 commit a07514c

1 file changed

Lines changed: 22 additions & 1 deletion

File tree

  • server/mcp_server_ecs/src/mcp_server_ecs/tools

server/mcp_server_ecs/src/mcp_server_ecs/tools/instance.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
Instance related tool functions
33
"""
44

5-
from typing import List
5+
from typing import Any, List
66

77
import volcenginesdkecs
88
from mcp import types
@@ -14,6 +14,24 @@
1414
from mcp_server_ecs.tools import mcp
1515

1616

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+
1735
@mcp.tool(
1836
name="describe_instances",
1937
description="查询实例列表 (Query instance list)\n\n查询一个或多个ECS实例的详细信息,包括实例ID、规格、状态、可用区、计费方式等。\n支持按实例ID、名称、状态、规格族、可用区、计费方式等条件过滤。",
@@ -110,6 +128,9 @@ async def describe_instances(
110128
"StoppedMode": instance.stopped_mode,
111129
"ZoneId": instance.zone_id,
112130
"LocalVolumes": instance.local_volumes,
131+
"NetworkInterfaces": _sdk_model_to_api_dict(
132+
getattr(instance, "network_interfaces", None) or []
133+
),
113134
}
114135
total_results.append(filtered_instance)
115136

0 commit comments

Comments
 (0)