mcp-proxy-adapter 6.4.14__tar.gz → 6.4.15__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.14 → mcp_proxy_adapter-6.4.15}/PKG-INFO +2 -1
  2. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/run_full_test_suite.py +0 -4
  3. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/setup_test_environment.py +150 -19
  4. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/version.py +1 -1
  5. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter.egg-info/PKG-INFO +2 -1
  6. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter.egg-info/requires.txt +1 -0
  7. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/pyproject.toml +2 -1
  8. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/README.md +0 -0
  9. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/__init__.py +0 -0
  10. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/__main__.py +0 -0
  11. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/__init__.py +0 -0
  12. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/app.py +0 -0
  13. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/handlers.py +0 -0
  14. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/middleware/__init__.py +0 -0
  15. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/middleware/base.py +0 -0
  16. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/middleware/command_permission_middleware.py +0 -0
  17. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/middleware/error_handling.py +0 -0
  18. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/middleware/factory.py +0 -0
  19. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/middleware/logging.py +0 -0
  20. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/middleware/performance.py +0 -0
  21. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/middleware/protocol_middleware.py +0 -0
  22. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/middleware/transport_middleware.py +0 -0
  23. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/middleware/unified_security.py +0 -0
  24. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/middleware/user_info_middleware.py +0 -0
  25. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/schemas.py +0 -0
  26. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/tool_integration.py +0 -0
  27. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/api/tools.py +0 -0
  28. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/__init__.py +0 -0
  29. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/auth_validation_command.py +0 -0
  30. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/base.py +0 -0
  31. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/builtin_commands.py +0 -0
  32. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/catalog_manager.py +0 -0
  33. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/cert_monitor_command.py +0 -0
  34. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/certificate_management_command.py +0 -0
  35. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/command_registry.py +0 -0
  36. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/config_command.py +0 -0
  37. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/dependency_container.py +0 -0
  38. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/dependency_manager.py +0 -0
  39. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/echo_command.py +0 -0
  40. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/health_command.py +0 -0
  41. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/help_command.py +0 -0
  42. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/hooks.py +0 -0
  43. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/key_management_command.py +0 -0
  44. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/load_command.py +0 -0
  45. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/plugins_command.py +0 -0
  46. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/protocol_management_command.py +0 -0
  47. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/proxy_registration_command.py +0 -0
  48. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/reload_command.py +0 -0
  49. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/result.py +0 -0
  50. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/role_test_command.py +0 -0
  51. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/roles_management_command.py +0 -0
  52. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/security_command.py +0 -0
  53. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/settings_command.py +0 -0
  54. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/ssl_setup_command.py +0 -0
  55. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/token_management_command.py +0 -0
  56. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/transport_management_command.py +0 -0
  57. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/commands/unload_command.py +0 -0
  58. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/config.py +0 -0
  59. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/__init__.py +0 -0
  60. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/app_factory.py +0 -0
  61. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/app_runner.py +0 -0
  62. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/auth_validator.py +0 -0
  63. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/certificate_utils.py +0 -0
  64. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/client.py +0 -0
  65. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/client_manager.py +0 -0
  66. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/client_security.py +0 -0
  67. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/config_converter.py +0 -0
  68. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/config_validator.py +0 -0
  69. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/crl_utils.py +0 -0
  70. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/errors.py +0 -0
  71. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/logging.py +0 -0
  72. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/mtls_asgi.py +0 -0
  73. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/mtls_asgi_app.py +0 -0
  74. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/mtls_server.py +0 -0
  75. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/protocol_manager.py +0 -0
  76. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/proxy_client.py +0 -0
  77. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/proxy_registration.py +0 -0
  78. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/role_utils.py +0 -0
  79. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/security_adapter.py +0 -0
  80. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/security_factory.py +0 -0
  81. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/security_integration.py +0 -0
  82. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/server_adapter.py +0 -0
  83. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/server_engine.py +0 -0
  84. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/settings.py +0 -0
  85. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/ssl_utils.py +0 -0
  86. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/transport_manager.py +0 -0
  87. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/unified_config_adapter.py +0 -0
  88. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/core/utils.py +0 -0
  89. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/custom_openapi.py +0 -0
  90. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/__init__.py +0 -0
  91. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/basic_framework/__init__.py +0 -0
  92. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +0 -0
  93. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +0 -0
  94. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/basic_framework/main.py +0 -0
  95. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/commands/__init__.py +0 -0
  96. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/create_certificates_simple.py +0 -0
  97. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/create_test_configs.py +0 -0
  98. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/debug_request_state.py +0 -0
  99. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/debug_role_chain.py +0 -0
  100. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/demo_client.py +0 -0
  101. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/full_application/__init__.py +0 -0
  102. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/full_application/commands/__init__.py +0 -0
  103. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +0 -0
  104. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +0 -0
  105. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/full_application/hooks/__init__.py +0 -0
  106. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +0 -0
  107. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +0 -0
  108. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/full_application/main.py +0 -0
  109. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +0 -0
  110. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/generate_all_certificates.py +0 -0
  111. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/generate_certificates.py +0 -0
  112. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/generate_certificates_and_tokens.py +0 -0
  113. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/generate_test_configs.py +0 -0
  114. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/proxy_registration_example.py +0 -0
  115. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/run_example.py +0 -0
  116. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/run_proxy_server.py +0 -0
  117. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/run_security_tests.py +0 -0
  118. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/run_security_tests_fixed.py +0 -0
  119. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/scripts/config_generator.py +0 -0
  120. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/scripts/create_certificates_simple.py +0 -0
  121. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/scripts/generate_certificates_and_tokens.py +0 -0
  122. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/security_test_client.py +0 -0
  123. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/test_config.py +0 -0
  124. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/test_config_generator.py +0 -0
  125. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/test_examples.py +0 -0
  126. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/examples/universal_client.py +0 -0
  127. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/main.py +0 -0
  128. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter/openapi.py +0 -0
  129. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter.egg-info/SOURCES.txt +0 -0
  130. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter.egg-info/dependency_links.txt +0 -0
  131. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter.egg-info/entry_points.txt +0 -0
  132. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter.egg-info/not-zip-safe +0 -0
  133. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/mcp_proxy_adapter.egg-info/top_level.txt +0 -0
  134. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/setup.cfg +0 -0
  135. {mcp_proxy_adapter-6.4.14 → mcp_proxy_adapter-6.4.15}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 6.4.14
