mcp-proxy-adapter 6.9.8__tar.gz → 6.9.11__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 (157) hide show
  1. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/PKG-INFO +1 -1
  2. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/app.py +11 -10
  3. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/config_validator.py +62 -11
  4. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/config_builder.py +6 -0
  5. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/version.py +1 -1
  6. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter.egg-info/PKG-INFO +1 -1
  7. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/pyproject.toml +1 -1
  8. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/README.md +0 -0
  9. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/__init__.py +0 -0
  10. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/__main__.py +0 -0
  11. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/__init__.py +0 -0
  12. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/handlers.py +0 -0
  13. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/middleware/__init__.py +0 -0
  14. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/middleware/base.py +0 -0
  15. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/middleware/command_permission_middleware.py +0 -0
  16. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/middleware/error_handling.py +0 -0
  17. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/middleware/factory.py +0 -0
  18. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/middleware/logging.py +0 -0
  19. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/middleware/performance.py +0 -0
  20. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/middleware/protocol_middleware.py +0 -0
  21. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/middleware/transport_middleware.py +0 -0
  22. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/middleware/unified_security.py +0 -0
  23. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/middleware/user_info_middleware.py +0 -0
  24. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/schemas.py +0 -0
  25. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/tool_integration.py +0 -0
  26. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/api/tools.py +0 -0
  27. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/__init__.py +0 -0
  28. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/auth_validation_command.py +0 -0
  29. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/base.py +0 -0
  30. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/builtin_commands.py +0 -0
  31. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/catalog_manager.py +0 -0
  32. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/cert_monitor_command.py +0 -0
  33. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/certificate_management_command.py +0 -0
  34. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/command_registry.py +0 -0
  35. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/config_command.py +0 -0
  36. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/dependency_container.py +0 -0
  37. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/dependency_manager.py +0 -0
  38. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/echo_command.py +0 -0
  39. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/health_command.py +0 -0
  40. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/help_command.py +0 -0
  41. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/hooks.py +0 -0
  42. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/key_management_command.py +0 -0
  43. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/load_command.py +0 -0
  44. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/plugins_command.py +0 -0
  45. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/protocol_management_command.py +0 -0
  46. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/proxy_registration_command.py +0 -0
  47. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/registration_status_command.py +0 -0
  48. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/reload_command.py +0 -0
  49. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/result.py +0 -0
  50. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/role_test_command.py +0 -0
  51. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/roles_management_command.py +0 -0
  52. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/security_command.py +0 -0
  53. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/settings_command.py +0 -0
  54. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/ssl_setup_command.py +0 -0
  55. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/token_management_command.py +0 -0
  56. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/transport_management_command.py +0 -0
  57. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/commands/unload_command.py +0 -0
  58. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/config.py +0 -0
  59. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/__init__.py +0 -0
  60. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/app_factory.py +0 -0
  61. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/app_runner.py +0 -0
  62. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/auth_validator.py +0 -0
  63. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/certificate_utils.py +0 -0
  64. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/client.py +0 -0
  65. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/client_manager.py +0 -0
  66. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/client_security.py +0 -0
  67. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/config_converter.py +0 -0
  68. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/crl_utils.py +0 -0
  69. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/errors.py +0 -0
  70. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/logging.py +0 -0
  71. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/mtls_asgi.py +0 -0
  72. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/mtls_asgi_app.py +0 -0
  73. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/mtls_proxy.py +0 -0
  74. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/mtls_server.py +0 -0
  75. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/protocol_manager.py +0 -0
  76. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/proxy_client.py +0 -0
  77. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/proxy_registration.py +0 -0
  78. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/role_utils.py +0 -0
  79. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/security_adapter.py +0 -0
  80. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/security_factory.py +0 -0
  81. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/security_integration.py +0 -0
  82. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/server_adapter.py +0 -0
  83. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/server_engine.py +0 -0
  84. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/settings.py +0 -0
  85. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/signal_handler.py +0 -0
  86. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/ssl_utils.py +0 -0
  87. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/transport_manager.py +0 -0
  88. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/unified_config_adapter.py +0 -0
  89. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/core/utils.py +0 -0
  90. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/custom_openapi.py +0 -0
  91. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/__init__.py +0 -0
  92. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/basic_framework/__init__.py +0 -0
  93. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +0 -0
  94. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +0 -0
  95. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/basic_framework/main.py +0 -0
  96. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/bugfix_certificate_config.py +0 -0
  97. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/cert_manager_bugfix.py +0 -0
  98. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/check_config.py +0 -0
  99. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/commands/__init__.py +0 -0
  100. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/config_cli.py +0 -0
  101. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/create_test_configs.py +0 -0
  102. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/debug_request_state.py +0 -0
  103. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/debug_role_chain.py +0 -0
  104. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/demo_client.py +0 -0
  105. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/full_application/__init__.py +0 -0
  106. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/full_application/commands/__init__.py +0 -0
  107. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +0 -0
  108. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +0 -0
  109. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/full_application/hooks/__init__.py +0 -0
  110. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +0 -0
  111. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +0 -0
  112. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/full_application/main.py +0 -0
  113. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +0 -0
  114. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/full_application/run_mtls.py +0 -0
  115. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/full_application/run_simple.py +0 -0
  116. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/full_application/test_server.py +0 -0
  117. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/generate_config.py +0 -0
  118. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/proxy_registration_example.py +0 -0
  119. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/required_certificates.py +0 -0
  120. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/run_example.py +0 -0
  121. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/run_full_test_suite.py +0 -0
  122. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/run_proxy_server.py +0 -0
  123. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/run_security_tests_fixed.py +0 -0
  124. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/security_test_client.py +0 -0
  125. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/setup_test_environment.py +0 -0
  126. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/simple_protocol_test.py +0 -0
  127. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/test_chk_hostname_automated.py +0 -0
  128. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/test_config.py +0 -0
  129. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/test_config_builder.py +0 -0
  130. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/test_examples.py +0 -0
  131. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/test_framework_complete.py +0 -0
  132. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/test_mcp_server.py +0 -0
  133. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/test_protocol_examples.py +0 -0
  134. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/universal_client.py +0 -0
  135. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/examples/update_config_certificates.py +0 -0
  136. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/main.py +0 -0
  137. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/openapi.py +0 -0
  138. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/schemas/base_schema.json +0 -0
  139. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/schemas/openapi_schema.json +0 -0
  140. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/schemas/roles.json +0 -0
  141. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter/schemas/roles_schema.json +0 -0
  142. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter.egg-info/SOURCES.txt +0 -0
  143. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter.egg-info/dependency_links.txt +0 -0
  144. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter.egg-info/entry_points.txt +0 -0
  145. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter.egg-info/not-zip-safe +0 -0
  146. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter.egg-info/requires.txt +0 -0
  147. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/mcp_proxy_adapter.egg-info/top_level.txt +0 -0
  148. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/setup.cfg +0 -0
  149. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/setup.py +0 -0
  150. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/tests/test_certificate_validation.py +0 -0
  151. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/tests/test_config_integration.py +0 -0
  152. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/tests/test_config_validation.py +0 -0
  153. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/tests/test_config_validation_isolated.py +0 -0
  154. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/tests/test_direct_import.py +0 -0
  155. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/tests/test_isolated_validation.py +0 -0
  156. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/tests/test_no_defaults.py +0 -0
  157. {mcp_proxy_adapter-6.9.8 → mcp_proxy_adapter-6.9.11}/tests/test_simple_validation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 6.9.8
