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.
Files changed (259) hide show
  1. mcp_proxy_adapter/api/app.py +174 -80
  2. mcp_proxy_adapter/api/handlers.py +16 -5
  3. mcp_proxy_adapter/api/middleware/__init__.py +7 -2
  4. mcp_proxy_adapter/api/middleware/command_permission_middleware.py +148 -0
  5. mcp_proxy_adapter/api/middleware/factory.py +36 -12
  6. mcp_proxy_adapter/api/middleware/unified_security.py +152 -0
  7. mcp_proxy_adapter/api/middleware/user_info_middleware.py +83 -0
  8. mcp_proxy_adapter/commands/__init__.py +7 -1
  9. mcp_proxy_adapter/commands/base.py +7 -4
  10. mcp_proxy_adapter/commands/builtin_commands.py +8 -2
  11. mcp_proxy_adapter/commands/command_registry.py +8 -0
  12. mcp_proxy_adapter/commands/echo_command.py +81 -0
  13. mcp_proxy_adapter/commands/help_command.py +21 -14
  14. mcp_proxy_adapter/commands/proxy_registration_command.py +326 -185
  15. mcp_proxy_adapter/commands/role_test_command.py +141 -0
  16. mcp_proxy_adapter/commands/security_command.py +488 -0
  17. mcp_proxy_adapter/commands/ssl_setup_command.py +2 -2
  18. mcp_proxy_adapter/commands/token_management_command.py +1 -1
  19. mcp_proxy_adapter/config.py +81 -21
  20. mcp_proxy_adapter/core/app_factory.py +326 -0
  21. mcp_proxy_adapter/core/client_security.py +384 -0
  22. mcp_proxy_adapter/core/logging.py +8 -3
  23. mcp_proxy_adapter/core/mtls_asgi.py +156 -0
  24. mcp_proxy_adapter/core/mtls_asgi_app.py +187 -0
  25. mcp_proxy_adapter/core/protocol_manager.py +9 -0
  26. mcp_proxy_adapter/core/proxy_client.py +602 -0
  27. mcp_proxy_adapter/core/proxy_registration.py +299 -47
  28. mcp_proxy_adapter/core/security_adapter.py +12 -15
  29. mcp_proxy_adapter/core/security_integration.py +277 -0
  30. mcp_proxy_adapter/core/server_adapter.py +345 -0
  31. mcp_proxy_adapter/core/server_engine.py +364 -0
  32. mcp_proxy_adapter/core/unified_config_adapter.py +579 -0
  33. mcp_proxy_adapter/examples/README.md +230 -97
  34. mcp_proxy_adapter/examples/README_EN.md +258 -0
  35. mcp_proxy_adapter/examples/SECURITY_TESTING.md +455 -0
  36. mcp_proxy_adapter/examples/__pycache__/security_configurations.cpython-312.pyc +0 -0
  37. mcp_proxy_adapter/examples/__pycache__/security_test_client.cpython-312.pyc +0 -0
  38. mcp_proxy_adapter/examples/basic_framework/configs/http_auth.json +37 -0
  39. mcp_proxy_adapter/examples/basic_framework/configs/http_simple.json +23 -0
  40. mcp_proxy_adapter/examples/basic_framework/configs/https_auth.json +39 -0
  41. mcp_proxy_adapter/examples/basic_framework/configs/https_simple.json +25 -0
  42. mcp_proxy_adapter/examples/basic_framework/configs/mtls_no_roles.json +39 -0
  43. mcp_proxy_adapter/examples/basic_framework/configs/mtls_with_roles.json +45 -0
  44. mcp_proxy_adapter/examples/basic_framework/main.py +63 -0
  45. mcp_proxy_adapter/examples/basic_framework/roles.json +21 -0
  46. mcp_proxy_adapter/examples/cert_config.json +9 -0
  47. mcp_proxy_adapter/examples/certs/admin.crt +32 -0
  48. mcp_proxy_adapter/examples/certs/admin.key +52 -0
  49. mcp_proxy_adapter/examples/certs/admin_cert.pem +21 -0
  50. mcp_proxy_adapter/examples/certs/admin_key.pem +28 -0
  51. mcp_proxy_adapter/examples/certs/ca_cert.pem +23 -0
  52. mcp_proxy_adapter/examples/certs/ca_cert.srl +1 -0
  53. mcp_proxy_adapter/examples/certs/ca_key.pem +28 -0
  54. mcp_proxy_adapter/examples/certs/cert_config.json +9 -0
  55. mcp_proxy_adapter/examples/certs/client.crt +32 -0
  56. mcp_proxy_adapter/examples/certs/client.key +52 -0
  57. mcp_proxy_adapter/examples/certs/client_admin.crt +32 -0
  58. mcp_proxy_adapter/examples/certs/client_admin.key +52 -0
  59. mcp_proxy_adapter/examples/certs/client_user.crt +32 -0
  60. mcp_proxy_adapter/examples/certs/client_user.key +52 -0
  61. mcp_proxy_adapter/examples/certs/guest_cert.pem +21 -0
  62. mcp_proxy_adapter/examples/certs/guest_key.pem +28 -0
  63. mcp_proxy_adapter/examples/certs/mcp_proxy_adapter_ca_ca.crt +23 -0
  64. mcp_proxy_adapter/examples/certs/proxy_cert.pem +21 -0
  65. mcp_proxy_adapter/examples/certs/proxy_key.pem +28 -0
  66. mcp_proxy_adapter/examples/certs/readonly.crt +32 -0
  67. mcp_proxy_adapter/examples/certs/readonly.key +52 -0
  68. mcp_proxy_adapter/examples/certs/readonly_cert.pem +21 -0
  69. mcp_proxy_adapter/examples/certs/readonly_key.pem +28 -0
  70. mcp_proxy_adapter/examples/certs/server.crt +32 -0
  71. mcp_proxy_adapter/examples/certs/server.key +52 -0
  72. mcp_proxy_adapter/examples/certs/server_cert.pem +32 -0
  73. mcp_proxy_adapter/examples/certs/server_key.pem +52 -0
  74. mcp_proxy_adapter/examples/certs/test_ca_ca.crt +20 -0
  75. mcp_proxy_adapter/examples/certs/user.crt +32 -0
  76. mcp_proxy_adapter/examples/certs/user.key +52 -0
  77. mcp_proxy_adapter/examples/certs/user_cert.pem +21 -0
  78. mcp_proxy_adapter/examples/certs/user_key.pem +28 -0
  79. mcp_proxy_adapter/examples/client_configs/api_key_client.json +13 -0
  80. mcp_proxy_adapter/examples/client_configs/basic_auth_client.json +13 -0
  81. mcp_proxy_adapter/examples/client_configs/certificate_client.json +22 -0
  82. mcp_proxy_adapter/examples/client_configs/jwt_client.json +15 -0
  83. mcp_proxy_adapter/examples/client_configs/no_auth_client.json +9 -0
  84. mcp_proxy_adapter/examples/commands/__init__.py +1 -0
  85. mcp_proxy_adapter/examples/create_certificates_simple.py +307 -0
  86. mcp_proxy_adapter/examples/debug_request_state.py +144 -0
  87. mcp_proxy_adapter/examples/debug_role_chain.py +205 -0
  88. mcp_proxy_adapter/examples/demo_client.py +341 -0
  89. mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +99 -0
  90. mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +106 -0
  91. mcp_proxy_adapter/examples/full_application/configs/http_auth.json +37 -0
  92. mcp_proxy_adapter/examples/full_application/configs/http_simple.json +23 -0
  93. mcp_proxy_adapter/examples/full_application/configs/https_auth.json +39 -0
  94. mcp_proxy_adapter/examples/full_application/configs/https_simple.json +25 -0
  95. mcp_proxy_adapter/examples/full_application/configs/mtls_no_roles.json +39 -0
  96. mcp_proxy_adapter/examples/full_application/configs/mtls_with_roles.json +45 -0
  97. mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +97 -0
  98. mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +95 -0
  99. mcp_proxy_adapter/examples/full_application/main.py +138 -0
  100. mcp_proxy_adapter/examples/full_application/roles.json +21 -0
  101. mcp_proxy_adapter/examples/generate_all_certificates.py +429 -0
  102. mcp_proxy_adapter/examples/generate_certificates.py +121 -0
  103. mcp_proxy_adapter/examples/keys/ca_key.pem +28 -0
  104. mcp_proxy_adapter/examples/keys/mcp_proxy_adapter_ca_ca.key +28 -0
  105. mcp_proxy_adapter/examples/keys/test_ca_ca.key +28 -0
  106. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log +220 -0
  107. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.1 +1 -0
  108. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.2 +1 -0
  109. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.3 +1 -0
  110. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.4 +1 -0
  111. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.5 +1 -0
  112. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log +220 -0
  113. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.1 +1 -0
  114. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.2 +1 -0
  115. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.3 +1 -0
  116. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.4 +1 -0
  117. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.5 +1 -0
  118. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log +2 -0
  119. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.1 +1 -0
  120. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.2 +1 -0
  121. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.3 +1 -0
  122. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.4 +1 -0
  123. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.5 +1 -0
  124. mcp_proxy_adapter/examples/proxy_registration_example.py +401 -0
  125. mcp_proxy_adapter/examples/roles.json +38 -0
  126. mcp_proxy_adapter/examples/run_example.py +81 -0
  127. mcp_proxy_adapter/examples/run_security_tests.py +326 -0
  128. mcp_proxy_adapter/examples/run_security_tests_fixed.py +300 -0
  129. mcp_proxy_adapter/examples/security_test_client.py +743 -0
  130. mcp_proxy_adapter/examples/server_configs/config_basic_http.json +204 -0
  131. mcp_proxy_adapter/examples/server_configs/config_http_token.json +238 -0
  132. mcp_proxy_adapter/examples/server_configs/config_https.json +215 -0
  133. mcp_proxy_adapter/examples/server_configs/config_https_token.json +231 -0
  134. mcp_proxy_adapter/examples/server_configs/config_mtls.json +215 -0
  135. mcp_proxy_adapter/examples/server_configs/config_proxy_registration.json +250 -0
  136. mcp_proxy_adapter/examples/server_configs/config_simple.json +46 -0
  137. mcp_proxy_adapter/examples/server_configs/roles.json +38 -0
  138. mcp_proxy_adapter/examples/test_examples.py +344 -0
  139. mcp_proxy_adapter/examples/universal_client.py +628 -0
  140. mcp_proxy_adapter/main.py +21 -10
  141. mcp_proxy_adapter/utils/config_generator.py +639 -0
  142. mcp_proxy_adapter/version.py +2 -1
  143. mcp_proxy_adapter-6.1.0.dist-info/METADATA +205 -0
  144. mcp_proxy_adapter-6.1.0.dist-info/RECORD +193 -0
  145. mcp_proxy_adapter-6.1.0.dist-info/entry_points.txt +2 -0
  146. {mcp_proxy_adapter-6.0.0.dist-info → mcp_proxy_adapter-6.1.0.dist-info}/licenses/LICENSE +2 -2
  147. mcp_proxy_adapter/api/middleware/auth.py +0 -146
  148. mcp_proxy_adapter/api/middleware/auth_adapter.py +0 -235
  149. mcp_proxy_adapter/api/middleware/mtls_adapter.py +0 -305
  150. mcp_proxy_adapter/api/middleware/mtls_middleware.py +0 -296
  151. mcp_proxy_adapter/api/middleware/rate_limit.py +0 -152
  152. mcp_proxy_adapter/api/middleware/rate_limit_adapter.py +0 -241
  153. mcp_proxy_adapter/api/middleware/roles_adapter.py +0 -365
  154. mcp_proxy_adapter/api/middleware/roles_middleware.py +0 -381
  155. mcp_proxy_adapter/api/middleware/security.py +0 -376
  156. mcp_proxy_adapter/api/middleware/token_auth_middleware.py +0 -261
  157. mcp_proxy_adapter/examples/__init__.py +0 -7
  158. mcp_proxy_adapter/examples/basic_server/README.md +0 -60
  159. mcp_proxy_adapter/examples/basic_server/__init__.py +0 -7
  160. mcp_proxy_adapter/examples/basic_server/basic_custom_settings.json +0 -39
  161. mcp_proxy_adapter/examples/basic_server/config.json +0 -70
  162. mcp_proxy_adapter/examples/basic_server/config_all_protocols.json +0 -54
  163. mcp_proxy_adapter/examples/basic_server/config_http.json +0 -70
  164. mcp_proxy_adapter/examples/basic_server/config_http_only.json +0 -52
  165. mcp_proxy_adapter/examples/basic_server/config_https.json +0 -58
  166. mcp_proxy_adapter/examples/basic_server/config_mtls.json +0 -58
  167. mcp_proxy_adapter/examples/basic_server/config_ssl.json +0 -46
  168. mcp_proxy_adapter/examples/basic_server/custom_settings_example.py +0 -238
  169. mcp_proxy_adapter/examples/basic_server/server.py +0 -114
  170. mcp_proxy_adapter/examples/custom_commands/README.md +0 -127
  171. mcp_proxy_adapter/examples/custom_commands/__init__.py +0 -27
  172. mcp_proxy_adapter/examples/custom_commands/advanced_hooks.py +0 -566
  173. mcp_proxy_adapter/examples/custom_commands/auto_commands/__init__.py +0 -6
  174. mcp_proxy_adapter/examples/custom_commands/auto_commands/auto_echo_command.py +0 -103
  175. mcp_proxy_adapter/examples/custom_commands/auto_commands/auto_info_command.py +0 -111
  176. mcp_proxy_adapter/examples/custom_commands/auto_commands/test_command.py +0 -105
  177. mcp_proxy_adapter/examples/custom_commands/catalog/commands/test_command.py +0 -129
  178. mcp_proxy_adapter/examples/custom_commands/config.json +0 -118
  179. mcp_proxy_adapter/examples/custom_commands/config_all_protocols.json +0 -46
  180. mcp_proxy_adapter/examples/custom_commands/config_https_only.json +0 -46
  181. mcp_proxy_adapter/examples/custom_commands/config_https_transport.json +0 -33
  182. mcp_proxy_adapter/examples/custom_commands/config_mtls_only.json +0 -46
  183. mcp_proxy_adapter/examples/custom_commands/config_mtls_transport.json +0 -33
  184. mcp_proxy_adapter/examples/custom_commands/config_single_transport.json +0 -33
  185. mcp_proxy_adapter/examples/custom_commands/custom_health_command.py +0 -169
  186. mcp_proxy_adapter/examples/custom_commands/custom_help_command.py +0 -215
  187. mcp_proxy_adapter/examples/custom_commands/custom_openapi_generator.py +0 -76
  188. mcp_proxy_adapter/examples/custom_commands/custom_settings.json +0 -96
  189. mcp_proxy_adapter/examples/custom_commands/custom_settings_manager.py +0 -241
  190. mcp_proxy_adapter/examples/custom_commands/data_transform_command.py +0 -135
  191. mcp_proxy_adapter/examples/custom_commands/echo_command.py +0 -122
  192. mcp_proxy_adapter/examples/custom_commands/full_help_response.json +0 -1
  193. mcp_proxy_adapter/examples/custom_commands/generated_openapi.json +0 -629
  194. mcp_proxy_adapter/examples/custom_commands/get_openapi.py +0 -103
  195. mcp_proxy_adapter/examples/custom_commands/hooks.py +0 -230
  196. mcp_proxy_adapter/examples/custom_commands/intercept_command.py +0 -123
  197. mcp_proxy_adapter/examples/custom_commands/loadable_commands/test_ignored.py +0 -129
  198. mcp_proxy_adapter/examples/custom_commands/manual_echo_command.py +0 -103
  199. mcp_proxy_adapter/examples/custom_commands/proxy_connection_manager.py +0 -278
  200. mcp_proxy_adapter/examples/custom_commands/server.py +0 -252
  201. mcp_proxy_adapter/examples/custom_commands/simple_openapi_server.py +0 -75
  202. mcp_proxy_adapter/examples/custom_commands/start_server_with_proxy_manager.py +0 -299
  203. mcp_proxy_adapter/examples/custom_commands/start_server_with_registration.py +0 -278
  204. mcp_proxy_adapter/examples/custom_commands/test_hooks.py +0 -176
  205. mcp_proxy_adapter/examples/custom_commands/test_openapi.py +0 -27
  206. mcp_proxy_adapter/examples/custom_commands/test_registry.py +0 -23
  207. mcp_proxy_adapter/examples/custom_commands/test_simple.py +0 -19
  208. mcp_proxy_adapter/examples/custom_project_example/README.md +0 -103
  209. mcp_proxy_adapter/examples/custom_project_example/README_EN.md +0 -103
  210. mcp_proxy_adapter/examples/deployment/README.md +0 -49
  211. mcp_proxy_adapter/examples/deployment/__init__.py +0 -7
  212. mcp_proxy_adapter/examples/deployment/config.development.json +0 -8
  213. mcp_proxy_adapter/examples/deployment/config.json +0 -29
  214. mcp_proxy_adapter/examples/deployment/config.production.json +0 -12
  215. mcp_proxy_adapter/examples/deployment/config.staging.json +0 -11
  216. mcp_proxy_adapter/examples/deployment/docker-compose.yml +0 -31
  217. mcp_proxy_adapter/examples/deployment/run.sh +0 -43
  218. mcp_proxy_adapter/examples/deployment/run_docker.sh +0 -84
  219. mcp_proxy_adapter/examples/simple_custom_commands/README.md +0 -149
  220. mcp_proxy_adapter/examples/simple_custom_commands/README_EN.md +0 -149
  221. mcp_proxy_adapter/schemas/base_schema.json +0 -114
  222. mcp_proxy_adapter/schemas/openapi_schema.json +0 -314
  223. mcp_proxy_adapter/schemas/roles_schema.json +0 -162
  224. mcp_proxy_adapter/tests/__init__.py +0 -0
  225. mcp_proxy_adapter/tests/api/__init__.py +0 -3
  226. mcp_proxy_adapter/tests/api/test_cmd_endpoint.py +0 -115
  227. mcp_proxy_adapter/tests/api/test_custom_openapi.py +0 -617
  228. mcp_proxy_adapter/tests/api/test_handlers.py +0 -522
  229. mcp_proxy_adapter/tests/api/test_middleware.py +0 -340
  230. mcp_proxy_adapter/tests/api/test_schemas.py +0 -546
  231. mcp_proxy_adapter/tests/api/test_tool_integration.py +0 -531
  232. mcp_proxy_adapter/tests/commands/__init__.py +0 -3
  233. mcp_proxy_adapter/tests/commands/test_config_command.py +0 -211
  234. mcp_proxy_adapter/tests/commands/test_echo_command.py +0 -127
  235. mcp_proxy_adapter/tests/commands/test_help_command.py +0 -136
  236. mcp_proxy_adapter/tests/conftest.py +0 -131
  237. mcp_proxy_adapter/tests/functional/__init__.py +0 -3
  238. mcp_proxy_adapter/tests/functional/test_api.py +0 -253
  239. mcp_proxy_adapter/tests/integration/__init__.py +0 -3
  240. mcp_proxy_adapter/tests/integration/test_cmd_integration.py +0 -129
  241. mcp_proxy_adapter/tests/integration/test_integration.py +0 -255
  242. mcp_proxy_adapter/tests/performance/__init__.py +0 -3
  243. mcp_proxy_adapter/tests/performance/test_performance.py +0 -189
  244. mcp_proxy_adapter/tests/stubs/__init__.py +0 -10
  245. mcp_proxy_adapter/tests/stubs/echo_command.py +0 -104
  246. mcp_proxy_adapter/tests/test_api_endpoints.py +0 -271
  247. mcp_proxy_adapter/tests/test_api_handlers.py +0 -289
  248. mcp_proxy_adapter/tests/test_base_command.py +0 -123
  249. mcp_proxy_adapter/tests/test_batch_requests.py +0 -117
  250. mcp_proxy_adapter/tests/test_command_registry.py +0 -281
  251. mcp_proxy_adapter/tests/test_config.py +0 -127
  252. mcp_proxy_adapter/tests/test_utils.py +0 -65
  253. mcp_proxy_adapter/tests/unit/__init__.py +0 -3
  254. mcp_proxy_adapter/tests/unit/test_base_command.py +0 -436
  255. mcp_proxy_adapter/tests/unit/test_config.py +0 -270
  256. mcp_proxy_adapter-6.0.0.dist-info/METADATA +0 -201
  257. mcp_proxy_adapter-6.0.0.dist-info/RECORD +0 -179
  258. {mcp_proxy_adapter-6.0.0.dist-info → mcp_proxy_adapter-6.1.0.dist-info}/WHEEL +0 -0
  259. {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
- }