mcp-proxy-adapter 6.6.7__tar.gz → 6.6.9__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 (144) hide show
  1. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/PKG-INFO +1 -1
  2. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/app.py +79 -74
  3. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/config_builder.py +76 -10
  4. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/generate_config.py +17 -15
  5. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/version.py +1 -1
  6. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter.egg-info/PKG-INFO +1 -1
  7. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/pyproject.toml +1 -1
  8. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/README.md +0 -0
  9. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/__init__.py +0 -0
  10. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/__main__.py +0 -0
  11. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/__init__.py +0 -0
  12. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/handlers.py +0 -0
  13. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/middleware/__init__.py +0 -0
  14. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/middleware/base.py +0 -0
  15. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/middleware/command_permission_middleware.py +0 -0
  16. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/middleware/error_handling.py +0 -0
  17. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/middleware/factory.py +0 -0
  18. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/middleware/logging.py +0 -0
  19. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/middleware/performance.py +0 -0
  20. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/middleware/protocol_middleware.py +0 -0
  21. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/middleware/transport_middleware.py +0 -0
  22. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/middleware/unified_security.py +0 -0
  23. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/middleware/user_info_middleware.py +0 -0
  24. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/schemas.py +0 -0
  25. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/tool_integration.py +0 -0
  26. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/api/tools.py +0 -0
  27. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/__init__.py +0 -0
  28. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/auth_validation_command.py +0 -0
  29. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/base.py +0 -0
  30. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/builtin_commands.py +0 -0
  31. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/catalog_manager.py +0 -0
  32. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/cert_monitor_command.py +0 -0
  33. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/certificate_management_command.py +0 -0
  34. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/command_registry.py +0 -0
  35. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/config_command.py +0 -0
  36. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/dependency_container.py +0 -0
  37. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/dependency_manager.py +0 -0
  38. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/echo_command.py +0 -0
  39. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/health_command.py +0 -0
  40. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/help_command.py +0 -0
  41. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/hooks.py +0 -0
  42. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/key_management_command.py +0 -0
  43. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/load_command.py +0 -0
  44. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/plugins_command.py +0 -0
  45. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/protocol_management_command.py +0 -0
  46. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/proxy_registration_command.py +0 -0
  47. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/reload_command.py +0 -0
  48. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/result.py +0 -0
  49. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/role_test_command.py +0 -0
  50. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/roles_management_command.py +0 -0
  51. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/security_command.py +0 -0
  52. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/settings_command.py +0 -0
  53. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/ssl_setup_command.py +0 -0
  54. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/token_management_command.py +0 -0
  55. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/transport_management_command.py +0 -0
  56. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/commands/unload_command.py +0 -0
  57. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/config.py +0 -0
  58. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/__init__.py +0 -0
  59. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/app_factory.py +0 -0
  60. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/app_runner.py +0 -0
  61. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/auth_validator.py +0 -0
  62. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/certificate_utils.py +0 -0
  63. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/client.py +0 -0
  64. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/client_manager.py +0 -0
  65. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/client_security.py +0 -0
  66. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/config_converter.py +0 -0
  67. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/config_validator.py +0 -0
  68. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/crl_utils.py +0 -0
  69. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/errors.py +0 -0
  70. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/logging.py +0 -0
  71. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/mtls_asgi.py +0 -0
  72. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/mtls_asgi_app.py +0 -0
  73. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/mtls_server.py +0 -0
  74. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/protocol_manager.py +0 -0
  75. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/proxy_client.py +0 -0
  76. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/proxy_registration.py +0 -0
  77. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/role_utils.py +0 -0
  78. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/security_adapter.py +0 -0
  79. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/security_factory.py +0 -0
  80. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/security_integration.py +0 -0
  81. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/server_adapter.py +0 -0
  82. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/server_engine.py +0 -0
  83. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/settings.py +0 -0
  84. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/ssl_utils.py +0 -0
  85. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/transport_manager.py +0 -0
  86. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/unified_config_adapter.py +0 -0
  87. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/core/utils.py +0 -0
  88. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/custom_openapi.py +0 -0
  89. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/__init__.py +0 -0
  90. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/basic_framework/__init__.py +0 -0
  91. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +0 -0
  92. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +0 -0
  93. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/basic_framework/main.py +0 -0
  94. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/bugfix_certificate_config.py +0 -0
  95. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/cert_manager_bugfix.py +0 -0
  96. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/check_config.py +0 -0
  97. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/commands/__init__.py +0 -0
  98. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/config_cli.py +0 -0
  99. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/create_test_configs.py +0 -0
  100. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/debug_request_state.py +0 -0
  101. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/debug_role_chain.py +0 -0
  102. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/demo_client.py +0 -0
  103. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/full_application/__init__.py +0 -0
  104. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/full_application/commands/__init__.py +0 -0
  105. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +0 -0
  106. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +0 -0
  107. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/full_application/hooks/__init__.py +0 -0
  108. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +0 -0
  109. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +0 -0
  110. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/full_application/main.py +0 -0
  111. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +0 -0
  112. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/generate_certificates.py +0 -0
  113. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/proxy_registration_example.py +0 -0
  114. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/required_certificates.py +0 -0
  115. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/run_example.py +0 -0
  116. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/run_full_test_suite.py +0 -0
  117. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/run_proxy_server.py +0 -0
  118. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/run_security_tests_fixed.py +0 -0
  119. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/security_test_client.py +0 -0
  120. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/setup_test_environment.py +0 -0
  121. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/simple_protocol_test.py +0 -0
  122. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/test_chk_hostname_automated.py +0 -0
  123. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/test_config.py +0 -0
  124. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/test_config_builder.py +0 -0
  125. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/test_examples.py +0 -0
  126. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/test_framework_complete.py +0 -0
  127. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/test_mcp_server.py +0 -0
  128. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/test_protocol_examples.py +0 -0
  129. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/universal_client.py +0 -0
  130. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/examples/update_config_certificates.py +0 -0
  131. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/main.py +0 -0
  132. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/openapi.py +0 -0
  133. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/schemas/base_schema.json +0 -0
  134. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/schemas/openapi_schema.json +0 -0
  135. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/schemas/roles.json +0 -0
  136. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter/schemas/roles_schema.json +0 -0
  137. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter.egg-info/SOURCES.txt +0 -0
  138. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter.egg-info/dependency_links.txt +0 -0
  139. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter.egg-info/entry_points.txt +0 -0
  140. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter.egg-info/not-zip-safe +0 -0
  141. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter.egg-info/requires.txt +0 -0
  142. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/mcp_proxy_adapter.egg-info/top_level.txt +0 -0
  143. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/setup.cfg +0 -0
  144. {mcp_proxy_adapter-6.6.7 → mcp_proxy_adapter-6.6.9}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 6.6.7
3
+ Version: 6.6.9
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
@@ -41,6 +41,81 @@ from mcp_proxy_adapter.commands.command_registry import registry
41
41
  from mcp_proxy_adapter.custom_openapi import custom_openapi_with_fallback
42
42
 
43
43
 
44
+ def _determine_registration_url(config: Dict[str, Any]) -> str:
45
+ """
46
+ Determine the registration URL for proxy registration.
47
+
48
+ Logic:
49
+ 1. Protocol: registration.protocol > server.protocol > fallback to http
50
+ 2. Host: public_host > hostname (if server.host is 0.0.0.0/127.0.0.1) > server.host
51
+ 3. Port: public_port > server.port
52
+
53
+ Args:
54
+ config: Application configuration
55
+
56
+ Returns:
57
+ Complete registration URL
58
+ """
59
+ import os
60
+ import socket
61
+
62
+ # Get server configuration
63
+ server_config = config.get("server", {})
64
+ server_host = server_config.get("host", "0.0.0.0")
65
+ server_port = server_config.get("port", 8000)
66
+ server_protocol = server_config.get("protocol", "http")
67
+
68
+ # Get registration configuration
69
+ reg_cfg = config.get("registration", config.get("proxy_registration", {}))
70
+ public_host = reg_cfg.get("public_host")
71
+ public_port = reg_cfg.get("public_port")
72
+ registration_protocol = reg_cfg.get("protocol")
73
+
74
+ # Determine protocol
75
+ if registration_protocol:
76
+ # Use protocol from registration configuration
77
+ # Convert mtls to https for URL construction (mTLS is still HTTPS)
78
+ protocol = "https" if registration_protocol == "mtls" else registration_protocol
79
+ logger.info(f"🔍 Using registration.protocol: {registration_protocol} -> {protocol}")
80
+ else:
81
+ # Fallback to server protocol
82
+ verify_client = config.get("transport", {}).get("verify_client", False)
83
+ ssl_enabled = server_protocol in ["https", "mtls"] or verify_client
84
+ protocol = "https" if ssl_enabled else "http"
85
+ logger.info(f"⚠️ Fallback to server.protocol: {server_protocol} -> {protocol} (verify_client={verify_client})")
86
+
87
+ # Determine host
88
+ if not public_host:
89
+ if server_host in ("0.0.0.0", "127.0.0.1"):
90
+ # Try to get hostname, fallback to docker host addr
91
+ try:
92
+ hostname = socket.gethostname()
93
+ # Use hostname if it's not localhost
94
+ if hostname and hostname not in ("localhost", "127.0.0.1"):
95
+ resolved_host = hostname
96
+ else:
97
+ resolved_host = os.getenv("DOCKER_HOST_ADDR", "172.17.0.1")
98
+ except Exception:
99
+ resolved_host = os.getenv("DOCKER_HOST_ADDR", "172.17.0.1")
100
+ else:
101
+ resolved_host = server_host
102
+ else:
103
+ resolved_host = public_host
104
+
105
+ # Determine port
106
+ resolved_port = public_port or server_port
107
+
108
+ # Build URL
109
+ server_url = f"{protocol}://{resolved_host}:{resolved_port}"
110
+
111
+ logger.info(
112
+ "🔍 Registration URL selection: server_host=%s, server_port=%s, public_host=%s, public_port=%s, protocol=%s, resolved_host=%s, resolved_port=%s, server_url=%s",
113
+ server_host, server_port, public_host, public_port, protocol, resolved_host, resolved_port, server_url
114
+ )
115
+
116
+ return server_url
117
+
118
+
44
119
  def create_lifespan(config_path: Optional[str] = None):
