mcp-proxy-adapter 6.4.33__tar.gz → 6.4.36__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/PKG-INFO +2 -2
  2. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/create_test_configs.py +28 -22
  3. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/run_security_tests.py +42 -26
  4. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/setup_test_environment.py +9 -17
  5. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/version.py +1 -1
  6. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter.egg-info/PKG-INFO +2 -2
  7. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter.egg-info/requires.txt +1 -1
  8. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/pyproject.toml +2 -2
  9. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/README.md +0 -0
  10. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/__init__.py +0 -0
  11. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/__main__.py +0 -0
  12. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/__init__.py +0 -0
  13. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/app.py +0 -0
  14. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/handlers.py +0 -0
  15. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/middleware/__init__.py +0 -0
  16. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/middleware/base.py +0 -0
  17. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/middleware/command_permission_middleware.py +0 -0
  18. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/middleware/error_handling.py +0 -0
  19. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/middleware/factory.py +0 -0
  20. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/middleware/logging.py +0 -0
  21. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/middleware/performance.py +0 -0
  22. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/middleware/protocol_middleware.py +0 -0
  23. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/middleware/transport_middleware.py +0 -0
  24. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/middleware/unified_security.py +0 -0
  25. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/middleware/user_info_middleware.py +0 -0
  26. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/schemas.py +0 -0
  27. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/tool_integration.py +0 -0
  28. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/api/tools.py +0 -0
  29. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/__init__.py +0 -0
  30. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/auth_validation_command.py +0 -0
  31. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/base.py +0 -0
  32. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/builtin_commands.py +0 -0
  33. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/catalog_manager.py +0 -0
  34. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/cert_monitor_command.py +0 -0
  35. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/certificate_management_command.py +0 -0
  36. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/command_registry.py +0 -0
  37. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/config_command.py +0 -0
  38. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/dependency_container.py +0 -0
  39. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/dependency_manager.py +0 -0
  40. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/echo_command.py +0 -0
  41. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/health_command.py +0 -0
  42. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/help_command.py +0 -0
  43. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/hooks.py +0 -0
  44. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/key_management_command.py +0 -0
  45. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/load_command.py +0 -0
  46. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/plugins_command.py +0 -0
  47. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/protocol_management_command.py +0 -0
  48. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/proxy_registration_command.py +0 -0
  49. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/reload_command.py +0 -0
  50. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/result.py +0 -0
  51. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/role_test_command.py +0 -0
  52. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/roles_management_command.py +0 -0
  53. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/security_command.py +0 -0
  54. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/settings_command.py +0 -0
  55. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/ssl_setup_command.py +0 -0
  56. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/token_management_command.py +0 -0
  57. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/transport_management_command.py +0 -0
  58. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/commands/unload_command.py +0 -0
  59. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/config.py +0 -0
  60. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/__init__.py +0 -0
  61. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/app_factory.py +0 -0
  62. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/app_runner.py +0 -0
  63. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/auth_validator.py +0 -0
  64. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/certificate_utils.py +0 -0
  65. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/client.py +0 -0
  66. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/client_manager.py +0 -0
  67. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/client_security.py +0 -0
  68. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/config_converter.py +0 -0
  69. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/config_validator.py +0 -0
  70. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/crl_utils.py +0 -0
  71. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/errors.py +0 -0
  72. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/logging.py +0 -0
  73. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/mtls_asgi.py +0 -0
  74. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/mtls_asgi_app.py +0 -0
  75. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/mtls_server.py +0 -0
  76. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/protocol_manager.py +0 -0
  77. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/proxy_client.py +0 -0
  78. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/proxy_registration.py +0 -0
  79. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/role_utils.py +0 -0
  80. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/security_adapter.py +0 -0
  81. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/security_factory.py +0 -0
  82. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/security_integration.py +0 -0
  83. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/server_adapter.py +0 -0
  84. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/server_engine.py +0 -0
  85. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/settings.py +0 -0
  86. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/ssl_utils.py +0 -0
  87. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/transport_manager.py +0 -0
  88. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/unified_config_adapter.py +0 -0
  89. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/core/utils.py +0 -0
  90. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/custom_openapi.py +0 -0
  91. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/__init__.py +0 -0
  92. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/basic_framework/__init__.py +0 -0
  93. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +0 -0
  94. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +0 -0
  95. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/basic_framework/main.py +0 -0
  96. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/commands/__init__.py +0 -0
  97. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/create_certificates_simple.py +0 -0
  98. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/debug_request_state.py +0 -0
  99. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/debug_role_chain.py +0 -0
  100. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/demo_client.py +0 -0
  101. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/full_application/__init__.py +0 -0
  102. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/full_application/commands/__init__.py +0 -0
  103. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +0 -0
  104. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +0 -0
  105. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/full_application/hooks/__init__.py +0 -0
  106. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +0 -0
  107. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +0 -0
  108. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/full_application/main.py +0 -0
  109. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +0 -0
  110. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/generate_all_certificates.py +0 -0
  111. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/generate_certificates.py +0 -0
  112. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/generate_certificates_and_tokens.py +0 -0
  113. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/generate_test_configs.py +0 -0
  114. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/proxy_registration_example.py +0 -0
  115. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/run_example.py +0 -0
  116. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/run_full_test_suite.py +0 -0
  117. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/run_proxy_server.py +0 -0
  118. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/run_security_tests_fixed.py +0 -0
  119. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/scripts/config_generator.py +0 -0
  120. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/scripts/create_certificates_simple.py +0 -0
  121. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/scripts/generate_certificates_and_tokens.py +0 -0
  122. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/security_test_client.py +0 -0
  123. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/test_config.py +0 -0
  124. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/test_config_generator.py +0 -0
  125. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/test_examples.py +0 -0
  126. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/examples/universal_client.py +0 -0
  127. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/main.py +0 -0
  128. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter/openapi.py +0 -0
  129. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter.egg-info/SOURCES.txt +0 -0
  130. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter.egg-info/dependency_links.txt +0 -0
  131. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter.egg-info/entry_points.txt +0 -0
  132. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter.egg-info/not-zip-safe +0 -0
  133. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/mcp_proxy_adapter.egg-info/top_level.txt +0 -0
  134. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/setup.cfg +0 -0
  135. {mcp_proxy_adapter-6.4.33 → mcp_proxy_adapter-6.4.36}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 6.4.33
