mcp-proxy-adapter 6.6.3__tar.gz → 6.6.5__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.
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/PKG-INFO +1 -1
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/app.py +64 -40
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/command_registry.py +27 -13
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/config.py +1 -1
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/proxy_registration.py +80 -7
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/config_builder.py +2 -2
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/main.py +12 -4
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/version.py +1 -1
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter.egg-info/PKG-INFO +1 -1
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/pyproject.toml +1 -1
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/README.md +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/__init__.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/__main__.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/__init__.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/handlers.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/__init__.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/base.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/command_permission_middleware.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/error_handling.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/factory.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/logging.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/performance.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/protocol_middleware.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/transport_middleware.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/unified_security.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/user_info_middleware.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/schemas.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/tool_integration.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/tools.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/auth_validation_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/base.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/builtin_commands.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/catalog_manager.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/cert_monitor_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/certificate_management_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/config_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/dependency_container.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/dependency_manager.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/echo_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/health_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/help_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/hooks.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/key_management_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/load_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/plugins_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/protocol_management_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/proxy_registration_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/reload_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/result.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/role_test_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/roles_management_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/security_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/settings_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/ssl_setup_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/token_management_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/transport_management_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/unload_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/__init__.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/app_factory.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/app_runner.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/auth_validator.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/certificate_utils.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/client.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/client_manager.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/client_security.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/config_converter.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/config_validator.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/crl_utils.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/errors.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/logging.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/mtls_asgi.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/mtls_asgi_app.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/mtls_server.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/protocol_manager.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/proxy_client.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/role_utils.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/security_adapter.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/security_factory.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/security_integration.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/server_adapter.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/server_engine.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/settings.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/ssl_utils.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/transport_manager.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/unified_config_adapter.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/utils.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/custom_openapi.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/__init__.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/basic_framework/__init__.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/basic_framework/main.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/bugfix_certificate_config.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/cert_manager_bugfix.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/check_config.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/config_cli.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/create_test_configs.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/debug_request_state.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/debug_role_chain.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/demo_client.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/full_application/__init__.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/full_application/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/full_application/hooks/__init__.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/full_application/main.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/generate_certificates.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/generate_config.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/proxy_registration_example.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/required_certificates.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/run_example.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/run_full_test_suite.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/run_proxy_server.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/run_security_tests_fixed.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/security_test_client.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/setup_test_environment.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/simple_protocol_test.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/test_chk_hostname_automated.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/test_config.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/test_config_builder.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/test_examples.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/test_framework_complete.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/test_mcp_server.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/test_protocol_examples.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/universal_client.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/update_config_certificates.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/openapi.py +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/schemas/base_schema.json +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/schemas/openapi_schema.json +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/schemas/roles.json +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/schemas/roles_schema.json +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter.egg-info/SOURCES.txt +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter.egg-info/dependency_links.txt +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter.egg-info/entry_points.txt +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter.egg-info/not-zip-safe +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter.egg-info/requires.txt +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter.egg-info/top_level.txt +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/setup.cfg +0 -0
- {mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/setup.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mcp-proxy-adapter
|
3
|
-
Version: 6.6.
|
3
|
+
Version: 6.6.5
|
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
|
@@ -65,11 +65,8 @@ def create_lifespan(config_path: Optional[str] = None):
|
|
65
65
|
initialize_proxy_registration,
|
66
66
|
)
|
67
67
|
|
68
|
-
#
|
69
|
-
|
70
|
-
initialize_proxy_registration(config.get_all())
|
71
|
-
except Exception as e:
|
72
|
-
logger.error(f"Failed to initialize proxy registration: {e}")
|
68
|
+
# Proxy registration manager will be initialized in registry.reload_system()
|
69
|
+
# after all commands are loaded to ensure complete command schema
|
73
70
|
|
74
71
|
# Compute server_url EARLY and inject into registration manager so
|
75
72
|
# that reload_system (which may perform registration) uses the correct
|
@@ -89,10 +86,20 @@ def create_lifespan(config_path: Optional[str] = None):
|
|
89
86
|
public_port = reg_cfg.get("public_port")
|
90
87
|
|
91
88
|
# Check SSL configuration from new structure
|
92
|
-
protocol
|
93
|
-
|
94
|
-
|
95
|
-
|
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"
|
96
103
|
|
97
104
|
import os
|
98
105
|
docker_host_addr = os.getenv("DOCKER_HOST_ADDR", "172.17.0.1")
|
@@ -124,11 +131,7 @@ def create_lifespan(config_path: Optional[str] = None):
|
|
124
131
|
)
|
125
132
|
logger.info(f"System initialization result: {init_result}")
|
126
133
|
|
127
|
-
#
|
128
|
-
try:
|
129
|
-
initialize_proxy_registration(config.get_all())
|
130
|
-
except Exception as e:
|
131
|
-
logger.error(f"Failed to initialize proxy registration: {e}")
|
134
|
+
# Proxy registration manager is already initialized in registry.reload_system()
|
132
135
|
|
133
136
|
# Recompute registration URL AFTER config reload using final config
|
134
137
|
try:
|
@@ -141,11 +144,21 @@ def create_lifespan(config_path: Optional[str] = None):
|
|
141
144
|
public_host = reg_cfg.get("public_host")
|
142
145
|
public_port = reg_cfg.get("public_port")
|
143
146
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
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"
|
149
162
|
|
150
163
|
import os
|
151
164
|
docker_host_addr = os.getenv("DOCKER_HOST_ADDR", "172.17.0.1")
|
@@ -184,19 +197,26 @@ def create_lifespan(config_path: Optional[str] = None):
|
|
184
197
|
logger.error(f"Failed to recompute registration URL: {e}")
|
185
198
|
server_url = early_server_url
|
186
199
|
|
187
|
-
#
|
188
|
-
|
200
|
+
# Proxy registration is now handled in registry.reload_system()
|
201
|
+
# after all commands are loaded, ensuring complete command schema
|
202
|
+
logger.info("ℹ️ Proxy registration will be handled after command loading completes")
|
203
|
+
|
204
|
+
# Add delayed registration task to allow server to fully start
|
205
|
+
async def delayed_registration():
|
206
|
+
"""Delayed registration to ensure server is fully started."""
|
207
|
+
await asyncio.sleep(2) # Wait for server to start listening
|
208
|
+
logger.info("🔄 Attempting delayed proxy registration after server startup")
|
189
209
|
try:
|
190
|
-
|
210
|
+
from mcp_proxy_adapter.core.proxy_registration import register_with_proxy
|
191
211
|
success = await register_with_proxy(server_url)
|
192
212
|
if success:
|
193
|
-
logger.info("✅
|
213
|
+
logger.info("✅ Delayed proxy registration successful")
|
194
214
|
else:
|
195
|
-
logger.
|
215
|
+
logger.warning("⚠️ Delayed proxy registration failed")
|
196
216
|
except Exception as e:
|
197
|
-
logger.error(f"
|
198
|
-
|
199
|
-
asyncio.create_task(
|
217
|
+
logger.error(f"❌ Delayed proxy registration error: {e}")
|
218
|
+
|
219
|
+
asyncio.create_task(delayed_registration())
|
200
220
|
|
201
221
|
yield # Application is running
|
202
222
|
|
@@ -237,16 +257,20 @@ def create_ssl_context(
|
|
237
257
|
return None
|
238
258
|
|
239
259
|
# Get certificate paths from configuration
|
240
|
-
cert_file = current_config.get("
|
241
|
-
key_file = current_config.get("
|
260
|
+
cert_file = current_config.get("transport", {}).get("cert_file")
|
261
|
+
key_file = current_config.get("transport", {}).get("key_file")
|
262
|
+
ca_cert = current_config.get("transport", {}).get("ca_cert")
|
242
263
|
|
243
|
-
#
|
244
|
-
if not cert_file:
|
264
|
+
# Convert relative paths to absolute paths
|
265
|
+
if cert_file and not Path(cert_file).is_absolute():
|
266
|
+
project_root = Path(__file__).parent.parent.parent
|
267
|
+
cert_file = str(project_root / cert_file)
|
268
|
+
if key_file and not Path(key_file).is_absolute():
|
245
269
|
project_root = Path(__file__).parent.parent.parent
|
246
|
-
|
247
|
-
if not
|
270
|
+
key_file = str(project_root / key_file)
|
271
|
+
if ca_cert and not Path(ca_cert).is_absolute():
|
248
272
|
project_root = Path(__file__).parent.parent.parent
|
249
|
-
|
273
|
+
ca_cert = str(project_root / ca_cert)
|
250
274
|
|
251
275
|
if not cert_file or not key_file:
|
252
276
|
logger.warning("SSL enabled but certificate or key file not specified")
|
@@ -257,15 +281,15 @@ def create_ssl_context(
|
|
257
281
|
ssl_context = SSLUtils.create_ssl_context(
|
258
282
|
cert_file=cert_file,
|
259
283
|
key_file=key_file,
|
260
|
-
ca_cert=
|
261
|
-
verify_client=
|
262
|
-
cipher_suites=
|
263
|
-
min_tls_version=
|
264
|
-
max_tls_version=
|
284
|
+
ca_cert=ca_cert,
|
285
|
+
verify_client=current_config.get("transport", {}).get("verify_client", False),
|
286
|
+
cipher_suites=[],
|
287
|
+
min_tls_version="1.2",
|
288
|
+
max_tls_version="1.3",
|
265
289
|
)
|
266
290
|
|
267
291
|
logger.info(
|
268
|
-
f"SSL context created successfully for mode:
|
292
|
+
f"SSL context created successfully for mode: https_only"
|
269
293
|
)
|
270
294
|
return ssl_context
|
271
295
|
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/command_registry.py
RENAMED
@@ -786,23 +786,37 @@ class CommandRegistry:
|
|
786
786
|
# Initialize proxy registration manager with current config
|
787
787
|
initialize_proxy_registration(config.get_all())
|
788
788
|
|
789
|
-
# Get server configuration
|
789
|
+
# Get server configuration with proper URL resolution logic
|
790
790
|
server_config = config.get("server", {})
|
791
791
|
server_host = server_config.get("host", "0.0.0.0")
|
792
792
|
server_port = server_config.get("port", 8000)
|
793
793
|
|
794
|
-
#
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
794
|
+
# Get registration configuration for public host/port overrides
|
795
|
+
# First check server config, then registration config
|
796
|
+
public_host = config.get("server.public_host")
|
797
|
+
public_port = config.get("server.public_port")
|
798
|
+
|
799
|
+
# Fallback to registration config if not found in server
|
800
|
+
if not public_host or not public_port:
|
801
|
+
reg_cfg = config.get("registration", config.get("proxy_registration", {}))
|
802
|
+
public_host = public_host or reg_cfg.get("public_host")
|
803
|
+
public_port = public_port or reg_cfg.get("public_port")
|
804
|
+
|
805
|
+
# Determine protocol based on new configuration structure
|
806
|
+
protocol = config.get("server.protocol", "http")
|
807
|
+
verify_client = config.get("transport.verify_client", False)
|
808
|
+
ssl_enabled = protocol in ["https", "mtls"] or verify_client
|
809
|
+
protocol = "https" if ssl_enabled else "http"
|
810
|
+
|
811
|
+
# Resolve host and port (same logic as in app.py)
|
812
|
+
import os
|
813
|
+
docker_host_addr = os.getenv("DOCKER_HOST_ADDR", "172.17.0.1")
|
814
|
+
resolved_host = public_host or (docker_host_addr if server_host == "0.0.0.0" else server_host)
|
815
|
+
resolved_port = public_port or server_port
|
816
|
+
|
817
|
+
server_url = f"{protocol}://{resolved_host}:{resolved_port}"
|
818
|
+
|
819
|
+
logger.info(f"🔍 Proxy registration URL resolved: {server_url}")
|
806
820
|
|
807
821
|
# Attempt proxy registration
|
808
822
|
proxy_registration_success = await register_with_proxy(server_url)
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/proxy_registration.py
RENAMED
@@ -13,6 +13,7 @@ email: vasilyvz@gmail.com
|
|
13
13
|
import asyncio
|
14
14
|
import time
|
15
15
|
import ssl
|
16
|
+
import traceback
|
16
17
|
from typing import Dict, Any, Optional, Tuple
|
17
18
|
from pathlib import Path
|
18
19
|
from urllib.parse import urljoin
|
@@ -248,10 +249,15 @@ class ProxyRegistrationManager:
|
|
248
249
|
"""
|
249
250
|
logger.debug("_create_ssl_context called")
|
250
251
|
|
251
|
-
#
|
252
|
-
|
253
|
-
|
254
|
-
|
252
|
+
# Decide SSL strictly by proxy URL scheme: use SSL only for https proxy URLs
|
253
|
+
try:
|
254
|
+
from urllib.parse import urlparse as _urlparse
|
255
|
+
scheme = _urlparse(self.proxy_url).scheme if self.proxy_url else "http"
|
256
|
+
if scheme.lower() != "https":
|
257
|
+
logger.debug("Proxy URL is HTTP, skipping SSL context creation for registration")
|
258
|
+
return None
|
259
|
+
except Exception:
|
260
|
+
logger.debug("Failed to parse proxy_url, assuming HTTP and skipping SSL context")
|
255
261
|
return None
|
256
262
|
|
257
263
|
if not self.client_security:
|
@@ -440,7 +446,11 @@ class ProxyRegistrationManager:
|
|
440
446
|
|
441
447
|
if success:
|
442
448
|
self.registered = True
|
443
|
-
|
449
|
+
# Safely extract server_key from result
|
450
|
+
if isinstance(result, dict):
|
451
|
+
self.server_key = result.get("server_key")
|
452
|
+
else:
|
453
|
+
self.server_key = None
|
444
454
|
logger.info(
|
445
455
|
f"✅ Successfully registered with proxy. Server key: {self.server_key}"
|
446
456
|
)
|
@@ -455,8 +465,65 @@ class ProxyRegistrationManager:
|
|
455
465
|
else:
|
456
466
|
# Be robust if result is not a dict
|
457
467
|
error_msg = None
|
468
|
+
logger.error(f"DEBUG: result type = {type(result)}, result = {result}")
|
458
469
|
if isinstance(result, dict):
|
459
|
-
|
470
|
+
logger.error(f"DEBUG: result is dict, getting error field")
|
471
|
+
error_field = result.get("error", {})
|
472
|
+
logger.error(f"DEBUG: error_field type = {type(error_field)}, error_field = {error_field}")
|
473
|
+
if isinstance(error_field, dict):
|
474
|
+
error_msg = error_field.get("message", "Unknown error")
|
475
|
+
elif isinstance(error_field, str):
|
476
|
+
error_msg = error_field
|
477
|
+
else:
|
478
|
+
error_msg = str(error_field)
|
479
|
+
|
480
|
+
# Auto-recovery: already registered case → force unregistration then retry once
|
481
|
+
error_code = result.get("error_code") or (result.get("error", {}).get("code") if isinstance(result.get("error"), dict) else None)
|
482
|
+
already_registered = False
|
483
|
+
existing_server_key = None
|
484
|
+
# Prefer structured detail if provided
|
485
|
+
if isinstance(result.get("details"), dict):
|
486
|
+
existing_server_key = result.get("details", {}).get("existing_server_key")
|
487
|
+
# Fallback: parse from error message text
|
488
|
+
if not existing_server_key and isinstance(error_msg, str) and "already registered as" in error_msg:
|
489
|
+
try:
|
490
|
+
# Expecting: "... already registered as <server_id>_<copy_number>"
|
491
|
+
tail = error_msg.split("already registered as", 1)[1].strip()
|
492
|
+
existing_server_key = tail.split()[0]
|
493
|
+
except Exception:
|
494
|
+
existing_server_key = None
|
495
|
+
|
496
|
+
if (error_code in ("DUPLICATE_SERVER_URL", "REGISTRATION_ERROR") or already_registered) and existing_server_key:
|
497
|
+
try:
|
498
|
+
logger.info(f"Attempting auto-unregistration of existing instance: {existing_server_key}")
|
499
|
+
# Build unregistration payload using parsed server_key
|
500
|
+
try:
|
501
|
+
copy_number = int(existing_server_key.split("_")[-1])
|
502
|
+
except Exception:
|
503
|
+
copy_number = 1
|
504
|
+
unregistration_data = {"server_id": self.server_id, "copy_number": copy_number}
|
505
|
+
# Reuse secure unregistration request directly
|
506
|
+
unreg_success, _unreg_result = await self._make_secure_unregistration_request(unregistration_data)
|
507
|
+
if unreg_success:
|
508
|
+
logger.info("Auto-unregistration succeeded, retrying registration once...")
|
509
|
+
# Retry registration once immediately
|
510
|
+
retry_success, retry_result = await self._make_secure_registration_request(registration_data)
|
511
|
+
if retry_success:
|
512
|
+
self.registered = True
|
513
|
+
if isinstance(retry_result, dict):
|
514
|
+
self.server_key = retry_result.get("server_key")
|
515
|
+
else:
|
516
|
+
self.server_key = None
|
517
|
+
logger.info(f"✅ Successfully registered after auto-unregistration. Server key: {self.server_key}")
|
518
|
+
if self.registration_config.get("heartbeat", {}).get("enabled", True):
|
519
|
+
await self._start_heartbeat()
|
520
|
+
return True
|
521
|
+
else:
|
522
|
+
logger.warning(f"Retry registration failed after auto-unregistration: {retry_result}")
|
523
|
+
else:
|
524
|
+
logger.warning(f"Auto-unregistration failed: {_unreg_result}")
|
525
|
+
except Exception as _auto_e:
|
526
|
+
logger.warning(f"Auto-unregistration/registration flow error: {_auto_e}")
|
460
527
|
else:
|
461
528
|
error_msg = str(result)
|
462
529
|
logger.warning(
|
@@ -467,6 +534,7 @@ class ProxyRegistrationManager:
|
|
467
534
|
logger.error(
|
468
535
|
f"❌ Registration attempt {attempt + 1} failed with exception: {e}"
|
469
536
|
)
|
537
|
+
logger.error(f"Full traceback: {traceback.format_exc()}")
|
470
538
|
|
471
539
|
logger.error(
|
472
540
|
f"❌ Failed to register with proxy after {self.retry_attempts} attempts"
|
@@ -562,8 +630,10 @@ class ProxyRegistrationManager:
|
|
562
630
|
) as response:
|
563
631
|
try:
|
564
632
|
result = await response.json()
|
565
|
-
|
633
|
+
logger.debug(f"Response JSON parsed successfully: {type(result)} - {result}")
|
634
|
+
except Exception as e:
|
566
635
|
text_body = await response.text()
|
636
|
+
logger.debug(f"JSON parsing failed: {e}, text_body: {text_body}")
|
567
637
|
result = {"success": False, "error": {"code": "NON_JSON_RESPONSE", "message": text_body}}
|
568
638
|
|
569
639
|
# Validate response headers if security framework available
|
@@ -604,6 +674,9 @@ class ProxyRegistrationManager:
|
|
604
674
|
logger.warning(
|
605
675
|
f"Registration failed with HTTP status: {response.status}"
|
606
676
|
)
|
677
|
+
# Ensure result is a dict for consistent error handling
|
678
|
+
if isinstance(result, str):
|
679
|
+
result = {"success": False, "error": {"code": "HTTP_ERROR", "message": result}}
|
607
680
|
return False, result
|
608
681
|
finally:
|
609
682
|
if connector:
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/config_builder.py
RENAMED
@@ -76,7 +76,7 @@ class ConfigBuilder:
|
|
76
76
|
},
|
77
77
|
"transport": {
|
78
78
|
"type": "http",
|
79
|
-
|
79
|
+
"port": None,
|
80
80
|
"verify_client": False,
|
81
81
|
"chk_hostname": False
|
82
82
|
}
|
@@ -231,7 +231,7 @@ class ConfigFactory:
|
|
231
231
|
.set_auth(AuthMethod.TOKEN)
|
232
232
|
.set_server(port=port)
|
233
233
|
.build())
|
234
|
-
|
234
|
+
|
235
235
|
@staticmethod
|
236
236
|
def create_mtls_token_roles_config(port: int = 8008) -> Dict[str, Any]:
|
237
237
|
"""Create mTLS with token and roles configuration."""
|
@@ -73,11 +73,19 @@ def main():
|
|
73
73
|
ssl_ca_cert = None
|
74
74
|
|
75
75
|
if ssl_enabled:
|
76
|
-
# Configure SSL certificates
|
76
|
+
# Configure SSL certificates from configuration
|
77
|
+
ssl_cert_file = config.get("transport.cert_file")
|
78
|
+
ssl_key_file = config.get("transport.key_file")
|
79
|
+
ssl_ca_cert = config.get("transport.ca_cert")
|
80
|
+
|
81
|
+
# Convert relative paths to absolute paths
|
77
82
|
project_root = Path(__file__).parent.parent
|
78
|
-
ssl_cert_file
|
79
|
-
|
80
|
-
|
83
|
+
if ssl_cert_file and not Path(ssl_cert_file).is_absolute():
|
84
|
+
ssl_cert_file = str(project_root / ssl_cert_file)
|
85
|
+
if ssl_key_file and not Path(ssl_key_file).is_absolute():
|
86
|
+
ssl_key_file = str(project_root / ssl_key_file)
|
87
|
+
if ssl_ca_cert and not Path(ssl_ca_cert).is_absolute():
|
88
|
+
ssl_ca_cert = str(project_root / ssl_ca_cert)
|
81
89
|
|
82
90
|
print("🔍 Debug config:")
|
83
91
|
print(f" protocol: {protocol}")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mcp-proxy-adapter
|
3
|
-
Version: 6.6.
|
3
|
+
Version: 6.6.5
|
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
|
+
version = "6.6.5"
|
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"}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/__init__.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/base.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/factory.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/logging.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/middleware/performance.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/api/tool_integration.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/builtin_commands.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/catalog_manager.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/config_command.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/dependency_manager.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/echo_command.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/health_command.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/help_command.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/load_command.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/plugins_command.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/reload_command.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/role_test_command.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/security_command.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/settings_command.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/ssl_setup_command.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/commands/unload_command.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/auth_validator.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/certificate_utils.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/client_manager.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/client_security.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/config_converter.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/config_validator.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/protocol_manager.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/security_adapter.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/security_factory.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/security_integration.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/server_adapter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/transport_manager.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/core/unified_config_adapter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/check_config.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/commands/__init__.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/config_cli.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/debug_role_chain.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/demo_client.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/generate_config.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/run_example.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/run_proxy_server.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/test_config.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/test_examples.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/test_mcp_server.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/examples/universal_client.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/schemas/base_schema.json
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/schemas/openapi_schema.json
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter/schemas/roles_schema.json
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter.egg-info/dependency_links.txt
RENAMED
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter.egg-info/entry_points.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.6.3 → mcp_proxy_adapter-6.6.5}/mcp_proxy_adapter.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|