mcp-proxy-adapter 6.9.0__tar.gz → 6.9.2__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.0 → mcp_proxy_adapter-6.9.2}/PKG-INFO +1 -1
  2. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/config_validator.py +88 -11
  3. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/version.py +1 -1
  4. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter.egg-info/PKG-INFO +1 -1
  5. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/pyproject.toml +1 -1
  6. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/README.md +0 -0
  7. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/__init__.py +0 -0
  8. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/__main__.py +0 -0
  9. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/__init__.py +0 -0
  10. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/app.py +0 -0
  11. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/handlers.py +0 -0
  12. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/middleware/__init__.py +0 -0
  13. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/middleware/base.py +0 -0
  14. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/middleware/command_permission_middleware.py +0 -0
  15. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/middleware/error_handling.py +0 -0
  16. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/middleware/factory.py +0 -0
  17. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/middleware/logging.py +0 -0
  18. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/middleware/performance.py +0 -0
  19. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/middleware/protocol_middleware.py +0 -0
  20. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/middleware/transport_middleware.py +0 -0
  21. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/middleware/unified_security.py +0 -0
  22. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/middleware/user_info_middleware.py +0 -0
  23. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/schemas.py +0 -0
  24. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/tool_integration.py +0 -0
  25. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/api/tools.py +0 -0
  26. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/__init__.py +0 -0
  27. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/auth_validation_command.py +0 -0
  28. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/base.py +0 -0
  29. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/builtin_commands.py +0 -0
  30. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/catalog_manager.py +0 -0
  31. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/cert_monitor_command.py +0 -0
  32. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/certificate_management_command.py +0 -0
  33. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/command_registry.py +0 -0
  34. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/config_command.py +0 -0
  35. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/dependency_container.py +0 -0
  36. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/dependency_manager.py +0 -0
  37. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/echo_command.py +0 -0
  38. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/health_command.py +0 -0
  39. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/help_command.py +0 -0
  40. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/hooks.py +0 -0
  41. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/key_management_command.py +0 -0
  42. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/load_command.py +0 -0
  43. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/plugins_command.py +0 -0
  44. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/protocol_management_command.py +0 -0
  45. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/proxy_registration_command.py +0 -0
  46. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/registration_status_command.py +0 -0
  47. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/reload_command.py +0 -0
  48. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/result.py +0 -0
  49. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/role_test_command.py +0 -0
  50. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/roles_management_command.py +0 -0
  51. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/security_command.py +0 -0
  52. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/settings_command.py +0 -0
  53. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/ssl_setup_command.py +0 -0
  54. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/token_management_command.py +0 -0
  55. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/transport_management_command.py +0 -0
  56. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/commands/unload_command.py +0 -0
  57. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/config.py +0 -0
  58. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/__init__.py +0 -0
  59. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/app_factory.py +0 -0
  60. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/app_runner.py +0 -0
  61. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/auth_validator.py +0 -0
  62. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/certificate_utils.py +0 -0
  63. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/client.py +0 -0
  64. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/client_manager.py +0 -0
  65. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/client_security.py +0 -0
  66. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/config_converter.py +0 -0
  67. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/crl_utils.py +0 -0
  68. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/errors.py +0 -0
  69. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/logging.py +0 -0
  70. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/mtls_asgi.py +0 -0
  71. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/mtls_asgi_app.py +0 -0
  72. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/mtls_proxy.py +0 -0
  73. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/mtls_server.py +0 -0
  74. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/protocol_manager.py +0 -0
  75. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/proxy_client.py +0 -0
  76. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/proxy_registration.py +0 -0
  77. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/role_utils.py +0 -0
  78. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/security_adapter.py +0 -0
  79. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/security_factory.py +0 -0
  80. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/security_integration.py +0 -0
  81. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/server_adapter.py +0 -0
  82. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/server_engine.py +0 -0
  83. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/settings.py +0 -0
  84. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/signal_handler.py +0 -0
  85. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/ssl_utils.py +0 -0
  86. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/transport_manager.py +0 -0
  87. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/unified_config_adapter.py +0 -0
  88. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/core/utils.py +0 -0
  89. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/custom_openapi.py +0 -0
  90. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/__init__.py +0 -0
  91. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/basic_framework/__init__.py +0 -0
  92. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +0 -0
  93. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +0 -0
  94. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/basic_framework/main.py +0 -0
  95. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/bugfix_certificate_config.py +0 -0
  96. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/cert_manager_bugfix.py +0 -0
  97. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/check_config.py +0 -0
  98. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/commands/__init__.py +0 -0
  99. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/config_builder.py +0 -0
  100. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/config_cli.py +0 -0
  101. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/create_test_configs.py +0 -0
  102. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/debug_request_state.py +0 -0
  103. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/debug_role_chain.py +0 -0
  104. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/demo_client.py +0 -0
  105. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/full_application/__init__.py +0 -0
  106. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/full_application/commands/__init__.py +0 -0
  107. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +0 -0
  108. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +0 -0
  109. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/full_application/hooks/__init__.py +0 -0
  110. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +0 -0
  111. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +0 -0
  112. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/full_application/main.py +0 -0
  113. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +0 -0
  114. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/full_application/run_mtls.py +0 -0
  115. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/full_application/run_simple.py +0 -0
  116. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/full_application/test_server.py +0 -0
  117. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/generate_config.py +0 -0
  118. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/proxy_registration_example.py +0 -0
  119. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/required_certificates.py +0 -0
  120. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/run_example.py +0 -0
  121. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/run_full_test_suite.py +0 -0
  122. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/run_proxy_server.py +0 -0
  123. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/run_security_tests_fixed.py +0 -0
  124. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/security_test_client.py +0 -0
  125. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/setup_test_environment.py +0 -0
  126. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/simple_protocol_test.py +0 -0
  127. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/test_chk_hostname_automated.py +0 -0
  128. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/test_config.py +0 -0
  129. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/test_config_builder.py +0 -0
  130. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/test_examples.py +0 -0
  131. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/test_framework_complete.py +0 -0
  132. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/test_mcp_server.py +0 -0
  133. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/test_protocol_examples.py +0 -0
  134. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/universal_client.py +0 -0
  135. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/examples/update_config_certificates.py +0 -0
  136. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/main.py +0 -0
  137. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/openapi.py +0 -0
  138. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/schemas/base_schema.json +0 -0
  139. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/schemas/openapi_schema.json +0 -0
  140. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/schemas/roles.json +0 -0
  141. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter/schemas/roles_schema.json +0 -0
  142. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter.egg-info/SOURCES.txt +0 -0
  143. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter.egg-info/dependency_links.txt +0 -0
  144. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter.egg-info/entry_points.txt +0 -0
  145. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter.egg-info/not-zip-safe +0 -0
  146. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter.egg-info/requires.txt +0 -0
  147. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/mcp_proxy_adapter.egg-info/top_level.txt +0 -0
  148. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/setup.cfg +0 -0
  149. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/setup.py +0 -0
  150. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/tests/test_certificate_validation.py +0 -0
  151. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/tests/test_config_integration.py +0 -0
  152. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/tests/test_config_validation.py +0 -0
  153. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/tests/test_config_validation_isolated.py +0 -0
  154. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/tests/test_direct_import.py +0 -0
  155. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/tests/test_isolated_validation.py +0 -0
  156. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/tests/test_no_defaults.py +0 -0
  157. {mcp_proxy_adapter-6.9.0 → mcp_proxy_adapter-6.9.2}/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.0