3
+ Version: 6.4.15
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
@@ -31,6 +31,7 @@ Description-Content-Type: text/markdown
31
31
  Requires-Dist: fastapi<1.0.0,>=0.95.0
32
32
  Requires-Dist: pydantic>=2.0.0
33
33
  Requires-Dist: hypercorn<1.0.0,>=0.15.0
34
+ Requires-Dist: uvicorn<1.0.0,>=0.15.0
34
35
  Requires-Dist: docstring-parser<1.0.0,>=0.15
35
36
  Requires-Dist: typing-extensions<5.0.0,>=4.5.0
36
37
  Requires-Dist: jsonrpc>=1.2.0
@@ -436,10 +436,6 @@ class FullTestSuiteRunner:
436
436
  print(f"Python executable: {sys.executable}")
437
437
 
438
438
  try:
439
- # Step 0: Clean up existing directories
440
- if not self.cleanup_directories():
441
- return False
442
-
443
439
  # Step 1: Environment validation
444
440
  if not self.check_environment():
445
441
  return False
@@ -18,7 +18,9 @@ Features:
18
18
  - Protocol-aware configuration generation
19
19
  - Enhanced error handling and troubleshooting
20
20
  """
21
+ import os
21
22
  import shutil
23
+ import subprocess
22
24
  import sys
23
25
  import argparse
24
26
  import json
@@ -1023,27 +1025,139 @@ def generate_certificates_with_framework(output_dir: Path) -> bool:
1023
1025
  return False
1024
1026
 
1025
1027
 
1028
+ def run_full_test_suite(target_root: Path) -> bool:
1029
+ """Run the full test suite after environment setup."""
1030
+ print("\n" + "=" * 60)
1031
+ print("🚀 AUTOMATICALLY RUNNING FULL TEST SUITE")
1032
+ print("=" * 60)
1033
+
1034
+ try:
1035
+ # Change to target directory
1036
+ original_cwd = Path.cwd()
1037
+ os.chdir(target_root)
1038
+
1039
+ # Run the full test suite
1040
+ result = subprocess.run([
1041
+ sys.executable, "run_full_test_suite.py"
1042
+ ], capture_output=True, text=True, timeout=300) # 5 minute timeout
1043
+
1044
+ # Print output
1045
+ if result.stdout:
1046
+ print("📋 Test Suite Output:")
1047
+ print(result.stdout)
1048
+
1049
+ if result.stderr:
1050
+ print("⚠️ Test Suite Warnings/Errors:")
1051
+ print(result.stderr)
1052
+
1053
+ if result.returncode == 0:
1054
+ print("🎉 FULL TEST SUITE COMPLETED SUCCESSFULLY!")
1055
+ return True
1056
+ else:
1057
+ print(f"❌ FULL TEST SUITE FAILED (exit code: {result.returncode})")
1058
+ return False
1059
+
1060
+ except subprocess.TimeoutExpired:
1061
+ print("⏰ Test suite timed out after 5 minutes")
1062
+ return False
1063
+ except Exception as e:
1064
+ print(f"❌ Error running test suite: {e}")
1065
+ return False
1066
+ finally:
1067
+ # Restore original working directory
1068
+ os.chdir(original_cwd)
1069
+
1070
+
1071
+ def validate_output_directory(output_dir: Path) -> bool:
1072
+ """
1073
+ Validate output directory for test environment setup.
1074
+
1075
+ Args:
1076
+ output_dir: Path to the target directory
1077
+
1078
+ Returns:
1079
+ True if directory is valid for setup, False otherwise
1080
+ """
1081
+ output_dir = output_dir.resolve()
1082
+
1083
+ # Check if directory exists
1084
+ if output_dir.exists():
1085
+ if not output_dir.is_dir():
1086
+ print(f"❌ Path exists but is not a directory: {output_dir}")
1087
+ return False
1088
+
1089
+ # Check if directory is empty
1090
+ try:
1091
+ contents = list(output_dir.iterdir())
1092
+ if contents:
1093
+ print(f"❌ Directory is not empty: {output_dir}")
1094
+ print(f" Found {len(contents)} items:")
1095
+ for item in contents[:5]: # Show first 5 items
1096
+ print(f" - {item.name}")
1097
+ if len(contents) > 5:
1098
+ print(f" ... and {len(contents) - 5} more items")
1099
+ print("\n💡 Please use an empty directory or specify a different path.")
1100
+ return False
1101
+ except PermissionError:
1102
+ print(f"❌ Permission denied accessing directory: {output_dir}")
1103
+ return False
1104
+ else:
1105
+ # Directory doesn't exist, try to create it
1106
+ try:
1107
+ output_dir.mkdir(parents=True, exist_ok=True)
1108
+ print(f"✅ Created directory: {output_dir}")
1109
+ except PermissionError:
1110
+ print(f"❌ Permission denied creating directory: {output_dir}")
1111
+ return False
1112
+ except Exception as e:
1113
+ print(f"❌ Failed to create directory {output_dir}: {e}")
1114
+ return False
1115
+
1116
+ return True
1117
+
1118
+
1026
1119
  def main() -> int:
1027
1120
  """Main function for command line execution."""
1028
1121
  parser = argparse.ArgumentParser(
1029
- description="Setup enhanced test environment for MCP Proxy Adapter"
1122
+ description="Setup enhanced test environment for MCP Proxy Adapter and run full test suite"
1030
1123
  )
1031
1124
  parser.add_argument(
1032
- "--output-dir",
1033
- "-o",
1125
+ "output_dir",
1126
+ nargs="?",
1034
1127
  type=str,
1035
- default=".",
1128
+ default=None,
1036
1129
  help=(
1037
1130
  "Target directory to create the test environment "
1038
- "(default: current directory)"
1131
+ "(default: auto-generated directory in /tmp)"
1039
1132
  ),
1040
1133
  )
1041
1134
  parser.add_argument(
1042
1135
  "--skip-certs", action="store_true", help="Skip certificate generation"
1043
1136
  )
1137
+ parser.add_argument(
1138
+ "--skip-tests", action="store_true", help="Skip running the full test suite"
1139
+ )
1044
1140
  args = parser.parse_args()
1141
+
1045
1142
  try:
1046
- target_root = Path(args.output_dir)
1143
+ # Determine target directory
1144
+ if args.output_dir is None:
1145
+ # Create auto-generated directory in /tmp
1146
+ import tempfile
1147
+ import time
1148
+ timestamp = int(time.time())
1149
+ target_root = Path(tempfile.gettempdir()) / f"mcp_test_env_{timestamp}"
1150
+ print(f"🔧 Auto-generating test environment directory: {target_root}")
1151
+ else:
1152
+ target_root = Path(args.output_dir)
1153
+
1154
+ # Validate output directory
1155
+ print(f"🔍 Validating output directory: {target_root}")
1156
+ if not validate_output_directory(target_root):
1157
+ print("\n❌ Directory validation failed. Exiting.")
1158
+ return 1
1159
+
1160
+ print(f"✅ Directory validation passed: {target_root}")
1047
1161
  setup_test_environment(target_root)
1048
1162
 
1049
1163
  # Generate certificates if framework is available and not skipped
@@ -1056,6 +1170,16 @@ def main() -> int:
1056
1170
  "⚠️ Skipping certificate generation (mcp_security_framework "
1057
1171
  "not available)"
1058
1172
  )
1173
+
1174
+ # Run full test suite if not skipped
1175
+ if not args.skip_tests:
1176
+ test_success = run_full_test_suite(target_root)
1177
+ if not test_success:
1178
+ print("\n❌ TEST SUITE FAILED - Check the output above for details")
1179
+ return 1
1180
+ else:
1181
+ print("⚠️ Skipping test suite execution (--skip-tests specified)")
1182
+
1059
1183
  except Exception as e:
1060
1184
  print(
1061
1185
  "❌ Error setting up test environment: {}".format(e),
@@ -1070,19 +1194,26 @@ def main() -> int:
1070
1194
  print("\n" + "=" * 60)
1071
1195
  print("✅ ENHANCED TEST ENVIRONMENT SETUP COMPLETED SUCCESSFULLY")
1072
1196
  print("=" * 60)
1073
- print("\n📋 NEXT STEPS:")
1074
- print("1. Review configuration documentation:")
1075
- print(" cat docs/CONFIGURATION_GUIDE.md")
1076
- print("\n2. Check available configurations:")
1077
- print(" ls -la configs/")
1078
- print("\n3. Test proxy registration SSL fix:")
1079
- print(" python test_proxy_registration.py")
1080
- print("\n4. Start server with a specific configuration:")
1081
- print(" python -m mcp_proxy_adapter --config configs/production_https.json")
1082
- print("\n5. Run security tests:")
1083
- print(" python -m mcp_proxy_adapter.examples.run_security_tests")
1084
- print("\n6. Generate additional certificates (if needed):")
1085
- print(" python scripts/create_certificates_simple.py")
1197
+
1198
+ if not args.skip_tests:
1199
+ print("\n🎉 ALL TESTS PASSED - Environment is ready for use!")
1200
+ else:
1201
+ print("\n📋 NEXT STEPS:")
1202
+ print("1. Review configuration documentation:")
1203
+ print(" cat docs/CONFIGURATION_GUIDE.md")
1204
+ print("\n2. Check available configurations:")
1205
+ print(" ls -la configs/")
1206
+ print("\n3. Run the full test suite:")
1207
+ print(" python run_full_test_suite.py")
1208
+ print("\n4. Test proxy registration SSL fix:")
1209
+ print(" python test_proxy_registration.py")
1210
+ print("\n5. Start server with a specific configuration:")
1211
+ print(" python -m mcp_proxy_adapter --config configs/production_https.json")
1212
+ print("\n6. Run security tests:")
1213
+ print(" python -m mcp_proxy_adapter.examples.run_security_tests")
1214
+ print("\n7. Generate additional certificates (if needed):")
1215
+ print(" python scripts/create_certificates_simple.py")
1216
+
1086
1217
  print("=" * 60)
1087
1218
  return 0
1088
1219
 
@@ -2,4 +2,4 @@
2
2
  Version information for MCP Proxy Adapter.
3
3
  """
