mcp-proxy-adapter 6.7.0__tar.gz → 6.7.2__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.7.0 → mcp_proxy_adapter-6.7.2}/PKG-INFO +1 -1
- mcp_proxy_adapter-6.7.2/mcp_proxy_adapter/core/mtls_proxy.py +181 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/proxy_registration.py +42 -30
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/main.py +50 -5
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/version.py +1 -1
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter.egg-info/PKG-INFO +1 -1
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter.egg-info/SOURCES.txt +2 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/pyproject.toml +1 -1
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/README.md +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/__init__.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/__main__.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/__init__.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/app.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/handlers.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/middleware/__init__.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/middleware/base.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/middleware/command_permission_middleware.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/middleware/error_handling.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/middleware/factory.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/middleware/logging.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/middleware/performance.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/middleware/protocol_middleware.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/middleware/transport_middleware.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/middleware/unified_security.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/middleware/user_info_middleware.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/schemas.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/tool_integration.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/tools.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/auth_validation_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/base.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/builtin_commands.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/catalog_manager.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/cert_monitor_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/certificate_management_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/command_registry.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/config_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/dependency_container.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/dependency_manager.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/echo_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/health_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/help_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/hooks.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/key_management_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/load_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/plugins_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/protocol_management_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/proxy_registration_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/registration_status_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/reload_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/result.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/role_test_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/roles_management_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/security_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/settings_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/ssl_setup_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/token_management_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/transport_management_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/unload_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/config.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/__init__.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/app_factory.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/app_runner.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/async_proxy_registration.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/auth_validator.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/certificate_utils.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/client.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/client_manager.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/client_security.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/config_converter.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/config_validator.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/crl_utils.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/errors.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/logging.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/mtls_asgi.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/mtls_asgi_app.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/mtls_server.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/protocol_manager.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/proxy_client.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/role_utils.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/security_adapter.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/security_factory.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/security_integration.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/server_adapter.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/server_engine.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/settings.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/signal_handler.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/ssl_utils.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/transport_manager.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/unified_config_adapter.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/utils.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/custom_openapi.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/__init__.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/basic_framework/__init__.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/basic_framework/main.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/bugfix_certificate_config.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/cert_manager_bugfix.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/check_config.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/config_builder.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/config_cli.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/create_test_configs.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/debug_request_state.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/debug_role_chain.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/demo_client.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/full_application/__init__.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/full_application/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/full_application/hooks/__init__.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/full_application/main.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/generate_certificates.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/generate_config.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/proxy_registration_example.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/required_certificates.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/run_example.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/run_full_test_suite.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/run_proxy_server.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/run_security_tests_fixed.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/security_test_client.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/setup_test_environment.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/simple_protocol_test.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/test_chk_hostname_automated.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/test_config.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/test_config_builder.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/test_examples.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/test_framework_complete.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/test_mcp_server.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/test_protocol_examples.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/universal_client.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/update_config_certificates.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/openapi.py +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/schemas/base_schema.json +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/schemas/openapi_schema.json +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/schemas/roles.json +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/schemas/roles_schema.json +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter.egg-info/dependency_links.txt +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter.egg-info/entry_points.txt +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter.egg-info/not-zip-safe +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter.egg-info/requires.txt +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter.egg-info/top_level.txt +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/setup.cfg +0 -0
- {mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mcp-proxy-adapter
|
3
|
-
Version: 6.7.
|
3
|
+
Version: 6.7.2
|
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
|
@@ -0,0 +1,181 @@
|
|
1
|
+
"""
|
2
|
+
mTLS Proxy for MCP Proxy Adapter
|
3
|
+
|
4
|
+
This module provides mTLS proxy functionality that accepts mTLS connections
|
5
|
+
and proxies them to the internal hypercorn server.
|
6
|
+
|
7
|
+
Author: Vasiliy Zdanovskiy
|
8
|
+
email: vasilyvz@gmail.com
|
9
|
+
"""
|
10
|
+
|
11
|
+
import asyncio
|
12
|
+
import ssl
|
13
|
+
import logging
|
14
|
+
from typing import Optional, Dict, Any
|
15
|
+
from pathlib import Path
|
16
|
+
|
17
|
+
logger = logging.getLogger(__name__)
|
18
|
+
|
19
|
+
|
20
|
+
class MTLSProxy:
|
21
|
+
"""
|
22
|
+
mTLS Proxy that accepts mTLS connections and proxies them to internal server.
|
23
|
+
"""
|
24
|
+
|
25
|
+
def __init__(self,
|
26
|
+
external_host: str,
|
27
|
+
external_port: int,
|
28
|
+
internal_host: str = "127.0.0.1",
|
29
|
+
internal_port: int = 9000,
|
30
|
+
cert_file: Optional[str] = None,
|
31
|
+
key_file: Optional[str] = None,
|
32
|
+
ca_cert: Optional[str] = None):
|
33
|
+
"""
|
34
|
+
Initialize mTLS Proxy.
|
35
|
+
|
36
|
+
Args:
|
37
|
+
external_host: External host to bind to
|
38
|
+
external_port: External port to bind to
|
39
|
+
internal_host: Internal server host
|
40
|
+
internal_port: Internal server port
|
41
|
+
cert_file: Server certificate file
|
42
|
+
key_file: Server private key file
|
43
|
+
ca_cert: CA certificate file for client verification
|
44
|
+
"""
|
45
|
+
self.external_host = external_host
|
46
|
+
self.external_port = external_port
|
47
|
+
self.internal_host = internal_host
|
48
|
+
self.internal_port = internal_port
|
49
|
+
self.cert_file = cert_file
|
50
|
+
self.key_file = key_file
|
51
|
+
self.ca_cert = ca_cert
|
52
|
+
self.server = None
|
53
|
+
|
54
|
+
async def start(self):
|
55
|
+
"""Start the mTLS proxy server."""
|
56
|
+
try:
|
57
|
+
# Create SSL context
|
58
|
+
ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
|
59
|
+
ssl_context.load_cert_chain(self.cert_file, self.key_file)
|
60
|
+
|
61
|
+
if self.ca_cert:
|
62
|
+
ssl_context.load_verify_locations(self.ca_cert)
|
63
|
+
ssl_context.verify_mode = ssl.CERT_REQUIRED
|
64
|
+
else:
|
65
|
+
ssl_context.verify_mode = ssl.CERT_NONE
|
66
|
+
|
67
|
+
# Start server
|
68
|
+
self.server = await asyncio.start_server(
|
69
|
+
self._handle_client,
|
70
|
+
self.external_host,
|
71
|
+
self.external_port,
|
72
|
+
ssl=ssl_context
|
73
|
+
)
|
74
|
+
|
75
|
+
logger.info(f"🔐 mTLS Proxy started on {self.external_host}:{self.external_port}")
|
76
|
+
logger.info(f"🌐 Proxying to {self.internal_host}:{self.internal_port}")
|
77
|
+
|
78
|
+
except Exception as e:
|
79
|
+
logger.error(f"❌ Failed to start mTLS proxy: {e}")
|
80
|
+
raise
|
81
|
+
|
82
|
+
async def stop(self):
|
83
|
+
"""Stop the mTLS proxy server."""
|
84
|
+
if self.server:
|
85
|
+
self.server.close()
|
86
|
+
await self.server.wait_closed()
|
87
|
+
logger.info("🔐 mTLS Proxy stopped")
|
88
|
+
|
89
|
+
async def _handle_client(self, reader, writer):
|
90
|
+
"""Handle client connection."""
|
91
|
+
try:
|
92
|
+
# Get client address
|
93
|
+
client_addr = writer.get_extra_info('peername')
|
94
|
+
logger.info(f"🔐 mTLS connection from {client_addr}")
|
95
|
+
|
96
|
+
# Connect to internal server
|
97
|
+
internal_reader, internal_writer = await asyncio.open_connection(
|
98
|
+
self.internal_host, self.internal_port
|
99
|
+
)
|
100
|
+
|
101
|
+
# Create bidirectional proxy
|
102
|
+
await asyncio.gather(
|
103
|
+
self._proxy_data(reader, internal_writer, "client->server"),
|
104
|
+
self._proxy_data(internal_reader, writer, "server->client")
|
105
|
+
)
|
106
|
+
|
107
|
+
except Exception as e:
|
108
|
+
logger.error(f"❌ Error handling client connection: {e}")
|
109
|
+
finally:
|
110
|
+
try:
|
111
|
+
writer.close()
|
112
|
+
await writer.wait_closed()
|
113
|
+
except:
|
114
|
+
pass
|
115
|
+
|
116
|
+
async def _proxy_data(self, reader, writer, direction):
|
117
|
+
"""Proxy data between reader and writer."""
|
118
|
+
try:
|
119
|
+
while True:
|
120
|
+
data = await reader.read(4096)
|
121
|
+
if not data:
|
122
|
+
break
|
123
|
+
writer.write(data)
|
124
|
+
await writer.drain()
|
125
|
+
except Exception as e:
|
126
|
+
logger.debug(f"Proxy connection closed ({direction}): {e}")
|
127
|
+
finally:
|
128
|
+
try:
|
129
|
+
writer.close()
|
130
|
+
await writer.wait_closed()
|
131
|
+
except:
|
132
|
+
pass
|
133
|
+
|
134
|
+
|
135
|
+
async def start_mtls_proxy(config: Dict[str, Any]) -> Optional[MTLSProxy]:
|
136
|
+
"""
|
137
|
+
Start mTLS proxy based on configuration.
|
138
|
+
|
139
|
+
Args:
|
140
|
+
config: Application configuration
|
141
|
+
|
142
|
+
Returns:
|
143
|
+
MTLSProxy instance if started, None otherwise
|
144
|
+
"""
|
145
|
+
# Check if mTLS is enabled
|
146
|
+
protocol = config.get("server", {}).get("protocol", "http")
|
147
|
+
verify_client = config.get("transport", {}).get("verify_client", False)
|
148
|
+
|
149
|
+
# Only start mTLS proxy if mTLS is explicitly enabled
|
150
|
+
if protocol != "mtls" and not verify_client:
|
151
|
+
logger.info("🌐 Regular mode: no mTLS proxy needed")
|
152
|
+
return None
|
153
|
+
|
154
|
+
# Get configuration
|
155
|
+
server_config = config.get("server", {})
|
156
|
+
transport_config = config.get("transport", {})
|
157
|
+
|
158
|
+
external_host = server_config.get("host", "0.0.0.0")
|
159
|
+
external_port = server_config.get("port", 8000)
|
160
|
+
internal_port = external_port + 1000 # Internal port
|
161
|
+
|
162
|
+
cert_file = transport_config.get("cert_file")
|
163
|
+
key_file = transport_config.get("key_file")
|
164
|
+
ca_cert = transport_config.get("ca_cert")
|
165
|
+
|
166
|
+
if not cert_file or not key_file:
|
167
|
+
logger.warning("⚠️ mTLS enabled but certificates not configured")
|
168
|
+
return None
|
169
|
+
|
170
|
+
# Create and start proxy
|
171
|
+
proxy = MTLSProxy(
|
172
|
+
external_host=external_host,
|
173
|
+
external_port=external_port,
|
174
|
+
internal_port=internal_port,
|
175
|
+
cert_file=cert_file,
|
176
|
+
key_file=key_file,
|
177
|
+
ca_cert=ca_cert
|
178
|
+
)
|
179
|
+
|
180
|
+
await proxy.start()
|
181
|
+
return proxy
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/proxy_registration.py
RENAMED
@@ -132,40 +132,43 @@ class ProxyRegistrationManager:
|
|
132
132
|
# Heartbeat settings - only validate if enabled
|
133
133
|
if self.enabled:
|
134
134
|
heartbeat_config = self.registration_config.get("heartbeat", {})
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
135
|
+
heartbeat_enabled = heartbeat_config.get("enabled", True)
|
136
|
+
|
137
|
+
if heartbeat_enabled:
|
138
|
+
self.timeout = heartbeat_config.get("timeout")
|
139
|
+
if self.timeout is None:
|
140
|
+
raise ValueError(
|
141
|
+
"heartbeat.timeout is required in registration configuration. "
|
142
|
+
"Please specify a timeout value."
|
143
|
+
)
|
144
|
+
self.retry_attempts = heartbeat_config.get("retry_attempts")
|
145
|
+
if self.retry_attempts is None:
|
146
|
+
raise ValueError(
|
147
|
+
"heartbeat.retry_attempts is required in registration configuration. "
|
148
|
+
"Please specify a retry_attempts value."
|
149
|
+
)
|
150
|
+
self.retry_delay = heartbeat_config.get("retry_delay")
|
151
|
+
if self.retry_delay is None:
|
152
|
+
raise ValueError(
|
153
|
+
"heartbeat.retry_delay is required in registration configuration. "
|
154
|
+
"Please specify a retry_delay value."
|
155
|
+
)
|
156
|
+
self.heartbeat_interval = heartbeat_config.get("interval")
|
157
|
+
if self.heartbeat_interval is None:
|
158
|
+
raise ValueError(
|
159
|
+
"heartbeat.interval is required in registration configuration. "
|
160
|
+
"Please specify an interval value."
|
161
|
+
)
|
162
|
+
else:
|
163
|
+
# Heartbeat disabled - use defaults
|
164
|
+
self.timeout = heartbeat_config.get("timeout", 30)
|
165
|
+
self.retry_attempts = heartbeat_config.get("retry_attempts", 3)
|
166
|
+
self.retry_delay = heartbeat_config.get("retry_delay", 5)
|
167
|
+
self.heartbeat_interval = heartbeat_config.get("interval", 30)
|
147
168
|
else:
|
148
169
|
self.timeout = None
|
149
170
|
self.retry_attempts = None
|
150
|
-
|
151
|
-
if self.enabled:
|
152
|
-
self.retry_delay = heartbeat_config.get("retry_delay")
|
153
|
-
if self.retry_delay is None:
|
154
|
-
raise ValueError(
|
155
|
-
"heartbeat.retry_delay is required in registration configuration. "
|
156
|
-
"Please specify a retry_delay value."
|
157
|
-
)
|
158
|
-
else:
|
159
171
|
self.retry_delay = None
|
160
|
-
|
161
|
-
if self.enabled:
|
162
|
-
self.heartbeat_interval = heartbeat_config.get("interval")
|
163
|
-
if self.heartbeat_interval is None:
|
164
|
-
raise ValueError(
|
165
|
-
"heartbeat.interval is required in registration configuration. "
|
166
|
-
"Please specify an interval value."
|
167
|
-
)
|
168
|
-
else:
|
169
172
|
self.heartbeat_interval = None
|
170
173
|
|
171
174
|
# Auto registration settings
|
@@ -782,6 +785,15 @@ class ProxyRegistrationManager:
|
|
782
785
|
except Exception as e:
|
783
786
|
logger.error(f"Heartbeat error: {e}")
|
784
787
|
|
788
|
+
async def heartbeat(self) -> bool:
|
789
|
+
"""
|
790
|
+
Public method to send heartbeat to proxy server.
|
791
|
+
|
792
|
+
Returns:
|
793
|
+
True if heartbeat was successful, False otherwise.
|
794
|
+
"""
|
795
|
+
return await self._send_heartbeat()
|
796
|
+
|
785
797
|
async def _send_heartbeat(self) -> bool:
|
786
798
|
"""Send heartbeat to proxy server."""
|
787
799
|
if not self.server_key:
|
@@ -89,8 +89,23 @@ def main():
|
|
89
89
|
verify_client = config.get("transport.verify_client", False)
|
90
90
|
chk_hostname = config.get("transport.chk_hostname", False)
|
91
91
|
|
92
|
-
#
|
93
|
-
|
92
|
+
# Check if mTLS is required
|
93
|
+
is_mtls_mode = protocol == "mtls" or verify_client
|
94
|
+
|
95
|
+
if is_mtls_mode:
|
96
|
+
# mTLS mode: hypercorn on localhost, mTLS proxy on external port
|
97
|
+
hypercorn_host = "127.0.0.1" # localhost only
|
98
|
+
hypercorn_port = port + 1000 # internal port
|
99
|
+
mtls_proxy_port = port # external port
|
100
|
+
ssl_enabled = True
|
101
|
+
print(f"🔐 mTLS Mode: hypercorn on {hypercorn_host}:{hypercorn_port}, mTLS proxy on {host}:{mtls_proxy_port}")
|
102
|
+
else:
|
103
|
+
# Regular mode: hypercorn on external port (no proxy needed)
|
104
|
+
hypercorn_host = host
|
105
|
+
hypercorn_port = port
|
106
|
+
mtls_proxy_port = None
|
107
|
+
ssl_enabled = protocol == "https"
|
108
|
+
print(f"🌐 Regular Mode: hypercorn on {hypercorn_host}:{hypercorn_port}")
|
94
109
|
|
95
110
|
# SSL configuration based on protocol
|
96
111
|
ssl_cert_file = None
|
@@ -118,7 +133,11 @@ def main():
|
|
118
133
|
print("🔍 Source: configuration")
|
119
134
|
|
120
135
|
print("🚀 Starting MCP Proxy Adapter")
|
121
|
-
|
136
|
+
if mtls_proxy_port:
|
137
|
+
print(f"🔐 mTLS Proxy: {host}:{mtls_proxy_port}")
|
138
|
+
print(f"🌐 Internal Server: {hypercorn_host}:{hypercorn_port}")
|
139
|
+
else:
|
140
|
+
print(f"🌐 Server: {hypercorn_host}:{hypercorn_port}")
|
122
141
|
print(f"🔒 Protocol: {protocol}")
|
123
142
|
if ssl_enabled:
|
124
143
|
print("🔐 SSL: Enabled")
|
@@ -131,7 +150,7 @@ def main():
|
|
131
150
|
|
132
151
|
# Configure hypercorn using framework
|
133
152
|
config_hypercorn = hypercorn.config.Config()
|
134
|
-
config_hypercorn.bind = [f"{
|
153
|
+
config_hypercorn.bind = [f"{hypercorn_host}:{hypercorn_port}"]
|
135
154
|
|
136
155
|
if ssl_enabled and ssl_cert_file and ssl_key_file:
|
137
156
|
# Use framework to convert SSL configuration
|
@@ -201,7 +220,33 @@ def main():
|
|
201
220
|
|
202
221
|
# Run the server
|
203
222
|
try:
|
204
|
-
|
223
|
+
if is_mtls_mode:
|
224
|
+
# mTLS mode: start hypercorn and mTLS proxy
|
225
|
+
print("🔐 Starting mTLS mode with proxy...")
|
226
|
+
|
227
|
+
async def run_mtls_mode():
|
228
|
+
# Start hypercorn server on localhost
|
229
|
+
hypercorn_task = asyncio.create_task(
|
230
|
+
hypercorn.asyncio.serve(app, config_hypercorn)
|
231
|
+
)
|
232
|
+
|
233
|
+
# Start mTLS proxy on external port
|
234
|
+
from mcp_proxy_adapter.core.mtls_proxy import start_mtls_proxy
|
235
|
+
proxy = await start_mtls_proxy(config.get_all())
|
236
|
+
|
237
|
+
if proxy:
|
238
|
+
print("✅ mTLS proxy started successfully")
|
239
|
+
else:
|
240
|
+
print("⚠️ mTLS proxy not started, running hypercorn only")
|
241
|
+
|
242
|
+
# Wait for hypercorn
|
243
|
+
await hypercorn_task
|
244
|
+
|
245
|
+
asyncio.run(run_mtls_mode())
|
246
|
+
else:
|
247
|
+
# Regular mode: start hypercorn only (no proxy needed)
|
248
|
+
print("🌐 Starting regular mode...")
|
249
|
+
asyncio.run(hypercorn.asyncio.serve(app, config_hypercorn))
|
205
250
|
except KeyboardInterrupt:
|
206
251
|
print("\n🛑 Server stopped by user (Ctrl+C)")
|
207
252
|
if is_shutdown_requested():
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mcp-proxy-adapter
|
3
|
-
Version: 6.7.
|
3
|
+
Version: 6.7.2
|
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
|
@@ -72,6 +72,7 @@ setup.py
|
|
72
72
|
./mcp_proxy_adapter/core/logging.py
|
73
73
|
./mcp_proxy_adapter/core/mtls_asgi.py
|
74
74
|
./mcp_proxy_adapter/core/mtls_asgi_app.py
|
75
|
+
./mcp_proxy_adapter/core/mtls_proxy.py
|
75
76
|
./mcp_proxy_adapter/core/mtls_server.py
|
76
77
|
./mcp_proxy_adapter/core/protocol_manager.py
|
77
78
|
./mcp_proxy_adapter/core/proxy_client.py
|
@@ -214,6 +215,7 @@ mcp_proxy_adapter/core/errors.py
|
|
214
215
|
mcp_proxy_adapter/core/logging.py
|
215
216
|
mcp_proxy_adapter/core/mtls_asgi.py
|
216
217
|
mcp_proxy_adapter/core/mtls_asgi_app.py
|
218
|
+
mcp_proxy_adapter/core/mtls_proxy.py
|
217
219
|
mcp_proxy_adapter/core/mtls_server.py
|
218
220
|
mcp_proxy_adapter/core/protocol_manager.py
|
219
221
|
mcp_proxy_adapter/core/proxy_client.py
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "mcp-proxy-adapter"
|
7
|
-
version = "6.7.
|
7
|
+
version = "6.7.2"
|
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
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/middleware/__init__.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/middleware/base.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/middleware/factory.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/api/middleware/logging.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/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.7.0 → mcp_proxy_adapter-6.7.2}/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.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/builtin_commands.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/catalog_manager.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/command_registry.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/config_command.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/dependency_manager.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/echo_command.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/health_command.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/help_command.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/load_command.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/plugins_command.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/reload_command.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/role_test_command.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/security_command.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/settings_command.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/ssl_setup_command.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/commands/unload_command.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/auth_validator.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/certificate_utils.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/client_manager.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/client_security.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/config_converter.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/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.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/protocol_manager.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/security_adapter.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/security_factory.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/security_integration.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/server_adapter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/signal_handler.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/core/transport_manager.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/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.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/check_config.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/commands/__init__.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/config_builder.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/config_cli.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/debug_role_chain.py
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/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.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/generate_config.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/run_example.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/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.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/test_config.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/test_examples.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/test_mcp_server.py
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/examples/universal_client.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/schemas/base_schema.json
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/schemas/openapi_schema.json
RENAMED
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter/schemas/roles_schema.json
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter.egg-info/dependency_links.txt
RENAMED
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter.egg-info/entry_points.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
{mcp_proxy_adapter-6.7.0 → mcp_proxy_adapter-6.7.2}/mcp_proxy_adapter.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|