alibaba-cloud-ops-mcp-server 0.7.3__py3-none-any.whl → 0.7.5__py3-none-any.whl

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.
@@ -18,7 +18,10 @@ config = {
18
18
  'Vpc': [
19
19
  'DescribeVpcs',
20
20
  'DescribeVSwitches'
21
- ]
21
+ ],
22
+ 'rds': [
23
+ 'DescribeDBInstances'
24
+ ],
22
25
  }
23
26
 
24
27
 
@@ -50,8 +50,8 @@ def _start_execution_sync(region_id: str, template_name: str, parameters: dict):
50
50
  def RunCommand(
51
51
  RegionId: str = Field(description='AlibabaCloud region ID', default='cn-hangzhou'),
52
52
  InstanceIds: List[str] = Field(description='AlibabaCloud ECS instance ID List'),
53
- CommandType: str = Field(description='ECS实例上执行的命令类型,可选值:RunShellScript,RunPythonScript,RunPerlScript,RunBatScript,RunPowerShellScript', default='RunShellScript'),
54
- Command: str = Field(description='ECS实例上执行的命令内容'),
53
+ CommandType: str = Field(description='The type of command executed on the ECS instance, optional value:RunShellScript,RunPythonScript,RunPerlScript,RunBatScript,RunPowerShellScript', default='RunShellScript'),
54
+ Command: str = Field(description='Content of the command executed on the ECS instance'),
55
55
  ):
56
56
  """批量在多台ECS实例上运行云助手命令,适用于需要同时管理多台ECS实例的场景,如应用程序管理和资源标记操作等。"""
57
57
 
