alibaba-cloud-ops-mcp-server 0.9.10__tar.gz → 0.9.13__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.
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/.github/workflows/python-ci.yml +1 -1
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/.gitignore +1 -1
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/PKG-INFO +38 -7
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/README.md +34 -3
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/README_zh.md +43 -2
- alibaba_cloud_ops_mcp_server-0.9.13/image/qoder.svg +1 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/pyproject.toml +5 -4
- alibaba_cloud_ops_mcp_server-0.9.13/src/alibaba_cloud_ops_mcp_server/alibabacloud/utils.py +234 -0
- alibaba_cloud_ops_mcp_server-0.9.13/src/alibaba_cloud_ops_mcp_server/server.py +179 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/alibaba_cloud_ops_mcp_server/tools/api_tools.py +8 -2
- alibaba_cloud_ops_mcp_server-0.9.13/src/alibaba_cloud_ops_mcp_server/tools/application_management_tools.py +748 -0
- alibaba_cloud_ops_mcp_server-0.9.13/src/alibaba_cloud_ops_mcp_server/tools/local_tools.py +323 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/alibaba_cloud_ops_mcp_server/tools/oss_tools.py +68 -3
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/tests/tools/test_oos_tools.py +6 -1
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/uv.lock +38 -29
- alibaba_cloud_ops_mcp_server-0.9.10/src/alibaba_cloud_ops_mcp_server/alibabacloud/utils.py +0 -51
- alibaba_cloud_ops_mcp_server-0.9.10/src/alibaba_cloud_ops_mcp_server/server.py +0 -96
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/Dockerfile +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/LICENSE +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/README_mcp_args.md +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/examples/openapi_mcp_quickstart/server.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/image/Alibaba-Cloud-Ops-MCP-User-Group-en.png +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/image/Alibaba-Cloud-Ops-MCP-User-Group-zh.png +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/image/alibaba-cloud.png +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/__init__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/alibaba_cloud_ops_mcp_server/__init__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/alibaba_cloud_ops_mcp_server/__main__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/alibaba_cloud_ops_mcp_server/alibabacloud/__init__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/alibaba_cloud_ops_mcp_server/alibabacloud/api_meta_client.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/alibaba_cloud_ops_mcp_server/alibabacloud/exception.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/alibaba_cloud_ops_mcp_server/alibabacloud/static/PROMPT_UNDERSTANDING.md +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/alibaba_cloud_ops_mcp_server/alibabacloud/static/__init__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/alibaba_cloud_ops_mcp_server/config.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/alibaba_cloud_ops_mcp_server/settings.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/alibaba_cloud_ops_mcp_server/tools/__init__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/alibaba_cloud_ops_mcp_server/tools/cms_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/alibaba_cloud_ops_mcp_server/tools/common_api_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/src/alibaba_cloud_ops_mcp_server/tools/oos_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/tests/alibabacloud/test_api_meta_client.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/tests/alibabacloud/test_exception.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/tests/alibabacloud/test_utils.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/tests/test_init.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/tests/test_server.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/tests/tools/test_api_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/tests/tools/test_cms_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.10 → alibaba_cloud_ops_mcp_server-0.9.13}/tests/tools/test_oss_tools.py +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: alibaba-cloud-ops-mcp-server
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.13
|
|
4
4
|
Summary: A MCP server for Alibaba Cloud
|
|
5
|
-
Author-email: Zheng Dayu <dayu.zdy@alibaba-inc.com>
|
|
5
|
+
Author-email: Zheng Dayu <dayu.zdy@alibaba-inc.com>, Zhao Shuaibo <zhaoshuaibo.zsb@alibaba-inc.com>
|
|
6
6
|
License-File: LICENSE
|
|
7
7
|
Requires-Python: >=3.10
|
|
8
8
|
Requires-Dist: alibabacloud-cms20190101>=3.1.4
|
|
9
|
-
Requires-Dist: alibabacloud-credentials>=1.0.
|
|
9
|
+
Requires-Dist: alibabacloud-credentials>=1.0.3
|
|
10
10
|
Requires-Dist: alibabacloud-ecs20140526>=6.1.0
|
|
11
|
-
Requires-Dist: alibabacloud-oos20190601>=3.
|
|
11
|
+
Requires-Dist: alibabacloud-oos20190601>=3.5.0
|
|
12
12
|
Requires-Dist: alibabacloud-oss-v2>=1.1.0
|
|
13
13
|
Requires-Dist: click>=8.1.8
|
|
14
14
|
Requires-Dist: fastmcp==2.8.0
|
|
@@ -21,7 +21,19 @@ Description-Content-Type: text/markdown
|
|
|
21
21
|
|
|
22
22
|
[中文版本](./README_zh.md)
|
|
23
23
|
|
|
24
|
-
Alibaba Cloud Ops MCP Server is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) server that provides seamless integration with Alibaba Cloud APIs, enabling AI assistants to
|
|
24
|
+
Alibaba Cloud Ops MCP Server is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) server that provides seamless integration with Alibaba Cloud APIs, enabling AI assistants to operate resources on Alibaba Cloud, supporting ECS, Cloud Monitor, OOS, OSS, VPC, RDS and other widely used cloud products. It also enables AI assistants to analyze, build, and deploy applications to Alibaba Cloud ECS instances.
|
|
25
|
+
|
|
26
|
+
## Features
|
|
27
|
+
|
|
28
|
+
- **ECS Management**: Create, start, stop, reboot, delete instances, run commands, view instances, regions, zones, images, security groups, and more
|
|
29
|
+
- **VPC Management**: View VPCs and VSwitches
|
|
30
|
+
- **RDS Management**: List, start, stop, and restart RDS instances
|
|
31
|
+
- **OSS Management**: List, create, delete buckets, and view objects
|
|
32
|
+
- **Cloud Monitor**: Get CPU usage, load average, memory usage, and disk usage metrics for ECS instances
|
|
33
|
+
- **Application Deployment**: Deploy applications to ECS instances with automatic application and application group management
|
|
34
|
+
- **Project Analysis**: Automatically identify project technology stack and deployment methods (npm, Python, Java, Go, Docker, etc.)
|
|
35
|
+
- **Local File Operations**: List directories, run shell scripts, and analyze project structures
|
|
36
|
+
- **Dynamic API Tools**: Support for Alibaba Cloud OpenAPI operations
|
|
25
37
|
|
|
26
38
|
## Prepare
|
|
27
39
|
|
|
@@ -60,8 +72,9 @@ To use `alibaba-cloud-ops-mcp-server` MCP Server with any other MCP Client, you
|
|
|
60
72
|
|
|
61
73
|
## MCP Maketplace Integration
|
|
62
74
|
|
|
63
|
-
* [
|
|
75
|
+
* [Qoder](https://qoder.com) <a href="qoder://aicoding.aicoding-deeplink/mcp/add?name=alibaba-cloud-ops-mcp-server&config=JTdCJTIyY29tbWFuZCUyMiUzQSUyMnV2eCUyMiUyQyUyMmFyZ3MlMjIlM0ElNUIlMjJhbGliYWJhLWNsb3VkLW9wcy1tY3Atc2VydmVyJTQwbGF0ZXN0JTIyJTVEJTJDJTIyZW52JTIyJTNBJTdCJTIyQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX0lEJTIyJTNBJTIyWW91ciUyMEFjY2VzcyUyMEtleSUyMElkJTIyJTJDJTIyQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX1NFQ1JFVCUyMiUzQSUyMllvdXIlMjBBY2Nlc3MlMjBLZXklMjBTRUNSRVQlMjIlN0QlN0Q%3D"><img src="./image/qoder.svg" alt="Install MCP Server" height="20"></a>
|
|
64
76
|
* [Cursor](https://docs.cursor.com/tools) [](https://cursor.com/en/install-mcp?name=alibaba-cloud-ops-mcp-server&config=eyJ0aW1lb3V0Ijo2MDAsImNvbW1hbmQiOiJ1dnggYWxpYmFiYS1jbG91ZC1vcHMtbWNwLXNlcnZlckBsYXRlc3QiLCJlbnYiOnsiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX0lEIjoiWW91ciBBY2Nlc3MgS2V5IElkIiwiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX1NFQ1JFVCI6IllvdXIgQWNjZXNzIEtleSBTZWNyZXQifX0%3D)
|
|
77
|
+
* [Cline](https://cline.bot/mcp-marketplace)
|
|
65
78
|
* [ModelScope](https://www.modelscope.cn/mcp/servers/@aliyun/alibaba-cloud-ops-mcp-server?lang=en_US)
|
|
66
79
|
* [Lingma](https://lingma.aliyun.com/)
|
|
67
80
|
* [Smithery AI](https://smithery.ai/server/@aliyun/alibaba-cloud-ops-mcp-server)
|
|
@@ -77,7 +90,7 @@ To use `alibaba-cloud-ops-mcp-server` MCP Server with any other MCP Client, you
|
|
|
77
90
|
|
|
78
91
|
## Tools
|
|
79
92
|
|
|
80
|
-
| **Product** | **Tool** | **Function** | **
|
|
93
|
+
| **Product** | **Tool** | **Function** | **Implementation** | **Status** |
|
|
81
94
|
| --- | --- | --- | --- | --- |
|
|
82
95
|
| ECS | RunCommand | Run Command | OOS | Done |
|
|
83
96
|
| | StartInstances | Start Instances | OOS | Done |
|
|
@@ -112,6 +125,24 @@ To use `alibaba-cloud-ops-mcp-server` MCP Server with any other MCP Client, you
|
|
|
112
125
|
| | GetDiskUsageData | Get Disk Utilization Metric Data | API | Done |
|
|
113
126
|
| | GetDiskTotalData | Get Total Disk Partition Capacity Metric Data | API | Done |
|
|
114
127
|
| | GetDiskUsedData | Get Disk Partition Usage Metric Data | API | Done |
|
|
128
|
+
| Application Management | OOS_CodeDeploy | Deploy applications to ECS instances with automatic artifact upload to OSS | OOS | Done |
|
|
129
|
+
| | OOS_GetDeployStatus | Query deployment status of application groups | API | Done |
|
|
130
|
+
| | OOS_GetLastDeploymentInfo | Retrieve information about the last deployment | API | Done |
|
|
131
|
+
| Local | LOCAL_ListDirectory | List files and subdirectories in a directory | Local | Done |
|
|
132
|
+
| | LOCAL_RunShellScript | Execute shell scripts or commands | Local | Done |
|
|
133
|
+
| | LOCAL_AnalyzeDeployStack | Identify project deployment methods and technology stack | Local | Done |
|
|
134
|
+
|
|
135
|
+
## Deployment Workflow
|
|
136
|
+
|
|
137
|
+
The typical deployment workflow includes:
|
|
138
|
+
|
|
139
|
+
1. **Project Analysis**: Use `LOCAL_AnalyzeDeployStack` to identify the project's technology stack and deployment method
|
|
140
|
+
2. **Build Artifacts**: Build or package the application locally (e.g., create tar.gz or zip files)
|
|
141
|
+
3. **Deploy Application**: Use `OOS_CodeDeploy` to deploy the application to ECS instances
|
|
142
|
+
- Automatically creates application and application group if they don't exist
|
|
143
|
+
- Uploads artifacts to OSS
|
|
144
|
+
- Deploys to specified ECS instances
|
|
145
|
+
4. **Monitor Deployment**: Use `OOS_GetDeployStatus` to check deployment status
|
|
115
146
|
|
|
116
147
|
## Contact us
|
|
117
148
|
|
|
@@ -4,7 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
[中文版本](./README_zh.md)
|
|
6
6
|
|
|
7
|
-
Alibaba Cloud Ops MCP Server is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) server that provides seamless integration with Alibaba Cloud APIs, enabling AI assistants to
|
|
7
|
+
Alibaba Cloud Ops MCP Server is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) server that provides seamless integration with Alibaba Cloud APIs, enabling AI assistants to operate resources on Alibaba Cloud, supporting ECS, Cloud Monitor, OOS, OSS, VPC, RDS and other widely used cloud products. It also enables AI assistants to analyze, build, and deploy applications to Alibaba Cloud ECS instances.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **ECS Management**: Create, start, stop, reboot, delete instances, run commands, view instances, regions, zones, images, security groups, and more
|
|
12
|
+
- **VPC Management**: View VPCs and VSwitches
|
|
13
|
+
- **RDS Management**: List, start, stop, and restart RDS instances
|
|
14
|
+
- **OSS Management**: List, create, delete buckets, and view objects
|
|
15
|
+
- **Cloud Monitor**: Get CPU usage, load average, memory usage, and disk usage metrics for ECS instances
|
|
16
|
+
- **Application Deployment**: Deploy applications to ECS instances with automatic application and application group management
|
|
17
|
+
- **Project Analysis**: Automatically identify project technology stack and deployment methods (npm, Python, Java, Go, Docker, etc.)
|
|
18
|
+
- **Local File Operations**: List directories, run shell scripts, and analyze project structures
|
|
19
|
+
- **Dynamic API Tools**: Support for Alibaba Cloud OpenAPI operations
|
|
8
20
|
|
|
9
21
|
## Prepare
|
|
10
22
|
|
|
@@ -43,8 +55,9 @@ To use `alibaba-cloud-ops-mcp-server` MCP Server with any other MCP Client, you
|
|
|
43
55
|
|
|
44
56
|
## MCP Maketplace Integration
|
|
45
57
|
|
|
46
|
-
* [
|
|
58
|
+
* [Qoder](https://qoder.com) <a href="qoder://aicoding.aicoding-deeplink/mcp/add?name=alibaba-cloud-ops-mcp-server&config=JTdCJTIyY29tbWFuZCUyMiUzQSUyMnV2eCUyMiUyQyUyMmFyZ3MlMjIlM0ElNUIlMjJhbGliYWJhLWNsb3VkLW9wcy1tY3Atc2VydmVyJTQwbGF0ZXN0JTIyJTVEJTJDJTIyZW52JTIyJTNBJTdCJTIyQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX0lEJTIyJTNBJTIyWW91ciUyMEFjY2VzcyUyMEtleSUyMElkJTIyJTJDJTIyQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX1NFQ1JFVCUyMiUzQSUyMllvdXIlMjBBY2Nlc3MlMjBLZXklMjBTRUNSRVQlMjIlN0QlN0Q%3D"><img src="./image/qoder.svg" alt="Install MCP Server" height="20"></a>
|
|
47
59
|
* [Cursor](https://docs.cursor.com/tools) [](https://cursor.com/en/install-mcp?name=alibaba-cloud-ops-mcp-server&config=eyJ0aW1lb3V0Ijo2MDAsImNvbW1hbmQiOiJ1dnggYWxpYmFiYS1jbG91ZC1vcHMtbWNwLXNlcnZlckBsYXRlc3QiLCJlbnYiOnsiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX0lEIjoiWW91ciBBY2Nlc3MgS2V5IElkIiwiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX1NFQ1JFVCI6IllvdXIgQWNjZXNzIEtleSBTZWNyZXQifX0%3D)
|
|
60
|
+
* [Cline](https://cline.bot/mcp-marketplace)
|
|
48
61
|
* [ModelScope](https://www.modelscope.cn/mcp/servers/@aliyun/alibaba-cloud-ops-mcp-server?lang=en_US)
|
|
49
62
|
* [Lingma](https://lingma.aliyun.com/)
|
|
50
63
|
* [Smithery AI](https://smithery.ai/server/@aliyun/alibaba-cloud-ops-mcp-server)
|
|
@@ -60,7 +73,7 @@ To use `alibaba-cloud-ops-mcp-server` MCP Server with any other MCP Client, you
|
|
|
60
73
|
|
|
61
74
|
## Tools
|
|
62
75
|
|
|
63
|
-
| **Product** | **Tool** | **Function** | **
|
|
76
|
+
| **Product** | **Tool** | **Function** | **Implementation** | **Status** |
|
|
64
77
|
| --- | --- | --- | --- | --- |
|
|
65
78
|
| ECS | RunCommand | Run Command | OOS | Done |
|
|
66
79
|
| | StartInstances | Start Instances | OOS | Done |
|
|
@@ -95,6 +108,24 @@ To use `alibaba-cloud-ops-mcp-server` MCP Server with any other MCP Client, you
|
|
|
95
108
|
| | GetDiskUsageData | Get Disk Utilization Metric Data | API | Done |
|
|
96
109
|
| | GetDiskTotalData | Get Total Disk Partition Capacity Metric Data | API | Done |
|
|
97
110
|
| | GetDiskUsedData | Get Disk Partition Usage Metric Data | API | Done |
|
|
111
|
+
| Application Management | OOS_CodeDeploy | Deploy applications to ECS instances with automatic artifact upload to OSS | OOS | Done |
|
|
112
|
+
| | OOS_GetDeployStatus | Query deployment status of application groups | API | Done |
|
|
113
|
+
| | OOS_GetLastDeploymentInfo | Retrieve information about the last deployment | API | Done |
|
|
114
|
+
| Local | LOCAL_ListDirectory | List files and subdirectories in a directory | Local | Done |
|
|
115
|
+
| | LOCAL_RunShellScript | Execute shell scripts or commands | Local | Done |
|
|
116
|
+
| | LOCAL_AnalyzeDeployStack | Identify project deployment methods and technology stack | Local | Done |
|
|
117
|
+
|
|
118
|
+
## Deployment Workflow
|
|
119
|
+
|
|
120
|
+
The typical deployment workflow includes:
|
|
121
|
+
|
|
122
|
+
1. **Project Analysis**: Use `LOCAL_AnalyzeDeployStack` to identify the project's technology stack and deployment method
|
|
123
|
+
2. **Build Artifacts**: Build or package the application locally (e.g., create tar.gz or zip files)
|
|
124
|
+
3. **Deploy Application**: Use `OOS_CodeDeploy` to deploy the application to ECS instances
|
|
125
|
+
- Automatically creates application and application group if they don't exist
|
|
126
|
+
- Uploads artifacts to OSS
|
|
127
|
+
- Deploys to specified ECS instances
|
|
128
|
+
4. **Monitor Deployment**: Use `OOS_GetDeployStatus` to check deployment status
|
|
98
129
|
|
|
99
130
|
## Contact us
|
|
100
131
|
|
|
@@ -4,7 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
[English README](./README.md)
|
|
6
6
|
|
|
7
|
-
Alibaba Cloud Ops MCP Server是一个[模型上下文协议(MCP)](https://modelcontextprotocol.io/introduction)服务器,提供与阿里云API的无缝集成,使AI助手能够操作阿里云上的资源,支持ECS、云监控、OOS
|
|
7
|
+
Alibaba Cloud Ops MCP Server是一个[模型上下文协议(MCP)](https://modelcontextprotocol.io/introduction)服务器,提供与阿里云API的无缝集成,使AI助手能够操作阿里云上的资源,支持ECS、云监控、OOS、OSS、VPC、RDS等广泛使用的云产品。同时,它还使AI助手能够分析、构建和部署应用到阿里云ECS实例。
|
|
8
|
+
|
|
9
|
+
## 功能特性
|
|
10
|
+
|
|
11
|
+
- **ECS 管理**:创建、启动、停止、重启、删除实例,运行命令,查看实例、地域、可用区、镜像、安全组等
|
|
12
|
+
- **VPC 管理**:查看 VPC 和 VSwitch
|
|
13
|
+
- **RDS 管理**:查询、启动、停止、重启 RDS 实例
|
|
14
|
+
- **OSS 管理**:查看、创建、删除存储桶,查看对象信息
|
|
15
|
+
- **云监控**:获取 ECS 实例的 CPU 使用率、负载平均值、内存使用率和磁盘使用率指标
|
|
16
|
+
- **应用部署**:自动部署应用到 ECS 实例,支持自动创建应用和应用分组
|
|
17
|
+
- **项目分析**:自动识别项目技术栈和部署方式(npm、Python、Java、Go、Docker 等)
|
|
18
|
+
- **本地文件操作**:列出目录、执行 shell 脚本、分析项目结构
|
|
19
|
+
- **动态 API 工具**:支持阿里云 OpenAPI 操作
|
|
8
20
|
|
|
9
21
|
## 准备
|
|
10
22
|
|
|
@@ -43,8 +55,9 @@ curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
|
43
55
|
|
|
44
56
|
## MCP市场集成
|
|
45
57
|
|
|
46
|
-
* [
|
|
58
|
+
* [Qoder](https://qoder.com) <a href="qoder://aicoding.aicoding-deeplink/mcp/add?name=alibaba-cloud-ops-mcp-server&config=JTdCJTIyY29tbWFuZCUyMiUzQSUyMnV2eCUyMiUyQyUyMmFyZ3MlMjIlM0ElNUIlMjJhbGliYWJhLWNsb3VkLW9wcy1tY3Atc2VydmVyJTQwbGF0ZXN0JTIyJTVEJTJDJTIyZW52JTIyJTNBJTdCJTIyQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX0lEJTIyJTNBJTIyWW91ciUyMEFjY2VzcyUyMEtleSUyMElkJTIyJTJDJTIyQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX1NFQ1JFVCUyMiUzQSUyMllvdXIlMjBBY2Nlc3MlMjBLZXklMjBTRUNSRVQlMjIlN0QlN0Q%3D"><img src="./image/qoder.svg" alt="Install MCP Server" height="20"></a>
|
|
47
59
|
* [Cursor](https://docs.cursor.com/tools) [](https://cursor.com/en/install-mcp?name=alibaba-cloud-ops-mcp-server&config=eyJ0aW1lb3V0Ijo2MDAsImNvbW1hbmQiOiJ1dnggYWxpYmFiYS1jbG91ZC1vcHMtbWNwLXNlcnZlckBsYXRlc3QiLCJlbnYiOnsiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX0lEIjoiWW91ciBBY2Nlc3MgS2V5IElkIiwiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX1NFQ1JFVCI6IllvdXIgQWNjZXNzIEtleSBTZWNyZXQifX0%3D)
|
|
60
|
+
* [Cline](https://cline.bot/mcp-marketplace)
|
|
48
61
|
* [魔搭](https://www.modelscope.cn/mcp/servers/@aliyun/alibaba-cloud-ops-mcp-server)
|
|
49
62
|
* [通义灵码](https://lingma.aliyun.com/)
|
|
50
63
|
* [Smithery AI](https://smithery.ai/server/@aliyun/alibaba-cloud-ops-mcp-server)
|
|
@@ -95,6 +108,34 @@ curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
|
95
108
|
| | GetDiskUsageData | 获取磁盘利用率指标数据 | API | Done |
|
|
96
109
|
| | GetDiskTotalData | 获取磁盘分区总容量指标数据 | API | Done |
|
|
97
110
|
| | GetDiskUsedData | 获取磁盘分区使用量指标数据 | API | Done |
|
|
111
|
+
| 应用管理 | OOS_CodeDeploy | 部署应用到 ECS 实例,自动上传部署产物到 OSS | OOS | Done |
|
|
112
|
+
| | OOS_GetDeployStatus | 查询应用分组的部署状态 | API | Done |
|
|
113
|
+
| | OOS_GetLastDeploymentInfo | 获取上次部署的信息 | API | Done |
|
|
114
|
+
| 本地工具 | LOCAL_ListDirectory | 列出目录中的文件和子目录 | Local | Done |
|
|
115
|
+
| | LOCAL_RunShellScript | 执行 shell 脚本或命令 | Local | Done |
|
|
116
|
+
| | LOCAL_AnalyzeDeployStack | 识别项目部署方式和技术栈 | Local | Done |
|
|
117
|
+
|
|
118
|
+
## 部署流程
|
|
119
|
+
|
|
120
|
+
典型的部署流程包括:
|
|
121
|
+
|
|
122
|
+
1. **项目分析**:使用 `LOCAL_AnalyzeDeployStack` 识别项目的技术栈和部署方式
|
|
123
|
+
2. **构建产物**:在本地构建或打包应用(例如,创建 tar.gz 或 zip 文件)
|
|
124
|
+
3. **部署应用**:使用 `OOS_CodeDeploy` 将应用部署到 ECS 实例
|
|
125
|
+
- 如果应用和应用分组不存在,会自动创建
|
|
126
|
+
- 自动上传部署产物到 OSS
|
|
127
|
+
- 部署到指定的 ECS 实例
|
|
128
|
+
4. **监控部署**:使用 `OOS_GetDeployStatus` 检查部署状态
|
|
129
|
+
|
|
130
|
+
## 重要提示
|
|
131
|
+
|
|
132
|
+
1. **启动脚本**:启动脚本(`application_start`)必须与上传的产物对应。如果产物是压缩包(tar、tar.gz、zip 等),需要先解压并进入对应目录后再执行启动命令。
|
|
133
|
+
|
|
134
|
+
2. **后台运行**:启动命令应该将程序运行在后台并打印日志到指定文件,使用非交互式命令(如 `unzip -o` 等自动覆盖的命令)。
|
|
135
|
+
|
|
136
|
+
3. **安全组配置**:部署完成后,需要在 ECS 实例的安全组中开放应用端口,否则应用无法从外部访问。
|
|
137
|
+
|
|
138
|
+
4. **ECS 实例**:部署前需要提供 ECS 实例 ID。如果未提供,工具会返回提示信息,引导用户到 ECS 控制台创建实例。
|
|
98
139
|
|
|
99
140
|
## 联系我们
|
|
100
141
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="640" height="180" viewBox="0 0 640 180"><defs><clipPath id="master_svg0_618_04811"><rect x="0" y="0" width="640" height="180" rx="0"/></clipPath><clipPath id="master_svg1_618_04811/167_025500"><rect x="0" y="0" width="180" height="180" rx="0"/></clipPath><clipPath id="master_svg2_618_04811/167_025499"><rect x="206" y="24" width="434" height="132" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_618_04811)"><g clip-path="url(#master_svg1_618_04811/167_025500)"><g style="opacity:0.5;"><path d="M162.00039019775392,104.26335893554688L162.00039019775392,79.27595893554687C162.00039019775392,65.07975893554688,155.82239019775392,53.687358935546875,145.0693901977539,48.01645893554688L89.5315901977539,18.731658935546875L89.2530901977539,19.263304935546874L88.97469019775392,19.794948935546874C99.3227901977539,25.250648935546874,105.2594901977539,36.256958935546876,105.2594901977539,49.99115893554688L105.2594901977539,74.97845893554688C105.2594901977539,75.73165893554688,105.2404901977539,76.52275893554688,105.2024901977539,77.31395893554688C105.19619019775391,77.46585893554688,105.18349019775391,77.61775893554687,105.1708901977539,77.77595893554687L105.1455901977539,78.14935893554687C105.1138901977539,78.64935893554687,105.0822901977539,79.15575893554688,105.0315901977539,79.65575893554688C105.01259019775391,79.85825893554687,104.98729019775391,80.06705893554687,104.9619901977539,80.26965893554687L104.9050901977539,80.74435893554687C104.8543901977539,81.16205893554687,104.81009019775391,81.57345893554688,104.74679019775391,81.99115893554688C104.71519019775391,82.22535893554686,104.6771901977539,82.45315893554687,104.6391901977539,82.68735893554688L104.5822901977539,83.04815893554688C104.51269019775391,83.47215893554687,104.4429901977539,83.89625893554687,104.3607901977539,84.32025893554687C104.2404901977539,84.95315893554688,104.1138901977539,85.57975893554688,103.9746901977539,86.20635893554687L103.93039019775391,86.38985893554687C103.7910901977539,86.99745893554687,103.6391901977539,87.59875893554687,103.4746901977539,88.20005893554688L103.3290901977539,88.73165893554688C103.15819019775391,89.33925893554688,102.98099019775391,89.94685893554687,102.7910901977539,90.55445893554688L102.6201901977539,91.07975893554688C102.4049901977539,91.74435893554687,102.1771901977539,92.40885893554687,101.9366901977539,93.06705893554688C101.8733901977539,93.24435893554687,101.80379019775391,93.41525893554687,101.7341901977539,93.59245893554687L101.62659019775391,93.87725893554688C101.43039019775391,94.38355893554687,101.2341901977539,94.89625893554687,101.0252901977539,95.40255893554688C100.9049901977539,95.70005893554688,100.77209019775391,95.99745893554687,100.6454901977539,96.29495893554687L100.60119019775391,96.40255893554688C100.4366901977539,96.78865893554688,100.2657901977539,97.17475893554688,100.0885901977539,97.55445893554688C99.9366901977539,97.89625893554687,99.77209019775391,98.23165893554688,99.6138901977539,98.56715893554687C99.43039019775391,98.94685893554687,99.2530901977539,99.32025893554687,99.0632901977539,99.69365893554688C98.88599019775391,100.04175893554688,98.70879019775391,100.38355893554687,98.5252901977539,100.72535893554688C98.3480901977539,101.06075893554687,98.1644901977539,101.40255893554688,97.98099019775391,101.73795893554687C97.7910901977539,102.07975893554688,97.59489019775391,102.42155893554687,97.39869019775391,102.76335893554688C97.20879019775391,103.09245893554687,97.01899019775391,103.42785893554688,96.8163901977539,103.75065893554688C96.6138901977539,104.09245893554687,96.4049901977539,104.42785893554688,96.18989019775391,104.76335893554688C95.98729019775391,105.08615893554688,95.7910901977539,105.40255893554688,95.5822901977539,105.71905893554687C95.3670901977539,106.05445893554688,95.1455901977539,106.37725893554688,94.89239019775391,106.75695893554688C94.6898901977539,107.05445893554688,94.48729019775391,107.35195893554688,94.2847901977539,107.64305893554688C94.06959019775391,107.94685893554687,93.8543901977539,108.24435893554687,93.60129019775391,108.59245893554687C93.3670901977539,108.91515893554687,93.13289019775391,109.23165893554688,92.89239019775391,109.54815893554688C92.6581901977539,109.85825893554687,92.42399019775391,110.15575893554687,92.18349019775391,110.45955893554688C91.9366901977539,110.76965893554687,91.6898901977539,111.08605893554687,91.44299019775391,111.38985893554687C91.2277901977539,111.65575893554687,91.00629019775391,111.91525893554687,90.7847901977539,112.17475893554688L90.7404901977539,112.22535893554688C90.4492901977539,112.57345893554688,90.15189019775391,112.91525893554687,89.8480901977539,113.25695893554688C89.60759019775391,113.52915893554687,89.3670901977539,113.79495893554687,89.1265901977539,114.06075893554687C88.8227901977539,114.39625893554687,88.51899019775391,114.71905893554687,88.2087901977539,115.04815893554688C87.97469019775392,115.29495893554687,87.7341901977539,115.53545893554687,87.4935901977539,115.78235893554688C87.0822901977539,116.20005893554688,86.6644901977539,116.60515893554688,86.2404901977539,117.01015893554687L86.05689019775392,117.18735893554687C85.9049901977539,117.33295893554687,85.7594901977539,117.47215893554687,85.60759019775391,117.61775893554687C85.0758901977539,118.11145893554688,84.53799019775391,118.59245893554687,83.98729019775391,119.06665893554687L83.83539019775391,119.19965893554688C83.77849019775391,119.25065893554688,83.71519019775391,119.30765893554687,83.6581901977539,119.35865893554687L83.39869019775391,119.57365893554687C82.9492901977539,119.95365893554687,82.4936901977539,120.32065893554687,82.03799019775391,120.68765893554688C81.89869019775391,120.80165893554687,81.7530901977539,120.90865893554688,81.60759019775391,121.02265893554687L81.4999901977539,121.10465893554688C81.1138901977539,121.40265893554688,80.7277901977539,121.69365893554688,80.3037901977539,122.00365893554688C80.1265901977539,122.13065893554688,79.95569019775391,122.26365893554687,79.77849019775391,122.38965893554688C79.32909019775391,122.71265893554687,78.87969019775392,123.02265893554687,78.42399019775391,123.32665893554687L78.06959019775391,123.57365893554687C77.47469019775392,123.96565893554687,76.8733901977539,124.34565893554688,76.26579019775392,124.71265893554687L75.87969019775392,124.94065893554688C75.39869019775391,125.22565893554687,74.9176901977539,125.50365893554688,74.43039019775391,125.77565893554687C74.2847901977539,125.85865893554687,74.1391901977539,125.93465893554688,73.9936901977539,126.00965893554688L73.76579019775392,126.13065893554688C73.36069019775391,126.34565893554688,72.9619901977539,126.55465893554687,72.55689019775392,126.76365893554687C72.33539019775391,126.87065893554687,72.1138901977539,126.97865893554687,71.89239019775391,127.08565893554687L71.8163901977539,127.12365893554687C71.42399019775391,127.31365893554687,71.03799019775391,127.49165893554688,70.6391901977539,127.66865893554687C70.3859901977539,127.78265893554688,70.13289019775391,127.89665893554688,69.8733901977539,128.00365893554687C69.47469019775392,128.17465893554686,69.06959019775391,128.33965893554688,68.6708901977539,128.4976589355469L68.45569019775391,128.5796589355469C68.27849019775391,128.64965893554688,68.10119019775391,128.71865893554687,67.92399019775391,128.7886589355469C67.48729019775391,128.95365893554685,67.04429019775391,129.10465893554687,66.60119019775391,129.25665893554688L66.36069019775391,129.33965893554688C66.2277901977539,129.38365893554686,66.0948901977539,129.43465893554688,65.9619901977539,129.4786589355469C65.2594901977539,129.70665893554687,64.60759019775391,129.90265893554687,63.97469019775391,130.0796589355469L60.094890197753905,131.14265893554688C59.51899019775391,131.30165893554687,58.94299019775391,131.44665893554688,58.373390197753906,131.5796589355469C58.2657901977539,131.60465893554687,58.164490197753906,131.62365893554687,58.0568901977539,131.64265893554688L57.626590197753906,131.73165893554688C57.303790197753905,131.80165893554687,56.98729019775391,131.87065893554689,56.664490197753906,131.92765893554687C56.53159019775391,131.95365893554685,56.392390197753905,131.97265893554686,56.259490197753905,131.9976589355469L55.74049019775391,132.08565893554686C55.48729019775391,132.13065893554688,55.234190197753904,132.17465893554686,54.98099019775391,132.20665893554687C54.83539019775391,132.22565893554687,54.68989019775391,132.24465893554688,54.54429019775391,132.25665893554688L54.01899019775391,132.32065893554687C53.78479019775391,132.35165893554688,53.550590197753905,132.3776589355469,53.316390197753904,132.40265893554687C53.22149019775391,132.4086589355469,53.126590197753906,132.41565893554687,53.037990197753906,132.42765893554687L52.8227901977539,132.44665893554688C52.45569019775391,132.4786589355469,52.0885901977539,132.51065893554687,51.72149019775391,132.52865893554687C51.582290197753906,132.53565893554688,51.44929019775391,132.54165893554688,51.31009019775391,132.54165893554688L51.10759019775391,132.54165893554688C50.78479019775391,132.56065893554688,50.4682901977539,132.57365893554686,50.15189019775391,132.57365893554686C49.9999901977539,132.57365893554686,49.841690197753906,132.57365893554686,49.68989019775391,132.57365893554686L49.4999901977539,132.57365893554686C49.2024901977539,132.57365893554686,48.89869019775391,132.56665893554685,48.60119019775391,132.55465893554685C48.436690197753904,132.55465893554685,48.27209019775391,132.54165893554688,48.10759019775391,132.52965893554688L47.94299019775391,132.52965893554688C47.63289019775391,132.50365893554687,47.32909019775391,132.48465893554686,47.01899019775391,132.45965893554688L46.6138901977539,132.42165893554687C46.227790197753905,132.38365893554686,45.848090197753905,132.34565893554688,45.461990197753906,132.29465893554686L45.215190197753905,132.26365893554686C44.76579019775391,132.1996589355469,44.316390197753904,132.13065893554688,43.86709019775391,132.04765893554688L43.53159019775391,131.98465893554686C43.253090197753906,131.92765893554687,42.97469019775391,131.87065893554689,42.69619019775391,131.80765893554687C42.259490197753905,131.71265893554687,41.82909019775391,131.60465893554687,41.39871019775391,131.48465893554686L41.2151601977539,131.43465893554688C41.132880197753906,131.41565893554687,41.0569401977539,131.3896589355469,40.974660197753906,131.37065893554689C40.4050301977539,131.20665893554687,39.848070197753906,131.02965893554688,39.32276019775391,130.84565893554688L38.93035019775391,130.6996589355469C38.544280197753906,130.56065893554688,38.15187019775391,130.4086589355469,37.77212019775391,130.25065893554688C37.6265601977539,130.1876589355469,37.480990197753904,130.12365893554687,37.335420197753905,130.06065893554688L37.240480197753904,130.01665893554687C36.90503019775391,129.87065893554689,36.57592019775391,129.71865893554687,36.24681019775391,129.56065893554688L36.094910197753904,129.48465893554686Q36.03795019775391,129.45365893554685,36.00630019775391,129.44065893554688L31.873390197753906,127.27565893554687L34.86706019775391,130.2696589355469L34.96833019775391,130.2696589355469L90.3733901977539,159.4786589355469C90.5632901977539,159.5796589355469,90.75319019775391,159.6746589355469,90.9493901977539,159.7756589355469C91.0126901977539,159.80765893554687,91.0758901977539,159.83265893554687,91.1391901977539,159.86465893554688L91.2594901977539,159.92165893554687C91.60129019775391,160.0856589355469,91.94299019775391,160.24465893554688,92.29749019775392,160.39665893554687L92.39869019775391,160.44065893554688C92.5505901977539,160.50365893554687,92.69619019775391,160.5736589355469,92.8480901977539,160.63665893554688C93.24679019775391,160.80165893554687,93.6455901977539,160.95365893554688,94.0505901977539,161.10465893554687L94.18349019775391,161.15565893554688C94.25319019775391,161.1806589355469,94.31649019775391,161.20665893554687,94.3733901977539,161.23165893554688L94.45569019775391,161.25665893554688C95.0126901977539,161.45365893554688,95.5948901977539,161.63665893554688,96.1771901977539,161.80165893554687C96.2657901977539,161.82665893554687,96.3543901977539,161.85165893554688,96.4429901977539,161.87065893554689L96.6138901977539,161.91565893554687C97.0569901977539,162.03565893554688,97.51259019775391,162.14965893554688,97.9682901977539,162.25065893554688L98.0758901977539,162.2756589355469C98.13289019775391,162.28865893554686,98.18349019775391,162.30165893554687,98.2404901977539,162.31365893554687C98.3733901977539,162.34565893554688,98.51269019775391,162.37065893554689,98.6518901977539,162.39665893554687L99.18989019775391,162.49765893554687C99.6518901977539,162.5796589355469,100.1138901977539,162.65565893554688,100.5822901977539,162.72565893554687L100.84179019775391,162.75665893554688C101.2341901977539,162.80765893554687,101.63289019775391,162.85165893554688,102.0315901977539,162.88965893554686L102.81009019775391,162.95965893554688C102.93039019775391,162.96565893554688,103.0505901977539,162.9726589355469,103.1771901977539,162.9786589355469L103.48099019775391,162.99165893554687C103.68349019775391,163.00365893554687,103.8796901977539,163.01665893554687,104.0885901977539,163.02265893554687C104.3733901977539,163.03565893554688,104.66459019775391,163.03565893554688,104.9493901977539,163.04165893554688L105.18989019775391,163.04165893554688C105.31009019775391,163.04165893554688,105.42409019775391,163.04165893554688,105.54429019775391,163.04165893554688C105.59489019775391,163.04165893554688,105.6391901977539,163.04165893554688,105.68989019775391,163.04165893554688C105.9999901977539,163.04165893554688,106.31009019775391,163.02965893554688,106.6835901977539,163.01065893554687L106.8860901977539,163.01065893554687C107.0252901977539,162.99765893554687,107.1708901977539,162.99765893554687,107.31649019775391,162.98465893554686C107.68989019775391,162.96565893554688,108.06959019775391,162.93465893554688,108.4493901977539,162.90265893554687L108.6518901977539,162.88365893554686C108.75319019775391,162.87765893554686,108.8543901977539,162.87065893554689,109.01269019775391,162.85165893554688C109.2341901977539,162.82665893554687,109.45569019775391,162.80165893554687,109.6771901977539,162.7756589355469L110.1771901977539,162.71265893554687C110.34179019775391,162.69365893554686,110.50629019775391,162.6746589355469,110.6708901977539,162.64965893554688C110.9366901977539,162.61165893554687,111.19619019775391,162.56665893554688,111.4619901977539,162.52265893554687L111.9683901977539,162.44065893554688C112.1138901977539,162.41565893554687,112.2594901977539,162.39665893554687,112.4050901977539,162.36465893554688C112.7341901977539,162.30165893554687,113.0632901977539,162.23165893554688,113.39239019775391,162.16165893554688L113.7974901977539,162.0796589355469C113.91769019775391,162.05465893554688,114.0379901977539,162.02965893554688,114.15819019775391,162.00365893554687C114.74679019775391,161.87065893554689,115.33549019775391,161.71865893554687,115.93039019775391,161.55465893554688L119.81009019775391,160.49165893554687C120.4493901977539,160.31365893554687,121.1202901977539,160.11765893554687,121.8480901977539,159.87765893554686C121.98739019775391,159.83265893554687,122.1202901977539,159.78865893554686,122.25319019775391,159.73765893554688L122.50629019775391,159.64965893554688C122.9619901977539,159.49165893554687,123.41769019775391,159.33265893554687,123.86709019775391,159.1686589355469C124.0632901977539,159.09865893554687,124.25319019775391,159.01665893554687,124.4429901977539,158.94065893554688L124.62659019775391,158.86465893554688C125.0379901977539,158.69965893554686,125.45569019775391,158.53565893554688,125.8607901977539,158.35865893554688C126.1202901977539,158.24465893554688,126.3797901977539,158.13065893554688,126.6455901977539,158.01665893554687C127.0505901977539,157.83265893554687,127.4493901977539,157.64965893554688,127.8480901977539,157.45965893554688L127.98099019775391,157.39665893554687C128.18989019775393,157.29465893554686,128.39869019775392,157.19365893554686,128.6075901977539,157.09265893554686C129.02529019775392,156.88365893554686,129.4366901977539,156.6686589355469,129.8480901977539,156.44665893554688L130.07599019775392,156.32665893554687C130.2278901977539,156.24465893554688,130.3797901977539,156.1686589355469,130.52529019775392,156.0856589355469C131.02529019775392,155.81365893554687,131.5126901977539,155.52265893554687,132.0063901977539,155.23165893554688L132.1703901977539,155.13665893554688C132.2463901977539,155.09265893554686,132.32239019775392,155.04765893554688,132.4053901977539,155.00365893554687C132.9933901977539,154.64965893554688,133.5763901977539,154.28265893554686,134.1523901977539,153.90265893554687L134.55039019775393,153.63065893554688L146.7463901977539,159.18765893554686C153.8733901977539,162.43465893554688,161.9743901977539,157.22565893554687,161.9743901977539,149.38965893554686L161.9743901977539,104.25065893554688Q161.9743901977539,104.24435893554687,161.9743901977539,104.23795893554687L162.00039019775392,104.26335893554688Z" fill="#2ADB5C" fill-opacity="1"/></g><g><path d="M89.5633,18.74431220703125C89.3734,18.64305220703125,89.1835,18.54811220703125,88.9937,18.45317220703125C88.8924,18.40254220703125,88.7848,18.35824220703125,88.6835,18.307602207031252C88.3418,18.14305220703125,88,17.98482220703125,87.6582,17.83292220703125C87.4747,17.750642207031248,87.2975,17.67469220703125,87.1076,17.592422207031248C86.7152,17.42786220703125,86.3165,17.27596220703125,85.9114,17.13039220703125C85.8038,17.092422207031248,85.6962,17.04178220703125,85.5823,17.00381220703125C85.557,16.99748220703125,85.5317,16.98482220703125,85.5063,16.978492207031252C84.943,16.78229220703125,84.3734,16.59874220703125,83.7975,16.43419220703125C83.6519,16.38988220703125,83.5063,16.35824220703125,83.3608,16.32026220703125C82.9177,16.20001220703125,82.4684,16.08608820703125,82.019,15.99115120703125C81.924,15.97216420703125,81.83539999999999,15.94051820703125,81.74680000000001,15.92153120703125C81.5506,15.87722720703125,81.3544,15.84558220703125,81.1582,15.80760720703125C81.04429999999999,15.78229020703125,80.92410000000001,15.76330320703125,80.8101,15.73798720703125C80.3544,15.65570820703125,79.89240000000001,15.57975920703125,79.424,15.51646820703125C79.33539999999999,15.50380920703125,79.24680000000001,15.49748020703125,79.1582,15.48482220703125C78.7658,15.43418920703125,78.3797,15.38988520703125,77.981,15.35191120703125C77.8418,15.33925220703125,77.7025,15.32659420703125,77.5633,15.31393620703125C77.443,15.30127820703125,77.3228,15.28861960703125,77.2025,15.28229050703125C77.00630000000001,15.26963230703125,76.8101,15.26330320703125,76.6139,15.25064490703125C76.3861,15.23798670703125,76.1582,15.22532850703125,75.93039999999999,15.21899940703125C75.6266,15.20634114703125,75.3164,15.20634114703125,75.00630000000001,15.20001203609225C74.78479999999999,15.20001203609225,74.557,15.19368292703125,74.33539999999999,15.20001203609225C74.0127,15.20001203609225,73.68350000000001,15.21899940703125,73.3544,15.22532850703125C73.1456,15.23165760703125,72.93039999999999,15.23798670703125,72.72149999999999,15.25064490703125C72.3481,15.26963230703125,71.9683,15.30127820703125,71.5949,15.33292320703125C71.424,15.34558120703125,71.25319999999999,15.35824020703125,71.0823,15.37089820703125C71.0633,15.37089820703125,71.04429999999999,15.37089820703125,71.0316,15.37089820703125C70.7278,15.40254320703125,70.4177,15.44684720703125,70.10759999999999,15.48482220703125C69.8608,15.51646820703125,69.6203,15.54178420703125,69.3734,15.573430207031251C69.0253,15.62406220703125,68.6772,15.68735420703125,68.3291,15.74431620703125C68.10130000000001,15.78229020703125,67.8734,15.81393620703125,67.6456,15.85824020703125C67.25319999999999,15.93418920703125,66.8544,16.01646820703125,66.45570000000001,16.10507520703125C66.2658,16.14305020703125,66.0823,16.18102520703125,65.89240000000001,16.22533220703125C65.3038,16.35824220703125,64.71520000000001,16.51014220703125,64.1266,16.67469220703125L60.2468,17.73798220703125C59.5633,17.92786220703125,58.8861,18.13039220703125,58.2089,18.35191220703125C57.9873,18.421532207031248,57.7721,18.50381220703125,57.5506,18.57976220703125C57.0949,18.73798220703125,56.6392,18.89621220703125,56.1899,19.06077220703125C55.9367,19.15571220703125,55.6835,19.25697220703125,55.424,19.35824220703125C55.0126,19.52279220703125,54.6013,19.68735220703125,54.1899,19.86457220703125C53.9304,19.978492207031252,53.6645,20.092422207031248,53.4051,20.20634220703125C53,20.38988220703125,52.6013,20.57343220703125,52.2025,20.763302207031252C51.9494,20.88355220703125,51.6962,21.00381220703125,51.443,21.13039220703125C51.0253,21.33925220703125,50.6139,21.55444220703125,50.2025,21.77596220703125C49.9747,21.89621220703125,49.7468,22.01647220703125,49.5253,22.136722207031248C49.0253,22.40887220703125,48.538,22.70001220703125,48.0443,22.99115220703125C47.9114,23.06710220703125,47.7785,23.14305220703125,47.6456,23.22533220703125C47.0569,23.57976220703125,46.4747,23.95317220703125,45.892399999999995,24.332922207031253C45.8607,24.351912207031248,45.8291,24.37723220703125,45.7975,24.396212207031247C45.6709,24.478492207031252,45.5506,24.567102207031247,45.4304,24.649382207031252C44.962,24.965832207031248,44.5,25.28231220703125,44.0443,25.61141220703125C43.8544,25.75061220703125,43.664500000000004,25.88991220703125,43.4747,26.02281220703125C43.075900000000004,26.32031220703125,42.6772,26.61771220703125,42.284800000000004,26.92151220703125C42.1012,27.060812207031248,41.917699999999996,27.20631220703125,41.7405,27.34561220703125C41.272099999999995,27.71901220703125,40.803799999999995,28.098712207031248,40.3418,28.48481220703125C40.2531,28.560812207031248,40.164500000000004,28.63041220703125,40.075900000000004,28.70001220703125C40.0569,28.712712207031252,40.038,28.731612207031247,40.019,28.74431220703125C39.924,28.82661220703125,39.8354,28.91521220703125,39.7405,28.99751220703125C39.183499999999995,29.47851220703125,38.626599999999996,29.972212207031248,38.0886,30.47851220703125C37.8671,30.68101220703125,37.6582,30.88991220703125,37.4367,31.098712207031248C37.006299999999996,31.51011220703125,36.582300000000004,31.92781220703125,36.1582,32.35191220703125C36.0443,32.46581220703125,35.9304,32.573412207031254,35.8164,32.687312207031255C35.683499999999995,32.82031220703125,35.5633,32.96581220703125,35.4304,33.098712207031255C35.1139,33.43421220703125,34.7975,33.76961220703125,34.487300000000005,34.11141220703125C34.2405,34.383512207031245,33.993700000000004,34.65571220703125,33.7468,34.92781220703125C33.4367,35.275912207031254,33.1392,35.63041220703125,32.8354,35.97851220703125C32.6835,36.15571220703125,32.5316,36.326612207031246,32.3861,36.503812207031245C32.2975,36.61141220703125,32.2088,36.72531220703125,32.1202,36.83291220703125C31.8607,37.14941220703125,31.607599999999998,37.46581220703125,31.3607,37.78861220703125C31.1202,38.098712207031255,30.8734,38.40891220703125,30.6329,38.71901220703125C30.3861,39.04181220703125,30.1456,39.37091220703125,29.905,39.70001220703125C29.7531,39.90891220703125,29.594900000000003,40.11141220703125,29.442999999999998,40.326612207031246C29.3607,40.44051220703125,29.2911,40.55441220703125,29.2088,40.66841220703125C28.987299999999998,40.984812207031254,28.772100000000002,41.307612207031255,28.5506,41.624112207031246C28.3228,41.95951220703125,28.094900000000003,42.294912207031246,27.8734,42.63671220703125C27.664540000000002,42.95951220703125,27.45568,43.28861220703125,27.253149999999998,43.617712207031246C27.11391,43.83291220703125,26.97467,44.04811220703125,26.84176,44.26961220703125C26.765810000000002,44.396212207031255,26.69619,44.52911220703125,26.61391,44.65571220703125C26.41138,44.99111220703125,26.21517,45.326612207031246,26.0253,45.66841220703125C25.82277,46.016512207031255,25.62657,46.36461220703125,25.43036,46.71901220703125C25.24049,47.06081220703125,25.05695,47.40891220703125,24.8734,47.75061220703125C24.75948,47.96581220703125,24.63289,48.18101220703125,24.5253,48.40251220703125C24.45568,48.53541220703125,24.39872,48.66841220703125,24.3291,48.80131220703125C24.13289,49.18731220703125,23.94935,49.57341220703125,23.75948,49.95951220703125C23.594920000000002,50.30131220703125,23.43036,50.64301220703125,23.27214,50.99111220703125C23.094920000000002,51.38351220703125,22.924030000000002,51.77601220703125,22.753149999999998,52.16841220703125C22.65188,52.40251220703125,22.537959999999998,52.63671220703125,22.44302,52.87721220703125C22.39872,52.97851220703125,22.36074,53.08611220703125,22.31644,53.19371220703125C22.10125,53.70631220703125,21.90505,54.22531220703125,21.70251,54.75061220703125C21.594920000000002,55.02911220703125,21.48732,55.30131220703125,21.38606,55.57971220703125C21.13922,56.25061220703125,20.91138,56.92791220703125,20.68986,57.61141220703125C20.65188,57.72531220703125,20.60758,57.83921220703125,20.5696,57.95951220703125C20.5696,57.97221220703125,20.56327,57.99111220703125,20.55695,58.00381220703125C20.537959999999998,58.05441220703125,20.5253,58.11141220703125,20.50631,58.16201220703125C20.31011,58.78231220703125,20.13289,59.40251220703125,19.95568,60.02281220703125C19.90505,60.20631220703125,19.85441,60.38361220703125,19.81011,60.56711220703125C19.64555,61.18101220703125,19.48732,61.80131220703125,19.34808,62.42151220703125C19.33543,62.48481220703125,19.31644,62.54811220703125,19.30378,62.61141220703125C19.1772,63.15571220703125,19.06327,63.70001220703125,18.955679,64.25061220703125C18.936692,64.35191220703125,18.924034,64.44681220703126,18.905046,64.54811220703125C18.816439,65.00381220703125,18.746818,65.45951220703125,18.670869,65.92151220703124C18.613907,66.25701220703125,18.556945,66.59871220703124,18.506312,66.93421220703125C18.436692,67.41521220703126,18.386059,67.89621220703125,18.329097,68.37721220703125C18.291122,68.69371220703124,18.246818,69.01011220703126,18.221502,69.32661220703125C18.170869,69.85821220703124,18.132894,70.39621220703125,18.101249,70.93421220703125C18.0822614,71.20001220703125,18.056945,71.45951220703125,18.0442867,71.72531220703125C18.0189873,72.50381220703125,18,73.30761220703124,18,74.10511220703125L18,99.09241220703124C18,108.20001220703125,20.58228,115.97801220703126,25.01266,121.83901220703125C25.4557,122.42801220703124,25.91772,122.99101220703125,26.392409999999998,123.54201220703125C27.11392,124.36501220703126,27.867089999999997,125.14301220703125,28.6646,125.87101220703126C30.519,127.57301220703125,32.582300000000004,129.02901220703126,34.816500000000005,130.20601220703125L90.3544,159.48501220703125C80.1519,154.10501220703125,73.54429999999999,142.94701220703126,73.538,128.37101220703124L73.538,103.38351220703125C73.538,102.58611220703125,73.557,101.78231220703125,73.5949,100.98481220703125C73.60759999999999,100.71901220703126,73.6329,100.45951220703125,73.6519,100.19371220703125C73.6899,99.65571220703124,73.72149999999999,99.12411220703125,73.7722,98.58611220703125C73.8038,98.26961220703124,73.8481,97.95321220703126,73.8797,97.63671220703125C73.9367,97.15571220703124,73.9873,96.67471220703125,74.057,96.19371220703125C74.10759999999999,95.85831220703125,74.16460000000001,95.51651220703125,74.22149999999999,95.18101220703124C74.2975,94.72531220703125,74.3734,94.26331220703125,74.45570000000001,93.80761220703126C74.576,93.16201220703125,74.7089,92.51651220703125,74.8544,91.87721220703125C74.8671,91.81391220703125,74.8861,91.75071220703126,74.89869999999999,91.68741220703124C75.04429999999999,91.06711220703124,75.1962,90.44681220703124,75.3608,89.83291220703126C75.4114,89.65571220703124,75.45570000000001,89.47221220703125,75.50630000000001,89.29491220703125C75.6772,88.67471220703125,75.8608,88.04811220703125,76.057,87.43421220703125C76.076,87.38361220703125,76.0886,87.32661220703125,76.10759999999999,87.27601220703124C76.1456,87.14941220703125,76.1962,87.01651220703125,76.2405,86.88991220703124C76.462,86.21271220703125,76.6899,85.52911220703125,76.9367,84.85821220703124C77.038,84.57981220703125,77.1456,84.30761220703126,77.25319999999999,84.02911220703125C77.4494,83.51011220703126,77.6519,82.99121220703125,77.8671,82.47221220703125C78.00630000000001,82.13041220703126,78.1582,81.78861220703125,78.3038,81.45321220703126C78.4747,81.06081220703125,78.6456,80.66841220703125,78.8228,80.27601220703124C78.981,79.92791220703126,79.1456,79.58611220703125,79.3101,79.24431220703126C79.49369999999999,78.85821220703124,79.6836,78.47221220703125,79.8798,78.08611220703125C80.057,77.73171220703125,80.2405,77.38361220703125,80.42410000000001,77.02911220703125C80.60759999999999,76.68101220703124,80.7911,76.33931220703124,80.981,75.99751220703125C81.1772,75.64311220703125,81.3734,75.29501220703125,81.576,74.94681220703126C81.7722,74.61141220703125,81.9684,74.26961220703126,82.1646,73.93421220703125C82.3734,73.58611220703125,82.5886,73.24431220703124,82.8038,72.90261220703124C83.0063,72.57341220703125,83.2152,72.25071220703126,83.4241,71.92151220703124C83.6456,71.57981220703125,83.8734,71.24431220703124,84.1013,70.90891220703125C84.3165,70.58611220703125,84.5317,70.26961220703126,84.7595,69.95321220703124C84.9874,69.63041220703124,85.2215,69.30761220703124,85.4557,68.99121220703125C85.6962,68.66201220703125,85.9367,68.33291220703126,86.1836,68.01011220703126C86.4241,67.69371220703124,86.6646,67.38991220703124,86.9114,67.07981220703125C87.1646,66.76331220703125,87.4177,66.44051220703125,87.6709,66.12411220703126C87.9051,65.83931220703124,88.1456,65.55441220703125,88.3861,65.26961220703126C88.6899,64.91521220703126,88.9874,64.56081220703125,89.2975,64.21271220703125C89.538,63.94051220703125,89.7848,63.66841220703125,90.0317,63.39621220703125C90.3418,63.05441220703125,90.6582,62.71901220703125,90.9747,62.38361220703125C91.2152,62.13041220703125,91.4557,61.88361220703125,91.7026,61.63671220703125C92.1203,61.21271220703125,92.5506,60.79491220703125,92.981,60.38361220703125C93.1962,60.17471220703125,93.4114,59.96581220703125,93.6329,59.76331220703125C94.1772,59.25701220703125,94.7279,58.76331220703125,95.2848,58.28231220703125C95.3988,58.18741220703125,95.5063,58.07981220703125,95.6203,57.98481220703125C95.7089,57.90891220703125,95.7975,57.83931220703125,95.8861,57.76961220703125C96.3481,57.38361220703125,96.8101,57.00381220703125,97.2848,56.63041220703125C97.4684,56.48481220703125,97.6519,56.34561220703125,97.8355,56.20631220703125C98.2279,55.90251220703125,98.6266,55.59871220703125,99.0253,55.30761220703125C99.2152,55.16841220703125,99.4051,55.02911220703125,99.5949,54.88991220703125C100.0507,54.56081220703125,100.519,54.23801220703125,100.981,53.92791220703125C101.1013,53.84561220703125,101.2215,53.75701220703125,101.3481,53.68101220703125C101.9557,53.27601220703125,102.5696,52.88991220703125,103.1899,52.51011220703125C103.3228,52.43421220703125,103.4557,52.35821220703125,103.5823,52.28231220703125C104.076,51.99121220703125,104.5696,51.70001220703125,105.0696,51.42791220703125C105.2912,51.30131220703125,105.519,51.18741220703125,105.7469,51.06711220703125C106.1582,50.84561220703125,106.576,50.63041220703125,106.9937,50.42151220703125C107.2468,50.29501220703125,107.4937,50.17471220703125,107.7469,50.05441220703125C108.1456,49.86461220703125,108.5507,49.67471220703125,108.9557,49.49121220703125C109.2152,49.37721220703125,109.4747,49.26331220703125,109.7342,49.14941220703125C110.1456,48.97221220703125,110.557,48.80761220703125,110.9747,48.64311220703125C111.2279,48.54181220703125,111.481,48.44051220703125,111.7342,48.34561220703125C112.1836,48.17471220703125,112.6393,48.01651220703125,113.095,47.86461220703125C113.3165,47.78861220703125,113.5317,47.71271220703125,113.7532,47.63671220703125C114.4304,47.41521220703125,115.1076,47.21271220703125,115.7911,47.02281220703125L119.671,45.95951220703125C120.266,45.79501220703125,120.854,45.64941220703125,121.437,45.516512207031255C121.639,45.47221220703125,121.835,45.43421220703125,122.032,45.38991220703125C122.418,45.307612207031255,122.804,45.21901220703125,123.184,45.14941220703125C123.418,45.105112207031254,123.652,45.073412207031254,123.886,45.035512207031246C124.228,44.97851220703125,124.57,44.915212207031246,124.911,44.86461220703125C125.158,44.826612207031246,125.405,44.807612207031255,125.652,44.77601220703125C125.975,44.73801220703125,126.297,44.693712207031254,126.62,44.66201220703125C126.791,44.64311220703125,126.956,44.63671220703125,127.127,44.624112207031246C127.506,44.592412207031245,127.886,44.56081220703125,128.25900000000001,44.54181220703125C128.46800000000002,44.52911220703125,128.67700000000002,44.52911220703125,128.886,44.516512207031255C129.215,44.503812207031245,129.54399999999998,44.49111220703125,129.873,44.484812207031254C130.101,44.484812207031254,130.32299999999998,44.484812207031254,130.54399999999998,44.484812207031254C130.85399999999998,44.484812207031254,131.16500000000002,44.484812207031254,131.46800000000002,44.503812207031245C131.696,44.51011220703125,131.924,44.52281220703125,132.152,44.535512207031246C132.46800000000002,44.55441220703125,132.785,44.573412207031254,133.095,44.598712207031255C133.23399999999998,44.61141220703125,133.373,44.624112207031246,133.513,44.63671220703125C133.905,44.67471220703125,134.298,44.71901220703125,134.69,44.76961220703125C134.779,44.782312207031254,134.86700000000002,44.78861220703125,134.95600000000002,44.801312207031245C135.424,44.86461220703125,135.886,44.94051220703125,136.34199999999998,45.02281220703125C136.45600000000002,45.04181220703125,136.576,45.06711220703125,136.69,45.092412207031245C136.981,45.14941220703125,137.26600000000002,45.212712207031245,137.55700000000002,45.27601220703125C138.006,45.37721220703125,138.45600000000002,45.49111220703125,138.899,45.605112207031254C139.04399999999998,45.64301220703125,139.19,45.68101220703125,139.33499999999998,45.71901220703125C139.911,45.883512207031245,140.481,46.06081220703125,141.04399999999998,46.25701220703125C141.184,46.307612207031255,141.316,46.35821220703125,141.45600000000002,46.40891220703125C141.85399999999998,46.55441220703125,142.253,46.706312207031246,142.64600000000002,46.87091220703125C142.829,46.94681220703125,143.013,47.02911220703125,143.196,47.11141220703125C143.54399999999998,47.26331220703125,143.886,47.42151220703125,144.22199999999998,47.58611220703125C144.519,47.73171220703125,144.81,47.87091220703125,145.101,48.02281220703125L89.5633,18.74431220703125Z" fill="#2ADB5C" fill-opacity="1"/></g></g><g clip-path="url(#master_svg2_618_04811/167_025499)"><g><path d="M276.62,136.66Q267.24,136.66,258.77,133.01999999999998Q250.3,129.38,243.72,122.94Q237.14,116.5,233.57,108.03Q230,99.56,230,90.03999999999999Q230,80.52000000000001,233.64,71.77Q237.28,63.019999999999996,243.72,56.72Q250.16,50.28,258.63,46.64Q267.1,43,276.62,43Q286.14,43,294.68,46.64Q303.22,50.28,309.65999999999997,56.72Q316.1,63.16,319.74,71.84Q323.38,80.52000000000001,323.38,90.03999999999999Q323.38,99.97999999999999,319.46,108.8Q315.54,117.62,308.54,124.06L323.38,124.06L323.38,136.66L276.62,136.66ZM276.62,55.74Q269.76,55.74,263.53,58.33Q257.3,60.92,252.54,65.68Q247.92000000000002,70.3,245.26,76.67Q242.6,83.03999999999999,242.6,90.03999999999999Q242.6,96.9,245.19,103.13Q247.78,109.36,252.54,114.12Q257.3,118.88,263.53,121.47Q269.76,124.06,276.62,124.06Q283.48,124.06,289.71,121.47Q295.94,118.88,300.7,114.12Q305.46,109.36,308.05,103.13Q310.64,96.9,310.64,90.03999999999999Q310.64,83.03999999999999,307.98,76.67Q305.32,70.3,300.7,65.68Q295.94,60.92,289.71,58.33Q283.48,55.74,276.62,55.74ZM370,137.07999999999998Q362.86,137.07999999999998,356.42,134.28Q349.98,131.48000000000002,345.08,126.58Q340.18,121.68,337.38,115.24Q334.58,108.8,334.58,101.66Q334.58,94.38,337.38,87.8Q340.18,81.22,345.08,76.32Q349.98,71.42,356.42,68.69Q362.86,65.96000000000001,370,65.96000000000001Q377.28,65.96000000000001,383.86,68.69Q390.44,71.42,395.34000000000003,76.32Q400.24,81.22,402.97,87.8Q405.7,94.38,405.7,101.66Q405.7,108.8,402.97,115.24Q400.24,121.68,395.34000000000003,126.58Q390.44,131.48000000000002,383.86,134.28Q377.28,137.07999999999998,370,137.07999999999998ZM370,78.42Q360.62,78.42,353.9,85.14Q350.68,88.36,348.86,92.7Q347.04,97.03999999999999,347.04,101.66Q347.04,106.28,348.86,110.48Q350.68,114.68,353.9,117.9Q357.12,121.12,361.25,122.94Q365.38,124.76,370,124.76Q374.62,124.76,378.96000000000004,122.94Q383.3,121.12,386.38,117.9Q389.46000000000004,114.68,391.28,110.48Q393.1,106.28,393.1,101.66Q393.1,97.03999999999999,391.28,92.7Q389.46000000000004,88.36,386.38,85.14Q383.3,81.92,379.03,80.17Q374.76,78.42,370,78.42ZM472.76,136.38L472.76,125.6Q468.28,130.92000000000002,462.19,134Q456.1,137.07999999999998,449.52,137.07999999999998Q442.1,137.07999999999998,435.65999999999997,134.35Q429.22,131.62,424.46000000000004,126.58Q419.56,121.54,416.83000000000004,115.03Q414.1,108.52,414.1,101.24000000000001Q414.1,93.96000000000001,416.83000000000004,87.45Q419.56,80.94,424.46000000000004,75.9Q429.22,70.86,435.65999999999997,68.13Q442.1,65.4,449.52,65.4Q456.8,65.4,462.75,68.34Q468.7,71.28,472.76,76.46000000000001L472.76,43.419998L485.08000000000004,43.419998L485.08000000000004,136.38L472.76,136.38ZM449.52,78.14Q444.9,78.14,440.7,79.89Q436.5,81.64,433.41999999999996,84.86Q430.34000000000003,88.08,428.52,92.35Q426.7,96.62,426.7,101.24000000000001Q426.7,110.62,433.41999999999996,117.62Q436.5,120.84,440.7,122.66Q444.9,124.48,449.52,124.48Q454.14,124.48,458.40999999999997,122.66Q462.68,120.84,465.76,117.62Q472.48,110.62,472.48,101.24000000000001Q472.48,96.62,470.65999999999997,92.35Q468.84000000000003,88.08,465.76,84.86Q462.68,81.64,458.40999999999997,79.89Q454.14,78.14,449.52,78.14ZM511.12,106.7Q511.12,110.06,513.5699999999999,113.7Q516.02,117.34,519.24,119.86Q525.12,124.48,532.96,124.48Q545.4200000000001,124.48,553.26,112.44L563.9,118.74Q558.44,127.56,550.46,132.32Q542.48,137.07999999999998,532.96,137.07999999999998Q525.8199999999999,137.07999999999998,519.38,134.35Q512.94,131.62,508.04,126.72Q503.14,121.82,500.41,115.38Q497.68,108.94,497.68,101.8Q497.68,94.66,500.41,88.15Q503.14,81.64,508.04,76.74000000000001Q512.8,71.84,519.31,69.18Q525.8199999999999,66.52,532.96,66.52Q540.1,66.52,546.61,69.18Q553.12,71.84,557.88,76.74000000000001Q568.24,87.38,568.24,101.38Q568.24,103.9,567.8199999999999,106.7L511.12,106.7ZM532.96,78Q527.22,78,522.1800000000001,80.52000000000001Q517.14,83.03999999999999,514.13,87.17Q511.12,91.3,511.12,95.92L554.8,95.92Q554.8,91.3,551.79,87.17Q548.78,83.03999999999999,543.74,80.52000000000001Q538.7,78,532.96,78ZM612.06,79.82Q608.7,78.28,606.04,78.28Q600.44,78.28,596.8,82.2Q592.88,86.4,592.88,91.86L592.88,136.38L580.8399999999999,136.38L580.8399999999999,91.86Q580.8399999999999,84.3,584.69,78Q588.54,71.7,595.26,68.2Q600.3,65.82,606.04,65.82Q610.6600000000001,65.82,614.86,67.5Q619.06,69.18,623.6800000000001,72.96000000000001L612.06,79.82Z" fill="#2B3547" fill-opacity="1"/></g></g></g></svg>
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "alibaba-cloud-ops-mcp-server"
|
|
3
|
-
version = "0.9.
|
|
3
|
+
version = "0.9.13"
|
|
4
4
|
description = "A MCP server for Alibaba Cloud"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
7
|
-
{ name = "Zheng Dayu", email = "dayu.zdy@alibaba-inc.com" }
|
|
7
|
+
{ name = "Zheng Dayu", email = "dayu.zdy@alibaba-inc.com" },
|
|
8
|
+
{ name = "Zhao Shuaibo", email = "zhaoshuaibo.zsb@alibaba-inc.com" },
|
|
8
9
|
]
|
|
9
10
|
requires-python = ">=3.10"
|
|
10
11
|
dependencies = [
|
|
11
12
|
"alibabacloud-cms20190101>=3.1.4",
|
|
12
13
|
"alibabacloud-ecs20140526>=6.1.0",
|
|
13
|
-
"alibabacloud-oos20190601>=3.
|
|
14
|
+
"alibabacloud-oos20190601>=3.5.0",
|
|
14
15
|
"alibabacloud_oss_v2>=1.1.0",
|
|
15
|
-
"alibabacloud-credentials>=1.0.
|
|
16
|
+
"alibabacloud-credentials>=1.0.3",
|
|
16
17
|
"click>=8.1.8",
|
|
17
18
|
"fastmcp==2.8.0",
|
|
18
19
|
"pydantic==2.11.3"
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
import logging
|
|
3
|
+
import json
|
|
4
|
+
import uuid
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from typing import Dict, Any, Optional
|
|
7
|
+
|
|
8
|
+
from alibabacloud_oos20190601.client import Client as oos20190601Client
|
|
9
|
+
from alibabacloud_ecs20140526.client import Client as ecs20140526Client
|
|
10
|
+
from alibaba_cloud_ops_mcp_server.tools.oss_tools import create_client as create_oss_client
|
|
11
|
+
import alibabacloud_oss_v2 as oss
|
|
12
|
+
|
|
13
|
+
logger = logging.getLogger(__name__)
|
|
14
|
+
|
|
15
|
+
# Global variable to store the project path
|
|
16
|
+
_project_path: Optional[Path] = None
|
|
17
|
+
from alibabacloud_credentials.client import Client as CredClient
|
|
18
|
+
from alibabacloud_tea_openapi.models import Config
|
|
19
|
+
from fastmcp.server.dependencies import get_http_request
|
|
20
|
+
from alibaba_cloud_ops_mcp_server.settings import settings
|
|
21
|
+
|
|
22
|
+
logger = logging.getLogger(__name__)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def get_credentials_from_header():
|
|
26
|
+
credentials = None
|
|
27
|
+
try:
|
|
28
|
+
request = get_http_request()
|
|
29
|
+
headers = request.headers
|
|
30
|
+
access_key_id = headers.get('x-acs-accesskey-id', None)
|
|
31
|
+
access_key_secret = headers.get('x-acs-accesskey-secret', None)
|
|
32
|
+
token = headers.get('x-acs-security-token', None)
|
|
33
|
+
|
|
34
|
+
if access_key_id:
|
|
35
|
+
credentials = {
|
|
36
|
+
'AccessKeyId': access_key_id,
|
|
37
|
+
'AccessKeySecret': access_key_secret,
|
|
38
|
+
'SecurityToken': token
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
except Exception as e:
|
|
42
|
+
logger.info(f'get_credentials_from_header error: {e}')
|
|
43
|
+
return credentials
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def create_config():
|
|
47
|
+
credentials = get_credentials_from_header()
|
|
48
|
+
|
|
49
|
+
if credentials:
|
|
50
|
+
access_key_id = credentials.get('AccessKeyId')
|
|
51
|
+
access_key_secret = credentials.get('AccessKeySecret')
|
|
52
|
+
token = credentials.get('SecurityToken')
|
|
53
|
+
config = Config(
|
|
54
|
+
access_key_id=access_key_id,
|
|
55
|
+
access_key_secret=access_key_secret,
|
|
56
|
+
security_token=token
|
|
57
|
+
)
|
|
58
|
+
elif settings.headers_credential_only:
|
|
59
|
+
config = Config()
|
|
60
|
+
else:
|
|
61
|
+
credentials_client = CredClient()
|
|
62
|
+
config = Config(credential=credentials_client)
|
|
63
|
+
|
|
64
|
+
config.user_agent = 'alibaba-cloud-ops-mcp-server'
|
|
65
|
+
return config
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def set_project_path(project_path: Optional[str] = None):
|
|
69
|
+
"""
|
|
70
|
+
Set the project root path for code deployment.
|
|
71
|
+
This determines where the .code_deploy directory will be created.
|
|
72
|
+
|
|
73
|
+
Args:
|
|
74
|
+
project_path: The root path of the project. If None, will use current working directory.
|
|
75
|
+
"""
|
|
76
|
+
global _project_path
|
|
77
|
+
if project_path:
|
|
78
|
+
_project_path = Path(project_path).resolve()
|
|
79
|
+
logger.info(f"[set_project_path] Project path set to: {_project_path}")
|
|
80
|
+
else:
|
|
81
|
+
_project_path = None
|
|
82
|
+
logger.info(f"[set_project_path] Project path reset to None, will use current working directory")
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def _get_code_deploy_base_dir() -> Path:
|
|
86
|
+
"""
|
|
87
|
+
Get the .code_deploy base directory in the project root directory.
|
|
88
|
+
This ensures each project has its own isolated deployment configuration.
|
|
89
|
+
|
|
90
|
+
If project_path is set, use it. Otherwise, use current working directory.
|
|
91
|
+
"""
|
|
92
|
+
if _project_path is not None:
|
|
93
|
+
return _project_path / '.code_deploy'
|
|
94
|
+
return Path.cwd() / '.code_deploy'
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
CODE_DEPLOY_BASE_DIR = _get_code_deploy_base_dir()
|
|
98
|
+
CODE_DEPLOY_DIR = CODE_DEPLOY_BASE_DIR
|
|
99
|
+
RELEASE_DIR = CODE_DEPLOY_DIR / 'release'
|
|
100
|
+
APPLICATION_JSON_FILE = CODE_DEPLOY_DIR / 'application.json'
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def ensure_code_deploy_dirs():
|
|
104
|
+
"""
|
|
105
|
+
Ensure that the .code_deploy and release directories exist (in the project root directory)
|
|
106
|
+
"""
|
|
107
|
+
# Recalculate paths to ensure we use the current working directory
|
|
108
|
+
code_deploy_dir = _get_code_deploy_base_dir()
|
|
109
|
+
release_dir = code_deploy_dir / 'release'
|
|
110
|
+
|
|
111
|
+
code_deploy_dir.mkdir(parents=True, exist_ok=True)
|
|
112
|
+
release_dir.mkdir(parents=True, exist_ok=True)
|
|
113
|
+
|
|
114
|
+
return code_deploy_dir, code_deploy_dir, release_dir
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def load_application_info() -> Dict[str, Any]:
|
|
118
|
+
"""
|
|
119
|
+
Load deployment information from the .application.json file
|
|
120
|
+
(from the .code_deploy directory under the project root directory)
|
|
121
|
+
"""
|
|
122
|
+
json_file = _get_code_deploy_base_dir() / 'application.json'
|
|
123
|
+
|
|
124
|
+
if json_file.exists():
|
|
125
|
+
try:
|
|
126
|
+
with open(json_file, 'r', encoding='utf-8') as f:
|
|
127
|
+
return json.load(f)
|
|
128
|
+
except Exception as e:
|
|
129
|
+
logger.warning(f"[_load_application_info] Failed to load application info: {e}")
|
|
130
|
+
return {}
|
|
131
|
+
return {}
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def save_application_info(info: Dict[str, Any]):
|
|
135
|
+
"""
|
|
136
|
+
Save deployment information to the .application.json file
|
|
137
|
+
(save it to the .code_deploy directory under the project root directory)
|
|
138
|
+
"""
|
|
139
|
+
json_file = _get_code_deploy_base_dir() / 'application.json'
|
|
140
|
+
|
|
141
|
+
try:
|
|
142
|
+
json_file.parent.mkdir(parents=True, exist_ok=True)
|
|
143
|
+
|
|
144
|
+
existing_info = load_application_info()
|
|
145
|
+
existing_info.update(info)
|
|
146
|
+
|
|
147
|
+
with open(json_file, 'w', encoding='utf-8') as f:
|
|
148
|
+
json.dump(existing_info, f, ensure_ascii=False, indent=2)
|
|
149
|
+
logger.info(f"[_save_application_info] Saved application info to {json_file}")
|
|
150
|
+
except Exception as e:
|
|
151
|
+
logger.error(f"[_save_application_info] Failed to save application info: {e}")
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
def get_release_path(filename: str) -> Path:
|
|
155
|
+
"""
|
|
156
|
+
Get the file path in the release directory
|
|
157
|
+
(the .code_deploy/release directory under the project root directory)
|
|
158
|
+
"""
|
|
159
|
+
release_dir = _get_code_deploy_base_dir() / 'release'
|
|
160
|
+
release_dir.mkdir(parents=True, exist_ok=True)
|
|
161
|
+
return release_dir / filename
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
def create_client(region_id: str) -> oos20190601Client:
|
|
165
|
+
config = create_config()
|
|
166
|
+
config.endpoint = f'oos.{region_id}.aliyuncs.com'
|
|
167
|
+
return oos20190601Client(config)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def create_ecs_client(region_id: str) -> ecs20140526Client:
|
|
171
|
+
config = create_config()
|
|
172
|
+
config.endpoint = f'ecs.{region_id}.aliyuncs.com'
|
|
173
|
+
return ecs20140526Client(config)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def put_bucket_tagging(client: oss.Client, bucket_name: str, tags: dict):
|
|
177
|
+
tag_list = [oss.Tag(key=k, value=v) for k, v in tags.items()]
|
|
178
|
+
tag_set = oss.TagSet(tags=tag_list)
|
|
179
|
+
client.put_bucket_tags(oss.PutBucketTagsRequest(
|
|
180
|
+
bucket=bucket_name,
|
|
181
|
+
tagging=oss.Tagging(tag_set=tag_set)
|
|
182
|
+
))
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def find_bucket_by_tag(client: oss.Client, tag_key: str, tag_value: str) -> Optional[str]:
|
|
186
|
+
paginator = client.list_buckets_paginator(tag_key=tag_key, tag_value=tag_value)
|
|
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}')
|
|
192
|
+
return buckets[0] if buckets else None
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def get_or_create_bucket_for_code_deploy(application_name: str, region_id: str) -> str:
|
|
196
|
+
"""
|
|
197
|
+
Obtain or create an OSS bucket for code deployment
|
|
198
|
+
|
|
199
|
+
1. If a bucket_name is provided, check if it exists. If not, create it and tag it.
|
|
200
|
+
|
|
201
|
+
2. If not provided, search for an existing bucket using the tag (key: app_management, value: code_deploy).
|
|
202
|
+
|
|
203
|
+
3. If found, use it. If not found, create a new bucket and tag it.
|
|
204
|
+
|
|
205
|
+
4. New bucket naming convention: app-{application_name}-code-deploy-{uuid}
|
|
206
|
+
"""
|
|
207
|
+
tag_key = 'app_management'
|
|
208
|
+
tag_value = 'code_deploy'
|
|
209
|
+
client = create_oss_client(region_id=region_id)
|
|
210
|
+
|
|
211
|
+
found_bucket = find_bucket_by_tag(client, tag_key, tag_value)
|
|
212
|
+
if found_bucket:
|
|
213
|
+
logger.info(f"[code_deploy] Found existing bucket by tag: {found_bucket}")
|
|
214
|
+
return found_bucket
|
|
215
|
+
|
|
216
|
+
safe_app_name = application_name.lower().replace('_', '-').replace(' ', '-')
|
|
217
|
+
|
|
218
|
+
safe_app_name = ''.join(c if c.isalnum() or c == '-' else '' for c in safe_app_name)
|
|
219
|
+
bucket_name = f'app-{safe_app_name}-code-deploy-{str(uuid.uuid4())[:8]}'
|
|
220
|
+
|
|
221
|
+
try:
|
|
222
|
+
client.put_bucket(oss.PutBucketRequest(
|
|
223
|
+
bucket=bucket_name,
|
|
224
|
+
create_bucket_configuration=oss.CreateBucketConfiguration(
|
|
225
|
+
storage_class='Standard',
|
|
226
|
+
data_redundancy_type='LRS'
|
|
227
|
+
)
|
|
228
|
+
))
|
|
229
|
+
put_bucket_tagging(client, bucket_name, {tag_key: tag_value})
|
|
230
|
+
logger.info(f"[code_deploy] Created new bucket: {bucket_name}")
|
|
231
|
+
return bucket_name
|
|
232
|
+
except Exception as e:
|
|
233
|
+
logger.info(f"[code_deploy] Failed to create bucket: {e}")
|
|
234
|
+
raise e
|