mcp-proxy-adapter 6.4.10__tar.gz → 6.4.12__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 (160) hide show
  1. mcp_proxy_adapter-6.4.12/PKG-INFO +156 -0
  2. mcp_proxy_adapter-6.4.12/README.md +97 -0
  3. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/basic_framework/main.py +3 -2
  4. mcp_proxy_adapter-6.4.12/mcp_proxy_adapter/examples/create_test_configs.py +301 -0
  5. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/run_full_test_suite.py +180 -20
  6. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/version.py +1 -1
  7. mcp_proxy_adapter-6.4.12/mcp_proxy_adapter.egg-info/PKG-INFO +156 -0
  8. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter.egg-info/SOURCES.txt +9 -11
  9. mcp_proxy_adapter-6.4.12/mcp_proxy_adapter.egg-info/dependency_links.txt +1 -0
  10. mcp_proxy_adapter-6.4.12/mcp_proxy_adapter.egg-info/entry_points.txt +2 -0
  11. mcp_proxy_adapter-6.4.12/mcp_proxy_adapter.egg-info/not-zip-safe +1 -0
  12. mcp_proxy_adapter-6.4.12/mcp_proxy_adapter.egg-info/requires.txt +27 -0
  13. mcp_proxy_adapter-6.4.12/mcp_proxy_adapter.egg-info/top_level.txt +1 -0
  14. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/pyproject.toml +2 -6
  15. mcp_proxy_adapter-6.4.12/setup.py +111 -0
  16. mcp_proxy_adapter-6.4.10/MANIFEST.in +0 -40
  17. mcp_proxy_adapter-6.4.10/PKG-INFO +0 -680
  18. mcp_proxy_adapter-6.4.10/README.md +0 -621
  19. mcp_proxy_adapter-6.4.10/mcp_proxy_adapter/examples/basic_framework/roles.json +0 -21
  20. mcp_proxy_adapter-6.4.10/mcp_proxy_adapter/examples/full_application/roles.json +0 -21
  21. mcp_proxy_adapter-6.4.10/mcp_proxy_adapter/examples/generate_comprehensive_config.py +0 -177
  22. mcp_proxy_adapter-6.4.10/mcp_proxy_adapter/examples/test_mcp_adapter.py +0 -207
  23. mcp_proxy_adapter-6.4.10/mcp_proxy_adapter/schemas/base_schema.json +0 -114
  24. mcp_proxy_adapter-6.4.10/mcp_proxy_adapter/schemas/openapi_schema.json +0 -314
  25. mcp_proxy_adapter-6.4.10/mcp_proxy_adapter/utils/config_generator.py +0 -1167
  26. mcp_proxy_adapter-6.4.10/mcp_proxy_adapter_issue_package/demonstrate_issue.py +0 -208
  27. mcp_proxy_adapter-6.4.10/requirements.txt +0 -8
  28. mcp_proxy_adapter-6.4.10/setup.py +0 -624
  29. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/__init__.py +0 -0
  30. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/__main__.py +0 -0
  31. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/__init__.py +0 -0
  32. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/app.py +0 -0
  33. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/handlers.py +0 -0
  34. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/__init__.py +0 -0
  35. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/base.py +0 -0
  36. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/command_permission_middleware.py +0 -0
  37. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/error_handling.py +0 -0
  38. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/factory.py +0 -0
  39. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/logging.py +0 -0
  40. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/performance.py +0 -0
  41. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/protocol_middleware.py +0 -0
  42. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/transport_middleware.py +0 -0
  43. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/unified_security.py +0 -0
  44. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/user_info_middleware.py +0 -0
  45. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/schemas.py +0 -0
  46. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/tool_integration.py +0 -0
  47. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/tools.py +0 -0
  48. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/__init__.py +0 -0
  49. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/auth_validation_command.py +0 -0
  50. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/base.py +0 -0
  51. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/builtin_commands.py +0 -0
  52. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/catalog_manager.py +0 -0
  53. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/cert_monitor_command.py +0 -0
  54. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/certificate_management_command.py +0 -0
  55. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/command_registry.py +0 -0
  56. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/config_command.py +0 -0
  57. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/dependency_container.py +0 -0
  58. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/dependency_manager.py +0 -0
  59. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/echo_command.py +0 -0
  60. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/health_command.py +0 -0
  61. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/help_command.py +0 -0
  62. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/hooks.py +0 -0
  63. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/key_management_command.py +0 -0
  64. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/load_command.py +0 -0
  65. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/plugins_command.py +0 -0
  66. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/protocol_management_command.py +0 -0
  67. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/proxy_registration_command.py +0 -0
  68. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/reload_command.py +0 -0
  69. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/result.py +0 -0
  70. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/role_test_command.py +0 -0
  71. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/roles_management_command.py +0 -0
  72. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/security_command.py +0 -0
  73. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/settings_command.py +0 -0
  74. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/ssl_setup_command.py +0 -0
  75. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/token_management_command.py +0 -0
  76. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/transport_management_command.py +0 -0
  77. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/unload_command.py +0 -0
  78. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/config.py +0 -0
  79. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/__init__.py +0 -0
  80. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/app_factory.py +0 -0
  81. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/app_runner.py +0 -0
  82. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/auth_validator.py +0 -0
  83. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/certificate_utils.py +0 -0
  84. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/client.py +0 -0
  85. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/client_manager.py +0 -0
  86. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/client_security.py +0 -0
  87. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/config_converter.py +0 -0
  88. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/config_validator.py +0 -0
  89. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/crl_utils.py +0 -0
  90. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/errors.py +0 -0
  91. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/logging.py +0 -0
  92. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/mtls_asgi.py +0 -0
  93. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/mtls_asgi_app.py +0 -0
  94. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/protocol_manager.py +0 -0
  95. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/proxy_client.py +0 -0
  96. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/proxy_registration.py +0 -0
  97. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/role_utils.py +0 -0
  98. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/security_adapter.py +0 -0
  99. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/security_factory.py +0 -0
  100. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/security_integration.py +0 -0
  101. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/server_adapter.py +0 -0
  102. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/server_engine.py +0 -0
  103. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/settings.py +0 -0
  104. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/ssl_utils.py +0 -0
  105. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/transport_manager.py +0 -0
  106. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/unified_config_adapter.py +0 -0
  107. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/utils.py +0 -0
  108. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/custom_openapi.py +0 -0
  109. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/__init__.py +0 -0
  110. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/basic_framework/__init__.py +0 -0
  111. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +0 -0
  112. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +0 -0
  113. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/commands/__init__.py +0 -0
  114. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/create_certificates_simple.py +0 -0
  115. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/debug_request_state.py +0 -0
  116. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/debug_role_chain.py +0 -0
  117. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/demo_client.py +0 -0
  118. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/basic_framework/__init__.py +0 -0
  119. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/basic_framework/commands/__init__.py +0 -0
  120. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/basic_framework/hooks/__init__.py +0 -0
  121. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/basic_framework/main.py +0 -0
  122. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/__init__.py +0 -0
  123. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/commands/__init__.py +0 -0
  124. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/commands/custom_echo_command.py +0 -0
  125. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/commands/dynamic_calculator_command.py +0 -0
  126. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/hooks/__init__.py +0 -0
  127. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/hooks/application_hooks.py +0 -0
  128. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/hooks/builtin_command_hooks.py +0 -0
  129. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/main.py +0 -0
  130. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/proxy_endpoints.py +0 -0
  131. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/__init__.py +0 -0
  132. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/commands/__init__.py +0 -0
  133. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +0 -0
  134. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +0 -0
  135. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/hooks/__init__.py +0 -0
  136. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +0 -0
  137. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +0 -0
  138. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/main.py +0 -0
  139. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +0 -0
  140. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/generate_all_certificates.py +0 -0
  141. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/generate_certificates.py +0 -0
  142. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/generate_certificates_and_tokens.py +0 -0
  143. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/generate_test_configs.py +0 -0
  144. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/proxy_registration_example.py +0 -0
  145. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/run_example.py +0 -0
  146. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/run_proxy_server.py +0 -0
  147. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/run_security_tests.py +0 -0
  148. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/run_security_tests_fixed.py +0 -0
  149. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/scripts/config_generator.py +0 -0
  150. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/scripts/create_certificates_simple.py +0 -0
  151. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/scripts/generate_certificates_and_tokens.py +0 -0
  152. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/security_test_client.py +0 -0
  153. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/setup_test_environment.py +0 -0
  154. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/test_config.py +0 -0
  155. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/test_config_generator.py +0 -0
  156. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/test_examples.py +0 -0
  157. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/universal_client.py +0 -0
  158. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/main.py +0 -0
  159. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/openapi.py +0 -0
  160. {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/setup.cfg +0 -0
@@ -0,0 +1,156 @@
1
+ Metadata-Version: 2.4
2
+ Name: mcp-proxy-adapter
3
+ Version: 6.4.12
4
+ Summary: Powerful JSON-RPC microservices framework with built-in security, authentication, and proxy registration
5
+ Home-page: https://github.com/maverikod/mcp-proxy-adapter
6
+ Author: Vasiliy Zdanovskiy
7
+ Author-email: Vasiliy Zdanovskiy <vasilyvz@gmail.com>
8
+ Maintainer: Vasiliy Zdanovskiy
9
+ Maintainer-email: Vasiliy Zdanovskiy <vasilyvz@gmail.com>
10
+ License: MIT
11
+ Project-URL: Homepage, https://github.com/maverikod/mcp-proxy-adapter
12
+ Project-URL: Documentation, https://github.com/maverikod/mcp-proxy-adapter#readme
13
+ Project-URL: Source, https://github.com/maverikod/mcp-proxy-adapter
14
+ Project-URL: Tracker, https://github.com/maverikod/mcp-proxy-adapter/issues
15
+ Project-URL: PyPI, https://pypi.org/project/mcp-proxy-adapter/
16
+ Keywords: json-rpc,microservices,fastapi,security,authentication,authorization,proxy,mcp,mtls,ssl,rest,api
17
+ Classifier: Development Status :: 4 - Beta
18
+ Classifier: Intended Audience :: Developers
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.9
22
+ Classifier: Programming Language :: Python :: 3.10
23
+ Classifier: Programming Language :: Python :: 3.11
24
+ Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Framework :: FastAPI
26
+ Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
27
+ Classifier: Topic :: Security
28
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
29
+ Requires-Python: >=3.9
30
+ Description-Content-Type: text/markdown
31
+ Requires-Dist: fastapi<1.0.0,>=0.95.0
32
+ Requires-Dist: pydantic>=2.0.0
33
+ Requires-Dist: hypercorn<1.0.0,>=0.15.0
34
+ Requires-Dist: docstring-parser<1.0.0,>=0.15
35
+ Requires-Dist: typing-extensions<5.0.0,>=4.5.0
36
+ Requires-Dist: jsonrpc>=1.2.0
37
+ Requires-Dist: psutil>=5.9.0
38
+ Requires-Dist: mcp_security_framework>=1.1.2
39
+ Requires-Dist: packaging>=20.0
40
+ Requires-Dist: aiohttp<4.0.0,>=3.8.0
41
+ Requires-Dist: requests<3.0.0,>=2.28.0
42
+ Provides-Extra: dev
43
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
44
+ Requires-Dist: pytest-asyncio>=0.20.0; extra == "dev"
45
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
46
+ Requires-Dist: black>=23.0.0; extra == "dev"
47
+ Requires-Dist: isort>=5.12.0; extra == "dev"
48
+ Provides-Extra: test
49
+ Requires-Dist: pytest>=7.0.0; extra == "test"
50
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
51
+ Requires-Dist: pytest-cov>=4.0.0; extra == "test"
52
+ Requires-Dist: httpx>=0.24.0; extra == "test"
53
+ Requires-Dist: pytest-mock>=3.10.0; extra == "test"
54
+ Provides-Extra: examples
55
+ Dynamic: author
56
+ Dynamic: home-page
57
+ Dynamic: maintainer
58
+ Dynamic: requires-python
59
+
60
+ # MCP Proxy Adapter
61
+
62
+ **Author:** Vasiliy Zdanovskiy
63
+ **Email:** vasilyvz@gmail.com
64
+
65
+ ## Overview
66
+
67
+ MCP Proxy Adapter is a comprehensive framework for building JSON-RPC API servers with built-in security, SSL/TLS support, and proxy registration capabilities. It provides a unified interface for command execution, protocol management, and security enforcement.
68
+
69
+ ## Features
70
+
71
+ - **JSON-RPC API**: Full JSON-RPC 2.0 support with built-in commands
72
+ - **Security Framework**: Integrated authentication, authorization, and SSL/TLS
73
+ - **Protocol Management**: HTTP, HTTPS, and mTLS protocol support
74
+ - **Proxy Registration**: Automatic registration with proxy servers
75
+ - **Command System**: Extensible command registry with built-in commands
76
+ - **Configuration Management**: Comprehensive configuration with environment variable overrides
77
+
78
+ ## Quick Start
79
+
80
+ 1. **Installation**:
81
+ ```bash
82
+ pip install mcp-proxy-adapter
83
+ ```
84
+
85
+ 2. **Basic Configuration**:
86
+ ```bash
87
+ # Use the comprehensive config with all options disabled by default
88
+ python -m mcp_proxy_adapter --config config.json
89
+ ```
90
+
91
+ 3. **Access the API**:
92
+ - Health check: `GET http://localhost:8000/health`
93
+ - JSON-RPC: `POST http://localhost:8000/api/jsonrpc`
94
+ - REST API: `POST http://localhost:8000/cmd`
95
+ - Documentation: `http://localhost:8000/docs`
96
+
97
+ ## Configuration
98
+
99
+ The adapter uses a comprehensive JSON configuration file (`config.json`) that includes all available options with sensible defaults. All features are disabled by default and can be enabled as needed:
100
+
101
+ - **Server settings**: Host, port, debug mode
102
+ - **Security**: Authentication methods, SSL/TLS, permissions
103
+ - **Protocols**: HTTP/HTTPS/mTLS configuration
104
+ - **Proxy registration**: Automatic server registration
105
+ - **Logging**: Comprehensive logging configuration
106
+ - **Commands**: Built-in and custom command management
107
+
108
+ See `docs/EN/configuration.md` for complete configuration documentation.
109
+
110
+ ## Built-in Commands
111
+
112
+ - `health` - Server health check
113
+ - `echo` - Echo test command
114
+ - `config` - Configuration management
115
+ - `help` - Command help and documentation
116
+ - `reload` - Configuration reload
117
+ - `settings` - Settings management
118
+ - `load`/`unload` - Command loading/unloading
119
+ - `plugins` - Plugin management
120
+ - `proxy_registration` - Proxy registration control
121
+ - `transport_management` - Transport protocol management
122
+ - `role_test` - Role-based access testing
123
+
124
+ ## Security Features
125
+
126
+ - **Authentication**: API keys, JWT tokens, certificate-based auth
127
+ - **Authorization**: Role-based permissions with wildcard support
128
+ - **SSL/TLS**: Full SSL/TLS and mTLS support
129
+ - **Rate Limiting**: Configurable request rate limiting
130
+ - **Security Headers**: Automatic security header injection
131
+
132
+ ## Examples
133
+
134
+ The `mcp_proxy_adapter/examples/` directory contains comprehensive examples for different use cases:
135
+
136
+ - **Basic Framework**: Simple HTTP server setup
137
+ - **Full Application**: Complete application with custom commands and hooks
138
+ - **Security Testing**: Comprehensive security test suite
139
+ - **Certificate Generation**: SSL/TLS certificate management
140
+
141
+ ## Development
142
+
143
+ The project follows a modular architecture:
144
+
145
+ - `mcp_proxy_adapter/api/` - FastAPI application and handlers
146
+ - `mcp_proxy_adapter/commands/` - Command system and built-in commands
147
+ - `mcp_proxy_adapter/core/` - Core functionality and utilities
148
+ - `mcp_proxy_adapter/config.py` - Configuration management
149
+
150
+ ## License
151
+
152
+ This project is licensed under the MIT License.
153
+
154
+ ## Support
155
+
156
+ For issues and questions, please contact vasilyvz@gmail.com.
@@ -0,0 +1,97 @@
1
+ # MCP Proxy Adapter
2
+
3
+ **Author:** Vasiliy Zdanovskiy
4
+ **Email:** vasilyvz@gmail.com
5
+
6
+ ## Overview
7
+
8
+ MCP Proxy Adapter is a comprehensive framework for building JSON-RPC API servers with built-in security, SSL/TLS support, and proxy registration capabilities. It provides a unified interface for command execution, protocol management, and security enforcement.
9
+
10
+ ## Features
11
+
12
+ - **JSON-RPC API**: Full JSON-RPC 2.0 support with built-in commands
13
+ - **Security Framework**: Integrated authentication, authorization, and SSL/TLS
14
+ - **Protocol Management**: HTTP, HTTPS, and mTLS protocol support
15
+ - **Proxy Registration**: Automatic registration with proxy servers
16
+ - **Command System**: Extensible command registry with built-in commands
17
+ - **Configuration Management**: Comprehensive configuration with environment variable overrides
18
+
19
+ ## Quick Start
20
+
21
+ 1. **Installation**:
22
+ ```bash
23
+ pip install mcp-proxy-adapter
24
+ ```
25
+
26
+ 2. **Basic Configuration**:
27
+ ```bash
28
+ # Use the comprehensive config with all options disabled by default
29
+ python -m mcp_proxy_adapter --config config.json
30
+ ```
31
+
32
+ 3. **Access the API**:
33
+ - Health check: `GET http://localhost:8000/health`
34
+ - JSON-RPC: `POST http://localhost:8000/api/jsonrpc`
35
+ - REST API: `POST http://localhost:8000/cmd`
36
+ - Documentation: `http://localhost:8000/docs`
37
+
38
+ ## Configuration
39
+
40
+ The adapter uses a comprehensive JSON configuration file (`config.json`) that includes all available options with sensible defaults. All features are disabled by default and can be enabled as needed:
41
+
42
+ - **Server settings**: Host, port, debug mode
43
+ - **Security**: Authentication methods, SSL/TLS, permissions
44
+ - **Protocols**: HTTP/HTTPS/mTLS configuration
45
+ - **Proxy registration**: Automatic server registration
46
+ - **Logging**: Comprehensive logging configuration
47
+ - **Commands**: Built-in and custom command management
48
+
49
+ See `docs/EN/configuration.md` for complete configuration documentation.
50
+
51
+ ## Built-in Commands
52
+
53
+ - `health` - Server health check
54
+ - `echo` - Echo test command
55
+ - `config` - Configuration management
56
+ - `help` - Command help and documentation
57
+ - `reload` - Configuration reload
58
+ - `settings` - Settings management
59
+ - `load`/`unload` - Command loading/unloading
60
+ - `plugins` - Plugin management
61
+ - `proxy_registration` - Proxy registration control
62
+ - `transport_management` - Transport protocol management
63
+ - `role_test` - Role-based access testing
64
+
65
+ ## Security Features
66
+
67
+ - **Authentication**: API keys, JWT tokens, certificate-based auth
68
+ - **Authorization**: Role-based permissions with wildcard support
69
+ - **SSL/TLS**: Full SSL/TLS and mTLS support
70
+ - **Rate Limiting**: Configurable request rate limiting
71
+ - **Security Headers**: Automatic security header injection
72
+
73
+ ## Examples
74
+
75
+ The `mcp_proxy_adapter/examples/` directory contains comprehensive examples for different use cases:
76
+
77
+ - **Basic Framework**: Simple HTTP server setup
78
+ - **Full Application**: Complete application with custom commands and hooks
79
+ - **Security Testing**: Comprehensive security test suite
80
+ - **Certificate Generation**: SSL/TLS certificate management
81
+
82
+ ## Development
83
+
84
+ The project follows a modular architecture:
85
+
86
+ - `mcp_proxy_adapter/api/` - FastAPI application and handlers
87
+ - `mcp_proxy_adapter/commands/` - Command system and built-in commands
88
+ - `mcp_proxy_adapter/core/` - Core functionality and utilities
89
+ - `mcp_proxy_adapter/config.py` - Configuration management
90
+
91
+ ## License
92
+
93
+ This project is licensed under the MIT License.
94
+
95
+ ## Support
96
+
97
+ For issues and questions, please contact vasilyvz@gmail.com.
@@ -43,8 +43,9 @@ def main():
43
43
  title="Basic Framework Example",
44
44
  description="Basic MCP Proxy Adapter with minimal configuration",
45
45
  version="1.0.0",
46
- host=config_overrides.get("host", "0.0.0.0"),
47
- log_level="debug" if config_overrides.get("debug", False) else "info",
46
+ host=config_overrides.get("host"),
47
+ port=config_overrides.get("port"),
48
+ debug=config_overrides.get("debug", False),
48
49
  ))
