alibaba-cloud-ops-mcp-server 0.9.15__py3-none-any.whl → 0.9.17__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.
@@ -185,10 +185,15 @@ def put_bucket_tagging(client: oss.Client, bucket_name: str, tags: dict):
185
185
  def find_bucket_by_tag(client: oss.Client, tag_key: str, tag_value: str) -> Optional[str]:
186
186
  paginator = client.list_buckets_paginator(tag_key=tag_key, tag_value=tag_value)
187
187
  buckets = []
188
- for page in paginator.iter_page(oss.ListBucketsRequest(tag_key=tag_key, tag_value=tag_value)):
189
- for bucket in page.buckets:
190
- buckets.append(bucket.name)
191
- logger.info(f'[code_deploy] Trying to find bucket with tag {tag_key}:{tag_value}, buckets: {buckets}')
188
+ try:
189
+ for page in paginator.iter_page(oss.ListBucketsRequest(tag_key=tag_key, tag_value=tag_value)):
190
+ if not page.buckets:
191
+ continue
192
+ for bucket in page.buckets:
193
+ buckets.append(bucket.name)
194
+ logger.info(f'[code_deploy] Trying to find bucket with tag {tag_key}:{tag_value}, buckets: {buckets}')
195
+ except Exception as e:
196
+ logger.error(f'[code_deploy] Failed to list buckets: {e}')
192
197
  return buckets[0] if buckets else None
193
198
 
194
199
 
