alibaba-cloud-ops-mcp-server 0.9.20__tar.gz → 0.9.21__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.
Files changed (44) hide show
  1. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/PKG-INFO +1 -1
  2. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/pyproject.toml +1 -1
  3. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/tools/application_management_tools.py +38 -4
  4. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/.github/workflows/python-ci.yml +0 -0
  5. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/.gitignore +0 -0
  6. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/Dockerfile +0 -0
  7. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/LICENSE +0 -0
  8. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/README.md +0 -0
  9. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/README_mcp_args.md +0 -0
  10. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/README_zh.md +0 -0
  11. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/examples/openapi_mcp_quickstart/server.py +0 -0
  12. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/image/Alibaba-Cloud-Ops-MCP-User-Group-en.png +0 -0
  13. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/image/Alibaba-Cloud-Ops-MCP-User-Group-zh.png +0 -0
  14. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/image/alibaba-cloud.png +0 -0
  15. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/image/qoder.svg +0 -0
  16. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/__init__.py +0 -0
  17. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/__init__.py +0 -0
  18. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/__main__.py +0 -0
  19. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/alibabacloud/__init__.py +0 -0
  20. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/alibabacloud/api_meta_client.py +0 -0
  21. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/alibabacloud/exception.py +0 -0
  22. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/alibabacloud/static/PROMPT_UNDERSTANDING.md +0 -0
  23. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/alibabacloud/static/__init__.py +0 -0
  24. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/alibabacloud/utils.py +0 -0
  25. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/config.py +0 -0
  26. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/server.py +0 -0
  27. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/settings.py +0 -0
  28. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/tools/__init__.py +0 -0
  29. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/tools/api_tools.py +0 -0
  30. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/tools/cms_tools.py +0 -0
  31. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/tools/common_api_tools.py +0 -0
  32. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/tools/local_tools.py +0 -0
  33. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/tools/oos_tools.py +0 -0
  34. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/src/alibaba_cloud_ops_mcp_server/tools/oss_tools.py +0 -0
  35. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/tests/alibabacloud/test_api_meta_client.py +0 -0
  36. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/tests/alibabacloud/test_exception.py +0 -0
  37. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/tests/alibabacloud/test_utils.py +0 -0
  38. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/tests/test_init.py +0 -0
  39. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/tests/test_server.py +0 -0
  40. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/tests/tools/test_api_tools.py +0 -0
  41. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/tests/tools/test_cms_tools.py +0 -0
  42. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/tests/tools/test_oos_tools.py +0 -0
  43. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/tests/tools/test_oss_tools.py +0 -0
  44. {alibaba_cloud_ops_mcp_server-0.9.20 → alibaba_cloud_ops_mcp_server-0.9.21}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alibaba-cloud-ops-mcp-server
3
- Version: 0.9.20
3
+ Version: 0.9.21
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "alibaba-cloud-ops-mcp-server"
3
- version = "0.9.20"
3
+ version = "0.9.21"
4
4
  description = "A MCP server for Alibaba Cloud"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -82,7 +82,7 @@ def OOS_CodeDeploy(
82
82
  步骤 1:识别部署方式
83
83
  - 通过本地文件操作工具读取项目文件(package.json、requirements.txt、pom.xml 等)
84
84
  - 识别项目的部署方式和技术栈(npm、python、java、go 等),项目的部署语言可以作为参数:deploy_language 传入
85
- - 生成构建命令,注意,该构建命令不需要生成构建脚本,不要因此新增sh文件,任何情况下都不要,因为构建命令是CodeDeploy的参数,不需要生成文件
85
+ - 生成构建命令,注意,该构建命令不需要生成构建命令,不要因此新增sh文件,任何情况下都不要,因为构建命令是CodeDeploy的参数,不需要生成文件
86
86
 
87
87
  步骤 2:构建或压缩文件,并记录文件路径
88
88
  - 在本地执行构建命令,生成部署产物(tar.gz、zip 等压缩包)
@@ -92,13 +92,47 @@ def OOS_CodeDeploy(
92
92
  步骤 3:调用此工具进行部署
93
93
 
94
94
  重要提示:
95
- 1. 启动脚本(application_start)必须与上传的产物对应。如果产物是压缩包(tar、tar.gz、zip等),
95
+ 1. 启动命令(application_start)和停止命令必须采用防御性编程策略,确保每一步操作都经过验证,避免因路径不存在、命令缺失等问题导致部署失败。
96
+
97
+ 关键要求
98
+ 1. 压缩包处理规范
99
+ 如果产物是压缩包(tar、tar.gz、zip等),必须先解压再执行启动命令
100
+ 解压前应验证压缩包文件存在
101
+ 使用非交互式解压命令(如 unzip -o、tar -xzf)避免需要用户确认
102
+
103
+ # 正确示例 - 带防御性检查
104
+ [ -f app.tar.gz ] && tar -xzf app.tar.gz || { echo "压缩包不存在"; exit 1; }
105
+ [ -f start.sh ] && chmod +x start.sh && nohup ./start.sh > /root/app.log 2>&1 & || { echo "启动脚本不存在"; exit 1; }
106
+
107
+ # 错误示例 - 无检查直接执行
108
+ cd /var/www/html # 如果目录不存在会失败
109
+ ./start.sh # 如果文件不存在会失败
110
+
111
+ # 防御性停止命令 - 检查服务是否存在
112
+ if systemctl list-units --full --all | grep -q "nginx.service"; then
113
+ systemctl stop nginx
114
+ elif systemctl list-units --full --all | grep -q "apache2.service"; then
115
+ systemctl stop apache2
116
+ elif systemctl list-units --full --all | grep -q "httpd.service"; then
117
+ systemctl stop httpd
118
+ fi
119
+
120
+ # 或者通过进程名停止
121
+ pkill -f "node.*app.js" || true
122
+ pkill -f "java.*app.jar" || true
123
+
124
+ # 检查命令是否存在
125
+ command -v npm >/dev/null 2>&1 || { echo "npm未安装"; exit 1; }
126
+ command -v java >/dev/null 2>&1 || { echo "java未安装"; exit 1; }
127
+ command -v python >/dev/null 2>&1 || { echo "python未安装"; exit 1; }
128
+
129
+ 2. 启动命令(application_start)必须与上传的产物对应。如果产物是压缩包(tar、tar.gz、zip等),
96
130
  需要先解压并进入对应目录后再执行启动命令。
97
- 2. 示例:如果上传的是 app.tar.gz,启动脚本应该类似,一般压缩包就在当前目录下,直接解压即可,不要盲目cd,使用前务必确认对应文件和路径存在:
131
+ 3. 示例:如果上传的是 app.tar.gz,启动命令应该类似,一般压缩包就在当前目录下,直接解压即可,不要盲目cd,使用前务必确认对应文件和路径存在:
98
132
  "tar -xzf app.tar.gz && ./start.sh"
99
133
  或者如果解压后是Java应用:
100
134
  "tar -xzf app.tar.gz && java -jar app.jar"
101
- 3. 确保启动命令能够正确找到并执行解压后的可执行文件或脚本,避免部署失败。启动命令应该将程序运行在后台并打印日志到指定文件,
135
+ 4. 确保启动命令能够正确找到并执行解压后的可执行文件或命令,避免部署失败。启动命令应该将程序运行在后台并打印日志到指定文件,
102
136
  注意使用非交互式命令,比如unzip -o等自动覆盖的命令,无需交互
103
137
  例如:
104
138
  - npm 程序示例: