mcp-proxy-adapter 6.9.14__tar.gz → 6.9.16__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.9.14 → mcp_proxy_adapter-6.9.16}/PKG-INFO +1 -1
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/app.py +36 -12
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/command_registry.py +9 -6
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/config.py +1 -1
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/app_factory.py +4 -1
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/config_validator.py +20 -16
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/logging.py +17 -34
- mcp_proxy_adapter-6.9.16/mcp_proxy_adapter/examples/full_application/test_minimal_server.py +69 -0
- mcp_proxy_adapter-6.9.16/mcp_proxy_adapter/examples/full_application/test_simple_server.py +62 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/version.py +1 -1
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter.egg-info/PKG-INFO +1 -1
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter.egg-info/SOURCES.txt +4 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/pyproject.toml +1 -1
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/README.md +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/__init__.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/__main__.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/__init__.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/handlers.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/middleware/__init__.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/middleware/base.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/middleware/command_permission_middleware.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/middleware/error_handling.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/middleware/factory.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/middleware/logging.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/middleware/performance.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/middleware/protocol_middleware.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/middleware/transport_middleware.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/middleware/unified_security.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/middleware/user_info_middleware.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/schemas.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/tool_integration.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/tools.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/auth_validation_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/base.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/builtin_commands.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/catalog_manager.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/cert_monitor_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/certificate_management_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/config_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/dependency_container.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/dependency_manager.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/echo_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/health_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/help_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/hooks.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/key_management_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/load_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/plugins_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/protocol_management_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/proxy_registration_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/registration_status_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/reload_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/result.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/role_test_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/roles_management_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/security_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/settings_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/ssl_setup_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/token_management_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/transport_management_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/unload_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/__init__.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/app_runner.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/auth_validator.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/certificate_utils.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/client.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/client_manager.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/client_security.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/config_converter.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/crl_utils.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/errors.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/mtls_asgi.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/mtls_asgi_app.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/mtls_proxy.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/mtls_server.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/protocol_manager.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/proxy_client.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/proxy_registration.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/role_utils.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/security_adapter.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/security_factory.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/security_integration.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/server_adapter.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/server_engine.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/settings.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/signal_handler.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/ssl_utils.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/transport_manager.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/unified_config_adapter.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/utils.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/custom_openapi.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/__init__.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/basic_framework/__init__.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/basic_framework/main.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/bugfix_certificate_config.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/cert_manager_bugfix.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/check_config.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/config_builder.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/config_cli.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/create_test_configs.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/debug_request_state.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/debug_role_chain.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/demo_client.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/full_application/__init__.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/full_application/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/full_application/hooks/__init__.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/full_application/main.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/full_application/run_mtls.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/full_application/run_simple.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/full_application/test_server.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/generate_config.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/proxy_registration_example.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/required_certificates.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/run_example.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/run_full_test_suite.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/run_proxy_server.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/run_security_tests_fixed.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/security_test_client.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/setup_test_environment.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/simple_protocol_test.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/test_chk_hostname_automated.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/test_config.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/test_config_builder.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/test_examples.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/test_framework_complete.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/test_mcp_server.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/test_protocol_examples.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/universal_client.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/update_config_certificates.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/main.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/openapi.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/schemas/base_schema.json +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/schemas/openapi_schema.json +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/schemas/roles.json +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/schemas/roles_schema.json +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter.egg-info/dependency_links.txt +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter.egg-info/entry_points.txt +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter.egg-info/not-zip-safe +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter.egg-info/requires.txt +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter.egg-info/top_level.txt +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/setup.cfg +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/setup.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/tests/test_certificate_validation.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/tests/test_config_integration.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/tests/test_config_validation.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/tests/test_config_validation_isolated.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/tests/test_direct_import.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/tests/test_isolated_validation.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/tests/test_no_defaults.py +0 -0
- {mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/tests/test_simple_validation.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mcp-proxy-adapter
|
3
|
-
Version: 6.9.
|
3
|
+
Version: 6.9.16
|
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
|
@@ -116,12 +116,13 @@ def _determine_registration_url(config: Dict[str, Any]) -> str:
|
|
116
116
|
return server_url
|
117
117
|
|
118
118
|
|
119
|
-
def create_lifespan(config_path: Optional[str] = None):
|
119
|
+
def create_lifespan(config_path: Optional[str] = None, current_config: Optional[Dict[str, Any]] = None):
|
120
120
|
"""
|
121
121
|
Create lifespan manager for the FastAPI application.
|
122
122
|
|
123
123
|
Args:
|
124
124
|
config_path: Path to configuration file (optional)
|
125
|
+
current_config: Current configuration data (optional)
|
125
126
|
|
126
127
|
Returns:
|
127
128
|
Lifespan context manager
|
@@ -146,7 +147,17 @@ def create_lifespan(config_path: Optional[str] = None):
|
|
146
147
|
# Compute server_url EARLY and inject into registration manager so
|
147
148
|
# that reload_system (which may perform registration) uses the correct
|
148
149
|
# externally reachable address.
|
149
|
-
|
150
|
+
# Use current_config from closure or fallback to global config
|
151
|
+
config_to_use = current_config
|
152
|
+
if config_to_use is None:
|
153
|
+
# Fallback: try to get config from global instance
|
154
|
+
try:
|
155
|
+
from mcp_proxy_adapter.config import get_config
|
156
|
+
config_to_use = get_config().get_all()
|
157
|
+
except Exception:
|
158
|
+
config_to_use = {}
|
159
|
+
|
160
|
+
server_config = config_to_use.get("server")
|
150
161
|
if not server_config:
|
151
162
|
raise ValueError("server configuration is required")
|
152
163
|
server_host = server_config.get("host")
|
@@ -159,10 +170,6 @@ def create_lifespan(config_path: Optional[str] = None):
|
|
159
170
|
# Check port availability BEFORE starting registration manager
|
160
171
|
from mcp_proxy_adapter.core.utils import check_port_availability, handle_port_conflict
|
161
172
|
|
162
|
-
server_config = config.get("server", {})
|
163
|
-
server_host = server_config.get("host", "0.0.0.0")
|
164
|
-
server_port = server_config.get("port", 8000)
|
165
|
-
|
166
173
|
print(f"🔍 Checking external server port availability: {server_host}:{server_port}")
|
167
174
|
if not check_port_availability(server_host, server_port):
|
168
175
|
print(f"❌ CRITICAL: External server port {server_port} is occupied")
|
@@ -171,7 +178,7 @@ def create_lifespan(config_path: Optional[str] = None):
|
|
171
178
|
print(f"✅ External server port {server_port} is available")
|
172
179
|
|
173
180
|
# Determine registration URL using unified logic
|
174
|
-
early_server_url = _determine_registration_url(
|
181
|
+
early_server_url = _determine_registration_url(config_to_use)
|
175
182
|
try:
|
176
183
|
from mcp_proxy_adapter.core.proxy_registration import (
|
177
184
|
register_with_proxy,
|
@@ -190,10 +197,20 @@ def create_lifespan(config_path: Optional[str] = None):
|
|
190
197
|
logger.error(f"Failed to initialize async registration: {e}")
|
191
198
|
|
192
199
|
# Initialize system using unified logic (may perform registration)
|
200
|
+
# Set global config for reload_system
|
201
|
+
from mcp_proxy_adapter.config import Config
|
202
|
+
config_obj = Config()
|
203
|
+
config_obj.config_data = config_to_use
|
204
|
+
|
205
|
+
# Set global config for command registry
|
206
|
+
from mcp_proxy_adapter.config import get_config
|
207
|
+
global_config = get_config()
|
208
|
+
global_config.config_data = config_to_use
|
209
|
+
|
193
210
|
if config_path:
|
194
|
-
init_result = await registry.reload_system(config_path=config_path)
|
211
|
+
init_result = await registry.reload_system(config_path=config_path, config_obj=config_obj)
|
195
212
|
else:
|
196
|
-
init_result = await registry.reload_system()
|
213
|
+
init_result = await registry.reload_system(config_obj=config_obj)
|
197
214
|
|
198
215
|
logger.info(
|
199
216
|
f"Application started with {init_result['total_commands']} commands registered"
|
@@ -362,9 +379,16 @@ def create_app(
|
|
362
379
|
elif hasattr(app_config, "keys"):
|
363
380
|
current_config = app_config
|
364
381
|
else:
|
365
|
-
|
382
|
+
# If app_config is not a dict-like object, use it as is
|
383
|
+
current_config = app_config
|
366
384
|
else:
|
367
|
-
|
385
|
+
# If no app_config provided, try to get global config
|
386
|
+
try:
|
387
|
+
from mcp_proxy_adapter.config import get_config
|
388
|
+
current_config = get_config().get_all()
|
389
|
+
except Exception:
|
390
|
+
# If global config is not available, create empty config
|
391
|
+
current_config = {}
|
368
392
|
|
369
393
|
# Debug: Check what config is passed to create_app
|
370
394
|
if app_config:
|
@@ -559,7 +583,7 @@ def create_app(
|
|
559
583
|
version=app_version,
|
560
584
|
docs_url="/docs",
|
561
585
|
redoc_url="/redoc",
|
562
|
-
lifespan=create_lifespan(config_path),
|
586
|
+
lifespan=create_lifespan(config_path, current_config),
|
563
587
|
)
|
564
588
|
|
565
589
|
# CRITICAL FIX: Register commands immediately during app creation
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/command_registry.py
RENAMED
@@ -659,7 +659,7 @@ class CommandRegistry:
|
|
659
659
|
self._loaded_commands.clear()
|
660
660
|
self._instances.clear()
|
661
661
|
|
662
|
-
async def reload_system(self, config_path: Optional[str] = None) -> Dict[str, Any]:
|
662
|
+
async def reload_system(self, config_path: Optional[str] = None, config_obj: Optional[Any] = None) -> Dict[str, Any]:
|
663
663
|
"""
|
664
664
|
Universal method for system initialization and reload.
|
665
665
|
This method should be used both at startup and during reload.
|
@@ -675,13 +675,16 @@ class CommandRegistry:
|
|
675
675
|
)
|
676
676
|
|
677
677
|
# Step 1: Load configuration (preserve previous config for soft-fail)
|
678
|
-
|
678
|
+
if config_obj is None:
|
679
|
+
config_obj = config
|
680
|
+
|
681
|
+
previous_config = config_obj.get_all()
|
679
682
|
try:
|
680
683
|
if config_path:
|
681
|
-
|
684
|
+
config_obj.load_from_file(config_path)
|
682
685
|
logger.info(f"✅ Configuration loaded from: {config_path}")
|
683
686
|
else:
|
684
|
-
|
687
|
+
config_obj.load_config()
|
685
688
|
logger.info("✅ Configuration loaded from default path")
|
686
689
|
|
687
690
|
config_reloaded = True
|
@@ -694,14 +697,14 @@ class CommandRegistry:
|
|
694
697
|
from mcp_proxy_adapter.core.config_validator import ConfigValidator
|
695
698
|
|
696
699
|
validator = ConfigValidator()
|
697
|
-
validation = validator.validate(
|
700
|
+
validation = validator.validate(config_obj.get_all())
|
698
701
|
if not validation.is_valid:
|
699
702
|
logger.error("⚠️ Configuration validation failed during reload:")
|
700
703
|
for err in validation.errors:
|
701
704
|
logger.error(f" - {err}")
|
702
705
|
# Do NOT exit on reload; restore previous configuration
|
703
706
|
try:
|
704
|
-
|
707
|
+
config_obj.config_data = previous_config
|
705
708
|
config_reloaded = False
|
706
709
|
logger.error("ℹ️ Restored previous configuration due to validation errors")
|
707
710
|
except Exception as restore_ex:
|
@@ -78,6 +78,8 @@ async def create_and_run_server(
|
|
78
78
|
sys.exit(1)
|
79
79
|
|
80
80
|
try:
|
81
|
+
from mcp_proxy_adapter.config import Config
|
82
|
+
config = Config()
|
81
83
|
config.load_from_file(str(config_file))
|
82
84
|
app_config = config.get_all()
|
83
85
|
print(f"✅ Configuration loaded from: {config_path}")
|
@@ -169,7 +171,6 @@ async def create_and_run_server(
|
|
169
171
|
f"Fix your configuration file."
|
170
172
|
)
|
171
173
|
|
172
|
-
from pathlib import Path
|
173
174
|
if not Path(cert_file).exists():
|
174
175
|
raise ValueError(
|
175
176
|
f"CRITICAL CONFIG ERROR: SSL certificate file does not exist: {cert_file}. "
|
@@ -509,6 +510,8 @@ def validate_config_file(config_path: str) -> bool:
|
|
509
510
|
return False
|
510
511
|
|
511
512
|
# Try to load configuration to validate JSON format
|
513
|
+
from mcp_proxy_adapter.config import Config
|
514
|
+
config = Config()
|
512
515
|
config.load_from_file(str(config_file))
|
513
516
|
return True
|
514
517
|
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/config_validator.py
RENAMED
@@ -341,13 +341,18 @@ class ConfigValidator:
|
|
341
341
|
|
342
342
|
section_data = self.config_data[section_name]
|
343
343
|
for key, expected_type in required_keys.items():
|
344
|
+
# Check if key allows None (optional)
|
345
|
+
is_optional = isinstance(expected_type, tuple) and type(None) in expected_type
|
346
|
+
|
344
347
|
if key not in section_data:
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
348
|
+
# Only report error if key is not optional
|
349
|
+
if not is_optional:
|
350
|
+
self.validation_results.append(ValidationResult(
|
351
|
+
level="error",
|
352
|
+
message=f"Required key '{key}' is missing in section '{section_name}' for enabled feature",
|
353
|
+
section=section_name,
|
354
|
+
key=key
|
355
|
+
))
|
351
356
|
else:
|
352
357
|
# Validate type
|
353
358
|
value = section_data[key]
|
@@ -535,7 +540,11 @@ class ConfigValidator:
|
|
535
540
|
])
|
536
541
|
|
537
542
|
for file_key in file_keys:
|
538
|
-
|
543
|
+
# Skip if the key doesn't exist in the configuration
|
544
|
+
if not self._has_nested_key(file_key):
|
545
|
+
continue
|
546
|
+
|
547
|
+
file_path = self._get_nested_value_safe(file_key)
|
539
548
|
if file_path and not os.path.exists(file_path):
|
540
549
|
# Check if this is a required file based on enabled features
|
541
550
|
is_required = self._is_file_required_for_enabled_features(file_key)
|
@@ -685,15 +694,10 @@ class ConfigValidator:
|
|
685
694
|
else:
|
686
695
|
key_file = self._get_nested_value("ssl.key_file")
|
687
696
|
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
section="ssl",
|
693
|
-
key="ca_cert"
|
694
|
-
))
|
695
|
-
else:
|
696
|
-
ca_cert = self._get_nested_value("ssl.ca_cert")
|
697
|
+
# CA cert is optional for HTTPS but may be required for mTLS with client verification
|
698
|
+
ca_cert = None
|
699
|
+
if self._has_nested_key("ssl.ca_cert"):
|
700
|
+
ca_cert = self._get_nested_value_safe("ssl.ca_cert")
|
697
701
|
|
698
702
|
# Check certificate file
|
699
703
|
if not cert_file:
|
@@ -120,46 +120,29 @@ def setup_logging(
|
|
120
120
|
Returns:
|
121
121
|
Configured logger.
|
122
122
|
"""
|
123
|
-
#
|
124
|
-
level = level or
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
log_file = log_file or get_config().get("logging.file")
|
137
|
-
rotation_type = rotation_type or "size" # Default to size-based rotation
|
138
|
-
|
139
|
-
# Get log directory and file settings from config
|
140
|
-
log_dir = get_config().get("logging.log_dir", "./logs")
|
141
|
-
log_file_name = get_config().get("logging.log_file", "mcp_proxy_adapter.log")
|
142
|
-
error_log_file = get_config().get("logging.error_log_file", "mcp_proxy_adapter_error.log")
|
143
|
-
access_log_file = get_config().get(
|
144
|
-
"logging.access_log_file", "mcp_proxy_adapter_access.log"
|
145
|
-
)
|
146
|
-
|
147
|
-
# Get rotation settings from config
|
148
|
-
max_file_size_str = get_config().get("logging.max_file_size", "10MB")
|
149
|
-
backup_count = backup_count or get_config().get("logging.backup_count", 5)
|
123
|
+
# Use provided parameters or defaults
|
124
|
+
level = level or "INFO"
|
125
|
+
log_file = log_file
|
126
|
+
rotation_type = rotation_type or "size"
|
127
|
+
log_dir = "./logs"
|
128
|
+
log_file_name = "mcp_proxy_adapter.log"
|
129
|
+
error_log_file = "mcp_proxy_adapter_error.log"
|
130
|
+
access_log_file = "mcp_proxy_adapter_access.log"
|
131
|
+
|
132
|
+
# Get rotation settings
|
133
|
+
max_file_size_str = "10MB"
|
134
|
+
backup_count = backup_count or 5
|
150
135
|
|
151
136
|
# Parse max file size (e.g., "10MB" -> 10 * 1024 * 1024)
|
152
137
|
max_bytes = max_bytes or _parse_file_size(max_file_size_str)
|
153
138
|
|
154
139
|
# Get format settings
|
155
|
-
log_format =
|
156
|
-
|
157
|
-
)
|
158
|
-
date_format = get_config().get("logging.date_format", "%Y-%m-%d %H:%M:%S")
|
140
|
+
log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
141
|
+
date_format = "%Y-%m-%d %H:%M:%S"
|
159
142
|
|
160
143
|
# Get output settings
|
161
|
-
console_output =
|
162
|
-
file_output =
|
144
|
+
console_output = True
|
145
|
+
file_output = True
|
163
146
|
|
164
147
|
# Convert string logging level to constant
|
165
148
|
numeric_level = getattr(logging, level.upper(), None)
|
@@ -227,7 +210,7 @@ def setup_logging(
|
|
227
210
|
logger.addHandler(access_handler)
|
228
211
|
|
229
212
|
# Configure loggers for external libraries
|
230
|
-
log_levels =
|
213
|
+
log_levels = {}
|
231
214
|
for logger_name, logger_level in log_levels.items():
|
232
215
|
lib_logger = logging.getLogger(logger_name)
|
233
216
|
lib_logger.setLevel(getattr(logging, logger_level.upper(), logging.INFO))
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
"""
|
3
|
+
Minimal server test without lifespan issues.
|
4
|
+
"""
|
5
|
+
|
6
|
+
import sys
|
7
|
+
import os
|
8
|
+
from pathlib import Path
|
9
|
+
|
10
|
+
# Add the project root to the path
|
11
|
+
project_root = Path(__file__).parent.parent.parent.parent
|
12
|
+
sys.path.insert(0, str(project_root))
|
13
|
+
|
14
|
+
from fastapi import FastAPI
|
15
|
+
from mcp_proxy_adapter.api.handlers import execute_command
|
16
|
+
import uvicorn
|
17
|
+
|
18
|
+
def main():
|
19
|
+
"""Test minimal server startup."""
|
20
|
+
print("🚀 Testing Minimal Server Startup")
|
21
|
+
print("=" * 50)
|
22
|
+
|
23
|
+
# Create minimal FastAPI app
|
24
|
+
app = FastAPI(
|
25
|
+
title="Test Server",
|
26
|
+
description="Minimal test server",
|
27
|
+
version="1.0.0"
|
28
|
+
)
|
29
|
+
|
30
|
+
# Add health endpoint
|
31
|
+
@app.get("/health")
|
32
|
+
async def health():
|
33
|
+
return {"status": "ok", "message": "Server is running"}
|
34
|
+
|
35
|
+
# Add JSON-RPC endpoint
|
36
|
+
@app.post("/api/jsonrpc")
|
37
|
+
async def jsonrpc_endpoint(request: dict):
|
38
|
+
try:
|
39
|
+
# Simple health command
|
40
|
+
if request.get("method") == "health":
|
41
|
+
return {
|
42
|
+
"jsonrpc": "2.0",
|
43
|
+
"id": request.get("id"),
|
44
|
+
"result": {"status": "ok", "message": "Health check passed"}
|
45
|
+
}
|
46
|
+
else:
|
47
|
+
return {
|
48
|
+
"jsonrpc": "2.0",
|
49
|
+
"id": request.get("id"),
|
50
|
+
"error": {"code": -32601, "message": "Method not found"}
|
51
|
+
}
|
52
|
+
except Exception as e:
|
53
|
+
return {
|
54
|
+
"jsonrpc": "2.0",
|
55
|
+
"id": request.get("id"),
|
56
|
+
"error": {"code": -32603, "message": str(e)}
|
57
|
+
}
|
58
|
+
|
59
|
+
print("✅ FastAPI app created successfully")
|
60
|
+
|
61
|
+
# Start server
|
62
|
+
print("🚀 Starting server on http://0.0.0.0:8000")
|
63
|
+
print("📡 Test with: curl -X POST http://localhost:8000/api/jsonrpc -H 'Content-Type: application/json' -d '{\"jsonrpc\": \"2.0\", \"method\": \"health\", \"id\": 1}'")
|
64
|
+
print("🛑 Press Ctrl+C to stop")
|
65
|
+
|
66
|
+
uvicorn.run(app, host="0.0.0.0", port=8000)
|
67
|
+
|
68
|
+
if __name__ == "__main__":
|
69
|
+
main()
|
@@ -0,0 +1,62 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
"""
|
3
|
+
Simple server test without complex lifespan.
|
4
|
+
"""
|
5
|
+
|
6
|
+
import sys
|
7
|
+
import os
|
8
|
+
from pathlib import Path
|
9
|
+
|
10
|
+
# Add the project root to the path
|
11
|
+
project_root = Path(__file__).parent.parent.parent.parent
|
12
|
+
sys.path.insert(0, str(project_root))
|
13
|
+
|
14
|
+
from mcp_proxy_adapter.api.app import create_app
|
15
|
+
from mcp_proxy_adapter.config import Config
|
16
|
+
import uvicorn
|
17
|
+
|
18
|
+
def main():
|
19
|
+
"""Test simple server startup."""
|
20
|
+
print("🚀 Testing Simple Server Startup")
|
21
|
+
print("=" * 50)
|
22
|
+
|
23
|
+
# Load configuration
|
24
|
+
config_path = "configs/http_simple_correct.json"
|
25
|
+
if not os.path.exists(config_path):
|
26
|
+
print(f"❌ Configuration file not found: {config_path}")
|
27
|
+
return 1
|
28
|
+
|
29
|
+
try:
|
30
|
+
# Load config
|
31
|
+
config = Config()
|
32
|
+
config.load_from_file(config_path)
|
33
|
+
app_config = config.get_all()
|
34
|
+
|
35
|
+
print(f"✅ Configuration loaded: {config_path}")
|
36
|
+
print(f"🔍 Config keys: {list(app_config.keys())}")
|
37
|
+
|
38
|
+
# Create app
|
39
|
+
app = create_app(
|
40
|
+
title="Test Server",
|
41
|
+
description="Simple test server",
|
42
|
+
version="1.0.0",
|
43
|
+
app_config=app_config
|
44
|
+
)
|
45
|
+
|
46
|
+
print("✅ FastAPI app created successfully")
|
47
|
+
|
48
|
+
# Start server
|
49
|
+
print("🚀 Starting server on http://0.0.0.0:8000")
|
50
|
+
print("📡 Test with: curl -X POST http://localhost:8000/api/jsonrpc -H 'Content-Type: application/json' -d '{\"jsonrpc\": \"2.0\", \"method\": \"health\", \"id\": 1}'")
|
51
|
+
print("🛑 Press Ctrl+C to stop")
|
52
|
+
|
53
|
+
uvicorn.run(app, host="0.0.0.0", port=8000)
|
54
|
+
|
55
|
+
except Exception as e:
|
56
|
+
print(f"❌ Error: {e}")
|
57
|
+
import traceback
|
58
|
+
traceback.print_exc()
|
59
|
+
return 1
|
60
|
+
|
61
|
+
if __name__ == "__main__":
|
62
|
+
sys.exit(main())
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mcp-proxy-adapter
|
3
|
-
Version: 6.9.
|
3
|
+
Version: 6.9.16
|
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
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter.egg-info/SOURCES.txt
RENAMED
@@ -127,7 +127,9 @@ setup.py
|
|
127
127
|
./mcp_proxy_adapter/examples/full_application/proxy_endpoints.py
|
128
128
|
./mcp_proxy_adapter/examples/full_application/run_mtls.py
|
129
129
|
./mcp_proxy_adapter/examples/full_application/run_simple.py
|
130
|
+
./mcp_proxy_adapter/examples/full_application/test_minimal_server.py
|
130
131
|
./mcp_proxy_adapter/examples/full_application/test_server.py
|
132
|
+
./mcp_proxy_adapter/examples/full_application/test_simple_server.py
|
131
133
|
./mcp_proxy_adapter/examples/full_application/commands/__init__.py
|
132
134
|
./mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py
|
133
135
|
./mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py
|
@@ -271,7 +273,9 @@ mcp_proxy_adapter/examples/full_application/main.py
|
|
271
273
|
mcp_proxy_adapter/examples/full_application/proxy_endpoints.py
|
272
274
|
mcp_proxy_adapter/examples/full_application/run_mtls.py
|
273
275
|
mcp_proxy_adapter/examples/full_application/run_simple.py
|
276
|
+
mcp_proxy_adapter/examples/full_application/test_minimal_server.py
|
274
277
|
mcp_proxy_adapter/examples/full_application/test_server.py
|
278
|
+
mcp_proxy_adapter/examples/full_application/test_simple_server.py
|
275
279
|
mcp_proxy_adapter/examples/full_application/commands/__init__.py
|
276
280
|
mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py
|
277
281
|
mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "mcp-proxy-adapter"
|
7
|
-
version = "6.9.
|
7
|
+
version = "6.9.16"
|
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.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/middleware/__init__.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/middleware/base.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/middleware/factory.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/middleware/logging.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.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/api/tool_integration.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/builtin_commands.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/catalog_manager.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/config_command.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/echo_command.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/health_command.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/help_command.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/load_command.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/plugins_command.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/reload_command.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/security_command.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/settings_command.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/commands/unload_command.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/auth_validator.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/certificate_utils.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/client_manager.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/client_security.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/config_converter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/mtls_asgi_app.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/protocol_manager.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/proxy_client.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/proxy_registration.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/security_adapter.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/security_factory.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/security_integration.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/server_adapter.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/server_engine.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/signal_handler.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/core/transport_manager.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/__init__.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.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/check_config.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/config_builder.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/config_cli.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/debug_role_chain.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/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
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/generate_config.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/run_example.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/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.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/test_config.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/test_examples.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/test_mcp_server.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/examples/universal_client.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/schemas/base_schema.json
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/schemas/openapi_schema.json
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter/schemas/roles_schema.json
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter.egg-info/entry_points.txt
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter.egg-info/not-zip-safe
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter.egg-info/requires.txt
RENAMED
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/mcp_proxy_adapter.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.9.14 → mcp_proxy_adapter-6.9.16}/tests/test_config_validation_isolated.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|