mcp-proxy-adapter 6.4.2__tar.gz → 6.4.4__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 (150) hide show
  1. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/PKG-INFO +2 -1
  2. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/app_factory.py +18 -31
  3. mcp_proxy_adapter-6.4.4/mcp_proxy_adapter/examples/test_mcp_adapter.py +207 -0
  4. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/version.py +1 -1
  5. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter.egg-info/SOURCES.txt +1 -0
  6. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/pyproject.toml +2 -1
  7. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/MANIFEST.in +0 -0
  8. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/README.md +0 -0
  9. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/__init__.py +0 -0
  10. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/__main__.py +0 -0
  11. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/__init__.py +0 -0
  12. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/app.py +0 -0
  13. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/handlers.py +0 -0
  14. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/middleware/__init__.py +0 -0
  15. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/middleware/base.py +0 -0
  16. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/middleware/command_permission_middleware.py +0 -0
  17. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/middleware/error_handling.py +0 -0
  18. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/middleware/factory.py +0 -0
  19. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/middleware/logging.py +0 -0
  20. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/middleware/performance.py +0 -0
  21. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/middleware/protocol_middleware.py +0 -0
  22. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/middleware/transport_middleware.py +0 -0
  23. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/middleware/unified_security.py +0 -0
  24. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/middleware/user_info_middleware.py +0 -0
  25. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/schemas.py +0 -0
  26. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/tool_integration.py +0 -0
  27. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/api/tools.py +0 -0
  28. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/__init__.py +0 -0
  29. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/auth_validation_command.py +0 -0
  30. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/base.py +0 -0
  31. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/builtin_commands.py +0 -0
  32. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/catalog_manager.py +0 -0
  33. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/cert_monitor_command.py +0 -0
  34. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/certificate_management_command.py +0 -0
  35. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/command_registry.py +0 -0
  36. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/config_command.py +0 -0
  37. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/dependency_container.py +0 -0
  38. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/dependency_manager.py +0 -0
  39. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/echo_command.py +0 -0
  40. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/health_command.py +0 -0
  41. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/help_command.py +0 -0
  42. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/hooks.py +0 -0
  43. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/key_management_command.py +0 -0
  44. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/load_command.py +0 -0
  45. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/plugins_command.py +0 -0
  46. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/protocol_management_command.py +0 -0
  47. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/proxy_registration_command.py +0 -0
  48. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/reload_command.py +0 -0
  49. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/result.py +0 -0
  50. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/role_test_command.py +0 -0
  51. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/roles_management_command.py +0 -0
  52. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/security_command.py +0 -0
  53. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/settings_command.py +0 -0
  54. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/ssl_setup_command.py +0 -0
  55. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/token_management_command.py +0 -0
  56. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/transport_management_command.py +0 -0
  57. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/commands/unload_command.py +0 -0
  58. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/config.py +0 -0
  59. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/__init__.py +0 -0
  60. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/app_runner.py +0 -0
  61. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/auth_validator.py +0 -0
  62. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/certificate_utils.py +0 -0
  63. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/client.py +0 -0
  64. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/client_manager.py +0 -0
  65. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/client_security.py +0 -0
  66. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/config_converter.py +0 -0
  67. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/config_validator.py +0 -0
  68. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/crl_utils.py +0 -0
  69. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/errors.py +0 -0
  70. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/logging.py +0 -0
  71. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/mtls_asgi.py +0 -0
  72. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/mtls_asgi_app.py +0 -0
  73. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/protocol_manager.py +0 -0
  74. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/proxy_client.py +0 -0
  75. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/proxy_registration.py +0 -0
  76. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/role_utils.py +0 -0
  77. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/security_adapter.py +0 -0
  78. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/security_factory.py +0 -0
  79. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/security_integration.py +0 -0
  80. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/server_adapter.py +0 -0
  81. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/server_engine.py +0 -0
  82. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/settings.py +0 -0
  83. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/ssl_utils.py +0 -0
  84. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/transport_manager.py +0 -0
  85. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/unified_config_adapter.py +0 -0
  86. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/core/utils.py +0 -0
  87. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/custom_openapi.py +0 -0
  88. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/__init__.py +0 -0
  89. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/basic_framework/__init__.py +0 -0
  90. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +0 -0
  91. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +0 -0
  92. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/basic_framework/main.py +0 -0
  93. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/basic_framework/roles.json +0 -0
  94. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/commands/__init__.py +0 -0
  95. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/create_certificates_simple.py +0 -0
  96. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/debug_request_state.py +0 -0
  97. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/debug_role_chain.py +0 -0
  98. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/demo_client.py +0 -0
  99. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/examples/basic_framework/__init__.py +0 -0
  100. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/examples/basic_framework/commands/__init__.py +0 -0
  101. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/examples/basic_framework/hooks/__init__.py +0 -0
  102. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/examples/basic_framework/main.py +0 -0
  103. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/examples/full_application/__init__.py +0 -0
  104. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/examples/full_application/commands/__init__.py +0 -0
  105. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/examples/full_application/commands/custom_echo_command.py +0 -0
  106. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/examples/full_application/commands/dynamic_calculator_command.py +0 -0
  107. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/examples/full_application/hooks/__init__.py +0 -0
  108. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/examples/full_application/hooks/application_hooks.py +0 -0
  109. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/examples/full_application/hooks/builtin_command_hooks.py +0 -0
  110. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/examples/full_application/main.py +0 -0
  111. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/examples/full_application/proxy_endpoints.py +0 -0
  112. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/full_application/__init__.py +0 -0
  113. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/full_application/commands/__init__.py +0 -0
  114. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +0 -0
  115. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +0 -0
  116. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/full_application/hooks/__init__.py +0 -0
  117. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +0 -0
  118. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +0 -0
  119. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/full_application/main.py +0 -0
  120. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +0 -0
  121. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/full_application/roles.json +0 -0
  122. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/generate_all_certificates.py +0 -0
  123. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/generate_certificates.py +0 -0
  124. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/generate_certificates_and_tokens.py +0 -0
  125. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/generate_comprehensive_config.py +0 -0
  126. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/generate_test_configs.py +0 -0
  127. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/proxy_registration_example.py +0 -0
  128. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/run_example.py +0 -0
  129. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/run_full_test_suite.py +0 -0
  130. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/run_proxy_server.py +0 -0
  131. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/run_security_tests.py +0 -0
  132. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/run_security_tests_fixed.py +0 -0
  133. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/scripts/config_generator.py +0 -0
  134. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/scripts/create_certificates_simple.py +0 -0
  135. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/scripts/generate_certificates_and_tokens.py +0 -0
  136. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/security_test_client.py +0 -0
  137. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/setup_test_environment.py +0 -0
  138. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/test_config.py +0 -0
  139. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/test_config_generator.py +0 -0
  140. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/test_examples.py +0 -0
  141. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/examples/universal_client.py +0 -0
  142. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/main.py +0 -0
  143. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/openapi.py +0 -0
  144. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/schemas/base_schema.json +0 -0
  145. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/schemas/openapi_schema.json +0 -0
  146. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter/utils/config_generator.py +0 -0
  147. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/mcp_proxy_adapter_issue_package/demonstrate_issue.py +0 -0
  148. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/requirements.txt +0 -0
  149. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/setup.cfg +0 -0
  150. {mcp_proxy_adapter-6.4.2 → mcp_proxy_adapter-6.4.4}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 6.4.2