@@ -96,7 +96,7 @@ def StartInstances(
96
96
  def StopInstances(
97
97
  RegionId: str = Field(description='AlibabaCloud region ID', default='cn-hangzhou'),
98
98
  InstanceIds: List[str] = Field(description='AlibabaCloud ECS instance ID List'),
99
- ForeceStop: bool = Field(description='是否强制关机', default=False),
99
+ ForeceStop: bool = Field(description='Is forced shutdown required', default=False),
100
100
  ):
101
101
  """批量停止ECS实例,适用于需要同时管理和停止多台ECS实例的场景。"""
102
102
 
@@ -117,7 +117,7 @@ def StopInstances(
117
117
  def RebootInstances(
118
118
  RegionId: str = Field(description='AlibabaCloud region ID', default='cn-hangzhou'),
119
119
  InstanceIds: List[str] = Field(description='AlibabaCloud ECS instance ID List'),
120
- ForeceStop: bool = Field(description='是否强制关机', default=False),
120
+ ForeceStop: bool = Field(description='Is forced shutdown required', default=False),
121
121
  ):
122
122
  """批量重启ECS实例,适用于需要同时管理和重启多台ECS实例的场景。"""
123
123
 
@@ -137,12 +137,12 @@ def RebootInstances(
137
137
  @tools.append
138
138
  def RunInstances(
139
139
  RegionId: str = Field(description='AlibabaCloud region ID', default='cn-hangzhou'),
140
- ImageId: str = Field(description='镜像ID'),
141
- InstanceType: str = Field(description='实例规格'),
142
- SecurityGroupId: str = Field(description='安全组ID'),
143
- VSwitchId: str = Field(description='交换机ID'),
144
- Amount: int = Field(description='创建数量', default=1),
145
- InstanceName: str = Field(description='实例名称', default=''),
140
+ ImageId: str = Field(description='Image ID'),
141
+ InstanceType: str = Field(description='Instance Type'),
142
+ SecurityGroupId: str = Field(description='SecurityGroup ID'),
143
+ VSwitchId: str = Field(description='VSwitch ID'),
144
+ Amount: int = Field(description='Number of ECS instances', default=1),
145
+ InstanceName: str = Field(description='Instance Name', default=''),
146
146
  ):
147
147
  """批量创建ECS实例,适用于需要同时创建多台ECS实例的场景,例如应用部署和高可用性场景。"""
148
148
 
@@ -161,7 +161,7 @@ def RunInstances(
161
161
  def ResetPassword(
162
162
  RegionId: str = Field(description='AlibabaCloud region ID', default='cn-hangzhou'),
163
163
  InstanceIds: List[str] = Field(description='AlibabaCloud ECS instance ID List'),
164
- Password: str = Field(description='ECS实例的密码,8-30个字符且只能包含以下限制条件中的字符:小写字母,大写字母,数字,只可包含特殊字符()~!@#$%^&*-_+=(40:<>,?/'),
164
+ Password: str = Field(description='The password of the ECS instance must be 8-30 characters and must contain only the following characters: lowercase letters, uppercase letters, numbers, and special characters only.()~!@#$%^&*-_+=(40:<>,?/'),
165
165
  ):
166
166
  """批量修改ECS实例的密码,请注意,本操作将会重启ECS实例"""
167
167
  parameters = {
@@ -180,7 +180,7 @@ def ResetPassword(
180
180
  def ReplaceSystemDisk(
181
181
  RegionId: str = Field(description='AlibabaCloud region ID', default='cn-hangzhou'),
182
182
  InstanceIds: List[str] = Field(description='AlibabaCloud ECS instance ID List'),
183
- ImageId: str = Field(description='镜像ID')
183
+ ImageId: str = Field(description='Image ID')
184
184
  ):
185
185
  """批量替换ECS实例的系统盘,更换操作系统"""
186
186
  parameters = {
@@ -194,3 +194,61 @@ def ReplaceSystemDisk(
194
194
  'imageId': ImageId
195
195
  }
196
196
  return _start_execution_sync(region_id=RegionId, template_name='ACS-ECS-BulkyReplaceSystemDisk', parameters=parameters)
197
+
198
+
199
+ @tools.append
200
+ def StartRDSInstances(
201
+ RegionId: str = Field(description='AlibabaCloud region ID', default='cn-hangzhou'),
202
+ InstanceIds: List[str] = Field(description='AlibabaCloud ECS instance ID List'),
203
+ ):
204
+ """批量启动RDS实例,适用于需要同时管理和启动多台RDS实例的场景,例如应用部署和高可用性场景。"""
205
+
206
+ parameters = {
207
+ 'regionId': RegionId,
208
+ 'resourceType': 'ALIYUN::RDS::Instance',
209
+ 'targets': {
210
+ 'ResourceIds': InstanceIds,
211
+ 'RegionId': RegionId,
212
+ 'Type': 'ResourceIds'
213
+ }
214
+ }
215
+ return _start_execution_sync(region_id=RegionId, template_name='ACS-RDS-BulkyStartInstances', parameters=parameters)
216
+
217
+
218
+ @tools.append
219
+ def StopRDSInstances(
220
+ RegionId: str = Field(description='AlibabaCloud region ID', default='cn-hangzhou'),
221
+ InstanceIds: List[str] = Field(description='AlibabaCloud RDS instance ID List')
222
+ ):
223
+ """批量停止RDS实例,适用于需要同时管理和停止多台RDS实例的场景。"""
224
+
225
+ parameters = {
226
+ 'regionId': RegionId,
227
+ 'resourceType': 'ALIYUN::RDS::Instance',
228
+ 'targets': {
229
+ 'ResourceIds': InstanceIds,
230
+ 'RegionId': RegionId,
231
+ 'Type': 'ResourceIds'
232
+ }
233
+ }
234
+ return _start_execution_sync(region_id=RegionId, template_name='ACS-RDS-BulkyStopInstances', parameters=parameters)
235
+
236
+
237
+ @tools.append
238
+ def RebootRDSInstances(
239
+ RegionId: str = Field(description='AlibabaCloud region ID', default='cn-hangzhou'),
240
+ InstanceIds: List[str] = Field(description='AlibabaCloud RDS instance ID List')
241
+ ):
242
+ """批量重启RDS实例,适用于需要同时管理和重启多台RDS实例的场景。"""
243
+
244
+ parameters = {
245
+ 'regionId': RegionId,
246
+ 'resourceType': 'ALIYUN::RDS::Instance',
247
+ 'targets': {
248
+ 'ResourceIds': InstanceIds,
249
+ 'RegionId': RegionId,
250
+ 'Type': 'ResourceIds'
251
+ }
252
+ }
253
+ return _start_execution_sync(region_id=RegionId, template_name='ACS-RDS-BulkyRestartInstances',
254
+ parameters=parameters)
@@ -0,0 +1,107 @@
1
+ # oss_tools.py
2
+ import os
3
+ import alibabacloud_oss_v2 as oss
4
+
5
+ from pydantic import Field
6
+ from alibabacloud_oss_v2 import Credentials
7
+ from alibabacloud_oss_v2.credentials import EnvironmentVariableCredentialsProvider
8
+
9
+
10
+ tools = []
11
+
12
+
13
+ class CredentialsProvider(EnvironmentVariableCredentialsProvider):
14
+ def __init__(self) -> None:
15
+ super().__init__()
16
+ access_key_id = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
17
+ access_key_secret = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
18
+ session_token = os.getenv('ALIBABA_CLOUD_SESSION_TOKEN', None)
19
+
20
+ self._credentials = Credentials(
21
+ access_key_id, access_key_secret, session_token)
22
+
23
+ def get_credentials(self) -> Credentials:
24
+ return self._credentials
25
+
26
+
27
+ def create_client(region_id: str) -> oss.Client:
28
+ credentials_provider = CredentialsProvider()
29
+ cfg = oss.config.load_default()
30
+ cfg.credentials_provider = credentials_provider
31
+ cfg.region = region_id
32
+ return oss.Client(cfg)
33
+
34
+
35
+ @tools.append
36
+ def ListBuckets(
37
+ RegionId: str = Field(description='AlibabaCloud region ID', default='cn-hangzhou'),
38
+ Prefix: str = Field(description='AlibabaCloud OSS Bucket Name prefix', default=None)
39
+ ):
40
+ """列出指定区域的所有OSS存储空间。"""
41
+ client = create_client(region_id=RegionId)
42
+ paginator = client.list_buckets_paginator()
43
+ results = []
44
+ for page in paginator.iter_page(oss.ListBucketsRequest(prefix=Prefix)):
45
+ for bucket in page.buckets:
46
+ results.append(bucket.__str__())
47
+ return results
48
+
49
+
50
+ @tools.append
51
+ def ListObjects(
52
+ RegionId: str = Field(description='AlibabaCloud region ID', default='cn-hangzhou'),
53
+ BucketName: str = Field(description='AlibabaCloud OSS Bucket Name'),
54
+ Prefix: str = Field(description='AlibabaCloud OSS Bucket Name prefix', default=None)
55
+ ):
56
+ """获取指定OSS存储空间中的所有文件信息。"""
57
+ if not BucketName:
58
+ raise ValueError("Bucket name is required")
59
+ client = create_client(region_id=RegionId)
60
+ paginator = client.list_objects_v2_paginator()
61
+ results = []
62
+ for page in paginator.iter_page(oss.ListObjectsV2Request(
63
+ bucket=BucketName,
64
+ prefix=Prefix
65
+ )):
66
+ for object in page.contents:
67
+ results.append(object.__str__())
68
+ return results
69
+
70
+
71
+ @tools.append
72
+ def PutBucket(
73
+ RegionId: str = Field(description='AlibabaCloud region ID', default='cn-hangzhou'),
74
+ BucketName: str = Field(description='AlibabaCloud OSS Bucket Name'),
75
+ StorageClass: str = Field(description='The Storage Type of AlibabaCloud OSS Bucket, The value range is as follows: '
76
+ 'Standard (default): standard storage, '
77
+ 'IA: infrequent access, Archive: archive storage, '
78
+ 'ColdArchive: cold archive storage, '
79
+ 'DeepColdArchive: deep cold archive storage', default='Standard'),
80
+ DataRedundancyType: str = Field(description='The data disaster recovery type of AlibabaCloud OSS Bucket, '
81
+ 'LRS (default): Locally redundant LRS, which stores your data '
82
+ 'redundantly on different storage devices in the same availability zone. '
83
+ 'ZRS: Intra-city redundant ZRS, which uses a multi-availability zone '
84
+ '(AZ) mechanism to store your data redundantly in three availability '
85
+ 'zones in the same region.', default='LRS')
86
+ ):
87
+ """创建一个新的OSS存储空间。"""
88
+ client = create_client(region_id=RegionId)
89
+ result = client.put_bucket(oss.PutBucketRequest(
90
+ bucket=BucketName,
91
+ create_bucket_configuration=oss.CreateBucketConfiguration(
92
+ storage_class=StorageClass,
93
+ data_redundancy_type=DataRedundancyType
94
+ )
95
+ ))
96
+ return result.__str__()
97
+
98
+
99
+ @tools.append
100
+ def DeleteBucket(
101
+ RegionId: str = Field(description='AlibabaCloud region ID', default='cn-hangzhou'),
102
+ BucketName: str = Field(description='AlibabaCloud OSS Bucket Name')
103
+ ):
104
+ """删除指定的OSS存储空间。"""
105
+ client = create_client(region_id=RegionId)
106
+ result = client.delete_bucket(oss.DeleteBucketRequest(bucket=BucketName))
107
+ return result.__str__()
@@ -17,6 +17,7 @@ from alibaba_cloud_ops_mcp_server.config import config
17
17
 
18
18
  from alibaba_cloud_ops_mcp_server import oos_tools
19
19
  from alibaba_cloud_ops_mcp_server import cms_tools
20
+ from alibaba_cloud_ops_mcp_server import oss_tools
20
21
 
21
22
  logger = logging.getLogger(__name__)
22
23
 
@@ -184,6 +185,8 @@ def main(transport: str):
184
185
  mcp.add_tool(tool)
185
186
  for tool in cms_tools.tools:
186
187
  mcp.add_tool(tool)
188
+ for tool in oss_tools.tools:
189
+ mcp.add_tool(tool)
187
190
  for service_code, apis in config.items():
188
191
  for api_name in apis:
189
192
  create_and_decorate_tool(mcp, service_code, api_name)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alibaba-cloud-ops-mcp-server
3
- Version: 0.7.3
3
+ Version: 0.7.5
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
@@ -8,6 +8,7 @@ Requires-Python: >=3.11
8
8
  Requires-Dist: alibabacloud-cms20190101>=3.1.4
9
9
  Requires-Dist: alibabacloud-ecs20140526>=6.1.0
10
10
  Requires-Dist: alibabacloud-oos20190601>=3.4.1
11
+ Requires-Dist: alibabacloud-oss-v2>=1.1.0
11
12
  Requires-Dist: click>=8.1.8
12
13
  Requires-Dist: mcp[cli]>=1.6.0
13
14
  Description-Content-Type: text/markdown
@@ -23,29 +24,17 @@ Install [uv](https://github.com/astral-sh/uv)
23
24
  curl -LsSf https://astral.sh/uv/install.sh | sh
24
25
  ```
25
26
 
26
- ## Start
27
-
28
- Start from local development environment
29
-
30
- ```bash
31
- ALIBABA_CLOUD_ACCESS_KEY_ID=<Your AccessKeyId> ALIBABA_CLOUD_ACCESS_KEY_SECRET=<Your AccessKeySecret> uv run src/alibaba_cloud_ops_mcp_server/server.py --transport sse
32
- ```
33
-
34
- Start from package
35
-
36
- ```bash
37
- ALIBABA_CLOUD_ACCESS_KEY_ID=<Your AccessKeyId> ALIBABA_CLOUD_ACCESS_KEY_SECRET=<Your AccessKeySecret> uvx alibaba-cloud-ops-mcp-server@latest --transport sse
38
- ```
39
-
40
27
  ## Configuration
41
28
 
42
29
  Use [VS Code](https://code.visualstudio.com/) + [Cline](https://cline.bot/) to config MCP Server.
43
30
 
44
31
  To use `alibaba-cloud-ops-mcp-server` MCP Server with any other MCP Client, you can manually add this configuration and restart for changes to take effect:
32
+
45
33
  ```json
46
34
  {
47
35
  "mcpServers": {
48
36
  "alibaba-cloud-ops-mcp-server": {
37
+ "timeout": 600,
49
38
  "command": "uvx",
50
39
  "args": [
51
40
  "alibaba-cloud-ops-mcp-server@latest"
@@ -79,6 +68,14 @@ To use `alibaba-cloud-ops-mcp-server` MCP Server with any other MCP Client, you
79
68
  | | ReplaceSystemDisk | Replace Operating System | OOS | Done |
80
69
  | VPC | DescribeVpcs | View VPCs | API | Done |
81
70
  | | DescribeVSwitches | View VSwitches | API | Done |
71
+ | RDS | DescribeDBInstances | List RDS Instances | API | Done |
72
+ | | StartDBInstances | Start the RDS instance | OOS | Done |
73
+ | | StopDBInstances | Stop the RDS instance | OOS | Done |
74
+ | | RestartDBInstances | Restart the RDS instance | OOS | Done |
75
+ | OSS | ListBuckets | List Bucket | API | Done |
76
+ | | PutBucket | Create Bucket | API | Done |
77
+ | | DeleteBucket | Delete Bucket | API | Done |
78
+ | | ListObjects | View object information in the bucket | API | Done |
82
79
  | CloudMonitor | GetCpuUsageData | Get CPU Usage Data for ECS Instances | API | Done |
83
80
  | | GetCpuLoadavgData | Get CPU One-Minute Average Load Metric Data | API | Done |
84
81
  | | GetCpuloadavg5mData | Get CPU Five-Minute Average Load Metric Data | API | Done |
@@ -0,0 +1,12 @@
1
+ alibaba_cloud_ops_mcp_server/__init__.py,sha256=BaluUNyRz8Qw-X7Y0ywDezwbkqiSvWlSYn2452XeGcA,213
2
+ alibaba_cloud_ops_mcp_server/api_meta_client.py,sha256=pxJztmkmcqqI3djECziAIMc3ZxsS8crqSc6AbneOX2I,7315
3
+ alibaba_cloud_ops_mcp_server/cms_tools.py,sha256=5IhPtkHSwqLsy7D3lGznovQ94e-XBy6HBE7qLDMoYaQ,4464
4
+ alibaba_cloud_ops_mcp_server/config.py,sha256=Nq6AT8bqSVa6zu9xjInaSjFcxA-GC7MLlCsV1q53yO0,514
5
+ alibaba_cloud_ops_mcp_server/oos_tools.py,sha256=NDu18_R3SqB-Fv1SpnljV0b2Py6G9HXcoqvbV0MWL7Y,10105
6
+ alibaba_cloud_ops_mcp_server/oss_tools.py,sha256=6d_vacAJllwkr74bsWgle8yMzqb_Xr1CPAIr_htFP-I,4451
7
+ alibaba_cloud_ops_mcp_server/server.py,sha256=9qk122yEAZgzJ9iBTBns90McguU4pQFIgjOPD1CzH8c,6723
8
+ alibaba_cloud_ops_mcp_server-0.7.5.dist-info/METADATA,sha256=k0CwST7Lkzm367bqEq1UlMpT8HzUyuvGHwftQv3kASI,3450
9
+ alibaba_cloud_ops_mcp_server-0.7.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
10
+ alibaba_cloud_ops_mcp_server-0.7.5.dist-info/entry_points.txt,sha256=ESGAWXKEp184forhs7VzTD4P1AUdZz6vCW6hRUKITGw,83
11
+ alibaba_cloud_ops_mcp_server-0.7.5.dist-info/licenses/LICENSE,sha256=gQgVkp2ttRCjodiPpXZZR-d7JnrYIYNiHk1YDUYgpa4,11331
12
+ alibaba_cloud_ops_mcp_server-0.7.5.dist-info/RECORD,,
@@ -1,11 +0,0 @@
1
- alibaba_cloud_ops_mcp_server/__init__.py,sha256=BaluUNyRz8Qw-X7Y0ywDezwbkqiSvWlSYn2452XeGcA,213
2
- alibaba_cloud_ops_mcp_server/api_meta_client.py,sha256=pxJztmkmcqqI3djECziAIMc3ZxsS8crqSc6AbneOX2I,7315
3
- alibaba_cloud_ops_mcp_server/cms_tools.py,sha256=5IhPtkHSwqLsy7D3lGznovQ94e-XBy6HBE7qLDMoYaQ,4464
4
- alibaba_cloud_ops_mcp_server/config.py,sha256=MJRa5MLJgftSBitrbzTX8fPAV3-7_7FVxNqPvQyJiac,463
5
- alibaba_cloud_ops_mcp_server/oos_tools.py,sha256=zXniXIPjTKYYMaP2oS9KtuSAWeLixeGhjqIMNgR4Hqg,7864
6
- alibaba_cloud_ops_mcp_server/server.py,sha256=MCXk-nVDEuSuTO9E3duRa_r77ALz0KoJzQI94eHCZVw,6612
7
- alibaba_cloud_ops_mcp_server-0.7.3.dist-info/METADATA,sha256=Jj6menkyRV4-faFtwkDRGrdBVoB3HF-5_CPSqxm52w4,3341
8
- alibaba_cloud_ops_mcp_server-0.7.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
9
- alibaba_cloud_ops_mcp_server-0.7.3.dist-info/entry_points.txt,sha256=ESGAWXKEp184forhs7VzTD4P1AUdZz6vCW6hRUKITGw,83
10
- alibaba_cloud_ops_mcp_server-0.7.3.dist-info/licenses/LICENSE,sha256=gQgVkp2ttRCjodiPpXZZR-d7JnrYIYNiHk1YDUYgpa4,11331
11
- alibaba_cloud_ops_mcp_server-0.7.3.dist-info/RECORD,,