3
+ Version: 6.9.11
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
@@ -388,18 +388,19 @@ def create_app(
388
388
  try:
389
389
  from mcp_proxy_adapter.core.config_validator import ConfigValidator
390
390
 
391
- try:
392
- _validator = ConfigValidator()
393
- except TypeError:
394
- _validator = ConfigValidator(current_config)
395
- _validation = _validator.validate(current_config)
396
- if not _validation.is_valid:
391
+ _validator = ConfigValidator()
392
+ _validator.config_data = current_config
393
+ _validation_results = _validator.validate_config()
394
+ errors = [r for r in _validation_results if r.level == "error"]
395
+ warnings = [r for r in _validation_results if r.level == "warning"]
396
+
397
+ if errors:
397
398
  logger.critical("CRITICAL CONFIG ERROR: Invalid configuration at startup:")
398
- for _e in _validation.errors:
399
- logger.critical(f" - {_e}")
399
+ for _e in errors:
400
+ logger.critical(f" - {_e.message}")
400
401
  raise SystemExit(1)
401
- for _w in _validation.warnings:
402
- logger.warning(f"Config warning: {_w}")
402
+ for _w in warnings:
403
+ logger.warning(f"Config warning: {_w.message}")
403
404
  except Exception as _ex:
404
405
  logger.error(f"Failed to run startup configuration validation: {_ex}")
405
406
 
@@ -312,9 +312,15 @@ class ConfigValidator:
312
312
  ))
313
313
 
314
314
  # Check conditional sections based on feature flags
315
+ protocol = self._get_nested_value_safe("server.protocol", "http")
316
+
315
317
  for feature_name, feature_config in self.feature_flags.items():
316
318
  enabled_key = feature_config["enabled_key"]
317
319
 
320
+ # Skip SSL validation for HTTP protocol
321
+ if feature_name in ["ssl", "transport_ssl"] and protocol not in ["https", "mtls"]:
322
+ continue
323
+
318
324
  # Only check if the enabled key exists in the configuration
319
325
  if not self._has_nested_key(enabled_key):
320
326
  continue
@@ -365,9 +371,15 @@ class ConfigValidator:
365
371
 
366
372
  def _validate_feature_flags(self) -> None:
367
373
  """Validate feature flags and their dependencies."""
374
+ protocol = self._get_nested_value_safe("server.protocol", "http")
375
+
368
376
  for feature_name, feature_config in self.feature_flags.items():
369
377
  enabled_key = feature_config["enabled_key"]
370
378
 
379
+ # Skip SSL validation for HTTP protocol
380
+ if feature_name in ["ssl", "transport_ssl"] and protocol not in ["https", "mtls"]:
381
+ continue
382
+
371
383
  # Check if the enabled key exists in the configuration
372
384
  if not self._has_nested_key(enabled_key):
373
385
  # Skip validation if the feature flag key doesn't exist
@@ -415,6 +427,26 @@ class ConfigValidator:
415
427
  """Validate protocol-specific requirements."""
416
428
  protocol = self._get_nested_value_safe("server.protocol", "http")
417
429
 
430
+ # Check mTLS protocol requirements
431
+ if protocol == "mtls":
432
+ # mTLS requires HTTPS protocol
433
+ if not self._has_nested_key("ssl.enabled"):
434
+ self.validation_results.append(ValidationResult(
435
+ level="error",
436
+ message="mTLS protocol requires SSL configuration",
437
+ section="ssl",
438
+ key="enabled"
439
+ ))
440
+ else:
441
+ ssl_enabled = self._get_nested_value_safe("ssl.enabled", False)
442
+ if not ssl_enabled:
443
+ self.validation_results.append(ValidationResult(
444
+ level="error",
445
+ message="mTLS protocol requires SSL to be enabled",
446
+ section="ssl",
447
+ key="enabled"
448
+ ))
449
+
418
450
  if protocol not in self.protocol_requirements:
419
451
  self.validation_results.append(ValidationResult(
420
452
  level="error",
@@ -471,23 +503,37 @@ class ConfigValidator:
471
503
 
472
504
  def _validate_file_existence(self) -> None:
473
505
  """Validate that all referenced files exist."""
506
+ protocol = self._get_nested_value_safe("server.protocol", "http")
507
+
474
508
  file_keys = [
475
509
  "logging.log_dir",
476
510
  "commands.commands_directory",
477
511
  "commands.catalog_directory",
478
512
  "commands.custom_commands_path",
479
513
  "security.roles_file",
480
- "roles.config_file",
481
- "ssl.cert_file",
482
- "ssl.key_file",
483
- "ssl.ca_cert",
484
- "transport.ssl.cert_file",
485
- "transport.ssl.key_file",
486
- "transport.ssl.ca_cert",
487
- "proxy_registration.certificate.cert_file",
488
- "proxy_registration.certificate.key_file"
514
+ "roles.config_file"
489
515
  ]
490
516
 
517
+ # Only add SSL-related files if protocol requires SSL
518
+ if protocol in ["https", "mtls"]:
519
+ file_keys.extend([
520
+ "ssl.cert_file",
521
+ "ssl.key_file",
522
+ "ssl.ca_cert",
523
+ "transport.ssl.cert_file",
524
+ "transport.ssl.key_file",
525
+ "transport.ssl.ca_cert"
526
+ ])
527
+
528
+ # Only add proxy registration files if proxy registration is enabled
529
+ if self._has_nested_key("proxy_registration.enabled"):
530
+ proxy_enabled = self._get_nested_value_safe("proxy_registration.enabled", False)
531
+ if proxy_enabled:
532
+ file_keys.extend([
533
+ "proxy_registration.certificate.cert_file",
534
+ "proxy_registration.certificate.key_file"
535
+ ])
536
+
491
537
  for file_key in file_keys:
492
538
  file_path = self._get_nested_value(file_key)
493
539
  if file_path and not os.path.exists(file_path):
@@ -607,6 +653,11 @@ class ConfigValidator:
607
653
 
608
654
  def _validate_ssl_configuration(self) -> None:
609
655
  """Validate SSL configuration with detailed certificate validation."""
656
+ # Only validate SSL if the protocol requires it
657
+ protocol = self._get_nested_value_safe("server.protocol", "http")
658
+ if protocol not in ["https", "mtls"]:
659
+ return
660
+
610
661
  # Only validate SSL if the ssl section exists
611
662
  if not self._has_nested_key("ssl.enabled"):
612
663
  return
@@ -800,7 +851,7 @@ class ConfigValidator:
800
851
 
801
852
  # Check certificate expiration
802
853
  now = datetime.now(timezone.utc)
803
- not_after = cert.not_valid_after.replace(tzinfo=timezone.utc)
854
+ not_after = cert.not_valid_after_utc
804
855
 
805
856
  if now > not_after:
806
857
  self.validation_results.append(ValidationResult(
@@ -1062,7 +1113,7 @@ class ConfigValidator:
1062
1113
  level="error",
1063
1114
  message=f"Error validating certificate-key pair: {e}",
1064
1115
  section=section,
1065
- key=key
1116
+ key="cert_file"
1066
1117
  ))
1067
1118
 
1068
1119
  def _validate_certificate_chain(self, cert_file: str, ca_cert_file: str, section: str) -> None:
@@ -82,6 +82,12 @@ def generate_complete_config(host: str = "0.0.0.0", port: int = 8000) -> Dict[st
82
82
  "enabled": False,
83
83
  "level": "WARNING"
84
84
  },
85
+ "ssl": {
86
+ "enabled": False,
87
+ "cert_file": None,
88
+ "key_file": None,
89
+ "ca_cert": None
90
+ },
85
91
  "security": {
86
92
  "enabled": False,
87
93
  "tokens": {},
@@ -2,4 +2,4 @@
2
2
  Version information for MCP Proxy Adapter.
3
3
  """
4
4
 
5
- __version__ = "6.9.8"
5
+ __version__ = "6.9.11"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 6.9.8
3
+ Version: 6.9.11
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mcp-proxy-adapter"
7
- version = "6.9.8"
7
+ version = "6.9.11"
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"}