mcp-proxy-adapter 6.0.0__py3-none-any.whl → 6.0.1__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.
Files changed (212) hide show
  1. mcp_proxy_adapter/__main__.py +27 -7
  2. mcp_proxy_adapter/api/app.py +209 -79
  3. mcp_proxy_adapter/api/handlers.py +16 -5
  4. mcp_proxy_adapter/api/middleware/__init__.py +14 -9
  5. mcp_proxy_adapter/api/middleware/command_permission_middleware.py +148 -0
  6. mcp_proxy_adapter/api/middleware/factory.py +36 -12
  7. mcp_proxy_adapter/api/middleware/protocol_middleware.py +84 -18
  8. mcp_proxy_adapter/api/middleware/unified_security.py +197 -0
  9. mcp_proxy_adapter/api/middleware/user_info_middleware.py +158 -0
  10. mcp_proxy_adapter/commands/__init__.py +7 -1
  11. mcp_proxy_adapter/commands/base.py +7 -4
  12. mcp_proxy_adapter/commands/builtin_commands.py +8 -2
  13. mcp_proxy_adapter/commands/command_registry.py +8 -0
  14. mcp_proxy_adapter/commands/echo_command.py +81 -0
  15. mcp_proxy_adapter/commands/health_command.py +1 -1
  16. mcp_proxy_adapter/commands/help_command.py +21 -14
  17. mcp_proxy_adapter/commands/proxy_registration_command.py +326 -185
  18. mcp_proxy_adapter/commands/role_test_command.py +141 -0
  19. mcp_proxy_adapter/commands/security_command.py +488 -0
  20. mcp_proxy_adapter/commands/ssl_setup_command.py +234 -351
  21. mcp_proxy_adapter/commands/token_management_command.py +1 -1
  22. mcp_proxy_adapter/config.py +323 -40
  23. mcp_proxy_adapter/core/app_factory.py +410 -0
  24. mcp_proxy_adapter/core/app_runner.py +272 -0
  25. mcp_proxy_adapter/core/certificate_utils.py +291 -73
  26. mcp_proxy_adapter/core/client.py +574 -0
  27. mcp_proxy_adapter/core/client_manager.py +284 -0
  28. mcp_proxy_adapter/core/client_security.py +384 -0
  29. mcp_proxy_adapter/core/logging.py +8 -3
  30. mcp_proxy_adapter/core/mtls_asgi.py +156 -0
  31. mcp_proxy_adapter/core/mtls_asgi_app.py +187 -0
  32. mcp_proxy_adapter/core/protocol_manager.py +169 -10
  33. mcp_proxy_adapter/core/proxy_client.py +602 -0
  34. mcp_proxy_adapter/core/proxy_registration.py +299 -47
  35. mcp_proxy_adapter/core/security_adapter.py +12 -15
  36. mcp_proxy_adapter/core/security_integration.py +286 -0
  37. mcp_proxy_adapter/core/server_adapter.py +282 -0
  38. mcp_proxy_adapter/core/server_engine.py +270 -0
  39. mcp_proxy_adapter/core/ssl_utils.py +13 -12
  40. mcp_proxy_adapter/core/transport_manager.py +5 -5
  41. mcp_proxy_adapter/core/unified_config_adapter.py +579 -0
  42. mcp_proxy_adapter/examples/__init__.py +13 -4
  43. mcp_proxy_adapter/examples/basic_framework/__init__.py +9 -0
  44. mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +4 -0
  45. mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +4 -0
  46. mcp_proxy_adapter/examples/basic_framework/main.py +44 -0
  47. mcp_proxy_adapter/examples/commands/__init__.py +5 -0
  48. mcp_proxy_adapter/examples/create_certificates_simple.py +550 -0
  49. mcp_proxy_adapter/examples/debug_request_state.py +112 -0
  50. mcp_proxy_adapter/examples/debug_role_chain.py +158 -0
  51. mcp_proxy_adapter/examples/demo_client.py +275 -0
  52. mcp_proxy_adapter/examples/examples/basic_framework/__init__.py +9 -0
  53. mcp_proxy_adapter/examples/examples/basic_framework/commands/__init__.py +4 -0
  54. mcp_proxy_adapter/examples/examples/basic_framework/hooks/__init__.py +4 -0
  55. mcp_proxy_adapter/examples/examples/basic_framework/main.py +44 -0
  56. mcp_proxy_adapter/examples/examples/full_application/__init__.py +12 -0
  57. mcp_proxy_adapter/examples/examples/full_application/commands/__init__.py +7 -0
  58. mcp_proxy_adapter/examples/examples/full_application/commands/custom_echo_command.py +80 -0
  59. mcp_proxy_adapter/examples/examples/full_application/commands/dynamic_calculator_command.py +90 -0
  60. mcp_proxy_adapter/examples/examples/full_application/hooks/__init__.py +7 -0
  61. mcp_proxy_adapter/examples/examples/full_application/hooks/application_hooks.py +75 -0
  62. mcp_proxy_adapter/examples/examples/full_application/hooks/builtin_command_hooks.py +71 -0
  63. mcp_proxy_adapter/examples/examples/full_application/main.py +173 -0
  64. mcp_proxy_adapter/examples/examples/full_application/proxy_endpoints.py +154 -0
  65. mcp_proxy_adapter/examples/full_application/__init__.py +12 -0
  66. mcp_proxy_adapter/examples/full_application/commands/__init__.py +7 -0
  67. mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +80 -0
  68. mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +90 -0
  69. mcp_proxy_adapter/examples/full_application/hooks/__init__.py +7 -0
  70. mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +75 -0
  71. mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +71 -0
  72. mcp_proxy_adapter/examples/full_application/main.py +173 -0
  73. mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +154 -0
  74. mcp_proxy_adapter/examples/generate_all_certificates.py +362 -0
  75. mcp_proxy_adapter/examples/generate_certificates.py +177 -0
  76. mcp_proxy_adapter/examples/generate_certificates_and_tokens.py +369 -0
  77. mcp_proxy_adapter/examples/generate_test_configs.py +331 -0
  78. mcp_proxy_adapter/examples/proxy_registration_example.py +334 -0
  79. mcp_proxy_adapter/examples/run_example.py +59 -0
  80. mcp_proxy_adapter/examples/run_full_test_suite.py +318 -0
  81. mcp_proxy_adapter/examples/run_proxy_server.py +146 -0
  82. mcp_proxy_adapter/examples/run_security_tests.py +544 -0
  83. mcp_proxy_adapter/examples/run_security_tests_fixed.py +247 -0
  84. mcp_proxy_adapter/examples/scripts/config_generator.py +740 -0
  85. mcp_proxy_adapter/examples/scripts/create_certificates_simple.py +560 -0
  86. mcp_proxy_adapter/examples/scripts/generate_certificates_and_tokens.py +369 -0
  87. mcp_proxy_adapter/examples/security_test_client.py +782 -0
  88. mcp_proxy_adapter/examples/setup_test_environment.py +328 -0
  89. mcp_proxy_adapter/examples/test_config.py +148 -0
  90. mcp_proxy_adapter/examples/test_config_generator.py +86 -0
  91. mcp_proxy_adapter/examples/test_examples.py +281 -0
  92. mcp_proxy_adapter/examples/universal_client.py +620 -0
  93. mcp_proxy_adapter/main.py +66 -148
  94. mcp_proxy_adapter/utils/config_generator.py +1008 -0
  95. mcp_proxy_adapter/version.py +5 -2
  96. mcp_proxy_adapter-6.0.1.dist-info/METADATA +679 -0
  97. mcp_proxy_adapter-6.0.1.dist-info/RECORD +140 -0
  98. mcp_proxy_adapter-6.0.1.dist-info/entry_points.txt +2 -0
  99. {mcp_proxy_adapter-6.0.0.dist-info → mcp_proxy_adapter-6.0.1.dist-info}/licenses/LICENSE +2 -2
  100. mcp_proxy_adapter/api/middleware/auth.py +0 -146
  101. mcp_proxy_adapter/api/middleware/auth_adapter.py +0 -235
  102. mcp_proxy_adapter/api/middleware/mtls_adapter.py +0 -305
  103. mcp_proxy_adapter/api/middleware/mtls_middleware.py +0 -296
  104. mcp_proxy_adapter/api/middleware/rate_limit.py +0 -152
  105. mcp_proxy_adapter/api/middleware/rate_limit_adapter.py +0 -241
  106. mcp_proxy_adapter/api/middleware/roles_adapter.py +0 -365
  107. mcp_proxy_adapter/api/middleware/roles_middleware.py +0 -381
  108. mcp_proxy_adapter/api/middleware/security.py +0 -376
  109. mcp_proxy_adapter/api/middleware/token_auth_middleware.py +0 -261
  110. mcp_proxy_adapter/examples/README.md +0 -124
  111. mcp_proxy_adapter/examples/basic_server/README.md +0 -60
  112. mcp_proxy_adapter/examples/basic_server/__init__.py +0 -7
  113. mcp_proxy_adapter/examples/basic_server/basic_custom_settings.json +0 -39
  114. mcp_proxy_adapter/examples/basic_server/config.json +0 -70
  115. mcp_proxy_adapter/examples/basic_server/config_all_protocols.json +0 -54
  116. mcp_proxy_adapter/examples/basic_server/config_http.json +0 -70
  117. mcp_proxy_adapter/examples/basic_server/config_http_only.json +0 -52
  118. mcp_proxy_adapter/examples/basic_server/config_https.json +0 -58
  119. mcp_proxy_adapter/examples/basic_server/config_mtls.json +0 -58
  120. mcp_proxy_adapter/examples/basic_server/config_ssl.json +0 -46
  121. mcp_proxy_adapter/examples/basic_server/custom_settings_example.py +0 -238
  122. mcp_proxy_adapter/examples/basic_server/server.py +0 -114
  123. mcp_proxy_adapter/examples/custom_commands/README.md +0 -127
  124. mcp_proxy_adapter/examples/custom_commands/__init__.py +0 -27
  125. mcp_proxy_adapter/examples/custom_commands/advanced_hooks.py +0 -566
  126. mcp_proxy_adapter/examples/custom_commands/auto_commands/__init__.py +0 -6
  127. mcp_proxy_adapter/examples/custom_commands/auto_commands/auto_echo_command.py +0 -103
  128. mcp_proxy_adapter/examples/custom_commands/auto_commands/auto_info_command.py +0 -111
  129. mcp_proxy_adapter/examples/custom_commands/auto_commands/test_command.py +0 -105
  130. mcp_proxy_adapter/examples/custom_commands/catalog/commands/test_command.py +0 -129
  131. mcp_proxy_adapter/examples/custom_commands/config.json +0 -118
  132. mcp_proxy_adapter/examples/custom_commands/config_all_protocols.json +0 -46
  133. mcp_proxy_adapter/examples/custom_commands/config_https_only.json +0 -46
  134. mcp_proxy_adapter/examples/custom_commands/config_https_transport.json +0 -33
  135. mcp_proxy_adapter/examples/custom_commands/config_mtls_only.json +0 -46
  136. mcp_proxy_adapter/examples/custom_commands/config_mtls_transport.json +0 -33
  137. mcp_proxy_adapter/examples/custom_commands/config_single_transport.json +0 -33
  138. mcp_proxy_adapter/examples/custom_commands/custom_health_command.py +0 -169
  139. mcp_proxy_adapter/examples/custom_commands/custom_help_command.py +0 -215
  140. mcp_proxy_adapter/examples/custom_commands/custom_openapi_generator.py +0 -76
  141. mcp_proxy_adapter/examples/custom_commands/custom_settings.json +0 -96
  142. mcp_proxy_adapter/examples/custom_commands/custom_settings_manager.py +0 -241
  143. mcp_proxy_adapter/examples/custom_commands/data_transform_command.py +0 -135
  144. mcp_proxy_adapter/examples/custom_commands/echo_command.py +0 -122
  145. mcp_proxy_adapter/examples/custom_commands/full_help_response.json +0 -1
  146. mcp_proxy_adapter/examples/custom_commands/generated_openapi.json +0 -629
  147. mcp_proxy_adapter/examples/custom_commands/get_openapi.py +0 -103
  148. mcp_proxy_adapter/examples/custom_commands/hooks.py +0 -230
  149. mcp_proxy_adapter/examples/custom_commands/intercept_command.py +0 -123
  150. mcp_proxy_adapter/examples/custom_commands/loadable_commands/test_ignored.py +0 -129
  151. mcp_proxy_adapter/examples/custom_commands/manual_echo_command.py +0 -103
  152. mcp_proxy_adapter/examples/custom_commands/proxy_connection_manager.py +0 -278
  153. mcp_proxy_adapter/examples/custom_commands/server.py +0 -252
  154. mcp_proxy_adapter/examples/custom_commands/simple_openapi_server.py +0 -75
  155. mcp_proxy_adapter/examples/custom_commands/start_server_with_proxy_manager.py +0 -299
  156. mcp_proxy_adapter/examples/custom_commands/start_server_with_registration.py +0 -278
  157. mcp_proxy_adapter/examples/custom_commands/test_hooks.py +0 -176
  158. mcp_proxy_adapter/examples/custom_commands/test_openapi.py +0 -27
  159. mcp_proxy_adapter/examples/custom_commands/test_registry.py +0 -23
  160. mcp_proxy_adapter/examples/custom_commands/test_simple.py +0 -19
  161. mcp_proxy_adapter/examples/custom_project_example/README.md +0 -103
  162. mcp_proxy_adapter/examples/custom_project_example/README_EN.md +0 -103
  163. mcp_proxy_adapter/examples/deployment/README.md +0 -49
  164. mcp_proxy_adapter/examples/deployment/__init__.py +0 -7
  165. mcp_proxy_adapter/examples/deployment/config.development.json +0 -8
  166. mcp_proxy_adapter/examples/deployment/config.json +0 -29
  167. mcp_proxy_adapter/examples/deployment/config.production.json +0 -12
  168. mcp_proxy_adapter/examples/deployment/config.staging.json +0 -11
  169. mcp_proxy_adapter/examples/deployment/docker-compose.yml +0 -31
  170. mcp_proxy_adapter/examples/deployment/run.sh +0 -43
  171. mcp_proxy_adapter/examples/deployment/run_docker.sh +0 -84
  172. mcp_proxy_adapter/examples/simple_custom_commands/README.md +0 -149
  173. mcp_proxy_adapter/examples/simple_custom_commands/README_EN.md +0 -149
  174. mcp_proxy_adapter/schemas/base_schema.json +0 -114
  175. mcp_proxy_adapter/schemas/openapi_schema.json +0 -314
  176. mcp_proxy_adapter/schemas/roles_schema.json +0 -162
  177. mcp_proxy_adapter/tests/__init__.py +0 -0
  178. mcp_proxy_adapter/tests/api/__init__.py +0 -3
  179. mcp_proxy_adapter/tests/api/test_cmd_endpoint.py +0 -115
  180. mcp_proxy_adapter/tests/api/test_custom_openapi.py +0 -617
  181. mcp_proxy_adapter/tests/api/test_handlers.py +0 -522
  182. mcp_proxy_adapter/tests/api/test_middleware.py +0 -340
  183. mcp_proxy_adapter/tests/api/test_schemas.py +0 -546
  184. mcp_proxy_adapter/tests/api/test_tool_integration.py +0 -531
  185. mcp_proxy_adapter/tests/commands/__init__.py +0 -3
  186. mcp_proxy_adapter/tests/commands/test_config_command.py +0 -211
  187. mcp_proxy_adapter/tests/commands/test_echo_command.py +0 -127
  188. mcp_proxy_adapter/tests/commands/test_help_command.py +0 -136
  189. mcp_proxy_adapter/tests/conftest.py +0 -131
  190. mcp_proxy_adapter/tests/functional/__init__.py +0 -3
  191. mcp_proxy_adapter/tests/functional/test_api.py +0 -253
  192. mcp_proxy_adapter/tests/integration/__init__.py +0 -3
  193. mcp_proxy_adapter/tests/integration/test_cmd_integration.py +0 -129
  194. mcp_proxy_adapter/tests/integration/test_integration.py +0 -255
  195. mcp_proxy_adapter/tests/performance/__init__.py +0 -3
  196. mcp_proxy_adapter/tests/performance/test_performance.py +0 -189
  197. mcp_proxy_adapter/tests/stubs/__init__.py +0 -10
  198. mcp_proxy_adapter/tests/stubs/echo_command.py +0 -104
  199. mcp_proxy_adapter/tests/test_api_endpoints.py +0 -271
  200. mcp_proxy_adapter/tests/test_api_handlers.py +0 -289
  201. mcp_proxy_adapter/tests/test_base_command.py +0 -123
  202. mcp_proxy_adapter/tests/test_batch_requests.py +0 -117
  203. mcp_proxy_adapter/tests/test_command_registry.py +0 -281
  204. mcp_proxy_adapter/tests/test_config.py +0 -127
  205. mcp_proxy_adapter/tests/test_utils.py +0 -65
  206. mcp_proxy_adapter/tests/unit/__init__.py +0 -3
  207. mcp_proxy_adapter/tests/unit/test_base_command.py +0 -436
  208. mcp_proxy_adapter/tests/unit/test_config.py +0 -270
  209. mcp_proxy_adapter-6.0.0.dist-info/METADATA +0 -201
  210. mcp_proxy_adapter-6.0.0.dist-info/RECORD +0 -179
  211. {mcp_proxy_adapter-6.0.0.dist-info → mcp_proxy_adapter-6.0.1.dist-info}/WHEEL +0 -0
  212. {mcp_proxy_adapter-6.0.0.dist-info → mcp_proxy_adapter-6.0.1.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
- }