mcp-proxy-adapter 6.4.10__tar.gz → 6.4.12__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.4.12/PKG-INFO +156 -0
- mcp_proxy_adapter-6.4.12/README.md +97 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/basic_framework/main.py +3 -2
- mcp_proxy_adapter-6.4.12/mcp_proxy_adapter/examples/create_test_configs.py +301 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/run_full_test_suite.py +180 -20
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/version.py +1 -1
- mcp_proxy_adapter-6.4.12/mcp_proxy_adapter.egg-info/PKG-INFO +156 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter.egg-info/SOURCES.txt +9 -11
- mcp_proxy_adapter-6.4.12/mcp_proxy_adapter.egg-info/dependency_links.txt +1 -0
- mcp_proxy_adapter-6.4.12/mcp_proxy_adapter.egg-info/entry_points.txt +2 -0
- mcp_proxy_adapter-6.4.12/mcp_proxy_adapter.egg-info/not-zip-safe +1 -0
- mcp_proxy_adapter-6.4.12/mcp_proxy_adapter.egg-info/requires.txt +27 -0
- mcp_proxy_adapter-6.4.12/mcp_proxy_adapter.egg-info/top_level.txt +1 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/pyproject.toml +2 -6
- mcp_proxy_adapter-6.4.12/setup.py +111 -0
- mcp_proxy_adapter-6.4.10/MANIFEST.in +0 -40
- mcp_proxy_adapter-6.4.10/PKG-INFO +0 -680
- mcp_proxy_adapter-6.4.10/README.md +0 -621
- mcp_proxy_adapter-6.4.10/mcp_proxy_adapter/examples/basic_framework/roles.json +0 -21
- mcp_proxy_adapter-6.4.10/mcp_proxy_adapter/examples/full_application/roles.json +0 -21
- mcp_proxy_adapter-6.4.10/mcp_proxy_adapter/examples/generate_comprehensive_config.py +0 -177
- mcp_proxy_adapter-6.4.10/mcp_proxy_adapter/examples/test_mcp_adapter.py +0 -207
- mcp_proxy_adapter-6.4.10/mcp_proxy_adapter/schemas/base_schema.json +0 -114
- mcp_proxy_adapter-6.4.10/mcp_proxy_adapter/schemas/openapi_schema.json +0 -314
- mcp_proxy_adapter-6.4.10/mcp_proxy_adapter/utils/config_generator.py +0 -1167
- mcp_proxy_adapter-6.4.10/mcp_proxy_adapter_issue_package/demonstrate_issue.py +0 -208
- mcp_proxy_adapter-6.4.10/requirements.txt +0 -8
- mcp_proxy_adapter-6.4.10/setup.py +0 -624
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/__main__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/app.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/handlers.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/base.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/command_permission_middleware.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/error_handling.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/factory.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/logging.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/performance.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/protocol_middleware.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/transport_middleware.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/unified_security.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/middleware/user_info_middleware.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/schemas.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/tool_integration.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/api/tools.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/auth_validation_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/base.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/builtin_commands.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/catalog_manager.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/cert_monitor_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/certificate_management_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/command_registry.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/config_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/dependency_container.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/dependency_manager.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/echo_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/health_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/help_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/hooks.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/key_management_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/load_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/plugins_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/protocol_management_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/proxy_registration_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/reload_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/result.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/role_test_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/roles_management_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/security_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/settings_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/ssl_setup_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/token_management_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/transport_management_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/commands/unload_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/config.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/app_factory.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/app_runner.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/auth_validator.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/certificate_utils.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/client.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/client_manager.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/client_security.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/config_converter.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/config_validator.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/crl_utils.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/errors.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/logging.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/mtls_asgi.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/mtls_asgi_app.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/protocol_manager.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/proxy_client.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/proxy_registration.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/role_utils.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/security_adapter.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/security_factory.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/security_integration.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/server_adapter.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/server_engine.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/settings.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/ssl_utils.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/transport_manager.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/unified_config_adapter.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/core/utils.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/custom_openapi.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/basic_framework/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/create_certificates_simple.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/debug_request_state.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/debug_role_chain.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/demo_client.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/basic_framework/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/basic_framework/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/basic_framework/hooks/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/basic_framework/main.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/commands/custom_echo_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/commands/dynamic_calculator_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/hooks/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/hooks/application_hooks.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/hooks/builtin_command_hooks.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/main.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/examples/full_application/proxy_endpoints.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/hooks/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/main.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/generate_all_certificates.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/generate_certificates.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/generate_certificates_and_tokens.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/generate_test_configs.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/proxy_registration_example.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/run_example.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/run_proxy_server.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/run_security_tests.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/run_security_tests_fixed.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/scripts/config_generator.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/scripts/create_certificates_simple.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/scripts/generate_certificates_and_tokens.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/security_test_client.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/setup_test_environment.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/test_config.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/test_config_generator.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/test_examples.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/examples/universal_client.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/main.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/mcp_proxy_adapter/openapi.py +0 -0
- {mcp_proxy_adapter-6.4.10 → mcp_proxy_adapter-6.4.12}/setup.cfg +0 -0
@@ -0,0 +1,156 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: mcp-proxy-adapter
|
3
|
+
Version: 6.4.12
|
4
|
+
Summary: Powerful JSON-RPC microservices framework with built-in security, authentication, and proxy registration
|
5
|
+
Home-page: https://github.com/maverikod/mcp-proxy-adapter
|
6
|
+
Author: Vasiliy Zdanovskiy
|
7
|
+
Author-email: Vasiliy Zdanovskiy <vasilyvz@gmail.com>
|
8
|
+
Maintainer: Vasiliy Zdanovskiy
|
9
|
+
Maintainer-email: Vasiliy Zdanovskiy <vasilyvz@gmail.com>
|
10
|
+
License: MIT
|
11
|
+
Project-URL: Homepage, https://github.com/maverikod/mcp-proxy-adapter
|
12
|
+
Project-URL: Documentation, https://github.com/maverikod/mcp-proxy-adapter#readme
|
13
|
+
Project-URL: Source, https://github.com/maverikod/mcp-proxy-adapter
|
14
|
+
Project-URL: Tracker, https://github.com/maverikod/mcp-proxy-adapter/issues
|
15
|
+
Project-URL: PyPI, https://pypi.org/project/mcp-proxy-adapter/
|
16
|
+
Keywords: json-rpc,microservices,fastapi,security,authentication,authorization,proxy,mcp,mtls,ssl,rest,api
|
17
|
+
Classifier: Development Status :: 4 - Beta
|
18
|
+
Classifier: Intended Audience :: Developers
|
19
|
+
Classifier: Operating System :: OS Independent
|
20
|
+
Classifier: Programming Language :: Python :: 3
|
21
|
+
Classifier: Programming Language :: Python :: 3.9
|
22
|
+
Classifier: Programming Language :: Python :: 3.10
|
23
|
+
Classifier: Programming Language :: Python :: 3.11
|
24
|
+
Classifier: Programming Language :: Python :: 3.12
|
25
|
+
Classifier: Framework :: FastAPI
|
26
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
|
27
|
+
Classifier: Topic :: Security
|
28
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
29
|
+
Requires-Python: >=3.9
|
30
|
+
Description-Content-Type: text/markdown
|
31
|
+
Requires-Dist: fastapi<1.0.0,>=0.95.0
|
32
|
+
Requires-Dist: pydantic>=2.0.0
|
33
|
+
Requires-Dist: hypercorn<1.0.0,>=0.15.0
|
34
|
+
Requires-Dist: docstring-parser<1.0.0,>=0.15
|
35
|
+
Requires-Dist: typing-extensions<5.0.0,>=4.5.0
|
36
|
+
Requires-Dist: jsonrpc>=1.2.0
|
37
|
+
Requires-Dist: psutil>=5.9.0
|
38
|
+
Requires-Dist: mcp_security_framework>=1.1.2
|
39
|
+
Requires-Dist: packaging>=20.0
|
40
|
+
Requires-Dist: aiohttp<4.0.0,>=3.8.0
|
41
|
+
Requires-Dist: requests<3.0.0,>=2.28.0
|
42
|
+
Provides-Extra: dev
|
43
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
44
|
+
Requires-Dist: pytest-asyncio>=0.20.0; extra == "dev"
|
45
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
46
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
47
|
+
Requires-Dist: isort>=5.12.0; extra == "dev"
|
48
|
+
Provides-Extra: test
|
49
|
+
Requires-Dist: pytest>=7.0.0; extra == "test"
|
50
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
|
51
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "test"
|
52
|
+
Requires-Dist: httpx>=0.24.0; extra == "test"
|
53
|
+
Requires-Dist: pytest-mock>=3.10.0; extra == "test"
|
54
|
+
Provides-Extra: examples
|
55
|
+
Dynamic: author
|
56
|
+
Dynamic: home-page
|
57
|
+
Dynamic: maintainer
|
58
|
+
Dynamic: requires-python
|
59
|
+
|
60
|
+
# MCP Proxy Adapter
|
61
|
+
|
62
|
+
**Author:** Vasiliy Zdanovskiy
|
63
|
+
**Email:** vasilyvz@gmail.com
|
64
|
+
|
65
|
+
## Overview
|
66
|
+
|
67
|
+
MCP Proxy Adapter is a comprehensive framework for building JSON-RPC API servers with built-in security, SSL/TLS support, and proxy registration capabilities. It provides a unified interface for command execution, protocol management, and security enforcement.
|
68
|
+
|
69
|
+
## Features
|
70
|
+
|
71
|
+
- **JSON-RPC API**: Full JSON-RPC 2.0 support with built-in commands
|
72
|
+
- **Security Framework**: Integrated authentication, authorization, and SSL/TLS
|
73
|
+
- **Protocol Management**: HTTP, HTTPS, and mTLS protocol support
|
74
|
+
- **Proxy Registration**: Automatic registration with proxy servers
|
75
|
+
- **Command System**: Extensible command registry with built-in commands
|
76
|
+
- **Configuration Management**: Comprehensive configuration with environment variable overrides
|
77
|
+
|
78
|
+
## Quick Start
|
79
|
+
|
80
|
+
1. **Installation**:
|
81
|
+
```bash
|
82
|
+
pip install mcp-proxy-adapter
|
83
|
+
```
|
84
|
+
|
85
|
+
2. **Basic Configuration**:
|
86
|
+
```bash
|
87
|
+
# Use the comprehensive config with all options disabled by default
|
88
|
+
python -m mcp_proxy_adapter --config config.json
|
89
|
+
```
|
90
|
+
|
91
|
+
3. **Access the API**:
|
92
|
+
- Health check: `GET http://localhost:8000/health`
|
93
|
+
- JSON-RPC: `POST http://localhost:8000/api/jsonrpc`
|
94
|
+
- REST API: `POST http://localhost:8000/cmd`
|
95
|
+
- Documentation: `http://localhost:8000/docs`
|
96
|
+
|
97
|
+
## Configuration
|
98
|
+
|
99
|
+
The adapter uses a comprehensive JSON configuration file (`config.json`) that includes all available options with sensible defaults. All features are disabled by default and can be enabled as needed:
|
100
|
+
|
101
|
+
- **Server settings**: Host, port, debug mode
|
102
|
+
- **Security**: Authentication methods, SSL/TLS, permissions
|
103
|
+
- **Protocols**: HTTP/HTTPS/mTLS configuration
|
104
|
+
- **Proxy registration**: Automatic server registration
|
105
|
+
- **Logging**: Comprehensive logging configuration
|
106
|
+
- **Commands**: Built-in and custom command management
|
107
|
+
|
108
|
+
See `docs/EN/configuration.md` for complete configuration documentation.
|
109
|
+
|
110
|
+
## Built-in Commands
|
111
|
+
|
112
|
+
- `health` - Server health check
|
113
|
+
- `echo` - Echo test command
|
114
|
+
- `config` - Configuration management
|
115
|
+
- `help` - Command help and documentation
|
116
|
+
- `reload` - Configuration reload
|
117
|
+
- `settings` - Settings management
|
118
|
+
- `load`/`unload` - Command loading/unloading
|
119
|
+
- `plugins` - Plugin management
|
120
|
+
- `proxy_registration` - Proxy registration control
|
121
|
+
- `transport_management` - Transport protocol management
|
122
|
+
- `role_test` - Role-based access testing
|
123
|
+
|
124
|
+
## Security Features
|
125
|
+
|
126
|
+
- **Authentication**: API keys, JWT tokens, certificate-based auth
|
127
|
+
- **Authorization**: Role-based permissions with wildcard support
|
128
|
+
- **SSL/TLS**: Full SSL/TLS and mTLS support
|
129
|
+
- **Rate Limiting**: Configurable request rate limiting
|
130
|
+
- **Security Headers**: Automatic security header injection
|
131
|
+
|
132
|
+
## Examples
|
133
|
+
|
134
|
+
The `mcp_proxy_adapter/examples/` directory contains comprehensive examples for different use cases:
|
135
|
+
|
136
|
+
- **Basic Framework**: Simple HTTP server setup
|
137
|
+
- **Full Application**: Complete application with custom commands and hooks
|
138
|
+
- **Security Testing**: Comprehensive security test suite
|
139
|
+
- **Certificate Generation**: SSL/TLS certificate management
|
140
|
+
|
141
|
+
## Development
|
142
|
+
|
143
|
+
The project follows a modular architecture:
|
144
|
+
|
145
|
+
- `mcp_proxy_adapter/api/` - FastAPI application and handlers
|
146
|
+
- `mcp_proxy_adapter/commands/` - Command system and built-in commands
|
147
|
+
- `mcp_proxy_adapter/core/` - Core functionality and utilities
|
148
|
+
- `mcp_proxy_adapter/config.py` - Configuration management
|
149
|
+
|
150
|
+
## License
|
151
|
+
|
152
|
+
This project is licensed under the MIT License.
|
153
|
+
|
154
|
+
## Support
|
155
|
+
|
156
|
+
For issues and questions, please contact vasilyvz@gmail.com.
|
@@ -0,0 +1,97 @@
|
|
1
|
+
# MCP Proxy Adapter
|
2
|
+
|
3
|
+
**Author:** Vasiliy Zdanovskiy
|
4
|
+
**Email:** vasilyvz@gmail.com
|
5
|
+
|
6
|
+
## Overview
|
7
|
+
|
8
|
+
MCP Proxy Adapter is a comprehensive framework for building JSON-RPC API servers with built-in security, SSL/TLS support, and proxy registration capabilities. It provides a unified interface for command execution, protocol management, and security enforcement.
|
9
|
+
|
10
|
+
## Features
|
11
|
+
|
12
|
+
- **JSON-RPC API**: Full JSON-RPC 2.0 support with built-in commands
|
13
|
+
- **Security Framework**: Integrated authentication, authorization, and SSL/TLS
|
14
|
+
- **Protocol Management**: HTTP, HTTPS, and mTLS protocol support
|
15
|
+
- **Proxy Registration**: Automatic registration with proxy servers
|
16
|
+
- **Command System**: Extensible command registry with built-in commands
|
17
|
+
- **Configuration Management**: Comprehensive configuration with environment variable overrides
|
18
|
+
|
19
|
+
## Quick Start
|
20
|
+
|
21
|
+
1. **Installation**:
|
22
|
+
```bash
|
23
|
+
pip install mcp-proxy-adapter
|
24
|
+
```
|
25
|
+
|
26
|
+
2. **Basic Configuration**:
|
27
|
+
```bash
|
28
|
+
# Use the comprehensive config with all options disabled by default
|
29
|
+
python -m mcp_proxy_adapter --config config.json
|
30
|
+
```
|
31
|
+
|
32
|
+
3. **Access the API**:
|
33
|
+
- Health check: `GET http://localhost:8000/health`
|
34
|
+
- JSON-RPC: `POST http://localhost:8000/api/jsonrpc`
|
35
|
+
- REST API: `POST http://localhost:8000/cmd`
|
36
|
+
- Documentation: `http://localhost:8000/docs`
|
37
|
+
|
38
|
+
## Configuration
|
39
|
+
|
40
|
+
The adapter uses a comprehensive JSON configuration file (`config.json`) that includes all available options with sensible defaults. All features are disabled by default and can be enabled as needed:
|
41
|
+
|
42
|
+
- **Server settings**: Host, port, debug mode
|
43
|
+
- **Security**: Authentication methods, SSL/TLS, permissions
|
44
|
+
- **Protocols**: HTTP/HTTPS/mTLS configuration
|
45
|
+
- **Proxy registration**: Automatic server registration
|
46
|
+
- **Logging**: Comprehensive logging configuration
|
47
|
+
- **Commands**: Built-in and custom command management
|
48
|
+
|
49
|
+
See `docs/EN/configuration.md` for complete configuration documentation.
|
50
|
+
|
51
|
+
## Built-in Commands
|
52
|
+
|
53
|
+
- `health` - Server health check
|
54
|
+
- `echo` - Echo test command
|
55
|
+
- `config` - Configuration management
|
56
|
+
- `help` - Command help and documentation
|
57
|
+
- `reload` - Configuration reload
|
58
|
+
- `settings` - Settings management
|
59
|
+
- `load`/`unload` - Command loading/unloading
|
60
|
+
- `plugins` - Plugin management
|
61
|
+
- `proxy_registration` - Proxy registration control
|
62
|
+
- `transport_management` - Transport protocol management
|
63
|
+
- `role_test` - Role-based access testing
|
64
|
+
|
65
|
+
## Security Features
|
66
|
+
|
67
|
+
- **Authentication**: API keys, JWT tokens, certificate-based auth
|
68
|
+
- **Authorization**: Role-based permissions with wildcard support
|
69
|
+
- **SSL/TLS**: Full SSL/TLS and mTLS support
|
70
|
+
- **Rate Limiting**: Configurable request rate limiting
|
71
|
+
- **Security Headers**: Automatic security header injection
|
72
|
+
|
73
|
+
## Examples
|
74
|
+
|
75
|
+
The `mcp_proxy_adapter/examples/` directory contains comprehensive examples for different use cases:
|
76
|
+
|
77
|
+
- **Basic Framework**: Simple HTTP server setup
|
78
|
+
- **Full Application**: Complete application with custom commands and hooks
|
79
|
+
- **Security Testing**: Comprehensive security test suite
|
80
|
+
- **Certificate Generation**: SSL/TLS certificate management
|
81
|
+
|
82
|
+
## Development
|
83
|
+
|
84
|
+
The project follows a modular architecture:
|
85
|
+
|
86
|
+
- `mcp_proxy_adapter/api/` - FastAPI application and handlers
|
87
|
+
- `mcp_proxy_adapter/commands/` - Command system and built-in commands
|
88
|
+
- `mcp_proxy_adapter/core/` - Core functionality and utilities
|
89
|
+
- `mcp_proxy_adapter/config.py` - Configuration management
|
90
|
+
|
91
|
+
## License
|
92
|
+
|
93
|
+
This project is licensed under the MIT License.
|
94
|
+
|
95
|
+
## Support
|
96
|
+
|
97
|
+
For issues and questions, please contact vasilyvz@gmail.com.
|
@@ -43,8 +43,9 @@ def main():
|
|
43
43
|
title="Basic Framework Example",
|
44
44
|
description="Basic MCP Proxy Adapter with minimal configuration",
|
45
45
|
version="1.0.0",
|
46
|
-
host=config_overrides.get("host"
|
47
|
-
|
46
|
+
host=config_overrides.get("host"),
|
47
|
+
port=config_overrides.get("port"),
|
48
|
+
debug=config_overrides.get("debug", False),
|
48
49
|
))
|
49
50
|
|
50
51
|
|
@@ -0,0 +1,301 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
"""
|
3
|
+
Test Configuration Generator
|
4
|
+
Creates test configurations by copying the comprehensive config and enabling/disabling specific options.
|
5
|
+
Author: Vasiliy Zdanovskiy
|
6
|
+
email: vasilyvz@gmail.com
|
7
|
+
"""
|
8
|
+
import json
|
9
|
+
import shutil
|
10
|
+
from pathlib import Path
|
11
|
+
from typing import Dict, Any, Optional
|
12
|
+
|
13
|
+
|
14
|
+
class TestConfigGenerator:
|
15
|
+
"""Generator for test configurations based on comprehensive config."""
|
16
|
+
|
17
|
+
def __init__(self, comprehensive_config_path: str, output_dir: str = "configs"):
|
18
|
+
"""
|
19
|
+
Initialize the generator.
|
20
|
+
|
21
|
+
Args:
|
22
|
+
comprehensive_config_path: Path to the comprehensive configuration file
|
23
|
+
output_dir: Directory to output test configurations
|
24
|
+
"""
|
25
|
+
self.comprehensive_config_path = Path(comprehensive_config_path)
|
26
|
+
self.output_dir = Path(output_dir)
|
27
|
+
self.output_dir.mkdir(exist_ok=True)
|
28
|
+
|
29
|
+
# Load the comprehensive config
|
30
|
+
with open(self.comprehensive_config_path, 'r', encoding='utf-8') as f:
|
31
|
+
self.base_config = json.load(f)
|
32
|
+
|
33
|
+
def create_config(self, name: str, modifications: Dict[str, Any]) -> Path:
|
34
|
+
"""
|
35
|
+
Create a test configuration with specific modifications.
|
36
|
+
|
37
|
+
Args:
|
38
|
+
name: Name of the configuration (without .json extension)
|
39
|
+
modifications: Dictionary of modifications to apply
|
40
|
+
|
41
|
+
Returns:
|
42
|
+
Path to the created configuration file
|
43
|
+
"""
|
44
|
+
# Deep copy the base config
|
45
|
+
config = json.loads(json.dumps(self.base_config))
|
46
|
+
|
47
|
+
# Apply modifications
|
48
|
+
for key, value in modifications.items():
|
49
|
+
self._set_nested_value(config, key, value)
|
50
|
+
|
51
|
+
# Save the configuration
|
52
|
+
output_path = self.output_dir / f"{name}.json"
|
53
|
+
with open(output_path, 'w', encoding='utf-8') as f:
|
54
|
+
json.dump(config, f, indent=2, ensure_ascii=False)
|
55
|
+
|
56
|
+
print(f"✅ Created test config: {output_path}")
|
57
|
+
return output_path
|
58
|
+
|
59
|
+
def _set_nested_value(self, config: Dict, key: str, value: Any):
|
60
|
+
"""Set a nested value in the configuration using dot notation."""
|
61
|
+
keys = key.split('.')
|
62
|
+
current = config
|
63
|
+
|
64
|
+
for k in keys[:-1]:
|
65
|
+
if k not in current:
|
66
|
+
current[k] = {}
|
67
|
+
current = current[k]
|
68
|
+
|
69
|
+
current[keys[-1]] = value
|
70
|
+
|
71
|
+
def create_all_test_configs(self):
|
72
|
+
"""Create all standard test configurations."""
|
73
|
+
print("🔧 Creating test configurations from comprehensive config...")
|
74
|
+
|
75
|
+
# 1. HTTP Simple
|
76
|
+
self.create_config("http_simple", {
|
77
|
+
"server.port": 8001,
|
78
|
+
"ssl.enabled": False,
|
79
|
+
"security.enabled": False,
|
80
|
+
"proxy_registration.enabled": False,
|
81
|
+
"protocols.allowed_protocols": ["http"]
|
82
|
+
})
|
83
|
+
|
84
|
+
# 2. HTTP with Auth
|
85
|
+
self.create_config("http_auth", {
|
86
|
+
"server.port": 8002,
|
87
|
+
"ssl.enabled": False,
|
88
|
+
"security.enabled": True,
|
89
|
+
"security.auth.enabled": True,
|
90
|
+
"security.auth.methods": ["api_key"],
|
91
|
+
"security.auth.api_keys": {
|
92
|
+
"admin": "admin-secret-key",
|
93
|
+
"user": "user-secret-key"
|
94
|
+
},
|
95
|
+
"proxy_registration.enabled": False,
|
96
|
+
"protocols.allowed_protocols": ["http"]
|
97
|
+
})
|
98
|
+
|
99
|
+
# 3. HTTPS Simple
|
100
|
+
self.create_config("https_simple", {
|
101
|
+
"server.port": 8003,
|
102
|
+
"ssl.enabled": True,
|
103
|
+
"ssl.cert_file": "certs/localhost_server.crt",
|
104
|
+
"ssl.key_file": "keys/localhost_server.key",
|
105
|
+
"security.enabled": False,
|
106
|
+
"proxy_registration.enabled": False,
|
107
|
+
"protocols.allowed_protocols": ["https"]
|
108
|
+
})
|
109
|
+
|
110
|
+
# 4. HTTPS with Auth
|
111
|
+
self.create_config("https_auth", {
|
112
|
+
"server.port": 8004,
|
113
|
+
"ssl.enabled": True,
|
114
|
+
"ssl.cert_file": "certs/localhost_server.crt",
|
115
|
+
"ssl.key_file": "keys/localhost_server.key",
|
116
|
+
"security.enabled": True,
|
117
|
+
"security.auth.enabled": True,
|
118
|
+
"security.auth.methods": ["api_key"],
|
119
|
+
"security.auth.api_keys": {
|
120
|
+
"admin": "admin-secret-key",
|
121
|
+
"user": "user-secret-key"
|
122
|
+
},
|
123
|
+
"proxy_registration.enabled": False,
|
124
|
+
"protocols.allowed_protocols": ["https"]
|
125
|
+
})
|
126
|
+
|
127
|
+
# 5. mTLS Simple
|
128
|
+
self.create_config("mtls_simple", {
|
129
|
+
"server.port": 8005,
|
130
|
+
"ssl.enabled": True,
|
131
|
+
"ssl.cert_file": "certs/localhost_server.crt",
|
132
|
+
"ssl.key_file": "keys/localhost_server.key",
|
133
|
+
"ssl.ca_cert": "certs/mcp_proxy_adapter_ca_ca.crt",
|
134
|
+
"ssl.verify_client": True,
|
135
|
+
"security.enabled": True,
|
136
|
+
"security.auth.enabled": True,
|
137
|
+
"security.auth.methods": ["certificate"],
|
138
|
+
"proxy_registration.enabled": False,
|
139
|
+
"protocols.allowed_protocols": ["https", "mtls"]
|
140
|
+
})
|
141
|
+
|
142
|
+
# 6. mTLS with Roles
|
143
|
+
self.create_config("mtls_with_roles", {
|
144
|
+
"server.port": 8006,
|
145
|
+
"ssl.enabled": True,
|
146
|
+
"ssl.cert_file": "certs/localhost_server.crt",
|
147
|
+
"ssl.key_file": "keys/localhost_server.key",
|
148
|
+
"ssl.ca_cert": "certs/mcp_proxy_adapter_ca_ca.crt",
|
149
|
+
"ssl.verify_client": True,
|
150
|
+
"security.enabled": True,
|
151
|
+
"security.auth.enabled": True,
|
152
|
+
"security.auth.methods": ["certificate"],
|
153
|
+
"security.permissions.enabled": True,
|
154
|
+
"security.permissions.roles_file": "configs/roles.json",
|
155
|
+
"proxy_registration.enabled": False,
|
156
|
+
"protocols.allowed_protocols": ["https", "mtls"]
|
157
|
+
})
|
158
|
+
|
159
|
+
# 6a. mTLS without Roles (for security tests)
|
160
|
+
self.create_config("mtls_no_roles", {
|
161
|
+
"server.port": 8009,
|
162
|
+
"ssl.enabled": True,
|
163
|
+
"ssl.cert_file": "certs/localhost_server.crt",
|
164
|
+
"ssl.key_file": "keys/localhost_server.key",
|
165
|
+
"ssl.ca_cert": "certs/mcp_proxy_adapter_ca_ca.crt",
|
166
|
+
"ssl.verify_client": True,
|
167
|
+
"security.enabled": True,
|
168
|
+
"security.auth.enabled": True,
|
169
|
+
"security.auth.methods": ["certificate"],
|
170
|
+
"security.permissions.enabled": False,
|
171
|
+
"proxy_registration.enabled": False,
|
172
|
+
"protocols.allowed_protocols": ["https", "mtls"]
|
173
|
+
})
|
174
|
+
|
175
|
+
# 7. mTLS with Proxy Registration
|
176
|
+
self.create_config("mtls_with_proxy", {
|
177
|
+
"server.port": 8007,
|
178
|
+
"ssl.enabled": True,
|
179
|
+
"ssl.cert_file": "certs/localhost_server.crt",
|
180
|
+
"ssl.key_file": "keys/localhost_server.key",
|
181
|
+
"ssl.ca_cert": "certs/mcp_proxy_adapter_ca_ca.crt",
|
182
|
+
"ssl.verify_client": True,
|
183
|
+
"security.enabled": True,
|
184
|
+
"security.auth.enabled": True,
|
185
|
+
"security.auth.methods": ["certificate"],
|
186
|
+
"proxy_registration.enabled": True,
|
187
|
+
"proxy_registration.proxy_url": "http://127.0.0.1:3006",
|
188
|
+
"proxy_registration.server_id": "mcp_test_server",
|
189
|
+
"proxy_registration.server_name": "MCP Test Server",
|
190
|
+
"protocols.allowed_protocols": ["https", "mtls"]
|
191
|
+
})
|
192
|
+
|
193
|
+
# 8. HTTP with Token Auth (for security tests)
|
194
|
+
self.create_config("http_token", {
|
195
|
+
"server.port": 8010,
|
196
|
+
"ssl.enabled": False,
|
197
|
+
"security.enabled": True,
|
198
|
+
"security.auth.enabled": True,
|
199
|
+
"security.auth.methods": ["api_key"],
|
200
|
+
"security.auth.api_keys": {
|
201
|
+
"admin": "admin-secret-key",
|
202
|
+
"user": "user-secret-key"
|
203
|
+
},
|
204
|
+
"proxy_registration.enabled": False,
|
205
|
+
"protocols.allowed_protocols": ["http"]
|
206
|
+
})
|
207
|
+
|
208
|
+
# 9. HTTPS with Token Auth (for security tests)
|
209
|
+
self.create_config("https_token", {
|
210
|
+
"server.port": 8011,
|
211
|
+
"ssl.enabled": True,
|
212
|
+
"ssl.cert_file": "certs/localhost_server.crt",
|
213
|
+
"ssl.key_file": "keys/localhost_server.key",
|
214
|
+
"security.enabled": True,
|
215
|
+
"security.auth.enabled": True,
|
216
|
+
"security.auth.methods": ["api_key"],
|
217
|
+
"security.auth.api_keys": {
|
218
|
+
"admin": "admin-secret-key",
|
219
|
+
"user": "user-secret-key"
|
220
|
+
},
|
221
|
+
"proxy_registration.enabled": False,
|
222
|
+
"protocols.allowed_protocols": ["https"]
|
223
|
+
})
|
224
|
+
|
225
|
+
# 10. Full Featured (everything enabled)
|
226
|
+
self.create_config("full_featured", {
|
227
|
+
"server.port": 8008,
|
228
|
+
"ssl.enabled": True,
|
229
|
+
"ssl.cert_file": "certs/localhost_server.crt",
|
230
|
+
"ssl.key_file": "keys/localhost_server.key",
|
231
|
+
"ssl.ca_cert": "certs/mcp_proxy_adapter_ca_ca.crt",
|
232
|
+
"ssl.verify_client": True,
|
233
|
+
"security.enabled": True,
|
234
|
+
"security.auth.enabled": True,
|
235
|
+
"security.auth.methods": ["certificate", "api_key"],
|
236
|
+
"security.auth.api_keys": {
|
237
|
+
"admin": "admin-secret-key",
|
238
|
+
"user": "user-secret-key"
|
239
|
+
},
|
240
|
+
"security.permissions.enabled": True,
|
241
|
+
"security.permissions.roles_file": "configs/roles.json",
|
242
|
+
"security.rate_limit.enabled": True,
|
243
|
+
"proxy_registration.enabled": True,
|
244
|
+
"proxy_registration.proxy_url": "http://127.0.0.1:3006",
|
245
|
+
"proxy_registration.server_id": "mcp_full_server",
|
246
|
+
"proxy_registration.server_name": "MCP Full Featured Server",
|
247
|
+
"protocols.allowed_protocols": ["http", "https", "mtls", "jsonrpc"]
|
248
|
+
})
|
249
|
+
|
250
|
+
print(f"✅ Created {10} test configurations in {self.output_dir}")
|
251
|
+
|
252
|
+
|
253
|
+
def main():
|
254
|
+
"""Main entry point."""
|
255
|
+
import argparse
|
256
|
+
|
257
|
+
parser = argparse.ArgumentParser(description="Generate test configurations")
|
258
|
+
parser.add_argument(
|
259
|
+
"--comprehensive-config",
|
260
|
+
default="comprehensive_config.json",
|
261
|
+
help="Path to comprehensive configuration file"
|
262
|
+
)
|
263
|
+
parser.add_argument(
|
264
|
+
"--output-dir",
|
265
|
+
default="configs",
|
266
|
+
help="Output directory for test configurations"
|
267
|
+
)
|
268
|
+
parser.add_argument(
|
269
|
+
"--config-name",
|
270
|
+
help="Create a specific configuration (http_simple, https_auth, mtls_with_roles, etc.)"
|
271
|
+
)
|
272
|
+
parser.add_argument(
|
273
|
+
"--modifications",
|
274
|
+
help="JSON string of modifications to apply (for custom configs)"
|
275
|
+
)
|
276
|
+
|
277
|
+
args = parser.parse_args()
|
278
|
+
|
279
|
+
generator = TestConfigGenerator(args.comprehensive_config, args.output_dir)
|
280
|
+
|
281
|
+
if args.config_name:
|
282
|
+
# Create a specific configuration
|
283
|
+
if args.modifications:
|
284
|
+
modifications = json.loads(args.modifications)
|
285
|
+
else:
|
286
|
+
# Use predefined modifications
|
287
|
+
predefined = {
|
288
|
+
"http_simple": {"server.port": 8001, "ssl.enabled": False, "security.enabled": False},
|
289
|
+
"https_simple": {"server.port": 8003, "ssl.enabled": True},
|
290
|
+
"mtls_simple": {"server.port": 8005, "ssl.enabled": True, "ssl.verify_client": True},
|
291
|
+
}
|
292
|
+
modifications = predefined.get(args.config_name, {})
|
293
|
+
|
294
|
+
generator.create_config(args.config_name, modifications)
|
295
|
+
else:
|
296
|
+
# Create all test configurations
|
297
|
+
generator.create_all_test_configs()
|
298
|
+
|
299
|
+
|
300
|
+
if __name__ == "__main__":
|
301
|
+
main()
|