45
120
  """
46
121
  Create lifespan manager for the FastAPI application.
@@ -81,31 +156,8 @@ def create_lifespan(config_path: Optional[str] = None):
81
156
  if not server_port:
82
157
  raise ValueError("server.port is required")
83
158
 
84
- reg_cfg = config.get("registration", {})
85
- public_host = reg_cfg.get("public_host")
86
- public_port = reg_cfg.get("public_port")
87
-
88
- # Check SSL configuration from new structure
89
- # Priority: registration.protocol > server.protocol > fallback to http
90
- reg_cfg = config.get("registration", {})
91
- registration_protocol = reg_cfg.get("protocol")
92
- server_protocol = config.get("server.protocol", "http")
93
-
94
- if registration_protocol:
95
- # Use protocol from registration configuration
96
- # Convert mtls to https for URL construction (mTLS is still HTTPS)
97
- protocol = "https" if registration_protocol == "mtls" else registration_protocol
98
- else:
99
- # Fallback to server protocol
100
- verify_client = config.get("transport.verify_client", False)
101
- ssl_enabled = server_protocol in ["https", "mtls"] or verify_client
102
- protocol = "https" if ssl_enabled else "http"
103
-
104
- import os
105
- docker_host_addr = os.getenv("DOCKER_HOST_ADDR", "172.17.0.1")
106
- target_host = public_host or (docker_host_addr if server_host == "0.0.0.0" else server_host)
107
- target_port = public_port or server_port
108
- early_server_url = f"{protocol}://{target_host}:{target_port}"
159
+ # Determine registration URL using unified logic
160
+ early_server_url = _determine_registration_url(config)
109
161
  try:
110
162
  from mcp_proxy_adapter.core.proxy_registration import (
111
163
  proxy_registration_manager,
@@ -140,55 +192,8 @@ def create_lifespan(config_path: Optional[str] = None):
140
192
  server_host = server_config.get("host", "0.0.0.0")
141
193
  server_port = server_config.get("port", 8000)
142
194
 
143
- reg_cfg = final_config.get("registration", final_config.get("proxy_registration", {}))
144
- public_host = reg_cfg.get("public_host")
145
- public_port = reg_cfg.get("public_port")
146
-
147
- # Determine protocol using the new configuration structure
148
- # Priority: registration.protocol > server.protocol > fallback to http
149
- reg_cfg = final_config.get("registration", final_config.get("proxy_registration", {}))
150
- registration_protocol = reg_cfg.get("protocol")
151
- server_protocol = final_config.get("server", {}).get("protocol", "http")
152
-
153
- if registration_protocol:
154
- # Use protocol from registration configuration
155
- # Convert mtls to https for URL construction (mTLS is still HTTPS)
156
- protocol = "https" if registration_protocol == "mtls" else registration_protocol
157
- else:
158
- # Fallback to server protocol
159
- verify_client_cfg = final_config.get("transport", {}).get("verify_client", False)
160
- ssl_enabled_final = server_protocol in ["https", "mtls"] or verify_client_cfg
161
- protocol = "https" if ssl_enabled_final else "http"
162
-
163
- import os
164
- docker_host_addr = os.getenv("DOCKER_HOST_ADDR", "172.17.0.1")
165
- resolved_host = public_host or (docker_host_addr if server_host == "0.0.0.0" else server_host)
166
- resolved_port = public_port or server_port
167
- server_url = f"{protocol}://{resolved_host}:{resolved_port}"
168
-
169
- logger.info(
170
- "🔍 Registration URL selection: server_host=%s, server_port=%s, public_host=%s, public_port=%s, protocol=%s",
171
- server_host,
172
- server_port,
173
- public_host,
174
- public_port,
175
- protocol,
176
- )
177
- try:
178
- print(
179
- "🔍 Registration URL selection (print):",
180
- {
181
- "server_host": server_host,
182
- "server_port": server_port,
183
- "public_host": public_host,
184
- "public_port": public_port,
185
- "protocol": protocol,
186
- },
187
- )
188
- except Exception:
189
- pass
190
-
191
- logger.debug("Registration server_url resolved to: %s", server_url)
195
+ # Determine registration URL using unified logic
196
+ server_url = _determine_registration_url(final_config)
192
197
  try:
193
198
  print("🔍 Registration server_url resolved to (print):", server_url)
194
199
  except Exception:
@@ -83,13 +83,13 @@ class ConfigBuilder:
83
83
  "registration": {
84
84
  "enabled": False,
85
85
  "proxy_url": "http://localhost:3004",
86
- "public_host": None,
87
- "public_port": None,
88
- "protocol": None, # Will be set based on server protocol
86
+ "public_host": None, # Auto-determined from hostname or server.host
87
+ "public_port": None, # Auto-determined from server.port
88
+ "protocol": None, # Auto-determined from server.protocol
89
89
  "server_id": "mcp_proxy_adapter",
90
90
  "server_name": "MCP Proxy Adapter",
91
91
  "description": "JSON-RPC API for interacting with MCP Proxy",
92
- "version": "6.6.7",
92
+ "version": "6.6.9",
93
93
  "heartbeat": {
94
94
  "enabled": True,
95
95
  "interval": 30,
@@ -172,9 +172,9 @@ class ConfigBuilder:
172
172
  return self
173
173
 
174
174
  def set_proxy_registration(self, enabled: bool = True, proxy_url: str = "http://localhost:3004",
175
- public_host: Optional[str] = None, public_port: Optional[int] = None,
176
- server_id: str = "mcp_proxy_adapter", server_name: str = "MCP Proxy Adapter",
177
- description: str = "JSON-RPC API for interacting with MCP Proxy"):
175
+ public_host: Optional[str] = None, public_port: Optional[int] = None,
176
+ server_id: str = "mcp_proxy_adapter", server_name: str = "MCP Proxy Adapter",
177
+ description: str = "JSON-RPC API for interacting with MCP Proxy"):
178
178
  """Set proxy registration configuration."""
179
179
  self.config["registration"]["enabled"] = enabled
180
180
  self.config["registration"]["proxy_url"] = proxy_url
@@ -190,6 +190,35 @@ class ConfigBuilder:
190
190
 
191
191
  return self
192
192
 
193
+ def enable_auto_registration(self, proxy_url: str = "http://localhost:3004",
194
+ server_id: str = "mcp_proxy_adapter",
195
+ server_name: str = "MCP Proxy Adapter",
196
+ description: str = "JSON-RPC API for interacting with MCP Proxy"):
197
+ """
198
+ Enable automatic proxy registration with auto-determined parameters.
199
+
200
+ This method enables registration with automatic determination of:
201
+ - public_host: from hostname (if server.host is 0.0.0.0/127.0.0.1) or server.host
202
+ - public_port: from server.port
203
+ - protocol: from server.protocol
204
+
205
+ Args:
206
+ proxy_url: URL of the proxy server
207
+ server_id: Unique identifier for this server
208
+ server_name: Human-readable name for this server
209
+ description: Description of this server
210
+ """
211
+ self.config["registration"]["enabled"] = True
212
+ self.config["registration"]["proxy_url"] = proxy_url
213
+ self.config["registration"]["public_host"] = None # Auto-determined
214
+ self.config["registration"]["public_port"] = None # Auto-determined
215
+ self.config["registration"]["protocol"] = None # Auto-determined
216
+ self.config["registration"]["server_id"] = server_id
217
+ self.config["registration"]["server_name"] = server_name
218
+ self.config["registration"]["description"] = description
219
+
220
+ return self
221
+
193
222
  def build(self) -> Dict[str, Any]:
194
223
  """Build and return the configuration."""
195
224
  return self.config.copy()
@@ -307,10 +336,41 @@ class ConfigFactory:
307
336
  .set_server(port=port)
308
337
  .set_proxy_registration(proxy_url=proxy_url)
309
338
  .build())
339
+
340
+ @staticmethod
341
+ def create_http_with_auto_registration(port: int = 8009, proxy_url: str = "http://localhost:3004",
342
+ server_id: str = "mcp_proxy_adapter") -> Dict[str, Any]:
343
+ """Create HTTP configuration with automatic proxy registration."""
344
+ return (ConfigBuilder()
345
+ .set_protocol(Protocol.HTTP)
346
+ .set_server(port=port)
347
+ .enable_auto_registration(proxy_url=proxy_url, server_id=server_id)
348
+ .build())
349
+
350
+ @staticmethod
351
+ def create_https_with_auto_registration(port: int = 8010, proxy_url: str = "https://localhost:3004",
352
+ server_id: str = "mcp_proxy_adapter") -> Dict[str, Any]:
353
+ """Create HTTPS configuration with automatic proxy registration."""
354
+ return (ConfigBuilder()
355
+ .set_protocol(Protocol.HTTPS)
356
+ .set_server(port=port)
357
+ .enable_auto_registration(proxy_url=proxy_url, server_id=server_id)
358
+ .build())
359
+
360
+ @staticmethod
361
+ def create_mtls_with_auto_registration(port: int = 8011, proxy_url: str = "https://localhost:3004",
362
+ server_id: str = "mcp_proxy_adapter") -> Dict[str, Any]:
363
+ """Create mTLS configuration with automatic proxy registration."""
364
+ return (ConfigBuilder()
365
+ .set_protocol(Protocol.MTLS)
366
+ .set_server(port=port)
367
+ .enable_auto_registration(proxy_url=proxy_url, server_id=server_id)
368
+ .build())
310
369
 
311
370
 
312
371
  def create_config_from_flags(protocol: str, token: bool = False, roles: bool = False, port: int = 8000,
313
- proxy_registration: bool = False, proxy_url: str = "http://localhost:3004") -> Dict[str, Any]:
372
+ proxy_registration: bool = False, proxy_url: str = "http://localhost:3004",
373
+ auto_registration: bool = False, server_id: str = "mcp_proxy_adapter") -> Dict[str, Any]:
314
374
  """
