alibaba-cloud-ops-mcp-server 0.9.5__tar.gz → 0.9.6__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 (41) hide show
  1. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/PKG-INFO +1 -1
  2. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/pyproject.toml +1 -1
  3. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/server.py +9 -1
  4. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/settings.py +1 -0
  5. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/tools/api_tools.py +4 -1
  6. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/test_server.py +4 -4
  7. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/uv.lock +1 -1
  8. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/.github/workflows/python-ci.yml +0 -0
  9. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/.gitignore +0 -0
  10. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/Dockerfile +0 -0
  11. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/LICENSE +0 -0
  12. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/README.md +0 -0
  13. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/README_mcp_args.md +0 -0
  14. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/README_zh.md +0 -0
  15. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/examples/openapi_mcp_quickstart/server.py +0 -0
  16. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/image/Alibaba-Cloud-Ops-MCP-User-Group-en.png +0 -0
  17. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/image/Alibaba-Cloud-Ops-MCP-User-Group-zh.png +0 -0
  18. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/image/alibaba-cloud.png +0 -0
  19. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/__init__.py +0 -0
  20. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/__init__.py +0 -0
  21. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/__main__.py +0 -0
  22. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/alibabacloud/__init__.py +0 -0
  23. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/alibabacloud/api_meta_client.py +0 -0
  24. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/alibabacloud/exception.py +0 -0
  25. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/alibabacloud/static/PROMPT_UNDERSTANDING.md +0 -0
  26. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/alibabacloud/static/__init__.py +0 -0
  27. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/alibabacloud/utils.py +0 -0
  28. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/config.py +0 -0
  29. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/tools/__init__.py +0 -0
  30. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/tools/cms_tools.py +0 -0
  31. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/tools/common_api_tools.py +0 -0
  32. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/tools/oos_tools.py +0 -0
  33. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/tools/oss_tools.py +0 -0
  34. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/alibabacloud/test_api_meta_client.py +0 -0
  35. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/alibabacloud/test_exception.py +0 -0
  36. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/alibabacloud/test_utils.py +0 -0
  37. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/test_init.py +0 -0
  38. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/tools/test_api_tools.py +0 -0
  39. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/tools/test_cms_tools.py +0 -0
  40. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/tools/test_oos_tools.py +0 -0
  41. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/tools/test_oss_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alibaba-cloud-ops-mcp-server
3
- Version: 0.9.5
3
+ Version: 0.9.6
4
4
  Summary: A MCP server for Alibaba Cloud
5
5
  Author-email: Zheng Dayu <dayu.zdy@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.5"
3
+ version = "0.9.6"
4
4
  description = "A MCP server for Alibaba Cloud"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -55,7 +55,13 @@ SUPPORTED_SERVICES_MAP = {
55
55
  default=False,
56
56
  help="Whether to use credentials only from headers",
57
57
  )
58
- def main(transport: str, port: int, host: str, services: str, headers_credential_only: bool):
58
+ @click.option(
59
+ "--env",
60
+ type=click.Choice(["domestic", "international"]),
61
+ default="domestic",
62
+ help="Environment type: 'domestic' for domestic, 'international' for overseas (default: domestic)",
63
+ )
64
+ def main(transport: str, port: int, host: str, services: str, headers_credential_only: bool, env: str):
59
65
  # Create an MCP server