3
+ Version: 6.4.36
4
4
  Summary: Powerful JSON-RPC microservices framework with built-in security, authentication, and proxy registration
5
5
  Home-page: https://github.com/maverikod/mcp-proxy-adapter
6
6
  Author: Vasiliy Zdanovskiy
@@ -35,7 +35,7 @@ Requires-Dist: docstring-parser<1.0.0,>=0.15
35
35
  Requires-Dist: typing-extensions<5.0.0,>=4.5.0
36
36
  Requires-Dist: jsonrpc>=1.2.0
37
37
  Requires-Dist: psutil>=5.9.0
38
- Requires-Dist: mcp_security_framework>=1.1.2
38
+ Requires-Dist: mcp_security_framework>=1.2.1
39
39
  Requires-Dist: packaging>=20.0
40
40
  Requires-Dist: aiohttp<4.0.0,>=3.8.0
41
41
  Requires-Dist: requests<3.0.0,>=2.28.0
@@ -74,16 +74,17 @@ class TestConfigGenerator:
74
74
 
75
75
  # 1. HTTP Simple
76
76
  self.create_config("http_simple", {
77
- "server.port": 8001,
77
+ "server.port": 20020, # Dedicated port for basic_http
78
78
  "ssl.enabled": False,
79
79
  "security.enabled": False,
80
80
  "proxy_registration.enabled": False,
81
- "protocols.allowed_protocols": ["http"]
81
+ "protocols.allowed_protocols": ["http"],
82
+ "protocols.default_protocol": "http"
82
83
  })
83
84
 