315
375
  Create configuration from command line flags.
316
376
 
@@ -319,8 +379,10 @@ def create_config_from_flags(protocol: str, token: bool = False, roles: bool = F
319
379
  token: Enable token authentication
320
380
  roles: Enable role-based access control
321
381
  port: Server port
322
- proxy_registration: Enable proxy registration
382
+ proxy_registration: Enable proxy registration with manual settings
323
383
  proxy_url: Proxy URL for registration
384
+ auto_registration: Enable automatic proxy registration (auto-determined parameters)
385
+ server_id: Server ID for registration
324
386
 
325
387
  Returns:
326
388
  Configuration dictionary
@@ -344,7 +406,11 @@ def create_config_from_flags(protocol: str, token: bool = False, roles: bool = F
344
406
  builder.set_auth(AuthMethod.NONE)
345
407
 
346
408
  # Enable proxy registration if requested
347
- if proxy_registration:
409
+ if auto_registration:
410
+ # Use automatic registration with auto-determined parameters
411
+ builder.enable_auto_registration(proxy_url=proxy_url, server_id=server_id)
412
+ elif proxy_registration:
413
+ # Use manual registration settings
348
414
  builder.set_proxy_registration(proxy_url=proxy_url)
349
415
 
350
416
  return builder.build()
@@ -241,8 +241,11 @@ Examples:
241
241
  # Generate mTLS configuration with roles
242
242
  python generate_config.py --protocol mtls --roles
243
243
 
244
- # Generate mTLS configuration with proxy registration
245
- python generate_config.py --protocol mtls --proxy-registration --proxy-url https://mcp-proxy:3004
244
+ # Generate mTLS configuration with automatic proxy registration
245
+ python generate_config.py --protocol mtls --auto-registration --proxy-url https://mcp-proxy:3004
246
+
247
+ # Generate HTTP configuration with automatic proxy registration
248
+ python generate_config.py --protocol http --proxy-registration --proxy-url http://localhost:3004
246
249
  """
247
250
  )
248
251
 
@@ -254,9 +257,11 @@ Examples:
254
257
  parser.add_argument("--roles", action="store_true",
255
258
  help="Enable role-based access control")
256
259
  parser.add_argument("--proxy-registration", action="store_true",
257
- help="Enable proxy registration")
260
+ help="Enable proxy registration with auto-determined parameters")
258
261
  parser.add_argument("--proxy-url", default="http://localhost:3004",
259
262
  help="Proxy URL for registration (default: http://localhost:3004)")
263
+ parser.add_argument("--auto-registration", action="store_true",
264
+ help="Enable automatic proxy registration (same as --proxy-registration)")
260
265
  parser.add_argument("--all", action="store_true",
261
266
  help="Generate all standard configurations")
262
267
  parser.add_argument("--full-config", action="store_true",
@@ -308,18 +313,15 @@ Examples:
308
313
  print(f"✅ Full configuration saved to: {config_file}")
309
314
  elif args.protocol:
310
315
  # Generate specific configuration
311
- config = create_config_from_flags(
312
- protocol=args.protocol,
313
- token=args.token,
314
- roles=args.roles,
315
- host=args.host,
316
- port=args.port,
317
- cert_dir=args.cert_dir,
318
- key_dir=args.key_dir,
319
- output_dir=args.output_dir,
320
- proxy_registration=args.proxy_registration,
321
- proxy_url=args.proxy_url
322
- )
316
+ config = create_config_from_flags(
317
+ protocol=args.protocol,
318
+ token=args.token,
319
+ roles=args.roles,
320
+ port=args.port,
321
+ proxy_registration=args.proxy_registration,
322
+ proxy_url=args.proxy_url,
323
+ auto_registration=args.auto_registration
324
+ )
323
325
 
324
326
  if args.stdout:
325
327
  # Output to stdout
@@ -2,4 +2,4 @@
2
2
  Version information for MCP Proxy Adapter.
3
3
  """
4
4
 
5
- __version__ = "6.6.7"
5
+ __version__ = "6.6.9"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 6.6.7
3
+ Version: 6.6.9
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.6.7"
7
+ version = "6.6.9"
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"}