3
+ Version: 6.9.2
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
@@ -69,7 +69,7 @@ class ConfigValidator:
69
69
  "log_file": str,
70
70
  "error_log_file": str,
71
71
  "access_log_file": str,
72
- "max_file_size": str,
72
+ "max_file_size": (str, int),
73
73
  "backup_count": int,
74
74
  "format": str,
75
75
  "date_format": str,
@@ -250,9 +250,29 @@ class ConfigValidator:
250
250
 
251
251
  return self.validation_results
252
252
 
253
+ def validate_all(self, config_data: Optional[Dict[str, Any]] = None) -> List[ValidationResult]:
254
+ """
255
+ Alias for validate_config method for backward compatibility.
256
+
257
+ Args:
258
+ config_data: Configuration data to validate. If None, uses loaded config.
259
+
260
+ Returns:
261
+ List of validation results
262
+ """
263
+ return self.validate_config(config_data)
264
+
253
265
  def _validate_required_sections(self) -> None:
254
- """Validate that all required sections and keys are present."""
255
- for section_name, required_keys in self.required_sections.items():
266
+ """Validate that all required sections and keys are present for enabled features only."""
267
+ # Always required sections (core functionality)
268
+ always_required = {
269
+ "server": self.required_sections["server"],
270
+ "logging": self.required_sections["logging"],
271
+ "commands": self.required_sections["commands"]
272
+ }
273
+
274
+ # Check always required sections
275
+ for section_name, required_keys in always_required.items():
256
276
  if section_name not in self.config_data:
