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.
- alibaba_cloud_ops_mcp_server/alibabacloud/utils.py +9 -4
- alibaba_cloud_ops_mcp_server/server.py +3 -1
- alibaba_cloud_ops_mcp_server/tools/application_management_tools.py +7 -7
- {alibaba_cloud_ops_mcp_server-0.9.15.dist-info → alibaba_cloud_ops_mcp_server-0.9.17.dist-info}/METADATA +2 -2
- {alibaba_cloud_ops_mcp_server-0.9.15.dist-info → alibaba_cloud_ops_mcp_server-0.9.17.dist-info}/RECORD +8 -8
- {alibaba_cloud_ops_mcp_server-0.9.15.dist-info → alibaba_cloud_ops_mcp_server-0.9.17.dist-info}/WHEEL +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.15.dist-info → alibaba_cloud_ops_mcp_server-0.9.17.dist-info}/entry_points.txt +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.15.dist-info → alibaba_cloud_ops_mcp_server-0.9.17.dist-info}/licenses/LICENSE +0 -0
|
@@ -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
|
-
|
|
189
|
-
for
|
|
190
|
-
buckets
|
|
191
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
21
|
-
alibaba_cloud_ops_mcp_server-0.9.
|
|
22
|
-
alibaba_cloud_ops_mcp_server-0.9.
|
|
23
|
-
alibaba_cloud_ops_mcp_server-0.9.
|
|
24
|
-
alibaba_cloud_ops_mcp_server-0.9.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|