84
- # 2. HTTP with Auth
85
- self.create_config("http_auth", {
86
- "server.port": 8002,
85
+ # 2. HTTP with Auth (renamed to http_token for security tests)
86
+ self.create_config("http_token", {
87
+ "server.port": 20021, # Dedicated port for http_token
87
88
  "ssl.enabled": False,
88
89
  "security.enabled": True,
89
90
  "security.auth.enabled": True,
@@ -93,26 +94,28 @@ class TestConfigGenerator:
93
94
  "user": "user-secret-key"
94
95
  },
95
96
  "proxy_registration.enabled": False,
96
- "protocols.allowed_protocols": ["http"]
97
+ "protocols.allowed_protocols": ["http"],
98
+ "protocols.default_protocol": "http"
97
99
  })
98
100
 
99
101
  # 3. HTTPS Simple
100
102
  self.create_config("https_simple", {
101
- "server.port": 8003,
103
+ "server.port": 20022, # Dedicated port for https
102
104
  "ssl.enabled": True,
103
105
  "ssl.cert_file": "certs/localhost_server.crt",
104
- "ssl.key_file": "keys/localhost_server.key",
106
+ "ssl.key_file": "keys/server_key.pem",
105
107
  "security.enabled": False,
106
108
  "proxy_registration.enabled": False,
107
- "protocols.allowed_protocols": ["https"]
109
+ "protocols.allowed_protocols": ["https"],
110
+ "protocols.default_protocol": "https"
108
111
  })
109
112
 
110
- # 4. HTTPS with Auth
111
- self.create_config("https_auth", {
112
- "server.port": 8004,
113
+ # 4. HTTPS with Auth (renamed to https_token for security tests)
114
+ self.create_config("https_token", {
115
+ "server.port": 20023, # Dedicated port for https_token
113
116
  "ssl.enabled": True,
114
117
  "ssl.cert_file": "certs/localhost_server.crt",
115
- "ssl.key_file": "keys/localhost_server.key",
118
+ "ssl.key_file": "keys/server_key.pem",
116
119
  "security.enabled": True,
117
120
  "security.auth.enabled": True,
118
121
  "security.auth.methods": ["api_key"],
@@ -121,30 +124,32 @@ class TestConfigGenerator:
121
124
  "user": "user-secret-key"
122
125
  },
123
126
  "proxy_registration.enabled": False,
124
- "protocols.allowed_protocols": ["https"]
127
+ "protocols.allowed_protocols": ["https"],
128
+ "protocols.default_protocol": "https"
125
129
  })
126
130
 
127
131
  # 5. mTLS Simple
128
132
  self.create_config("mtls_simple", {
129
- "server.port": 8005,
133
+ "server.port": 20025, # Different port for mtls_simple
130
134
  "ssl.enabled": True,
131
135
  "ssl.cert_file": "certs/localhost_server.crt",
132
- "ssl.key_file": "keys/localhost_server.key",
136
+ "ssl.key_file": "keys/server_key.pem",
133
137
  "ssl.ca_cert": "certs/mcp_proxy_adapter_ca_ca.crt",
134
138
  "ssl.verify_client": True,
135
139
  "security.enabled": True,
136
140
  "security.auth.enabled": True,
137
141
  "security.auth.methods": ["certificate"],
138
142
  "proxy_registration.enabled": False,
139
- "protocols.allowed_protocols": ["https", "mtls"]
143
+ "protocols.allowed_protocols": ["https", "mtls"],
144
+ "protocols.default_protocol": "mtls"
140
145
  })
141
146
 
142
147
  # 6. mTLS with Roles
143
148
  self.create_config("mtls_with_roles", {
144
- "server.port": 8006,
149
+ "server.port": 20026, # Different port for mtls_with_roles
145
150
  "ssl.enabled": True,
146
151
  "ssl.cert_file": "certs/localhost_server.crt",
147
- "ssl.key_file": "keys/localhost_server.key",
152
+ "ssl.key_file": "keys/server_key.pem",
148
153
  "ssl.ca_cert": "certs/mcp_proxy_adapter_ca_ca.crt",
149
154
  "ssl.verify_client": True,
150
155
  "security.enabled": True,
@@ -153,15 +158,16 @@ class TestConfigGenerator:
153
158
  "security.permissions.enabled": True,
154
159
  "security.permissions.roles_file": "configs/roles.json",
155
160
  "proxy_registration.enabled": False,
156
- "protocols.allowed_protocols": ["https", "mtls"]
161
+ "protocols.allowed_protocols": ["https", "mtls"],
162
+ "protocols.default_protocol": "mtls"
157
163
  })
158
164
 
159
165
  # 6a. mTLS without Roles (for security tests)
160
166
  self.create_config("mtls_no_roles", {
161
- "server.port": 8009,
167
+ "server.port": 20024, # Dedicated port for mtls
162
168
  "ssl.enabled": True,
163
169
  "ssl.cert_file": "certs/localhost_server.crt",
164
- "ssl.key_file": "keys/localhost_server.key",
170
+ "ssl.key_file": "keys/server_key.pem",
165
171
  "ssl.ca_cert": "certs/mcp_proxy_adapter_ca_ca.crt",
166
172
  "ssl.verify_client": True,
167
173
  "security.enabled": True,
@@ -41,39 +41,39 @@ class SecurityTestRunner:
41
41
  self.server_logs = {}
42
42
  self.proxy_log = None
43
43
  self.test_results = {}
44
- # Base and proxy ports
45
- self.base_port = 20000
44
+ # Base and proxy ports - each test gets its own port range
45
+ self.base_port = 20020
46
46
  self.proxy_port = 20010
47
- # Server configurations with ports starting from 20000
47
+ # Server configurations with SEPARATE ports for each test
48
48
  self.configs = {
49
49
  "basic_http": {
50
50
  "config": "configs/http_simple.json",
51
- "port": self.base_port + 0,
52
- "url": f"http://localhost:{self.base_port + 0}",
51
+ "port": 20020, # Dedicated port
52
+ "url": f"http://127.0.0.1:20020",
53
53
  "auth": "none",
54
54
  },
55
55
  "http_token": {
56
56
  "config": "configs/http_token.json",
57
- "port": self.base_port + 1,
58
- "url": f"http://localhost:{self.base_port + 1}",
57
+ "port": 20021, # Dedicated port
58
+ "url": f"http://127.0.0.1:20021",
59
59
  "auth": "api_key",
60
60
  },
61
61
  "https": {
62
62
  "config": "configs/https_simple.json",
63
- "port": self.base_port + 2,
64
- "url": f"https://localhost:{self.base_port + 2}",
63
+ "port": 20022, # Dedicated port
64
+ "url": f"https://127.0.0.1:20022",
65
65
  "auth": "none",
66
66
  },
67
67
  "https_token": {
68
68
  "config": "configs/https_token.json",
69
- "port": self.base_port + 3,
70
- "url": f"https://localhost:{self.base_port + 3}",
69
+ "port": 20023, # Dedicated port
70
+ "url": f"https://127.0.0.1:20023",
71
71
  "auth": "api_key",
72
72
  },
73
73
  "mtls": {
74
74
  "config": "configs/mtls_no_roles.json",
75
- "port": self.base_port + 4,
76
- "url": f"https://localhost:{self.base_port + 4}",
75
+ "port": 20024, # Dedicated port
76
+ "url": f"https://127.0.0.1:20024",
77
77
  "auth": "certificate",
78
78
  },
79
79
  }
@@ -229,17 +229,13 @@ class SecurityTestRunner:
229
229
  """Start a server in background."""
230
230
  try:
231
231
  print(f"🚀 Starting {name} server on port {port}...")
232
- # Ensure the port is free just before starting
233
- self.ensure_ports_free([port])
232
+
233
+ # Check if port is still available (should be, since we checked at start)
234
234
  if self._port_in_use(port):
235
- print(f"⚠️ Port {port} still busy, waiting...")
236
- if not self.wait_for_port(port, timeout_sec=1.5):
237
- # After wait_for_port True means busy; we invert logic here
238
- pass
239
- # If still busy after attempts, abort this server start
240
- if self._port_in_use(port):
241
- print(f"❌ Port {port} is in use, cannot start {name}")
235
+ print(f" Port {port} is unexpectedly in use, cannot start {name}")
236
+ print("💡 This should not happen - ports were checked at startup")
242
237
  return None
238
+
243
239
  # Start server in background
244
240
  logs_dir = Path("logs")
245
241
  logs_dir.mkdir(exist_ok=True)
@@ -521,14 +517,34 @@ class SecurityTestRunner:
521
517
  signal.signal(signal.SIGINT, self.signal_handler)
522
518
  signal.signal(signal.SIGTERM, self.signal_handler)
523
519
  try:
520
+ # FIRST: Check ALL ports at the very beginning
521
+ print("\n🔍 STEP 1: Complete Port Availability Check")
522
+ all_ports = self.get_all_ports()
523
+ print(f"📋 Required ports: {all_ports}")
524
+
525
+ # Check if ALL ports are available
526
+ ports_available, occupied_ports = self.check_ports_available(all_ports)
527
+ if not ports_available:
528
+ print(f"❌ CRITICAL: Ports are occupied: {occupied_ports}")
529
+ print("🧹 Attempting to free occupied ports...")
530
+
531
+ if not self.ensure_ports_free(all_ports):
532
+ print("❌ FAILED: Could not free occupied ports. Aborting tests.")
533
+ print("💡 Manual cleanup required:")
534
+ for port in occupied_ports:
535
+ pids = self._pids_on_port(port)
536
+ if pids:
537
+ print(f" Port {port}: PIDs {pids}")
538
+ return False
539
+ else:
540
+ print("✅ Ports freed successfully")
541
+ else:
542
+ print("✅ All required ports are available")
543
+
524
544
  # Check prerequisites
525
545
  if not self.check_prerequisites():
526
546
  return False
527
547
 
528
- # Free ports before run
529
- print("\n🧹 Freeing ports before startup...")
530
- self.ensure_ports_free(self.get_all_ports())
531
-
532
548
  # Validate config file paths
533
549
  if not self.validate_config_files():
534
550
  return False
@@ -1227,25 +1227,17 @@ def check_ports_available() -> bool:
1227
1227
  """
1228
1228
  import socket
1229
1229
 
1230
- # Ports used by the test suite
1230
+ # Ports used by the test suite - UPDATED with dedicated ports
1231
1231
  test_ports = [
1232
- 20000, # basic_http
1233
- 20001, # http_token
1234
- 20002, # https_simple
1235
- 20003, # https_token
1236
- 20004, # mtls_no_roles
1237
- 20005, # test_proxy_server
1238
1232
  20010, # proxy_port
1239
- 20020, # base_port (run_security_tests)
1240
- 20021, # base_port + 1
1241
- 20022, # base_port + 2
1242
- 20023, # base_port + 3
1243
- 20024, # base_port + 4
1244
- 20025, # base_port + 5
1245
- 20026, # base_port + 6
1246
- 20027, # base_port + 7
1247
- 20028, # base_port + 8
1248
- 20029, # base_port + 9
1233
+ 20020, # basic_http (http_simple)
1234
+ 20021, # http_token
1235
+ 20022, # https_simple
1236
+ 20023, # https_token
1237
+ 20024, # mtls_no_roles
1238
+ 20025, # mtls_simple
1239
+ 20026, # mtls_with_roles
1240
+ 20005, # test_proxy_server
1249
1241
  3006, # proxy registration
1250
1242
  ]
1251
1243
 
@@ -2,4 +2,4 @@
2
2
  Version information for MCP Proxy Adapter.
3
3
  """
4
4
 
5
- __version__ = "6.4.33"
5
+ __version__ = "6.4.36"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 6.4.33
3
+ Version: 6.4.36
4
4
  Summary: Powerful JSON-RPC microservices framework with built-in security, authentication, and proxy registration
5
5
  Home-page: https://github.com/maverikod/mcp-proxy-adapter
6
6
  Author: Vasiliy Zdanovskiy
@@ -35,7 +35,7 @@ Requires-Dist: docstring-parser<1.0.0,>=0.15
35
35
  Requires-Dist: typing-extensions<5.0.0,>=4.5.0
36
36
  Requires-Dist: jsonrpc>=1.2.0
37
37
  Requires-Dist: psutil>=5.9.0
38
- Requires-Dist: mcp_security_framework>=1.1.2
38
+ Requires-Dist: mcp_security_framework>=1.2.1
39
39
  Requires-Dist: packaging>=20.0
40
40
  Requires-Dist: aiohttp<4.0.0,>=3.8.0
41
41
  Requires-Dist: requests<3.0.0,>=2.28.0
@@ -5,7 +5,7 @@ docstring-parser<1.0.0,>=0.15
5
5
  typing-extensions<5.0.0,>=4.5.0
6
6
  jsonrpc>=1.2.0
7
7
  psutil>=5.9.0
8
- mcp_security_framework>=1.1.2
8
+ mcp_security_framework>=1.2.1
9
9
  packaging>=20.0
10
10
  aiohttp<4.0.0,>=3.8.0
11
11
  requests<3.0.0,>=2.28.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mcp-proxy-adapter"
7
- version = "6.4.33"
7
+ version = "6.4.36"
8
8
  description = "Powerful JSON-RPC microservices framework with built-in security, authentication, and proxy registration"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -51,7 +51,7 @@ dependencies = [
51
51
  "typing-extensions>=4.5.0,<5.0.0",
52
52
  "jsonrpc>=1.2.0",
53
53
  "psutil>=5.9.0",
54
- "mcp_security_framework>=1.1.2",
54
+ "mcp_security_framework>=1.2.1",
55
55
  "packaging>=20.0",
56
56
  "aiohttp>=3.8.0,<4.0.0",
57
57
  "requests>=2.28.0,<3.0.0"