alibaba-cloud-ops-mcp-server 0.9.8__tar.gz → 0.9.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/PKG-INFO +1 -1
  2. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/pyproject.toml +1 -1
  3. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/tools/oos_tools.py +38 -1
  4. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/tests/tools/test_oos_tools.py +18 -1
  5. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/uv.lock +1 -1
  6. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/.github/workflows/python-ci.yml +0 -0
  7. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/.gitignore +0 -0
  8. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/Dockerfile +0 -0
  9. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/LICENSE +0 -0
  10. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/README.md +0 -0
  11. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/README_mcp_args.md +0 -0
  12. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/README_zh.md +0 -0
  13. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/examples/openapi_mcp_quickstart/server.py +0 -0
  14. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/image/Alibaba-Cloud-Ops-MCP-User-Group-en.png +0 -0
  15. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/image/Alibaba-Cloud-Ops-MCP-User-Group-zh.png +0 -0
  16. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/image/alibaba-cloud.png +0 -0
  17. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/__init__.py +0 -0
  18. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/__init__.py +0 -0
  19. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/__main__.py +0 -0
  20. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/alibabacloud/__init__.py +0 -0
  21. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/alibabacloud/api_meta_client.py +0 -0
  22. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/alibabacloud/exception.py +0 -0
  23. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/alibabacloud/static/PROMPT_UNDERSTANDING.md +0 -0
  24. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/alibabacloud/static/__init__.py +0 -0
  25. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/alibabacloud/utils.py +0 -0
  26. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/config.py +0 -0
  27. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/server.py +0 -0
  28. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/settings.py +0 -0
  29. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/tools/__init__.py +0 -0
  30. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/tools/api_tools.py +0 -0
  31. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/tools/cms_tools.py +0 -0
  32. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/tools/common_api_tools.py +0 -0
  33. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/src/alibaba_cloud_ops_mcp_server/tools/oss_tools.py +0 -0
  34. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/tests/alibabacloud/test_api_meta_client.py +0 -0
  35. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/tests/alibabacloud/test_exception.py +0 -0
  36. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/tests/alibabacloud/test_utils.py +0 -0
  37. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/tests/test_init.py +0 -0
  38. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/tests/test_server.py +0 -0
  39. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/tests/tools/test_api_tools.py +0 -0
  40. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/tests/tools/test_cms_tools.py +0 -0
  41. {alibaba_cloud_ops_mcp_server-0.9.8 → alibaba_cloud_ops_mcp_server-0.9.9}/tests/tools/test_oss_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alibaba-cloud-ops-mcp-server
3
- Version: 0.9.8
3
+ Version: 0.9.9
4
4
  Summary: A MCP server for Alibaba Cloud
5
5
  Author-email: Zheng Dayu <dayu.zdy@alibaba-inc.com>
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "alibaba-cloud-ops-mcp-server"
3
- version = "0.9.8"
3
+ version = "0.9.9"
4
4
  description = "A MCP server for Alibaba Cloud"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -142,7 +142,15 @@ def OOS_RunInstances(
142
142
  RegionId: str = Field(description='AlibabaCloud region ID', default='cn-hangzhou'),
143
143
  InternetMaxBandwidthOut: int = Field(description='The maximum outbound bandwidth of the instance. Unit: Mbit/s. Valid values: 0 to 100. If you want to open the public network for the ECS instance, you need to set a value > 0', default=0),
144
144
  Amount: int = Field(description='Number of ECS instances', default=1),
145
- InstanceName: str = Field(description='Instance Name', default='')
145
+ InstanceName: str = Field(description='Instance Name', default=''),
146
+ SystemDiskCategory: str = Field(description='The category of the system disk. Valid values: cloud_efficiency, cloud_ssd, cloud_essd, cloud_auto, cloud, cloud_essd_entry', default='cloud_essd'),
147
+ SystemDiskSize: str = Field(description='The size of the system disk. Unit: GiB. Valid values: 20 to 500. Default value: 40 or the image size, whichever is greater', default=''),
148
+ SystemDiskName: str = Field(description='The name of the system disk', default=''),
149
+ SystemDiskDescription: str = Field(description='The description of the system disk', default=''),
150
+ SystemDiskPerformanceLevel: str = Field(description='The performance level of the ESSD used as the system disk. Valid values: PL0, PL1, PL2, PL3', default='PL1'),
151
+ PrivateIpAddress: str = Field(description='The private IP address of the instance. For VPC type ECS instances, the private IP address must be selected from the available IP range of the VSwitch', default=''),
152
+ SystemDiskAutoSnapshotPolicyId: str = Field(description='The ID of the automatic snapshot policy to apply to the system disk', default=''),
153
+ DataDiskParameters: str = Field(description='Data disk configuration in JSON format. Example: [{"Size":"100","DiskName":"data-disk-1","Description":"","Category":"cloud_essd","PerformanceLevel":"PL1","AutoSnapshotPolicyId":""}]', default='')
146
154
  ):