@@ -190,7 +190,9 @@ def main(transport: str, port: int, host: str, services: str, headers_credential
190
190
  for tool in oos_tools.tools:
191
191
  mcp.tool(tool)
192
192
  for tool in application_management_tools.tools:
193
- mcp.tool(tool)
193
+ # Skip ECS_DescribeInstances in normal mode
194
+ if tool.__name__ != 'ECS_DescribeInstances':
195
+ mcp.tool(tool)
194
196
  for tool in cms_tools.tools:
195
197
  mcp.tool(tool)
196
198
  for tool in oss_tools.tools:
@@ -89,13 +89,11 @@ def OOS_CodeDeploy(
89
89
  - 记录文件路径,留待后续CodeDeploy使用
90
90
 
91
91
  步骤 3:调用此工具进行部署
92
- - 此工具会依次调用:CreateApplication(如果不存在)、CreateApplicationGroup(如果不存在)、
93
- TagResources(可选,如果是已有资源需要打 tag 导入应用分组)、DeployApplicationGroup
94
92
 
95
93
  重要提示:
96
94
  1. 启动脚本(application_start)必须与上传的产物对应。如果产物是压缩包(tar、tar.gz、zip等),
97
95
  需要先解压并进入对应目录后再执行启动命令。
98
- 2. 示例:如果上传的是 app.tar.gz,启动脚本应该类似,一般压缩包就在当前目录下,直接解压即可:
96
+ 2. 示例:如果上传的是 app.tar.gz,启动脚本应该类似,一般压缩包就在当前目录下,直接解压即可,不要盲目cd,使用前务必确认对应文件和路径存在:
99
97
  "tar -xzf app.tar.gz && ./start.sh"
100
98
  或者如果解压后是Java应用:
101
99
  "tar -xzf app.tar.gz && java -jar app.jar"
@@ -153,7 +151,7 @@ def OOS_CodeDeploy(
153
151
  logger.info(f"[code_deploy] Using file directory as project path: {file_path_resolved.parent}")
154
152
 
155
153
  # Check ECS instance ID
156
- if not instance_ids or len(instance_ids) == 0:
154
+ if not instance_ids:
157
155
  ecs_purchase_link = f'https://ecs-buy.aliyun.com/ecs#/custom/prepay/{deploy_region_id}?orderSource=buyWizard-console-list'
158
156
  security_group_link = f'https://ecs.console.aliyun.com/securityGroup?regionId={deploy_region_id}'
159
157
  port_info = f'port {port}' if port else 'application port'
@@ -311,6 +309,8 @@ def OOS_CodeDeploy(
311
309
  'security_group_link': security_group_link,
312
310
  'port': port,
313
311
  'deploy_region_id': deploy_region_id,
312
+ 'bucket_name': bucket_name,
313
+ 'oss_bucket_link': f'https://oss.console.aliyun.com/bucket/oss-cn-hangzhou/{bucket_name}/object',
314
314
  'security_group_instructions': f'''
315
315
  ## Deployment Successful!
316
316
 
@@ -548,7 +548,7 @@ def _check_ecs_instances_exist(deploy_region_id: str, instance_ids: list) -> Tup
548
548
  response = _describe_instances_with_retry(deploy_region_id, describe_instances_request)
549
549
 
550
550
  existing_instance_ids = set()
551
- if response.body and response.body.instances:
551
+ if response.body and response.body.instances and response.body.instances.instance:
552
552
  for instance in response.body.instances.instance:
553
553
  if instance.instance_id:
554
554
  existing_instance_ids.add(instance.instance_id)
@@ -579,7 +579,7 @@ def _check_instance_has_tag(deploy_region_id: str, instance_id: str, tag_key: st
579
579
  response = _describe_instances_with_retry(deploy_region_id, describe_instances_request)
580
580
  if response.body and response.body.instances and response.body.instances.instance:
581
581
  instance = response.body.instances.instance[0]
582
- if instance.tags and instance.tags.tag:
582
+ if instance.tags and instance.tags.tag is not None:
583
583
  for tag in instance.tags.tag:
584
584
  if tag.tag_key == tag_key and tag.tag_value == tag_value:
585
585
  logger.info(f"[_check_instance_has_tag] Instance {instance_id} already has tag {tag_key}={tag_value}")
@@ -631,7 +631,7 @@ def _ensure_instances_tagged(deploy_region_id: str, name: str, application_group
631
631
 
632
632
  def _tag_multiple_instances(deploy_region_id, name, application_group_name, instance_ids):
633
633
  """
634
- 为多个实例打 tag(已废弃,使用 _ensure_instances_tagged 代替)
634
+ 为多个实例打 tag
635
635
  """
636
636
  remaining_instance_ids = instance_ids[1:]
637
637
  if remaining_instance_ids:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alibaba-cloud-ops-mcp-server
3
- Version: 0.9.15
3
+ Version: 0.9.17
4
4
  Summary: A MCP server for Alibaba Cloud
5
5
  Author-email: Zheng Dayu <dayu.zdy@alibaba-inc.com>, Zhao Shuaibo <zhaoshuaibo.zsb@alibaba-inc.com>
6
6
  License-File: LICENSE
@@ -9,7 +9,7 @@ Requires-Dist: alibabacloud-cms20190101>=3.1.4
9
9
  Requires-Dist: alibabacloud-credentials>=1.0.3
10
10
  Requires-Dist: alibabacloud-ecs20140526>=6.1.0
11
11
  Requires-Dist: alibabacloud-oos20190601>=3.5.0
12
- Requires-Dist: alibabacloud-oss-v2>=1.1.0
12
+ Requires-Dist: alibabacloud-oss-v2>=1.2.0
13
13
  Requires-Dist: click>=8.1.8
14
14
  Requires-Dist: fastmcp==2.8.0
15
15
  Requires-Dist: pydantic==2.11.3
@@ -1,24 +1,24 @@
1
1
  alibaba_cloud_ops_mcp_server/__init__.py,sha256=BaluUNyRz8Qw-X7Y0ywDezwbkqiSvWlSYn2452XeGcA,213
2
2
  alibaba_cloud_ops_mcp_server/__main__.py,sha256=Q40p2HtWGvxj1JLvS7dn95NLzDhJNQ6JAgLLyCb4Y50,63
3
3
  alibaba_cloud_ops_mcp_server/config.py,sha256=PizctjXsQUWoMWBY1dFjNffVlZr9K6hNvqA4DpayR_o,513
4
- alibaba_cloud_ops_mcp_server/server.py,sha256=l-a53wmZPSilVq6TL9UHLw4LboYSSFJhNtEfDW2y-e4,9138
4
+ alibaba_cloud_ops_mcp_server/server.py,sha256=nXZVhNnvPk5_VqGfTEmlFjv6lG3VYAxnTfzeF7zisog,9255
5
5
  alibaba_cloud_ops_mcp_server/settings.py,sha256=R1jvMtgErWn_1MZ2Gq3xzBZeMtkGpSHvVutInh0Ix4s,167
6
6
  alibaba_cloud_ops_mcp_server/alibabacloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  alibaba_cloud_ops_mcp_server/alibabacloud/api_meta_client.py,sha256=t2TSc0Gzcy_uEcaCgiHHuLoMiEGu3-NCtYmwYjyPWsY,7973
8
8
  alibaba_cloud_ops_mcp_server/alibabacloud/exception.py,sha256=7PdhgqgXEGrTPL1cj98h9EH-RrM6-2TT89PDtcmlpmU,1230
9
- alibaba_cloud_ops_mcp_server/alibabacloud/utils.py,sha256=lGjwsq-Igptz52_3AALSRJLtVsP815b4nSQCfxhIiUo,8068
9
+ alibaba_cloud_ops_mcp_server/alibabacloud/utils.py,sha256=F_nuYlN9EiDp8iWby6MYjSZg8Gm9t1aEAoylA7AHunU,8245
10
10
  alibaba_cloud_ops_mcp_server/alibabacloud/static/PROMPT_UNDERSTANDING.md,sha256=QPubudP1bwDbWu0Js6MYb4cJd1B2zM_JGp53twYv5yc,3611
11
11
  alibaba_cloud_ops_mcp_server/alibabacloud/static/__init__.py,sha256=wJrYamaIb7e_kA4ILZpdP1f1TUUTXMGqEhA4IbSZ2Ts,230
12
12
  alibaba_cloud_ops_mcp_server/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  alibaba_cloud_ops_mcp_server/tools/api_tools.py,sha256=n7FLDAlnTSIk38iQqT1ABwAskIyswO_tBGTm34SPMpg,10632
14
- alibaba_cloud_ops_mcp_server/tools/application_management_tools.py,sha256=B3Otl46o9T2StEbe1yaKnerqjctZgEHuLMu4dHeQseE,35060
14
+ alibaba_cloud_ops_mcp_server/tools/application_management_tools.py,sha256=mmjZTFAV_8bj5EK5d0yXv4827IhRF2XW2PNcLI5evos,35004
15
15
  alibaba_cloud_ops_mcp_server/tools/cms_tools.py,sha256=BmPTiP8wu9DsEHBQsvR7JH9nFkcKMTBuNuafFqSfVxU,4308
16
16
  alibaba_cloud_ops_mcp_server/tools/common_api_tools.py,sha256=ccQAWqS1I9F-fdOdjLcXN-dIhNqSbZV8T5ODuGXlfXM,2711
17
17
  alibaba_cloud_ops_mcp_server/tools/local_tools.py,sha256=Sl7Vl2mVQMLyMIZQDLoE-xVF0vNz_haMEspyYPDe6Sg,13133
18
18
  alibaba_cloud_ops_mcp_server/tools/oos_tools.py,sha256=cPEl05Y0rlNvCeO2SF46Y7Ewky4LXZ8__sD0_JCi8ek,13569
19
19
  alibaba_cloud_ops_mcp_server/tools/oss_tools.py,sha256=6yKo1FqQN3n9I-eDUW8MrnIZTHthy-worKc8XIsn-Nw,7427
20
- alibaba_cloud_ops_mcp_server-0.9.15.dist-info/METADATA,sha256=uB0lXqAEtEFLRaz79bhXwQF2r7gbEhBjxXn7CGpBhrI,8794
21
- alibaba_cloud_ops_mcp_server-0.9.15.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
22
- alibaba_cloud_ops_mcp_server-0.9.15.dist-info/entry_points.txt,sha256=ESGAWXKEp184forhs7VzTD4P1AUdZz6vCW6hRUKITGw,83
23
- alibaba_cloud_ops_mcp_server-0.9.15.dist-info/licenses/LICENSE,sha256=gQgVkp2ttRCjodiPpXZZR-d7JnrYIYNiHk1YDUYgpa4,11331
24
- alibaba_cloud_ops_mcp_server-0.9.15.dist-info/RECORD,,
20
+ alibaba_cloud_ops_mcp_server-0.9.17.dist-info/METADATA,sha256=REI5_coalxMm7cmvOhDdGgVqmtlFKaNU08lg7IRZD3c,8794
21
+ alibaba_cloud_ops_mcp_server-0.9.17.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
22
+ alibaba_cloud_ops_mcp_server-0.9.17.dist-info/entry_points.txt,sha256=ESGAWXKEp184forhs7VzTD4P1AUdZz6vCW6hRUKITGw,83
23
+ alibaba_cloud_ops_mcp_server-0.9.17.dist-info/licenses/LICENSE,sha256=gQgVkp2ttRCjodiPpXZZR-d7JnrYIYNiHk1YDUYgpa4,11331
24
+ alibaba_cloud_ops_mcp_server-0.9.17.dist-info/RECORD,,