alibaba-cloud-ops-mcp-server 0.9.23__tar.gz → 0.9.24__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.23 → alibaba_cloud_ops_mcp_server-0.9.24}/PKG-INFO +1 -1
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/pyproject.toml +1 -1
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/tools/application_management_tools.py +40 -75
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/.github/workflows/python-ci.yml +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/.gitignore +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/Dockerfile +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/LICENSE +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/README.md +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/README_mcp_args.md +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/README_zh.md +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/examples/openapi_mcp_quickstart/server.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/image/Alibaba-Cloud-Ops-MCP-User-Group-en.png +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/image/Alibaba-Cloud-Ops-MCP-User-Group-zh.png +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/image/alibaba-cloud.png +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/image/qoder.svg +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/__init__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/__init__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/__main__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/alibabacloud/__init__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/alibabacloud/api_meta_client.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/alibabacloud/exception.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/alibabacloud/static/PROMPT_UNDERSTANDING.md +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/alibabacloud/static/__init__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/alibabacloud/utils.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/config.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/server.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/settings.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/tools/__init__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/tools/api_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/tools/cms_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/tools/common_api_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/tools/local_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/tools/oos_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/src/alibaba_cloud_ops_mcp_server/tools/oss_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/tests/alibabacloud/test_api_meta_client.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/tests/alibabacloud/test_exception.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/tests/alibabacloud/test_utils.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/tests/test_init.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/tests/test_server.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/tests/tools/test_api_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/tests/tools/test_cms_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/tests/tools/test_oos_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/tests/tools/test_oss_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/uv.lock +0 -0
|
@@ -77,81 +77,46 @@ def OOS_CodeDeploy(
|
|
|
77
77
|
|
|
78
78
|
):
|
|
79
79
|
"""
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
fi
|
|
121
|
-
|
|
122
|
-
# 或者通过进程名停止
|
|
123
|
-
pkill -f "node.*app.js" || true
|
|
124
|
-
pkill -f "java.*app.jar" || true
|
|
125
|
-
|
|
126
|
-
# 检查命令是否存在
|
|
127
|
-
command -v npm >/dev/null 2>&1 || { echo "npm未安装"; exit 1; }
|
|
128
|
-
command -v java >/dev/null 2>&1 || { echo "java未安装"; exit 1; }
|
|
129
|
-
command -v python >/dev/null 2>&1 || { echo "python未安装"; exit 1; }
|
|
130
|
-
|
|
131
|
-
2. 启动命令(application_start)必须与上传的产物对应。如果产物是压缩包(tar、tar.gz、zip等),
|
|
132
|
-
需要先解压并进入对应目录后再执行启动命令。
|
|
133
|
-
3. 示例:如果上传的是 app.tar.gz,启动命令应该类似,一般压缩包就在当前目录下,直接解压即可,未经确认路径是否存在,禁止使用cd,使用前务必确认对应文件和路径存在:
|
|
134
|
-
"tar -xzf app.tar.gz && ./start.sh"
|
|
135
|
-
或者如果解压后是Java应用:
|
|
136
|
-
"tar -xzf app.tar.gz && java -jar app.jar"
|
|
137
|
-
4. 确保启动命令能够正确找到并执行解压后的可执行文件或命令,避免部署失败。启动命令应该将程序运行在后台并打印日志到指定文件,
|
|
138
|
-
注意使用非交互式命令,比如unzip -o等自动覆盖的命令,无需交互
|
|
139
|
-
例如:
|
|
140
|
-
- npm 程序示例:
|
|
141
|
-
"tar -xzf app.tar.gz && nohup npm start > /root/app.log 2>&1 &"
|
|
142
|
-
或者分别输出标准输出和错误日志:
|
|
143
|
-
"tar -xzf app.tar.gz && nohup npm start > /root/app.log 2> /root/app.error.log &"
|
|
144
|
-
- Java 程序示例:
|
|
145
|
-
"tar -xzf app.tar.gz && nohup java -jar app.jar > /root/app.log 2>&1 &"
|
|
146
|
-
- Python 程序示例:
|
|
147
|
-
"tar -xzf app.tar.gz && nohup python app.py > /root/app.log 2>&1 &"
|
|
148
|
-
说明:使用 nohup 命令可以让程序在后台运行,即使终端关闭也不会终止;> 重定向标准输出到日志文件;2>&1 将标准错误也重定向到同一文件;& 符号让命令在后台执行。
|
|
149
|
-
4. 应用和应用分组会自动检查是否存在,如果存在则跳过创建,避免重复创建错误。
|
|
150
|
-
5. 如果未提供 ECS 实例 ID,工具会返回提示信息,引导用户到 ECS 控制台创建实例。
|
|
151
|
-
6. 部署完成后,部署信息会保存到项目根目录下的 .code_deploy/.application.json 文件中。
|
|
152
|
-
7. project_path 参数用于指定项目根目录,.code_deploy 目录将在此路径下创建。如果不提供,将尝试从 file_path 推断或使用当前工作目录。
|
|
153
|
-
|
|
154
|
-
创建完成后,你应该以markdown的形式向用户展示你获取的service link,方便用户跳转
|
|
80
|
+
将应用部署到阿里云ECS实例。使用阿里云OOS(运维编排服务)的CodeDeploy功能实现自动化部署。
|
|
81
|
+
|
|
82
|
+
## 前置条件(调用此工具前需完成)
|
|
83
|
+
|
|
84
|
+
1. **识别项目类型**:读取项目配置文件(package.json、pom.xml、requirements.txt等),确定技术栈和部署语言(通过deploy_language参数传入)
|
|
85
|
+
2. **构建部署产物**:执行构建命令生成压缩包(tar.gz、zip等),保存到 `.code_deploy/release` 目录
|
|
86
|
+
3. **准备ECS实例**:确保目标ECS实例已创建,获取实例ID列表
|
|
87
|
+
|
|
88
|
+
## 核心要求
|
|
89
|
+
|
|
90
|
+
### 1. 防御性命令设计(必须)
|
|
91
|
+
启动和停止命令必须包含存在性检查,避免因路径/文件/命令不存在导致失败:
|
|
92
|
+
- 压缩包:先检查文件存在再解压 `[ -f app.tar.gz ] && tar -xzf app.tar.gz || exit 1`
|
|
93
|
+
- 可执行文件:检查文件存在再执行 `[ -f start.sh ] && chmod +x start.sh && ./start.sh || exit 1`
|
|
94
|
+
- 命令可用性:检查命令是否存在 `command -v npm >/dev/null 2>&1 || exit 1`
|
|
95
|
+
- 禁止直接使用 `cd`,必须先验证路径存在
|
|
96
|
+
|
|
97
|
+
### 2. 压缩包处理规范(必须)
|
|
98
|
+
如果产物是压缩包,启动命令必须先解压:
|
|
99
|
+
- 使用非交互式命令:`tar -xzf`、`unzip -o`(自动覆盖,无需确认)
|
|
100
|
+
- 解压后执行启动命令,确保路径对应
|
|
101
|
+
- 示例:`tar -xzf app.tar.gz && nohup java -jar app.jar > /root/app.log 2>&1 &`
|
|
102
|
+
|
|
103
|
+
### 3. 后台运行与日志(必须)
|
|
104
|
+
启动命令必须使用后台运行并重定向日志:
|
|
105
|
+
- 格式:`nohup <command> > /root/app.log 2>&1 &`
|
|
106
|
+
- 说明:nohup保持后台运行,`>` 重定向标准输出,`2>&1` 合并错误输出,`&` 后台执行
|
|
107
|
+
|
|
108
|
+
### 4. 停止命令规范
|
|
109
|
+
停止命令需检查服务/进程是否存在:
|
|
110
|
+
- systemctl服务:`systemctl list-units | grep -q "service" && systemctl stop service`
|
|
111
|
+
- 进程名:`pkill -f "process_pattern" || true`
|
|
112
|
+
|
|
113
|
+
## 注意事项
|
|
114
|
+
|
|
115
|
+
- 应用和应用分组会自动检查,已存在则跳过创建
|
|
116
|
+
- 未提供ECS实例ID时,工具会返回创建引导链接
|
|
117
|
+
- 部署信息自动保存到 `.code_deploy/.application.json`
|
|
118
|
+
- project_path未提供时,会从file_path推断或使用当前目录
|
|
119
|
+
- 部署完成后,以markdown格式展示service_link供用户跳转
|
|
155
120
|
"""
|
|
156
121
|
# Set project path if provided
|
|
157
122
|
if project_path:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/README_mcp_args.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/image/alibaba-cloud.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/tests/test_init.py
RENAMED
|
File without changes
|
{alibaba_cloud_ops_mcp_server-0.9.23 → alibaba_cloud_ops_mcp_server-0.9.24}/tests/test_server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|