257
277
  self.validation_results.append(ValidationResult(
258
278
  level="error",
@@ -273,13 +293,70 @@ class ConfigValidator:
273
293
  else:
274
294
  # Validate type
275
295
  value = section_data[key]
276
- if not isinstance(value, expected_type):
296
+ if isinstance(expected_type, tuple):
297
+ if not isinstance(value, expected_type):
298
+ expected_names = [t.__name__ for t in expected_type]
299
+ self.validation_results.append(ValidationResult(
300
+ level="error",
301
+ message=f"Key '{key}' in section '{section_name}' has wrong type. Expected {' or '.join(expected_names)}, got {type(value).__name__}",
302
+ section=section_name,
303
+ key=key
304
+ ))
305
+ else:
306
+ if not isinstance(value, expected_type):
307
+ self.validation_results.append(ValidationResult(
308
+ level="error",
309
+ message=f"Key '{key}' in section '{section_name}' has wrong type. Expected {expected_type.__name__}, got {type(value).__name__}",
310
+ section=section_name,
311
+ key=key
312
+ ))
313
+
314
+ # Check conditional sections based on feature flags
315
+ for feature_name, feature_config in self.feature_flags.items():
316
+ enabled_key = feature_config["enabled_key"]
317
+ is_enabled = self._get_nested_value(enabled_key, False)
318
+
319
+ if is_enabled and feature_name in self.required_sections:
320
+ section_name = feature_name
321
+ required_keys = self.required_sections[section_name]
322
+
323
+ if section_name not in self.config_data:
324
+ self.validation_results.append(ValidationResult(
325
+ level="error",
326
+ message=f"Required section '{section_name}' is missing for enabled feature",
327
+ section=section_name
328
+ ))
329
+ continue
330
+
331
+ section_data = self.config_data[section_name]
332
+ for key, expected_type in required_keys.items():
333
+ if key not in section_data:
277
334
  self.validation_results.append(ValidationResult(
278
335
  level="error",
279
- message=f"Key '{key}' in section '{section_name}' has wrong type. Expected {expected_type.__name__}, got {type(value).__name__}",
336
+ message=f"Required key '{key}' is missing in section '{section_name}' for enabled feature",
280
337
  section=section_name,
281
338
  key=key
282
339
  ))
340
+ else:
341
+ # Validate type
342
+ value = section_data[key]
343
+ if isinstance(expected_type, tuple):
344
+ if not isinstance(value, expected_type):
345
+ expected_names = [t.__name__ for t in expected_type]
346
+ self.validation_results.append(ValidationResult(
347
+ level="error",
348
+ message=f"Key '{key}' in section '{section_name}' has wrong type. Expected {' or '.join(expected_names)}, got {type(value).__name__}",
349
+ section=section_name,
350
+ key=key
351
+ ))
352
+ else:
353
+ if not isinstance(value, expected_type):
354
+ self.validation_results.append(ValidationResult(
355
+ level="error",
356
+ message=f"Key '{key}' in section '{section_name}' has wrong type. Expected {expected_type.__name__}, got {type(value).__name__}",
357
+ section=section_name,
358
+ key=key
359
+ ))
283
360
 
284
361
  def _validate_feature_flags(self) -> None:
285
362
  """Validate feature flags and their dependencies."""
@@ -333,7 +410,7 @@ class ConfigValidator:
333
410
  key="protocol"
334
411
  ))
335
412
  return
336
-
413
+
337
414
  requirements = self.protocol_requirements[protocol]
338
415
 
339
416
  # Check SSL requirements
@@ -461,7 +538,7 @@ class ConfigValidator:
461
538
  if auth_method == "certificate":
462
539
  cert_file = self._get_nested_value("proxy_registration.certificate.cert_file")
463
540
  key_file = self._get_nested_value("proxy_registration.certificate.key_file")
464
- if not cert_file or not key_file:
541
+ if not cert_file or not key_file:
465
542
  self.validation_results.append(ValidationResult(
466
543
  level="error",
467
544
  message="Certificate authentication is enabled but certificate files are not specified",
@@ -772,8 +849,8 @@ class ConfigValidator:
772
849
  section=section,
773
850
  key=key
774
851
  ))
775
- return
776
-
852
+ return
853
+
777
854
  # Check CA certificate expiration
778
855
  now = datetime.now(timezone.utc)
779
856
  not_after = ca_cert.not_valid_after.replace(tzinfo=timezone.utc)
@@ -870,8 +947,8 @@ class ConfigValidator:
870
947
  key="cert_file",
871
948
  suggestion="Ensure the certificate and private key are from the same key pair"
872
949
  ))
873
- return
874
-
950
+ return
951
+
875
952
  # If CA certificate is provided, validate certificate chain
876
953
  if ca_cert_file and os.path.exists(ca_cert_file):
877
954
  self._validate_certificate_chain(cert_file, ca_cert_file, section)
@@ -2,4 +2,4 @@
2
2
  Version information for MCP Proxy Adapter.
3
3
  """
4
4
 
5
- __version__ = "6.9.0"
5
+ __version__ = "6.9.2"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 6.9.0
3
+ Version: 6.9.2
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.0"
7
+ version = "6.9.2"
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"}