alibaba-cloud-ops-mcp-server 0.9.5__tar.gz → 0.9.7__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.7}/PKG-INFO +4 -3
  2. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/README.md +2 -2
  3. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/README_zh.md +1 -1
  4. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/pyproject.toml +3 -2
  5. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/src/alibaba_cloud_ops_mcp_server/server.py +9 -1
  6. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/src/alibaba_cloud_ops_mcp_server/settings.py +1 -0
  7. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/src/alibaba_cloud_ops_mcp_server/tools/api_tools.py +4 -1
  8. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/tests/test_server.py +4 -4
  9. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/uv.lock +3 -1
  10. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/.github/workflows/python-ci.yml +0 -0
  11. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/.gitignore +0 -0
  12. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/Dockerfile +0 -0
  13. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/LICENSE +0 -0
  14. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/README_mcp_args.md +0 -0
  15. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/examples/openapi_mcp_quickstart/server.py +0 -0
  16. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/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.7}/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.7}/image/alibaba-cloud.png +0 -0
  19. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/src/__init__.py +0 -0
  20. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/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.7}/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.7}/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.7}/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.7}/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.7}/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.7}/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.7}/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.7}/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.7}/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.7}/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.7}/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.7}/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.7}/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.7}/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.7}/tests/alibabacloud/test_exception.py +0 -0
  36. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/tests/alibabacloud/test_utils.py +0 -0
  37. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/tests/test_init.py +0 -0
  38. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/tests/tools/test_api_tools.py +0 -0
  39. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/tests/tools/test_cms_tools.py +0 -0
  40. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/tests/tools/test_oos_tools.py +0 -0
  41. {alibaba_cloud_ops_mcp_server-0.9.5 → alibaba_cloud_ops_mcp_server-0.9.7}/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.7
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
@@ -12,6 +12,7 @@ Requires-Dist: alibabacloud-oos20190601>=3.4.1
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
15
+ Requires-Dist: pydantic==2.11.3
15
16
  Description-Content-Type: text/markdown
16
17
 
17
18
  # Alibaba Cloud Ops MCP Server
@@ -20,7 +21,7 @@ Description-Content-Type: text/markdown
20
21
 
21
22
  [中文版本](./README_zh.md)
22
23
 
23
- 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 operation resources on Alibaba Cloud, supporting ECS, Cloud Monitor, OOS andother widely used cloud products.
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 operation resources on Alibaba Cloud, supporting ECS, Cloud Monitor, OOS and other widely used cloud products.
24
25
 
25
26
  ## Prepare
26
27
 
@@ -60,7 +61,7 @@ To use `alibaba-cloud-ops-mcp-server` MCP Server with any other MCP Client, you
60
61
  ## MCP Maketplace Integration
61
62
 