49
50
 
50
51
 
@@ -0,0 +1,301 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Test Configuration Generator
4
+ Creates test configurations by copying the comprehensive config and enabling/disabling specific options.
5
+ Author: Vasiliy Zdanovskiy
6
+ email: vasilyvz@gmail.com
7
+ """
8
+ import json
9
+ import shutil
10
+ from pathlib import Path
11
+ from typing import Dict, Any, Optional
12
+
13
+
14
+ class TestConfigGenerator:
15
+ """Generator for test configurations based on comprehensive config."""
16
+
17
+ def __init__(self, comprehensive_config_path: str, output_dir: str = "configs"):
18
+ """
19
+ Initialize the generator.
20
+
21
+ Args:
22
+ comprehensive_config_path: Path to the comprehensive configuration file
23
+ output_dir: Directory to output test configurations
24
+ """
25
+ self.comprehensive_config_path = Path(comprehensive_config_path)
26
+ self.output_dir = Path(output_dir)
27
+ self.output_dir.mkdir(exist_ok=True)
28
+
29
+ # Load the comprehensive config
30
+ with open(self.comprehensive_config_path, 'r', encoding='utf-8') as f:
31
+ self.base_config = json.load(f)
32
+
33
+ def create_config(self, name: str, modifications: Dict[str, Any]) -> Path:
34
+ """
35
+ Create a test configuration with specific modifications.
36
+
37
+ Args:
38
+ name: Name of the configuration (without .json extension)
39
+ modifications: Dictionary of modifications to apply
40
+
41
+ Returns:
42
+ Path to the created configuration file
43
+ """
44
+ # Deep copy the base config
45
+ config = json.loads(json.dumps(self.base_config))
46
+
47
+ # Apply modifications
48
+ for key, value in modifications.items():
49
+ self._set_nested_value(config, key, value)
50
+
51
+ # Save the configuration
52
+ output_path = self.output_dir / f"{name}.json"
53
+ with open(output_path, 'w', encoding='utf-8') as f:
54
+ json.dump(config, f, indent=2, ensure_ascii=False)
55
+
56
+ print(f"✅ Created test config: {output_path}")
57
+ return output_path
58
+
59
+ def _set_nested_value(self, config: Dict, key: str, value: Any):
60
+ """Set a nested value in the configuration using dot notation."""
61
+ keys = key.split('.')
62
+ current = config
63
+
64
+ for k in keys[:-1]:
65
+ if k not in current:
66
+ current[k] = {}
67
+ current = current[k]
68
+
69
+ current[keys[-1]] = value
70
+
71
+ def create_all_test_configs(self):
72
+ """Create all standard test configurations."""
73
+ print("🔧 Creating test configurations from comprehensive config...")
74
+
75
+ # 1. HTTP Simple
76
+ self.create_config("http_simple", {
77
+ "server.port": 8001,
78
+ "ssl.enabled": False,
79
+ "security.enabled": False,
80
+ "proxy_registration.enabled": False,
81
+ "protocols.allowed_protocols": ["http"]
82
+ })
83
+
84
+ # 2. HTTP with Auth
85
+ self.create_config("http_auth", {
86
+ "server.port": 8002,
87
+ "ssl.enabled": False,
88
+ "security.enabled": True,
89
+ "security.auth.enabled": True,
90
+ "security.auth.methods": ["api_key"],
91
+ "security.auth.api_keys": {
92
+ "admin": "admin-secret-key",
93
+ "user": "user-secret-key"
94
+ },
95
+ "proxy_registration.enabled": False,
96
+ "protocols.allowed_protocols": ["http"]
97
+ })
98
+
99
+ # 3. HTTPS Simple
100
+ self.create_config("https_simple", {
101
+ "server.port": 8003,
102
+ "ssl.enabled": True,
103
+ "ssl.cert_file": "certs/localhost_server.crt",
104
+ "ssl.key_file": "keys/localhost_server.key",
105
+ "security.enabled": False,
106
+ "proxy_registration.enabled": False,
107
+ "protocols.allowed_protocols": ["https"]
108
+ })
109
+
110
+ # 4. HTTPS with Auth
111
+ self.create_config("https_auth", {
112
+ "server.port": 8004,
113
+ "ssl.enabled": True,
114
+ "ssl.cert_file": "certs/localhost_server.crt",
115
+ "ssl.key_file": "keys/localhost_server.key",
116
+ "security.enabled": True,
117
+ "security.auth.enabled": True,
118
+ "security.auth.methods": ["api_key"],
119
+ "security.auth.api_keys": {
120
+ "admin": "admin-secret-key",
121
+ "user": "user-secret-key"
122
+ },
123
+ "proxy_registration.enabled": False,
124
+ "protocols.allowed_protocols": ["https"]
125
+ })
126
+
127
+ # 5. mTLS Simple
128
+ self.create_config("mtls_simple", {
129
+ "server.port": 8005,
130
+ "ssl.enabled": True,
131
+ "ssl.cert_file": "certs/localhost_server.crt",
132
+ "ssl.key_file": "keys/localhost_server.key",
133
+ "ssl.ca_cert": "certs/mcp_proxy_adapter_ca_ca.crt",
134
+ "ssl.verify_client": True,
135
+ "security.enabled": True,
136
+ "security.auth.enabled": True,
137
+ "security.auth.methods": ["certificate"],
138
+ "proxy_registration.enabled": False,
139
+ "protocols.allowed_protocols": ["https", "mtls"]
140
+ })
141
+
142
+ # 6. mTLS with Roles
143
+ self.create_config("mtls_with_roles", {
144
+ "server.port": 8006,
145
+ "ssl.enabled": True,
146
+ "ssl.cert_file": "certs/localhost_server.crt",
147
+ "ssl.key_file": "keys/localhost_server.key",
148
+ "ssl.ca_cert": "certs/mcp_proxy_adapter_ca_ca.crt",
149
+ "ssl.verify_client": True,
150
+ "security.enabled": True,
151
+ "security.auth.enabled": True,
152
+ "security.auth.methods": ["certificate"],
153
+ "security.permissions.enabled": True,
154
+ "security.permissions.roles_file": "configs/roles.json",
155
+ "proxy_registration.enabled": False,
156
+ "protocols.allowed_protocols": ["https", "mtls"]
157
+ })
158
+
159
+ # 6a. mTLS without Roles (for security tests)
160
+ self.create_config("mtls_no_roles", {
161
+ "server.port": 8009,
162
+ "ssl.enabled": True,
163
+ "ssl.cert_file": "certs/localhost_server.crt",
164
+ "ssl.key_file": "keys/localhost_server.key",
165
+ "ssl.ca_cert": "certs/mcp_proxy_adapter_ca_ca.crt",
166
+ "ssl.verify_client": True,
167
+ "security.enabled": True,
168
+ "security.auth.enabled": True,
169
+ "security.auth.methods": ["certificate"],
170
+ "security.permissions.enabled": False,
171
+ "proxy_registration.enabled": False,
172
+ "protocols.allowed_protocols": ["https", "mtls"]
173
+ })
174
+
175
+ # 7. mTLS with Proxy Registration
176
+ self.create_config("mtls_with_proxy", {
177
+ "server.port": 8007,
178
+ "ssl.enabled": True,
179
+ "ssl.cert_file": "certs/localhost_server.crt",
180
+ "ssl.key_file": "keys/localhost_server.key",
181
+ "ssl.ca_cert": "certs/mcp_proxy_adapter_ca_ca.crt",
182
+ "ssl.verify_client": True,
183
+ "security.enabled": True,
184
+ "security.auth.enabled": True,
185
+ "security.auth.methods": ["certificate"],
186
+ "proxy_registration.enabled": True,
187
+ "proxy_registration.proxy_url": "http://127.0.0.1:3006",
188
+ "proxy_registration.server_id": "mcp_test_server",
189
+ "proxy_registration.server_name": "MCP Test Server",
190
+ "protocols.allowed_protocols": ["https", "mtls"]
191
+ })
192
+
193
+ # 8. HTTP with Token Auth (for security tests)
194
+ self.create_config("http_token", {
195
+ "server.port": 8010,
196
+ "ssl.enabled": False,
197
+ "security.enabled": True,
198
+ "security.auth.enabled": True,
199
+ "security.auth.methods": ["api_key"],
200
+ "security.auth.api_keys": {
201
+ "admin": "admin-secret-key",
202
+ "user": "user-secret-key"
203
+ },
204
+ "proxy_registration.enabled": False,
205
+ "protocols.allowed_protocols": ["http"]
206
+ })
207
+
208
+ # 9. HTTPS with Token Auth (for security tests)
209
+ self.create_config("https_token", {
210
+ "server.port": 8011,
211
+ "ssl.enabled": True,
212
+ "ssl.cert_file": "certs/localhost_server.crt",
213
+ "ssl.key_file": "keys/localhost_server.key",
214
+ "security.enabled": True,
215
+ "security.auth.enabled": True,
216
+ "security.auth.methods": ["api_key"],
217
+ "security.auth.api_keys": {
218
+ "admin": "admin-secret-key",
219
+ "user": "user-secret-key"
220
+ },
221
+ "proxy_registration.enabled": False,
222
+ "protocols.allowed_protocols": ["https"]
223
+ })
224
+
225
+ # 10. Full Featured (everything enabled)
226
+ self.create_config("full_featured", {
227
+ "server.port": 8008,
228
+ "ssl.enabled": True,
229
+ "ssl.cert_file": "certs/localhost_server.crt",
230
+ "ssl.key_file": "keys/localhost_server.key",
231
+ "ssl.ca_cert": "certs/mcp_proxy_adapter_ca_ca.crt",
232
+ "ssl.verify_client": True,
233
+ "security.enabled": True,
234
+ "security.auth.enabled": True,
235
+ "security.auth.methods": ["certificate", "api_key"],
236
+ "security.auth.api_keys": {
237
+ "admin": "admin-secret-key",
238
+ "user": "user-secret-key"
239
+ },
240
+ "security.permissions.enabled": True,
241
+ "security.permissions.roles_file": "configs/roles.json",
242
+ "security.rate_limit.enabled": True,
243
+ "proxy_registration.enabled": True,
244
+ "proxy_registration.proxy_url": "http://127.0.0.1:3006",
245
+ "proxy_registration.server_id": "mcp_full_server",
246
+ "proxy_registration.server_name": "MCP Full Featured Server",
247
+ "protocols.allowed_protocols": ["http", "https", "mtls", "jsonrpc"]
248
+ })
249
+
250
+ print(f"✅ Created {10} test configurations in {self.output_dir}")
251
+
252
+
253
+ def main():
254
+ """Main entry point."""
255
+ import argparse
256
+
257
+ parser = argparse.ArgumentParser(description="Generate test configurations")
258
+ parser.add_argument(
259
+ "--comprehensive-config",
260
+ default="comprehensive_config.json",
261
+ help="Path to comprehensive configuration file"
262
+ )
263
+ parser.add_argument(
264
+ "--output-dir",
265
+ default="configs",
266
+ help="Output directory for test configurations"
267
+ )
268
+ parser.add_argument(
269
+ "--config-name",
270
+ help="Create a specific configuration (http_simple, https_auth, mtls_with_roles, etc.)"
271
+ )
272
+ parser.add_argument(
273
+ "--modifications",
274
+ help="JSON string of modifications to apply (for custom configs)"
275
+ )
276
+
277
+ args = parser.parse_args()
278
+
279
+ generator = TestConfigGenerator(args.comprehensive_config, args.output_dir)
280
+
281
+ if args.config_name:
282
+ # Create a specific configuration
283
+ if args.modifications:
284
+ modifications = json.loads(args.modifications)
285
+ else:
286
+ # Use predefined modifications
287
+ predefined = {
288
+ "http_simple": {"server.port": 8001, "ssl.enabled": False, "security.enabled": False},
289
+ "https_simple": {"server.port": 8003, "ssl.enabled": True},
290
+ "mtls_simple": {"server.port": 8005, "ssl.enabled": True, "ssl.verify_client": True},
291
+ }
292
+ modifications = predefined.get(args.config_name, {})
293
+
294
+ generator.create_config(args.config_name, modifications)
295
+ else:
296
+ # Create all test configurations
297
+ generator.create_all_test_configs()
298
+
299
+
300
+ if __name__ == "__main__":
301
+ main()