3
+ Version: 6.4.4
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
@@ -30,6 +30,7 @@ Description-Content-Type: text/markdown
30
30
  Requires-Dist: fastapi<1.0.0,>=0.95.0
31
31
  Requires-Dist: pydantic>=2.0.0
32
32
  Requires-Dist: hypercorn<1.0.0,>=0.15.0
33
+ Requires-Dist: uvicorn<1.0.0,>=0.22.0
33
34
  Requires-Dist: docstring-parser<1.0.0,>=0.15
34
35
  Requires-Dist: typing-extensions<5.0.0,>=4.5.0
35
36
  Requires-Dist: jsonrpc>=1.2.0
@@ -340,51 +340,38 @@ async def create_and_run_server(
340
340
  print(" Use Ctrl+C to stop the server")
341
341
  print("=" * 60)
342
342
 
343
- # Use hypercorn directly
344
- import hypercorn.asyncio
345
- import hypercorn.config
343
+ # Use uvicorn for better FastAPI compatibility
344
+ import uvicorn
346
345
  import asyncio
347
346
 
348
- # Configure hypercorn
349
- config_hypercorn = hypercorn.config.Config()
350
- config_hypercorn.bind = [f"{server_config['host']}:{server_config['port']}"]
351
- config_hypercorn.loglevel = server_config.get("log_level", "info")
347
+ # Configure uvicorn
348
+ uvicorn_config = uvicorn.Config(
349
+ app=app,
350
+ host=server_config["host"],
351
+ port=server_config["port"],
352
+ log_level=server_config.get("log_level", "info"),
353
+ reload=False,
354
+ )
352
355
 
353
356
  # Add SSL configuration if present
354
357
  if "certfile" in server_config:
355
- config_hypercorn.certfile = server_config["certfile"]
358
+ uvicorn_config.ssl_certfile = server_config["certfile"]
356
359
  if "keyfile" in server_config:
357
- config_hypercorn.keyfile = server_config["keyfile"]
360
+ uvicorn_config.ssl_keyfile = server_config["keyfile"]
358
361
  if "ca_certs" in server_config:
359
- config_hypercorn.ca_certs = server_config["ca_certs"]
360
- if "verify_mode" in server_config:
361
- import ssl
362
- # Use the verify_mode from configuration, default to CERT_NONE for simple HTTPS
363
- verify_mode = server_config.get("verify_mode", ssl.CERT_NONE)
364
- if verify_mode == "CERT_REQUIRED":
365
- config_hypercorn.verify_mode = ssl.CERT_REQUIRED
366
- elif verify_mode == "CERT_OPTIONAL":
367
- config_hypercorn.verify_mode = ssl.CERT_OPTIONAL
368
- else:
369
- config_hypercorn.verify_mode = ssl.CERT_NONE
362
+ uvicorn_config.ssl_ca_certs = server_config["ca_certs"]
370
363
 
371
364
  # Determine if SSL is enabled
372
365
  ssl_enabled = any(key in server_config for key in ["certfile", "keyfile"])
373
366
 
374
367
  if ssl_enabled:
375
- print(f"🔐 Starting HTTPS server with hypercorn...")
368
+ print(f"🔐 Starting HTTPS server with uvicorn...")
376
369
  else:
377
- print(f"🌐 Starting HTTP server with hypercorn...")
370
+ print(f"🌐 Starting HTTP server with uvicorn...")
378
371
 
379
- # Run the server
380
- try:
381
- # Check if we're already in an event loop
382
- loop = asyncio.get_running_loop()
383
- # If we're in a loop, use await instead of asyncio.run
384
- await hypercorn.asyncio.serve(app, config_hypercorn)
385
- except RuntimeError:
386
- # No event loop running, use asyncio.run
387
- asyncio.run(hypercorn.asyncio.serve(app, config_hypercorn))
372
+ # Create and run uvicorn server
373
+ server = uvicorn.Server(uvicorn_config)
374
+ await server.serve()
388
375
 
389
376
  except KeyboardInterrupt:
390
377
  print("\n🛑 Server stopped by user")
@@ -0,0 +1,207 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ One-Command Test Runner for MCP Proxy Adapter
4
+ This script creates a fresh test environment and runs all tests.
5
+ Author: Vasiliy Zdanovskiy
6
+ email: vasilyvz@gmail.com
7
+
8
+ Usage:
9
+ python test_mcp_adapter.py
10
+ """
11
+ import asyncio
12
+ import os
13
+ import subprocess
14
+ import sys
15
+ import time
16
+ from pathlib import Path
17
+
18
+
19
+ def run_command(cmd, description, cwd=None, timeout=300):
20
+ """Run a command and return success status."""
21
+ print(f"🚀 {description}...")
22
+ try:
23
+ result = subprocess.run(
24
+ cmd,
25
+ shell=True,
26
+ cwd=cwd,
27
+ capture_output=True,
28
+ text=True,
29
+ timeout=timeout
30
+ )
31
+ if result.returncode == 0:
32
+ print(f"✅ {description} completed successfully")
33
+ return True
34
+ else:
35
+ print(f"❌ {description} failed")
36
+ if result.stderr.strip():
37
+ print(f"🔍 Error: {result.stderr.strip()}")
38
+ return False
39
+ except subprocess.TimeoutExpired:
40
+ print(f"⏰ {description} timed out after {timeout} seconds")
41
+ return False
42
+ except Exception as e:
43
+ print(f"❌ {description} failed with exception: {e}")
44
+ return False
45
+
46
+
47
+ def main():
48
+ """Main function to run complete test suite."""
49
+ print("=" * 80)
50
+ print("🎯 MCP PROXY ADAPTER - ONE-COMMAND TEST SUITE")
51
+ print("=" * 80)
52
+ print("This script will create a fresh test environment and run all tests.")
53
+ print("=" * 80)
54
+
55
+ # Get current directory
56
+ current_dir = Path.cwd()
57
+ print(f"📁 Working directory: {current_dir}")
58
+
59
+ # Clean up any existing test environment
60
+ test_env_dir = current_dir / "test_environment"
61
+ if test_env_dir.exists():
62
+ print("🧹 Cleaning up existing test environment...")
63
+ import shutil
64
+ shutil.rmtree(test_env_dir)
65
+ print("✅ Cleaned up existing test environment")
66
+
67
+ # Step 1: Setup test environment
68
+ print("\n" + "=" * 60)
69
+ print("STEP 1: SETTING UP TEST ENVIRONMENT")
70
+ print("=" * 60)
71
+
72
+ setup_cmd = "python -m mcp_proxy_adapter.examples.setup_test_environment --output-dir test_environment"
73
+ if not run_command(setup_cmd, "Setting up test environment"):
74
+ print("❌ Failed to setup test environment. Aborting.")
75
+ return False
76
+
77
+ # Step 2: Generate test configurations
78
+ print("\n" + "=" * 60)
79
+ print("STEP 2: GENERATING TEST CONFIGURATIONS")
80
+ print("=" * 60)
81
+
82
+ config_cmd = "python -m mcp_proxy_adapter.examples.generate_test_configs --output-dir test_environment/configs"
83
+ if not run_command(config_cmd, "Generating test configurations"):
84
+ print("❌ Failed to generate configurations. Aborting.")
85
+ return False
86
+
87
+ # Step 3: Fix mTLS configurations and certificates
88
+ print("\n" + "=" * 60)
89
+ print("STEP 3: FIXING mTLS CONFIGURATIONS AND CERTIFICATES")
90
+ print("=" * 60)
91
+
92
+ # Fix certificate naming
93
+ cert_fixes = [
94
+ "ln -sf mcp_proxy_adapter_test_ca_ca.crt certs/mcp_proxy_adapter_ca_ca.crt",
95
+ "ln -sf admin-client_client.crt certs/admin_cert.pem",
96
+ "ln -sf admin-client_client.key certs/admin_key.pem",
97
+ "ln -sf admin-client_client.crt certs/user_cert.pem",
98
+ "ln -sf admin-client_client.key certs/user_key.pem"
99
+ ]
100
+
101
+ for fix_cmd in cert_fixes:
102
+ run_command(fix_cmd, f"Fixing certificate: {fix_cmd.split()[-1]}", cwd=test_env_dir)
103
+
104
+ # Fix mTLS configurations
105
+ print("🔧 Fixing mTLS configurations...")
106
+
107
+ # Read and fix mtls_with_roles.json
108
+ mtls_with_roles_path = test_env_dir / "configs" / "mtls_with_roles.json"
109
+ if mtls_with_roles_path.exists():
110
+ try:
111
+ import json
112
+ with open(mtls_with_roles_path, 'r') as f:
113
+ config = json.load(f)
114
+
115
+ # Add default_protocol if missing
116
+ if "protocols" in config and "default_protocol" not in config["protocols"]:
117
+ config["protocols"]["default_protocol"] = "mtls"
118
+
119
+ # Add client certificate paths if missing
120
+ if "ssl" in config:
121
+ if "client_cert_file" not in config["ssl"]:
122
+ config["ssl"]["client_cert_file"] = "certs/admin_cert.pem"
123
+ if "client_key_file" not in config["ssl"]:
124
+ config["ssl"]["client_key_file"] = "certs/admin_key.pem"
125
+
126
+ with open(mtls_with_roles_path, 'w') as f:
127
+ json.dump(config, f, indent=2)
128
+ print("✅ Fixed mtls_with_roles.json")
129
+ except Exception as e:
130
+ print(f"⚠️ Warning: Failed to fix mtls_with_roles.json: {e}")
131
+
132
+ # Read and fix mtls_no_roles.json
133
+ mtls_no_roles_path = test_env_dir / "configs" / "mtls_no_roles.json"
134
+ if mtls_no_roles_path.exists():
135
+ try:
136
+ import json
137
+ with open(mtls_no_roles_path, 'r') as f:
138
+ config = json.load(f)
139
+
140
+ # Add UUID if missing
141
+ if "uuid" not in config:
142
+ import uuid
143
+ config["uuid"] = str(uuid.uuid4())
144
+
145
+ # Add default_protocol if missing
146
+ if "protocols" in config and "default_protocol" not in config["protocols"]:
147
+ config["protocols"]["default_protocol"] = "mtls"
148
+
149
+ # Fix certificate paths in security.ssl section
150
+ if "security" in config and "ssl" in config["security"]:
151
+ ssl_config = config["security"]["ssl"]
152
+ ssl_config["server_cert_file"] = "certs/localhost_server.crt"
153
+ ssl_config["server_key_file"] = "keys/localhost_server.key"
154
+ ssl_config["ca_cert_file"] = "certs/mcp_proxy_adapter_test_ca_ca.crt"
155
+ ssl_config["client_cert_file"] = "certs/admin_cert.pem"
156
+ ssl_config["client_key_file"] = "certs/admin_key.pem"
157
+
158
+ with open(mtls_no_roles_path, 'w') as f:
159
+ json.dump(config, f, indent=2)
160
+ print("✅ Fixed mtls_no_roles.json")
161
+ except Exception as e:
162
+ print(f"⚠️ Warning: Failed to fix mtls_no_roles.json: {e}")
163
+
164
+ # Step 4: Run security tests
165
+ print("\n" + "=" * 60)
166
+ print("STEP 4: RUNNING SECURITY TESTS")
167
+ print("=" * 60)
168
+
169
+ test_cmd = "python -m mcp_proxy_adapter.examples.run_security_tests"
170
+ test_success = run_command(test_cmd, "Running security tests", cwd=test_env_dir, timeout=600)
171
+
172
+ # Step 5: Show final results
173
+ print("\n" + "=" * 80)
174
+ print("🎉 ONE-COMMAND TEST SUITE FINISHED")
175
+ print("=" * 80)
176
+ print("📋 SUMMARY:")
177
+ print("✅ Test environment created successfully")
178
+ print("✅ Configurations generated successfully")
179
+ print("✅ Certificates generated and fixed")
180
+ print("✅ Security tests executed")
181
+ print(f"📁 Test environment location: {test_env_dir}")
182
+ print("\n🔧 Available configurations:")
183
+ print(" - HTTP: test_environment/configs/http_simple.json")
184
+ print(" - HTTP + Token: test_environment/configs/http_token.json")
185
+ print(" - HTTPS: test_environment/configs/https_simple.json")
186
+ print(" - HTTPS + Token: test_environment/configs/https_token.json")
187
+ print(" - mTLS: test_environment/configs/mtls_with_roles.json")
188
+ print("\n📊 Test Results:")
189
+ if test_success:
190
+ print("✅ All tests completed successfully")
191
+ else:
192
+ print("⚠️ Some tests failed (check output above for details)")
193
+ print("=" * 80)
194
+
195
+ return test_success
196
+
197
+
198
+ if __name__ == "__main__":
199
+ try:
200
+ success = main()
201
+ sys.exit(0 if success else 1)
202
+ except KeyboardInterrupt:
203
+ print("\n⚠️ Interrupted by user")
204
+ sys.exit(1)
205
+ except Exception as e:
206
+ print(f"\n❌ Unexpected error: {e}")
207
+ sys.exit(1)
@@ -2,4 +2,4 @@
2
2
  Version information for MCP Proxy Adapter.
3
3
  """
4
4
 
5
- __version__ = "6.3.31"
5
+ __version__ = "6.4.4"
@@ -107,6 +107,7 @@ mcp_proxy_adapter/examples/setup_test_environment.py
107
107
  mcp_proxy_adapter/examples/test_config.py
108
108
  mcp_proxy_adapter/examples/test_config_generator.py
109
109
  mcp_proxy_adapter/examples/test_examples.py
110
+ mcp_proxy_adapter/examples/test_mcp_adapter.py
110
111
  mcp_proxy_adapter/examples/universal_client.py
111
112
  mcp_proxy_adapter/examples/basic_framework/__init__.py
112
113
  mcp_proxy_adapter/examples/basic_framework/main.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mcp-proxy-adapter"
7
- version = "6.4.2"
7
+ version = "6.4.4"
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.22.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",