60
66
  mcp = FastMCP(
61
67
  name="alibaba-cloud-ops-mcp-server",
@@ -65,6 +71,8 @@ def main(transport: str, port: int, host: str, services: str, headers_credential
65
71
  )
66
72
  if headers_credential_only:
67
73
  settings.headers_credential_only = headers_credential_only
74
+ if env:
75
+ settings.env = env
68
76
  if services:
69
77
  service_keys = [s.strip().lower() for s in services.split(",")]
70
78
  service_list = [(key, SUPPORTED_SERVICES_MAP.get(key, key)) for key in service_keys]
@@ -3,6 +3,7 @@ from pydantic_settings import BaseSettings
3
3
 
4
4
  class Settings(BaseSettings):
5
5
  headers_credential_only: bool = False
6
+ env: str = "domestic"
6
7
 
7
8
 
8
9
  settings = Settings()
@@ -13,6 +13,7 @@ from alibabacloud_tea_openapi.client import Client as OpenApiClient
13
13
  from alibabacloud_openapi_util.client import Client as OpenApiUtilClient
14
14
  from alibaba_cloud_ops_mcp_server.alibabacloud.api_meta_client import ApiMetaClient
15
15
  from alibaba_cloud_ops_mcp_server.alibabacloud.utils import create_config
16
+ from alibaba_cloud_ops_mcp_server.settings import settings
16
17
 
17
18
  logger = logging.getLogger(__name__)
18
19
 
@@ -52,7 +53,9 @@ def _get_service_endpoint(service: str, region_id: str):
52
53
  # Prioritizing central service endpoints
53
54
  central = CENTRAL_SERVICE_ENDPOINTS.get(service)
54
55
  if central:
55
- if region_id in central.get('DomesticRegion', []):
56
+ if settings.env == 'international':
57
+ return central['InternationalEndpoint']
58
+ elif region_id in central.get('DomesticRegion', []) or settings.env == 'domestic':
56
59
  return central['DomesticEndpoint']
57
60
  else:
58
61
  return central['InternationalEndpoint']
@@ -12,7 +12,7 @@ def test_main_run(mock_create_api_tools, mock_FastMCP):
12
12
  mock_FastMCP.return_value = mcp
13
13
  # 调用main函数
14
14
  server.main.callback(transport='stdio', port=12345, host='127.0.0.1', services='ecs',
15
- headers_credential_only=None)
15
+ headers_credential_only=None, env='domestic')
16
16
  mock_FastMCP.assert_called_once_with(
17
17
  name='alibaba-cloud-ops-mcp-server',
18
18
  port=12345, host='127.0.0.1', stateless_http=True)
@@ -33,7 +33,7 @@ def test_main_run_without_services(mock_create_api_tools, mock_FastMCP):
33
33
  mock_FastMCP.return_value = mcp
34
34
  # 调用main函数,不指定services
35
35
  server.main.callback(transport='stdio', port=8000, host='127.0.0.1', services=None,
36
- headers_credential_only=None)
36
+ headers_credential_only=None, env='domestic')
37
37
  mock_FastMCP.assert_called_once_with(
38
38
  name='alibaba-cloud-ops-mcp-server',
39
39
  port=8000, host='127.0.0.1', stateless_http=True)
@@ -78,7 +78,7 @@ def test_main_run_multiple_services(mock_create_api_tools, mock_FastMCP):
78
78
  mock_FastMCP.return_value = mcp
79
79
  # 调用main函数,指定多个services
80
80
  server.main.callback(transport='sse', port=9000, host='0.0.0.0', services='ecs,vpc,rds',
81
- headers_credential_only=None)
81
+ headers_credential_only=None, env='domestic')
82
82
  mock_FastMCP.assert_called_once_with(
83
83
  name='alibaba-cloud-ops-mcp-server',
84
84
  port=9000, host='0.0.0.0', stateless_http=True)
@@ -101,6 +101,6 @@ def test_main_run_with_logging(mock_logger, mock_create_api_tools, mock_FastMCP)
101
101
  mock_FastMCP.return_value = mcp
102
102
  # 调用main函数
103
103
  server.main.callback(transport='streamable-http', port=8080, host='localhost', services=None,
104
- headers_credential_only=None)
104
+ headers_credential_only=None, env='domestic')
105
105
  # 验证日志被调用
106
106
  mock_logger.debug.assert_called_once_with('mcp server is running on streamable-http mode.')
@@ -116,7 +116,7 @@ wheels = [
116
116
 
117
117
  [[package]]
118
118
  name = "alibaba-cloud-ops-mcp-server"
119
- version = "0.9.4"
119
+ version = "0.9.6"
120
120
  source = { editable = "." }
121
121
  dependencies = [
122
122
  { name = "alibabacloud-cms20190101" },