4
4
 
5
- __version__ = "6.4.14"
5
+ __version__ = "6.4.15"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 6.4.14
3
+ Version: 6.4.15
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
@@ -31,6 +31,7 @@ Description-Content-Type: text/markdown
31
31
  Requires-Dist: fastapi<1.0.0,>=0.95.0
32
32
  Requires-Dist: pydantic>=2.0.0
33
33
  Requires-Dist: hypercorn<1.0.0,>=0.15.0
34
+ Requires-Dist: uvicorn<1.0.0,>=0.15.0
34
35
  Requires-Dist: docstring-parser<1.0.0,>=0.15
35
36
  Requires-Dist: typing-extensions<5.0.0,>=4.5.0
36
37
  Requires-Dist: jsonrpc>=1.2.0
@@ -1,6 +1,7 @@
1
1
  fastapi<1.0.0,>=0.95.0
2
2
  pydantic>=2.0.0
3
3
  hypercorn<1.0.0,>=0.15.0
4
+ uvicorn<1.0.0,>=0.15.0
4
5
  docstring-parser<1.0.0,>=0.15
5
6
  typing-extensions<5.0.0,>=4.5.0
6
7
  jsonrpc>=1.2.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.14"
7
+ version = "6.4.15"
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"}
@@ -47,6 +47,7 @@ dependencies = [
47
47
  "fastapi>=0.95.0,<1.0.0",
48
48
  "pydantic>=2.0.0",
49
49
  "hypercorn>=0.15.0,<1.0.0",
50
+ "uvicorn>=0.15.0,<1.0.0",
50
51
  "docstring-parser>=0.15,<1.0.0",
51
52
  "typing-extensions>=4.5.0,<5.0.0",
52
53
  "jsonrpc>=1.2.0",