62
63
  * [Cline](https://cline.bot/mcp-marketplace)
63
- * [Cursor](https://docs.cursor.com/tools) [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=alibaba-cloud-ops-mcp-server&config=eyJ0aW1lb3V0Ijo2MDAsImNvbW1hbmQiOiJ1dnggYWxpYmFiYS1jbG91ZC1vcHMtbWNwLXNlcnZlckBsYXRlc3QiLCJlbnYiOnsiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX0lEIjoiWW91ciBBY2Nlc3MgS2V5IElEIiwiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX1NFQ1JFVCI6IllvdXIgQWNjZXNzIEtleSBTRUNSRVQifX0%3D)
64
+ * [Cursor](https://docs.cursor.com/tools) [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=alibaba-cloud-ops-mcp-server&config=eyJ0aW1lb3V0Ijo2MDAsImNvbW1hbmQiOiJ1dnggYWxpYmFiYS1jbG91ZC1vcHMtbWNwLXNlcnZlckBsYXRlc3QiLCJlbnYiOnsiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX0lEIjoiWW91ciBBY2Nlc3MgS2V5IElkIiwiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX1NFQ1JFVCI6IllvdXIgQWNjZXNzIEtleSBTZWNyZXQifX0%3D)
64
65
  * [ModelScope](https://www.modelscope.cn/mcp/servers/@aliyun/alibaba-cloud-ops-mcp-server?lang=en_US)
65
66
  * [Lingma](https://lingma.aliyun.com/)
66
67
  * [Smithery AI](https://smithery.ai/server/@aliyun/alibaba-cloud-ops-mcp-server)
@@ -4,7 +4,7 @@
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 operation resources on Alibaba Cloud, supporting ECS, Cloud Monitor, OOS andother widely used cloud products.
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 operation resources on Alibaba Cloud, supporting ECS, Cloud Monitor, OOS and other widely used cloud products.
8
8
 
9
9
  ## Prepare
10
10
 
@@ -44,7 +44,7 @@ To use `alibaba-cloud-ops-mcp-server` MCP Server with any other MCP Client, you
44
44
  ## MCP Maketplace Integration
45
45
 
46
46
  * [Cline](https://cline.bot/mcp-marketplace)
47
- * [Cursor](https://docs.cursor.com/tools) [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=alibaba-cloud-ops-mcp-server&config=eyJ0aW1lb3V0Ijo2MDAsImNvbW1hbmQiOiJ1dnggYWxpYmFiYS1jbG91ZC1vcHMtbWNwLXNlcnZlckBsYXRlc3QiLCJlbnYiOnsiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX0lEIjoiWW91ciBBY2Nlc3MgS2V5IElEIiwiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX1NFQ1JFVCI6IllvdXIgQWNjZXNzIEtleSBTRUNSRVQifX0%3D)
47
+ * [Cursor](https://docs.cursor.com/tools) [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=alibaba-cloud-ops-mcp-server&config=eyJ0aW1lb3V0Ijo2MDAsImNvbW1hbmQiOiJ1dnggYWxpYmFiYS1jbG91ZC1vcHMtbWNwLXNlcnZlckBsYXRlc3QiLCJlbnYiOnsiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX0lEIjoiWW91ciBBY2Nlc3MgS2V5IElkIiwiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX1NFQ1JFVCI6IllvdXIgQWNjZXNzIEtleSBTZWNyZXQifX0%3D)
48
48
  * [ModelScope](https://www.modelscope.cn/mcp/servers/@aliyun/alibaba-cloud-ops-mcp-server?lang=en_US)
49
49
  * [Lingma](https://lingma.aliyun.com/)
50
50
  * [Smithery AI](https://smithery.ai/server/@aliyun/alibaba-cloud-ops-mcp-server)
@@ -44,7 +44,7 @@ curl -LsSf https://astral.sh/uv/install.sh | sh
44
44
  ## MCP市场集成
45
45
 
46
46
  * [Cline](https://cline.bot/mcp-marketplace)
47
- * [Cursor](https://docs.cursor.com/tools) [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=alibaba-cloud-ops-mcp-server&config=eyJ0aW1lb3V0Ijo2MDAsImNvbW1hbmQiOiJ1dnggYWxpYmFiYS1jbG91ZC1vcHMtbWNwLXNlcnZlckBsYXRlc3QiLCJlbnYiOnsiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX0lEIjoiWW91ciBBY2Nlc3MgS2V5IElEIiwiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX1NFQ1JFVCI6IllvdXIgQWNjZXNzIEtleSBTRUNSRVQifX0%3D)
47
+ * [Cursor](https://docs.cursor.com/tools) [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=alibaba-cloud-ops-mcp-server&config=eyJ0aW1lb3V0Ijo2MDAsImNvbW1hbmQiOiJ1dnggYWxpYmFiYS1jbG91ZC1vcHMtbWNwLXNlcnZlckBsYXRlc3QiLCJlbnYiOnsiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX0lEIjoiWW91ciBBY2Nlc3MgS2V5IElkIiwiQUxJQkFCQV9DTE9VRF9BQ0NFU1NfS0VZX1NFQ1JFVCI6IllvdXIgQWNjZXNzIEtleSBTZWNyZXQifX0%3D)
48
48
  * [魔搭](https://www.modelscope.cn/mcp/servers/@aliyun/alibaba-cloud-ops-mcp-server)
49
49
  * [通义灵码](https://lingma.aliyun.com/)
50
50
  * [Smithery AI](https://smithery.ai/server/@aliyun/alibaba-cloud-ops-mcp-server)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "alibaba-cloud-ops-mcp-server"
3
- version = "0.9.5"
3
+ version = "0.9.7"
4
4
  description = "A MCP server for Alibaba Cloud"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -14,7 +14,8 @@ dependencies = [
14
14
  "alibabacloud_oss_v2>=1.1.0",
15
15
  "alibabacloud-credentials>=1.0.0",
16
16
  "click>=8.1.8",
17
- "fastmcp==2.8.0"
17
+ "fastmcp==2.8.0",
18
+ "pydantic==2.11.3"
18
19
  ]
19
20
 
20
21
  [build-system]
@@ -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.7"
120
120
  source = { editable = "." }
121
121
  dependencies = [
122
122
  { name = "alibabacloud-cms20190101" },
@@ -126,6 +126,7 @@ dependencies = [
126
126
  { name = "alibabacloud-oss-v2" },
127
127
  { name = "click" },
128
128
  { name = "fastmcp" },
129
+ { name = "pydantic" },
129
130
  ]
130
131
 
131
132
  [package.dev-dependencies]
@@ -143,6 +144,7 @@ requires-dist = [
143
144
  { name = "alibabacloud-oss-v2", specifier = ">=1.1.0" },
144
145
  { name = "click", specifier = ">=8.1.8" },
145
146
  { name = "fastmcp", specifier = "==2.8.0" },
147
+ { name = "pydantic", specifier = "==2.11.3" },
146
148
  ]
147
149
 
148
150
  [package.metadata.requires-dev]