mcp-proxy-adapter 6.0.0__py3-none-any.whl → 6.1.0__py3-none-any.whl
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.
- mcp_proxy_adapter/api/app.py +174 -80
- mcp_proxy_adapter/api/handlers.py +16 -5
- mcp_proxy_adapter/api/middleware/__init__.py +7 -2
- mcp_proxy_adapter/api/middleware/command_permission_middleware.py +148 -0
- mcp_proxy_adapter/api/middleware/factory.py +36 -12
- mcp_proxy_adapter/api/middleware/unified_security.py +152 -0
- mcp_proxy_adapter/api/middleware/user_info_middleware.py +83 -0
- mcp_proxy_adapter/commands/__init__.py +7 -1
- mcp_proxy_adapter/commands/base.py +7 -4
- mcp_proxy_adapter/commands/builtin_commands.py +8 -2
- mcp_proxy_adapter/commands/command_registry.py +8 -0
- mcp_proxy_adapter/commands/echo_command.py +81 -0
- mcp_proxy_adapter/commands/help_command.py +21 -14
- mcp_proxy_adapter/commands/proxy_registration_command.py +326 -185
- mcp_proxy_adapter/commands/role_test_command.py +141 -0
- mcp_proxy_adapter/commands/security_command.py +488 -0
- mcp_proxy_adapter/commands/ssl_setup_command.py +2 -2
- mcp_proxy_adapter/commands/token_management_command.py +1 -1
- mcp_proxy_adapter/config.py +81 -21
- mcp_proxy_adapter/core/app_factory.py +326 -0
- mcp_proxy_adapter/core/client_security.py +384 -0
- mcp_proxy_adapter/core/logging.py +8 -3
- mcp_proxy_adapter/core/mtls_asgi.py +156 -0
- mcp_proxy_adapter/core/mtls_asgi_app.py +187 -0
- mcp_proxy_adapter/core/protocol_manager.py +9 -0
- mcp_proxy_adapter/core/proxy_client.py +602 -0
- mcp_proxy_adapter/core/proxy_registration.py +299 -47
- mcp_proxy_adapter/core/security_adapter.py +12 -15
- mcp_proxy_adapter/core/security_integration.py +277 -0
- mcp_proxy_adapter/core/server_adapter.py +345 -0
- mcp_proxy_adapter/core/server_engine.py +364 -0
- mcp_proxy_adapter/core/unified_config_adapter.py +579 -0
- mcp_proxy_adapter/examples/README.md +230 -97
- mcp_proxy_adapter/examples/README_EN.md +258 -0
- mcp_proxy_adapter/examples/SECURITY_TESTING.md +455 -0
- mcp_proxy_adapter/examples/__pycache__/security_configurations.cpython-312.pyc +0 -0
- mcp_proxy_adapter/examples/__pycache__/security_test_client.cpython-312.pyc +0 -0
- mcp_proxy_adapter/examples/basic_framework/configs/http_auth.json +37 -0
- mcp_proxy_adapter/examples/basic_framework/configs/http_simple.json +23 -0
- mcp_proxy_adapter/examples/basic_framework/configs/https_auth.json +39 -0
- mcp_proxy_adapter/examples/basic_framework/configs/https_simple.json +25 -0
- mcp_proxy_adapter/examples/basic_framework/configs/mtls_no_roles.json +39 -0
- mcp_proxy_adapter/examples/basic_framework/configs/mtls_with_roles.json +45 -0
- mcp_proxy_adapter/examples/basic_framework/main.py +63 -0
- mcp_proxy_adapter/examples/basic_framework/roles.json +21 -0
- mcp_proxy_adapter/examples/cert_config.json +9 -0
- mcp_proxy_adapter/examples/certs/admin.crt +32 -0
- mcp_proxy_adapter/examples/certs/admin.key +52 -0
- mcp_proxy_adapter/examples/certs/admin_cert.pem +21 -0
- mcp_proxy_adapter/examples/certs/admin_key.pem +28 -0
- mcp_proxy_adapter/examples/certs/ca_cert.pem +23 -0
- mcp_proxy_adapter/examples/certs/ca_cert.srl +1 -0
- mcp_proxy_adapter/examples/certs/ca_key.pem +28 -0
- mcp_proxy_adapter/examples/certs/cert_config.json +9 -0
- mcp_proxy_adapter/examples/certs/client.crt +32 -0
- mcp_proxy_adapter/examples/certs/client.key +52 -0
- mcp_proxy_adapter/examples/certs/client_admin.crt +32 -0
- mcp_proxy_adapter/examples/certs/client_admin.key +52 -0
- mcp_proxy_adapter/examples/certs/client_user.crt +32 -0
- mcp_proxy_adapter/examples/certs/client_user.key +52 -0
- mcp_proxy_adapter/examples/certs/guest_cert.pem +21 -0
- mcp_proxy_adapter/examples/certs/guest_key.pem +28 -0
- mcp_proxy_adapter/examples/certs/mcp_proxy_adapter_ca_ca.crt +23 -0
- mcp_proxy_adapter/examples/certs/proxy_cert.pem +21 -0
- mcp_proxy_adapter/examples/certs/proxy_key.pem +28 -0
- mcp_proxy_adapter/examples/certs/readonly.crt +32 -0
- mcp_proxy_adapter/examples/certs/readonly.key +52 -0
- mcp_proxy_adapter/examples/certs/readonly_cert.pem +21 -0
- mcp_proxy_adapter/examples/certs/readonly_key.pem +28 -0
- mcp_proxy_adapter/examples/certs/server.crt +32 -0
- mcp_proxy_adapter/examples/certs/server.key +52 -0
- mcp_proxy_adapter/examples/certs/server_cert.pem +32 -0
- mcp_proxy_adapter/examples/certs/server_key.pem +52 -0
- mcp_proxy_adapter/examples/certs/test_ca_ca.crt +20 -0
- mcp_proxy_adapter/examples/certs/user.crt +32 -0
- mcp_proxy_adapter/examples/certs/user.key +52 -0
- mcp_proxy_adapter/examples/certs/user_cert.pem +21 -0
- mcp_proxy_adapter/examples/certs/user_key.pem +28 -0
- mcp_proxy_adapter/examples/client_configs/api_key_client.json +13 -0
- mcp_proxy_adapter/examples/client_configs/basic_auth_client.json +13 -0
- mcp_proxy_adapter/examples/client_configs/certificate_client.json +22 -0
- mcp_proxy_adapter/examples/client_configs/jwt_client.json +15 -0
- mcp_proxy_adapter/examples/client_configs/no_auth_client.json +9 -0
- mcp_proxy_adapter/examples/commands/__init__.py +1 -0
- mcp_proxy_adapter/examples/create_certificates_simple.py +307 -0
- mcp_proxy_adapter/examples/debug_request_state.py +144 -0
- mcp_proxy_adapter/examples/debug_role_chain.py +205 -0
- mcp_proxy_adapter/examples/demo_client.py +341 -0
- mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +99 -0
- mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +106 -0
- mcp_proxy_adapter/examples/full_application/configs/http_auth.json +37 -0
- mcp_proxy_adapter/examples/full_application/configs/http_simple.json +23 -0
- mcp_proxy_adapter/examples/full_application/configs/https_auth.json +39 -0
- mcp_proxy_adapter/examples/full_application/configs/https_simple.json +25 -0
- mcp_proxy_adapter/examples/full_application/configs/mtls_no_roles.json +39 -0
- mcp_proxy_adapter/examples/full_application/configs/mtls_with_roles.json +45 -0
- mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +97 -0
- mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +95 -0
- mcp_proxy_adapter/examples/full_application/main.py +138 -0
- mcp_proxy_adapter/examples/full_application/roles.json +21 -0
- mcp_proxy_adapter/examples/generate_all_certificates.py +429 -0
- mcp_proxy_adapter/examples/generate_certificates.py +121 -0
- mcp_proxy_adapter/examples/keys/ca_key.pem +28 -0
- mcp_proxy_adapter/examples/keys/mcp_proxy_adapter_ca_ca.key +28 -0
- mcp_proxy_adapter/examples/keys/test_ca_ca.key +28 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log +220 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.1 +1 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.2 +1 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.3 +1 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.4 +1 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.5 +1 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log +220 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.1 +1 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.2 +1 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.3 +1 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.4 +1 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.5 +1 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log +2 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.1 +1 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.2 +1 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.3 +1 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.4 +1 -0
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.5 +1 -0
- mcp_proxy_adapter/examples/proxy_registration_example.py +401 -0
- mcp_proxy_adapter/examples/roles.json +38 -0
- mcp_proxy_adapter/examples/run_example.py +81 -0
- mcp_proxy_adapter/examples/run_security_tests.py +326 -0
- mcp_proxy_adapter/examples/run_security_tests_fixed.py +300 -0
- mcp_proxy_adapter/examples/security_test_client.py +743 -0
- mcp_proxy_adapter/examples/server_configs/config_basic_http.json +204 -0
- mcp_proxy_adapter/examples/server_configs/config_http_token.json +238 -0
- mcp_proxy_adapter/examples/server_configs/config_https.json +215 -0
- mcp_proxy_adapter/examples/server_configs/config_https_token.json +231 -0
- mcp_proxy_adapter/examples/server_configs/config_mtls.json +215 -0
- mcp_proxy_adapter/examples/server_configs/config_proxy_registration.json +250 -0
- mcp_proxy_adapter/examples/server_configs/config_simple.json +46 -0
- mcp_proxy_adapter/examples/server_configs/roles.json +38 -0
- mcp_proxy_adapter/examples/test_examples.py +344 -0
- mcp_proxy_adapter/examples/universal_client.py +628 -0
- mcp_proxy_adapter/main.py +21 -10
- mcp_proxy_adapter/utils/config_generator.py +639 -0
- mcp_proxy_adapter/version.py +2 -1
- mcp_proxy_adapter-6.1.0.dist-info/METADATA +205 -0
- mcp_proxy_adapter-6.1.0.dist-info/RECORD +193 -0
- mcp_proxy_adapter-6.1.0.dist-info/entry_points.txt +2 -0
- {mcp_proxy_adapter-6.0.0.dist-info → mcp_proxy_adapter-6.1.0.dist-info}/licenses/LICENSE +2 -2
- mcp_proxy_adapter/api/middleware/auth.py +0 -146
- mcp_proxy_adapter/api/middleware/auth_adapter.py +0 -235
- mcp_proxy_adapter/api/middleware/mtls_adapter.py +0 -305
- mcp_proxy_adapter/api/middleware/mtls_middleware.py +0 -296
- mcp_proxy_adapter/api/middleware/rate_limit.py +0 -152
- mcp_proxy_adapter/api/middleware/rate_limit_adapter.py +0 -241
- mcp_proxy_adapter/api/middleware/roles_adapter.py +0 -365
- mcp_proxy_adapter/api/middleware/roles_middleware.py +0 -381
- mcp_proxy_adapter/api/middleware/security.py +0 -376
- mcp_proxy_adapter/api/middleware/token_auth_middleware.py +0 -261
- mcp_proxy_adapter/examples/__init__.py +0 -7
- mcp_proxy_adapter/examples/basic_server/README.md +0 -60
- mcp_proxy_adapter/examples/basic_server/__init__.py +0 -7
- mcp_proxy_adapter/examples/basic_server/basic_custom_settings.json +0 -39
- mcp_proxy_adapter/examples/basic_server/config.json +0 -70
- mcp_proxy_adapter/examples/basic_server/config_all_protocols.json +0 -54
- mcp_proxy_adapter/examples/basic_server/config_http.json +0 -70
- mcp_proxy_adapter/examples/basic_server/config_http_only.json +0 -52
- mcp_proxy_adapter/examples/basic_server/config_https.json +0 -58
- mcp_proxy_adapter/examples/basic_server/config_mtls.json +0 -58
- mcp_proxy_adapter/examples/basic_server/config_ssl.json +0 -46
- mcp_proxy_adapter/examples/basic_server/custom_settings_example.py +0 -238
- mcp_proxy_adapter/examples/basic_server/server.py +0 -114
- mcp_proxy_adapter/examples/custom_commands/README.md +0 -127
- mcp_proxy_adapter/examples/custom_commands/__init__.py +0 -27
- mcp_proxy_adapter/examples/custom_commands/advanced_hooks.py +0 -566
- mcp_proxy_adapter/examples/custom_commands/auto_commands/__init__.py +0 -6
- mcp_proxy_adapter/examples/custom_commands/auto_commands/auto_echo_command.py +0 -103
- mcp_proxy_adapter/examples/custom_commands/auto_commands/auto_info_command.py +0 -111
- mcp_proxy_adapter/examples/custom_commands/auto_commands/test_command.py +0 -105
- mcp_proxy_adapter/examples/custom_commands/catalog/commands/test_command.py +0 -129
- mcp_proxy_adapter/examples/custom_commands/config.json +0 -118
- mcp_proxy_adapter/examples/custom_commands/config_all_protocols.json +0 -46
- mcp_proxy_adapter/examples/custom_commands/config_https_only.json +0 -46
- mcp_proxy_adapter/examples/custom_commands/config_https_transport.json +0 -33
- mcp_proxy_adapter/examples/custom_commands/config_mtls_only.json +0 -46
- mcp_proxy_adapter/examples/custom_commands/config_mtls_transport.json +0 -33
- mcp_proxy_adapter/examples/custom_commands/config_single_transport.json +0 -33
- mcp_proxy_adapter/examples/custom_commands/custom_health_command.py +0 -169
- mcp_proxy_adapter/examples/custom_commands/custom_help_command.py +0 -215
- mcp_proxy_adapter/examples/custom_commands/custom_openapi_generator.py +0 -76
- mcp_proxy_adapter/examples/custom_commands/custom_settings.json +0 -96
- mcp_proxy_adapter/examples/custom_commands/custom_settings_manager.py +0 -241
- mcp_proxy_adapter/examples/custom_commands/data_transform_command.py +0 -135
- mcp_proxy_adapter/examples/custom_commands/echo_command.py +0 -122
- mcp_proxy_adapter/examples/custom_commands/full_help_response.json +0 -1
- mcp_proxy_adapter/examples/custom_commands/generated_openapi.json +0 -629
- mcp_proxy_adapter/examples/custom_commands/get_openapi.py +0 -103
- mcp_proxy_adapter/examples/custom_commands/hooks.py +0 -230
- mcp_proxy_adapter/examples/custom_commands/intercept_command.py +0 -123
- mcp_proxy_adapter/examples/custom_commands/loadable_commands/test_ignored.py +0 -129
- mcp_proxy_adapter/examples/custom_commands/manual_echo_command.py +0 -103
- mcp_proxy_adapter/examples/custom_commands/proxy_connection_manager.py +0 -278
- mcp_proxy_adapter/examples/custom_commands/server.py +0 -252
- mcp_proxy_adapter/examples/custom_commands/simple_openapi_server.py +0 -75
- mcp_proxy_adapter/examples/custom_commands/start_server_with_proxy_manager.py +0 -299
- mcp_proxy_adapter/examples/custom_commands/start_server_with_registration.py +0 -278
- mcp_proxy_adapter/examples/custom_commands/test_hooks.py +0 -176
- mcp_proxy_adapter/examples/custom_commands/test_openapi.py +0 -27
- mcp_proxy_adapter/examples/custom_commands/test_registry.py +0 -23
- mcp_proxy_adapter/examples/custom_commands/test_simple.py +0 -19
- mcp_proxy_adapter/examples/custom_project_example/README.md +0 -103
- mcp_proxy_adapter/examples/custom_project_example/README_EN.md +0 -103
- mcp_proxy_adapter/examples/deployment/README.md +0 -49
- mcp_proxy_adapter/examples/deployment/__init__.py +0 -7
- mcp_proxy_adapter/examples/deployment/config.development.json +0 -8
- mcp_proxy_adapter/examples/deployment/config.json +0 -29
- mcp_proxy_adapter/examples/deployment/config.production.json +0 -12
- mcp_proxy_adapter/examples/deployment/config.staging.json +0 -11
- mcp_proxy_adapter/examples/deployment/docker-compose.yml +0 -31
- mcp_proxy_adapter/examples/deployment/run.sh +0 -43
- mcp_proxy_adapter/examples/deployment/run_docker.sh +0 -84
- mcp_proxy_adapter/examples/simple_custom_commands/README.md +0 -149
- mcp_proxy_adapter/examples/simple_custom_commands/README_EN.md +0 -149
- mcp_proxy_adapter/schemas/base_schema.json +0 -114
- mcp_proxy_adapter/schemas/openapi_schema.json +0 -314
- mcp_proxy_adapter/schemas/roles_schema.json +0 -162
- mcp_proxy_adapter/tests/__init__.py +0 -0
- mcp_proxy_adapter/tests/api/__init__.py +0 -3
- mcp_proxy_adapter/tests/api/test_cmd_endpoint.py +0 -115
- mcp_proxy_adapter/tests/api/test_custom_openapi.py +0 -617
- mcp_proxy_adapter/tests/api/test_handlers.py +0 -522
- mcp_proxy_adapter/tests/api/test_middleware.py +0 -340
- mcp_proxy_adapter/tests/api/test_schemas.py +0 -546
- mcp_proxy_adapter/tests/api/test_tool_integration.py +0 -531
- mcp_proxy_adapter/tests/commands/__init__.py +0 -3
- mcp_proxy_adapter/tests/commands/test_config_command.py +0 -211
- mcp_proxy_adapter/tests/commands/test_echo_command.py +0 -127
- mcp_proxy_adapter/tests/commands/test_help_command.py +0 -136
- mcp_proxy_adapter/tests/conftest.py +0 -131
- mcp_proxy_adapter/tests/functional/__init__.py +0 -3
- mcp_proxy_adapter/tests/functional/test_api.py +0 -253
- mcp_proxy_adapter/tests/integration/__init__.py +0 -3
- mcp_proxy_adapter/tests/integration/test_cmd_integration.py +0 -129
- mcp_proxy_adapter/tests/integration/test_integration.py +0 -255
- mcp_proxy_adapter/tests/performance/__init__.py +0 -3
- mcp_proxy_adapter/tests/performance/test_performance.py +0 -189
- mcp_proxy_adapter/tests/stubs/__init__.py +0 -10
- mcp_proxy_adapter/tests/stubs/echo_command.py +0 -104
- mcp_proxy_adapter/tests/test_api_endpoints.py +0 -271
- mcp_proxy_adapter/tests/test_api_handlers.py +0 -289
- mcp_proxy_adapter/tests/test_base_command.py +0 -123
- mcp_proxy_adapter/tests/test_batch_requests.py +0 -117
- mcp_proxy_adapter/tests/test_command_registry.py +0 -281
- mcp_proxy_adapter/tests/test_config.py +0 -127
- mcp_proxy_adapter/tests/test_utils.py +0 -65
- mcp_proxy_adapter/tests/unit/__init__.py +0 -3
- mcp_proxy_adapter/tests/unit/test_base_command.py +0 -436
- mcp_proxy_adapter/tests/unit/test_config.py +0 -270
- mcp_proxy_adapter-6.0.0.dist-info/METADATA +0 -201
- mcp_proxy_adapter-6.0.0.dist-info/RECORD +0 -179
- {mcp_proxy_adapter-6.0.0.dist-info → mcp_proxy_adapter-6.1.0.dist-info}/WHEEL +0 -0
- {mcp_proxy_adapter-6.0.0.dist-info → mcp_proxy_adapter-6.1.0.dist-info}/top_level.txt +0 -0
@@ -1,111 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
Auto-registered Info Command
|
3
|
-
|
4
|
-
This command will be automatically discovered and registered by the framework.
|
5
|
-
"""
|
6
|
-
|
7
|
-
from typing import Dict, Any, Optional
|
8
|
-
from mcp_proxy_adapter.commands.base import Command
|
9
|
-
from mcp_proxy_adapter.commands.result import CommandResult
|
10
|
-
|
11
|
-
|
12
|
-
class AutoInfoResult(CommandResult):
|
13
|
-
"""
|
14
|
-
Result of the auto-registered info command execution.
|
15
|
-
"""
|
16
|
-
|
17
|
-
def __init__(self, info: Dict[str, Any], auto_registered: bool = True):
|
18
|
-
"""
|
19
|
-
Initialize auto info command result.
|
20
|
-
|
21
|
-
Args:
|
22
|
-
info: Information data
|
23
|
-
auto_registered: Flag indicating this was auto-registered
|
24
|
-
"""
|
25
|
-
self.info = info
|
26
|
-
self.auto_registered = auto_registered
|
27
|
-
|
28
|
-
def to_dict(self) -> Dict[str, Any]:
|
29
|
-
"""
|
30
|
-
Convert result to dictionary.
|
31
|
-
|
32
|
-
Returns:
|
33
|
-
Dict[str, Any]: Result as dictionary
|
34
|
-
"""
|
35
|
-
return {
|
36
|
-
"info": self.info,
|
37
|
-
"auto_registered": self.auto_registered,
|
38
|
-
"command_type": "auto_info"
|
39
|
-
}
|
40
|
-
|
41
|
-
@classmethod
|
42
|
-
def get_schema(cls) -> Dict[str, Any]:
|
43
|
-
"""
|
44
|
-
Get JSON schema for the result.
|
45
|
-
|
46
|
-
Returns:
|
47
|
-
Dict[str, Any]: JSON schema
|
48
|
-
"""
|
49
|
-
return {
|
50
|
-
"type": "object",
|
51
|
-
"properties": {
|
52
|
-
"info": {"type": "object"},
|
53
|
-
"auto_registered": {"type": "boolean"},
|
54
|
-
"command_type": {"type": "string"}
|
55
|
-
}
|
56
|
-
}
|
57
|
-
|
58
|
-
|
59
|
-
class AutoInfoCommand(Command):
|
60
|
-
"""
|
61
|
-
Auto-registered info command.
|
62
|
-
"""
|
63
|
-
|
64
|
-
name = "auto_info"
|
65
|
-
result_class = AutoInfoResult
|
66
|
-
|
67
|
-
async def execute(self, topic: Optional[str] = None, **kwargs) -> AutoInfoResult:
|
68
|
-
"""
|
69
|
-
Execute auto-registered info command.
|
70
|
-
|
71
|
-
Args:
|
72
|
-
topic: Information topic
|
73
|
-
**kwargs: Additional parameters
|
74
|
-
|
75
|
-
Returns:
|
76
|
-
AutoInfoResult: Auto info command result
|
77
|
-
"""
|
78
|
-
if topic is None:
|
79
|
-
topic = "general"
|
80
|
-
|
81
|
-
info_data = {
|
82
|
-
"topic": topic,
|
83
|
-
"auto_registered": True,
|
84
|
-
"discovery_method": "automatic",
|
85
|
-
"registration_time": "startup",
|
86
|
-
"command_type": "auto_info"
|
87
|
-
}
|
88
|
-
|
89
|
-
return AutoInfoResult(
|
90
|
-
info=info_data,
|
91
|
-
auto_registered=True
|
92
|
-
)
|
93
|
-
|
94
|
-
@classmethod
|
95
|
-
def get_schema(cls) -> Dict[str, Any]:
|
96
|
-
"""
|
97
|
-
Get JSON schema for command parameters.
|
98
|
-
|
99
|
-
Returns:
|
100
|
-
Dict[str, Any]: JSON schema
|
101
|
-
"""
|
102
|
-
return {
|
103
|
-
"type": "object",
|
104
|
-
"properties": {
|
105
|
-
"topic": {
|
106
|
-
"type": "string",
|
107
|
-
"description": "Information topic",
|
108
|
-
"default": "general"
|
109
|
-
}
|
110
|
-
}
|
111
|
-
}
|
@@ -1,105 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
Test command for demonstrating dynamic command loading.
|
3
|
-
|
4
|
-
This command is designed to be dynamically loaded and unloaded
|
5
|
-
to test the command discovery mechanism.
|
6
|
-
"""
|
7
|
-
|
8
|
-
from typing import Optional, Dict, Any
|
9
|
-
from mcp_proxy_adapter.commands.base import Command
|
10
|
-
from mcp_proxy_adapter.commands.result import SuccessResult
|
11
|
-
|
12
|
-
|
13
|
-
class TestCommandResult(SuccessResult):
|
14
|
-
"""Result class for test command."""
|
15
|
-
|
16
|
-
def __init__(self, message: str, test_data: Dict[str, Any]):
|
17
|
-
"""
|
18
|
-
Initialize test command result.
|
19
|
-
|
20
|
-
Args:
|
21
|
-
message: Response message
|
22
|
-
test_data: Additional test data
|
23
|
-
"""
|
24
|
-
super().__init__()
|
25
|
-
self.message = message
|
26
|
-
self.test_data = test_data
|
27
|
-
|
28
|
-
def to_dict(self) -> Dict[str, Any]:
|
29
|
-
"""Convert result to dictionary."""
|
30
|
-
return {
|
31
|
-
"message": self.message,
|
32
|
-
"test_data": self.test_data,
|
33
|
-
"command_type": "test_command",
|
34
|
-
"dynamically_loaded": True
|
35
|
-
}
|
36
|
-
|
37
|
-
@classmethod
|
38
|
-
def get_schema(cls) -> Dict[str, Any]:
|
39
|
-
"""Get result schema."""
|
40
|
-
return {
|
41
|
-
"type": "object",
|
42
|
-
"properties": {
|
43
|
-
"message": {"type": "string"},
|
44
|
-
"test_data": {"type": "object"},
|
45
|
-
"command_type": {"type": "string"},
|
46
|
-
"dynamically_loaded": {"type": "boolean"}
|
47
|
-
}
|
48
|
-
}
|
49
|
-
|
50
|
-
|
51
|
-
class TestCommand(Command):
|
52
|
-
"""
|
53
|
-
Test command for dynamic loading demonstration.
|
54
|
-
|
55
|
-
This command can be used to test the dynamic command discovery
|
56
|
-
and loading mechanism.
|
57
|
-
"""
|
58
|
-
|
59
|
-
name = "test"
|
60
|
-
result_class = TestCommandResult
|
61
|
-
|
62
|
-
def __init__(self):
|
63
|
-
"""Initialize test command."""
|
64
|
-
super().__init__()
|
65
|
-
|
66
|
-
async def execute(self, message: Optional[str] = None, **kwargs) -> TestCommandResult:
|
67
|
-
"""
|
68
|
-
Execute test command.
|
69
|
-
|
70
|
-
Args:
|
71
|
-
message: Optional test message
|
72
|
-
**kwargs: Additional parameters
|
73
|
-
|
74
|
-
Returns:
|
75
|
-
TestCommandResult with test data
|
76
|
-
"""
|
77
|
-
test_message = message or "Test command executed successfully!"
|
78
|
-
|
79
|
-
test_data = {
|
80
|
-
"timestamp": self._get_timestamp(),
|
81
|
-
"command_name": "test_command",
|
82
|
-
"parameters": kwargs,
|
83
|
-
"status": "success"
|
84
|
-
}
|
85
|
-
|
86
|
-
return TestCommandResult(test_message, test_data)
|
87
|
-
|
88
|
-
@classmethod
|
89
|
-
def get_schema(cls) -> Dict[str, Any]:
|
90
|
-
"""Get command schema."""
|
91
|
-
return {
|
92
|
-
"type": "object",
|
93
|
-
"properties": {
|
94
|
-
"message": {
|
95
|
-
"type": "string",
|
96
|
-
"description": "Test message to display",
|
97
|
-
"default": "Test command executed successfully!"
|
98
|
-
}
|
99
|
-
}
|
100
|
-
}
|
101
|
-
|
102
|
-
def _get_timestamp(self) -> str:
|
103
|
-
"""Get current timestamp."""
|
104
|
-
from datetime import datetime
|
105
|
-
return datetime.now().isoformat()
|
@@ -1,129 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
Test command for loadable commands testing.
|
3
|
-
|
4
|
-
This command demonstrates the loadable commands functionality.
|
5
|
-
"""
|
6
|
-
|
7
|
-
from typing import Any, Dict
|
8
|
-
|
9
|
-
from mcp_proxy_adapter.commands.base import Command
|
10
|
-
from mcp_proxy_adapter.commands.result import SuccessResult
|
11
|
-
|
12
|
-
|
13
|
-
class TestCommandResult:
|
14
|
-
"""
|
15
|
-
Result of test command execution.
|
16
|
-
"""
|
17
|
-
|
18
|
-
def __init__(self, message: str, test_data: Dict[str, Any]):
|
19
|
-
"""
|
20
|
-
Initialize test command result.
|
21
|
-
|
22
|
-
Args:
|
23
|
-
message: Result message
|
24
|
-
test_data: Test data
|
25
|
-
"""
|
26
|
-
self.message = message
|
27
|
-
self.test_data = test_data
|
28
|
-
|
29
|
-
def to_dict(self) -> Dict[str, Any]:
|
30
|
-
"""
|
31
|
-
Convert result to dictionary.
|
32
|
-
|
33
|
-
Returns:
|
34
|
-
Dictionary representation of the result.
|
35
|
-
"""
|
36
|
-
return {
|
37
|
-
"success": True,
|
38
|
-
"message": self.message,
|
39
|
-
"test_data": self.test_data
|
40
|
-
}
|
41
|
-
|
42
|
-
@classmethod
|
43
|
-
def get_schema(cls) -> Dict[str, Any]:
|
44
|
-
"""
|
45
|
-
Get JSON schema for the result.
|
46
|
-
|
47
|
-
Returns:
|
48
|
-
JSON schema dictionary.
|
49
|
-
"""
|
50
|
-
return {
|
51
|
-
"type": "object",
|
52
|
-
"properties": {
|
53
|
-
"success": {
|
54
|
-
"type": "boolean",
|
55
|
-
"description": "Whether command was successful"
|
56
|
-
},
|
57
|
-
"message": {
|
58
|
-
"type": "string",
|
59
|
-
"description": "Result message"
|
60
|
-
},
|
61
|
-
"test_data": {
|
62
|
-
"type": "object",
|
63
|
-
"description": "Test data"
|
64
|
-
}
|
65
|
-
},
|
66
|
-
"required": ["success", "message", "test_data"]
|
67
|
-
}
|
68
|
-
|
69
|
-
|
70
|
-
class TestCommand(Command):
|
71
|
-
"""
|
72
|
-
Test command for loadable commands testing.
|
73
|
-
"""
|
74
|
-
|
75
|
-
name = "test"
|
76
|
-
result_class = TestCommandResult
|
77
|
-
|
78
|
-
async def execute(self, **kwargs) -> TestCommandResult:
|
79
|
-
"""
|
80
|
-
Execute test command.
|
81
|
-
|
82
|
-
Args:
|
83
|
-
**kwargs: Command parameters
|
84
|
-
|
85
|
-
Returns:
|
86
|
-
TestCommandResult with test information
|
87
|
-
"""
|
88
|
-
# Get parameters
|
89
|
-
test_param = kwargs.get("test_param", "default_value")
|
90
|
-
echo_text = kwargs.get("echo_text", "Hello from loadable command!")
|
91
|
-
|
92
|
-
# Create test data
|
93
|
-
test_data = {
|
94
|
-
"command_type": "loadable",
|
95
|
-
"test_param": test_param,
|
96
|
-
"echo_text": echo_text,
|
97
|
-
"timestamp": "2025-08-12T09:45:00Z",
|
98
|
-
"status": "working"
|
99
|
-
}
|
100
|
-
|
101
|
-
return TestCommandResult(
|
102
|
-
message=f"Test command executed successfully with param: {test_param}",
|
103
|
-
test_data=test_data
|
104
|
-
)
|
105
|
-
|
106
|
-
@classmethod
|
107
|
-
def get_schema(cls) -> Dict[str, Any]:
|
108
|
-
"""
|
109
|
-
Get JSON schema for command parameters.
|
110
|
-
|
111
|
-
Returns:
|
112
|
-
JSON schema dictionary.
|
113
|
-
"""
|
114
|
-
return {
|
115
|
-
"type": "object",
|
116
|
-
"properties": {
|
117
|
-
"test_param": {
|
118
|
-
"type": "string",
|
119
|
-
"description": "Test parameter",
|
120
|
-
"default": "default_value"
|
121
|
-
},
|
122
|
-
"echo_text": {
|
123
|
-
"type": "string",
|
124
|
-
"description": "Text to echo",
|
125
|
-
"default": "Hello from loadable command!"
|
126
|
-
}
|
127
|
-
},
|
128
|
-
"additionalProperties": False
|
129
|
-
}
|
@@ -1,118 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"server": {
|
3
|
-
"host": "0.0.0.0",
|
4
|
-
"port": 8000,
|
5
|
-
"debug": true,
|
6
|
-
"log_level": "INFO"
|
7
|
-
},
|
8
|
-
"logging": {
|
9
|
-
"level": "INFO",
|
10
|
-
"file": null,
|
11
|
-
"log_dir": "./logs",
|
12
|
-
"log_file": "mcp_proxy_adapter.log",
|
13
|
-
"error_log_file": "mcp_proxy_adapter_error.log",
|
14
|
-
"access_log_file": "mcp_proxy_adapter_access.log",
|
15
|
-
"max_file_size": "10MB",
|
16
|
-
"backup_count": 5,
|
17
|
-
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s",
|
18
|
-
"date_format": "%Y-%m-%d %H:%M:%S",
|
19
|
-
"console_output": true,
|
20
|
-
"file_output": true
|
21
|
-
},
|
22
|
-
"commands": {
|
23
|
-
"auto_discovery": true,
|
24
|
-
"commands_directory": "./commands",
|
25
|
-
"catalog_directory": "./catalog",
|
26
|
-
"plugin_servers": [],
|
27
|
-
"auto_install_dependencies": true,
|
28
|
-
"discovery_path": "mcp_proxy_adapter.commands"
|
29
|
-
},
|
30
|
-
"ssl": {
|
31
|
-
"enabled": false,
|
32
|
-
"mode": "http_only",
|
33
|
-
"cert_file": null,
|
34
|
-
"key_file": null,
|
35
|
-
"ca_cert": null,
|
36
|
-
"verify_client": false,
|
37
|
-
"client_cert_required": false,
|
38
|
-
"cipher_suites": [
|
39
|
-
"TLS_AES_256_GCM_SHA384",
|
40
|
-
"TLS_CHACHA20_POLY1305_SHA256"
|
41
|
-
],
|
42
|
-
"min_tls_version": "1.2",
|
43
|
-
"max_tls_version": "1.3",
|
44
|
-
"token_auth": {
|
45
|
-
"enabled": false,
|
46
|
-
"header_name": "Authorization",
|
47
|
-
"token_prefix": "Bearer",
|
48
|
-
"tokens_file": "tokens.json",
|
49
|
-
"token_expiry": 3600,
|
50
|
-
"jwt_secret": "",
|
51
|
-
"jwt_algorithm": "HS256"
|
52
|
-
}
|
53
|
-
},
|
54
|
-
"roles": {
|
55
|
-
"enabled": false,
|
56
|
-
"config_file": "schemas/roles_schema.json",
|
57
|
-
"default_policy": {
|
58
|
-
"deny_by_default": true,
|
59
|
-
"require_role_match": true,
|
60
|
-
"case_sensitive": false,
|
61
|
-
"allow_wildcard": true
|
62
|
-
},
|
63
|
-
"auto_load": true,
|
64
|
-
"validation_enabled": true
|
65
|
-
},
|
66
|
-
"transport": {
|
67
|
-
"type": "http",
|
68
|
-
"port": null,
|
69
|
-
"ssl": {
|
70
|
-
"enabled": false,
|
71
|
-
"cert_file": null,
|
72
|
-
"key_file": null,
|
73
|
-
"ca_cert": null,
|
74
|
-
"verify_client": false,
|
75
|
-
"client_cert_required": false
|
76
|
-
}
|
77
|
-
},
|
78
|
-
"proxy_registration": {
|
79
|
-
"enabled": true,
|
80
|
-
"proxy_url": "http://localhost:3004",
|
81
|
-
"server_id": "mcp_proxy_adapter_custom",
|
82
|
-
"server_name": "Custom Commands MCP Proxy Adapter Server",
|
83
|
-
"description": "JSON-RPC API for custom commands example",
|
84
|
-
"registration_timeout": 30,
|
85
|
-
"retry_attempts": 3,
|
86
|
-
"retry_delay": 5,
|
87
|
-
"auto_register_on_startup": false,
|
88
|
-
"auto_unregister_on_shutdown": true
|
89
|
-
},
|
90
|
-
"debug": {
|
91
|
-
"enabled": false,
|
92
|
-
"level": "WARNING"
|
93
|
-
},
|
94
|
-
"protocols": {
|
95
|
-
"enabled": false,
|
96
|
-
"allowed_protocols": [
|
97
|
-
"http"
|
98
|
-
],
|
99
|
-
"http": {
|
100
|
-
"enabled": true,
|
101
|
-
"port": 8000
|
102
|
-
},
|
103
|
-
"https": {
|
104
|
-
"enabled": false,
|
105
|
-
"port": 8443
|
106
|
-
},
|
107
|
-
"mtls": {
|
108
|
-
"enabled": false,
|
109
|
-
"port": 9443
|
110
|
-
}
|
111
|
-
},
|
112
|
-
"auth_enabled": false,
|
113
|
-
"rate_limit_enabled": false,
|
114
|
-
"custom": {
|
115
|
-
"description": "HTTP transport server example",
|
116
|
-
"server_name": "HTTP Transport MCP Proxy Adapter Server"
|
117
|
-
}
|
118
|
-
}
|
@@ -1,46 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"server": {
|
3
|
-
"host": "0.0.0.0",
|
4
|
-
"port": 8000,
|
5
|
-
"debug": true,
|
6
|
-
"log_level": "INFO"
|
7
|
-
},
|
8
|
-
"logging": {
|
9
|
-
"level": "INFO",
|
10
|
-
"log_dir": "./logs",
|
11
|
-
"console_output": true
|
12
|
-
},
|
13
|
-
"commands": {
|
14
|
-
"auto_discovery": true,
|
15
|
-
"discovery_path": "mcp_proxy_adapter.commands"
|
16
|
-
},
|
17
|
-
"ssl": {
|
18
|
-
"enabled": true,
|
19
|
-
"mode": "mtls",
|
20
|
-
"cert_file": "../../../test_env/server/server.crt",
|
21
|
-
"key_file": "../../../test_env/server/server.key",
|
22
|
-
"ca_cert": "../../../test_env/ca/ca.crt",
|
23
|
-
"verify_client": true,
|
24
|
-
"client_cert_required": true
|
25
|
-
},
|
26
|
-
"protocols": {
|
27
|
-
"enabled": true,
|
28
|
-
"allowed_protocols": ["http", "https", "mtls"],
|
29
|
-
"http": {
|
30
|
-
"enabled": true,
|
31
|
-
"port": 8000
|
32
|
-
},
|
33
|
-
"https": {
|
34
|
-
"enabled": true,
|
35
|
-
"port": 8443
|
36
|
-
},
|
37
|
-
"mtls": {
|
38
|
-
"enabled": true,
|
39
|
-
"port": 9443
|
40
|
-
}
|
41
|
-
},
|
42
|
-
"custom": {
|
43
|
-
"description": "Advanced server with all protocols support",
|
44
|
-
"server_name": "Advanced MCP Proxy Adapter Server"
|
45
|
-
}
|
46
|
-
}
|
@@ -1,46 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"server": {
|
3
|
-
"host": "0.0.0.0",
|
4
|
-
"port": 8443,
|
5
|
-
"debug": true,
|
6
|
-
"log_level": "INFO"
|
7
|
-
},
|
8
|
-
"logging": {
|
9
|
-
"level": "INFO",
|
10
|
-
"log_dir": "./logs",
|
11
|
-
"console_output": true
|
12
|
-
},
|
13
|
-
"commands": {
|
14
|
-
"auto_discovery": true,
|
15
|
-
"discovery_path": "mcp_proxy_adapter.commands"
|
16
|
-
},
|
17
|
-
"ssl": {
|
18
|
-
"enabled": true,
|
19
|
-
"mode": "https_only",
|
20
|
-
"cert_file": "../../../test_env/server/server.crt",
|
21
|
-
"key_file": "../../../test_env/server/server.key",
|
22
|
-
"ca_cert": "../../../test_env/ca/ca.crt",
|
23
|
-
"verify_client": false,
|
24
|
-
"client_cert_required": false
|
25
|
-
},
|
26
|
-
"protocols": {
|
27
|
-
"enabled": true,
|
28
|
-
"allowed_protocols": ["https"],
|
29
|
-
"http": {
|
30
|
-
"enabled": false,
|
31
|
-
"port": 8000
|
32
|
-
},
|
33
|
-
"https": {
|
34
|
-
"enabled": true,
|
35
|
-
"port": 8443
|
36
|
-
},
|
37
|
-
"mtls": {
|
38
|
-
"enabled": false,
|
39
|
-
"port": 9443
|
40
|
-
}
|
41
|
-
},
|
42
|
-
"custom": {
|
43
|
-
"description": "HTTPS-only server example",
|
44
|
-
"server_name": "HTTPS MCP Proxy Adapter Server"
|
45
|
-
}
|
46
|
-
}
|
@@ -1,33 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"server": {
|
3
|
-
"host": "0.0.0.0",
|
4
|
-
"port": 8443,
|
5
|
-
"debug": true,
|
6
|
-
"log_level": "INFO"
|
7
|
-
},
|
8
|
-
"logging": {
|
9
|
-
"level": "INFO",
|
10
|
-
"log_dir": "./logs",
|
11
|
-
"console_output": true
|
12
|
-
},
|
13
|
-
"commands": {
|
14
|
-
"auto_discovery": true,
|
15
|
-
"discovery_path": "mcp_proxy_adapter.commands"
|
16
|
-
},
|
17
|
-
"transport": {
|
18
|
-
"type": "https",
|
19
|
-
"port": null,
|
20
|
-
"ssl": {
|
21
|
-
"enabled": true,
|
22
|
-
"cert_file": "../../../test_env/server/server.crt",
|
23
|
-
"key_file": "../../../test_env/server/server.key",
|
24
|
-
"ca_cert": "../../../test_env/ca/ca.crt",
|
25
|
-
"verify_client": false,
|
26
|
-
"client_cert_required": false
|
27
|
-
}
|
28
|
-
},
|
29
|
-
"custom": {
|
30
|
-
"description": "HTTPS transport server example",
|
31
|
-
"server_name": "HTTPS Transport MCP Proxy Adapter Server"
|
32
|
-
}
|
33
|
-
}
|
@@ -1,46 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"server": {
|
3
|
-
"host": "0.0.0.0",
|
4
|
-
"port": 9443,
|
5
|
-
"debug": true,
|
6
|
-
"log_level": "INFO"
|
7
|
-
},
|
8
|
-
"logging": {
|
9
|
-
"level": "INFO",
|
10
|
-
"log_dir": "./logs",
|
11
|
-
"console_output": true
|
12
|
-
},
|
13
|
-
"commands": {
|
14
|
-
"auto_discovery": true,
|
15
|
-
"discovery_path": "mcp_proxy_adapter.commands"
|
16
|
-
},
|
17
|
-
"ssl": {
|
18
|
-
"enabled": true,
|
19
|
-
"mode": "mtls",
|
20
|
-
"cert_file": "../../../test_env/server/server.crt",
|
21
|
-
"key_file": "../../../test_env/server/server.key",
|
22
|
-
"ca_cert": "../../../test_env/ca/ca.crt",
|
23
|
-
"verify_client": true,
|
24
|
-
"client_cert_required": true
|
25
|
-
},
|
26
|
-
"protocols": {
|
27
|
-
"enabled": true,
|
28
|
-
"allowed_protocols": ["mtls"],
|
29
|
-
"http": {
|
30
|
-
"enabled": false,
|
31
|
-
"port": 8000
|
32
|
-
},
|
33
|
-
"https": {
|
34
|
-
"enabled": false,
|
35
|
-
"port": 8443
|
36
|
-
},
|
37
|
-
"mtls": {
|
38
|
-
"enabled": true,
|
39
|
-
"port": 9443
|
40
|
-
}
|
41
|
-
},
|
42
|
-
"custom": {
|
43
|
-
"description": "MTLS-only server example",
|
44
|
-
"server_name": "MTLS MCP Proxy Adapter Server"
|
45
|
-
}
|
46
|
-
}
|
@@ -1,33 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"server": {
|
3
|
-
"host": "0.0.0.0",
|
4
|
-
"port": 9443,
|
5
|
-
"debug": true,
|
6
|
-
"log_level": "INFO"
|
7
|
-
},
|
8
|
-
"logging": {
|
9
|
-
"level": "INFO",
|
10
|
-
"log_dir": "./logs",
|
11
|
-
"console_output": true
|
12
|
-
},
|
13
|
-
"commands": {
|
14
|
-
"auto_discovery": true,
|
15
|
-
"discovery_path": "mcp_proxy_adapter.commands"
|
16
|
-
},
|
17
|
-
"transport": {
|
18
|
-
"type": "mtls",
|
19
|
-
"port": null,
|
20
|
-
"ssl": {
|
21
|
-
"enabled": true,
|
22
|
-
"cert_file": "../../../test_env/server/server.crt",
|
23
|
-
"key_file": "../../../test_env/server/server.key",
|
24
|
-
"ca_cert": "../../../test_env/ca/ca.crt",
|
25
|
-
"verify_client": true,
|
26
|
-
"client_cert_required": true
|
27
|
-
}
|
28
|
-
},
|
29
|
-
"custom": {
|
30
|
-
"description": "MTLS transport server example",
|
31
|
-
"server_name": "MTLS Transport MCP Proxy Adapter Server"
|
32
|
-
}
|
33
|
-
}
|