alibaba-cloud-ops-mcp-server 0.9.4__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.
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/PKG-INFO +1 -1
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/pyproject.toml +1 -1
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/server.py +9 -1
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/settings.py +1 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/tools/api_tools.py +5 -2
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/test_server.py +4 -4
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/uv.lock +1 -1
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/.github/workflows/python-ci.yml +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/.gitignore +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/Dockerfile +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/LICENSE +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/README.md +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/README_mcp_args.md +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/README_zh.md +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/examples/openapi_mcp_quickstart/server.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/image/Alibaba-Cloud-Ops-MCP-User-Group-en.png +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/image/Alibaba-Cloud-Ops-MCP-User-Group-zh.png +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/image/alibaba-cloud.png +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/__init__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/__init__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/__main__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/alibabacloud/__init__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/alibabacloud/api_meta_client.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/alibabacloud/exception.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/alibabacloud/static/PROMPT_UNDERSTANDING.md +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/alibabacloud/static/__init__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/alibabacloud/utils.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/config.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/tools/__init__.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/tools/cms_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/tools/common_api_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/tools/oos_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/src/alibaba_cloud_ops_mcp_server/tools/oss_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/alibabacloud/test_api_meta_client.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/alibabacloud/test_exception.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/alibabacloud/test_utils.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/test_init.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/tools/test_api_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/tools/test_cms_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/tools/test_oos_tools.py +0 -0
- {alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/tools/test_oss_tools.py +0 -0
|
@@ -55,7 +55,13 @@ SUPPORTED_SERVICES_MAP = {
|
|
|
55
55
|
default=False,
|
|
56
56
|
help="Whether to use credentials only from headers",
|
|
57
57
|
)
|
|
58
|
-
|
|
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]
|
|
@@ -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
|
|
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']
|
|
@@ -129,7 +132,7 @@ def _tools_api_call(service: str, api: str, parameters: dict, ctx: Context):
|
|
|
129
132
|
runtime = util_models.RuntimeOptions()
|
|
130
133
|
resp = client.call_api(params, req, runtime)
|
|
131
134
|
logger.info(f'Call API Response: {resp}')
|
|
132
|
-
return
|
|
135
|
+
return resp
|
|
133
136
|
|
|
134
137
|
|
|
135
138
|
def _create_parameter_schema(fields: dict):
|
{alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/test_server.py
RENAMED
|
@@ -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.')
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/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.4 → alibaba_cloud_ops_mcp_server-0.9.6}/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
|
{alibaba_cloud_ops_mcp_server-0.9.4 → alibaba_cloud_ops_mcp_server-0.9.6}/tests/test_init.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|