147
155
  """批量创建ECS实例,适用于需要同时创建多台ECS实例的场景,例如应用部署和高可用性场景。"""
148
156
 
@@ -156,6 +164,35 @@ def OOS_RunInstances(
156
164
  'amount': Amount,
157
165
  'instanceName': InstanceName
158
166
  }
167
+
168
+ # 添加系统盘相关参数
169
+ if SystemDiskCategory:
170
+ parameters['systemDiskCategory'] = SystemDiskCategory
171
+ if SystemDiskSize:
172
+ parameters['systemDiskSize'] = SystemDiskSize
173
+ if SystemDiskName:
174
+ parameters['systemDiskName'] = SystemDiskName
175
+ if SystemDiskDescription:
176
+ parameters['systemDiskDescription'] = SystemDiskDescription
177
+ if SystemDiskPerformanceLevel:
178
+ parameters['systemDiskPerformanceLevel'] = SystemDiskPerformanceLevel
179
+ if PrivateIpAddress:
180
+ parameters['privateIpAddress'] = PrivateIpAddress
181
+ if SystemDiskAutoSnapshotPolicyId:
182
+ parameters['systemDiskAutoSnapshotPolicyId'] = SystemDiskAutoSnapshotPolicyId
183
+
184
+ # 处理数据盘参数
185
+ if DataDiskParameters:
186
+ try:
187
+ # 解析 JSON 字符串为列表
188
+ data_disks = json.loads(DataDiskParameters) if isinstance(DataDiskParameters, str) else DataDiskParameters
189
+ if isinstance(data_disks, list) and len(data_disks) > 0:
190
+ # 将数据盘列表转换为 OOS 模板需要的格式
191
+ parameters['dataDiskParameters'] = data_disks
192
+ except (json.JSONDecodeError, TypeError) as e:
193
+ # 如果解析失败,忽略数据盘参数
194
+ pass
195
+
159
196
  return _start_execution_sync(region_id=RegionId, template_name='ACS-ECS-RunInstances', parameters=parameters)
160
197
 
161
198
 
@@ -54,7 +54,24 @@ def test_OOS_RebootInstances():
54
54
  @patch('alibaba_cloud_ops_mcp_server.tools.oos_tools.create_client', fake_client)
55
55
  def test_OOS_RunInstances():
56
56
  func = get_tool_func("OOS_RunInstances")
57
- result = func(RegionId='cn-test', ImageId='img', InstanceType='ecs.t1', SecurityGroupId='sg', VSwitchId='vsw', InternetMaxBandwidthOut=0, Amount=1, InstanceName='test')
57
+ result = func(
58
+ RegionId='cn-test',
59
+ ImageId='img',
60
+ InstanceType='ecs.t1',
61
+ SecurityGroupId='sg',
62
+ VSwitchId='vsw',
63
+ InternetMaxBandwidthOut=0,
64
+ Amount=1,
65
+ InstanceName='test',
66
+ SystemDiskCategory='',
67
+ SystemDiskSize='',
68
+ SystemDiskName='',
69
+ SystemDiskDescription='',
70
+ SystemDiskPerformanceLevel='1',
71
+ PrivateIpAddress='102',
72
+ SystemDiskAutoSnapshotPolicyId='1',
73
+ DataDiskParameters='[]'
74
+ )
58
75
  assert hasattr(result, 'executions')
59
76
 
60
77
  @patch('alibaba_cloud_ops_mcp_server.tools.oos_tools.create_client', fake_client)
@@ -116,7 +116,7 @@ wheels = [
116
116
 
117
117
  [[package]]
118
118
  name = "alibaba-cloud-ops-mcp-server"
119
- version = "0.9.8"
119
+ version = "0.9.9"
120
120
  source = { editable = "." }
121
121
  dependencies = [
122
122
  { name = "alibabacloud-cms20190101" },