mcp-proxy-adapter 6.4.44__tar.gz → 6.4.46__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.44 → mcp_proxy_adapter-6.4.46}/PKG-INFO +81 -1
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/README.md +80 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/proxy_registration.py +100 -68
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/custom_openapi.py +294 -2
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/examples/bugfix_certificate_config.py +284 -0
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/examples/cert_manager_bugfix.py +203 -0
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/examples/config_builder.py +574 -0
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/examples/config_cli.py +283 -0
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/examples/create_test_configs.py +220 -0
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/examples/generate_certificates_bugfix.py +374 -0
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/examples/generate_certificates_cli.py +406 -0
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/examples/generate_certificates_fixed.py +313 -0
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/examples/generate_certificates_framework.py +366 -0
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/examples/generate_certificates_openssl.py +391 -0
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/examples/required_certificates.py +210 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/run_full_test_suite.py +117 -13
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/run_security_tests_fixed.py +42 -26
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/security_test_client.py +332 -85
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/examples/test_config_builder.py +450 -0
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/examples/update_config_certificates.py +136 -0
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/schemas/base_schema.json +114 -0
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/schemas/openapi_schema.json +314 -0
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/schemas/roles.json +37 -0
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/schemas/roles_schema.json +162 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/version.py +1 -1
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter.egg-info/PKG-INFO +81 -1
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter.egg-info/SOURCES.txt +33 -1
- mcp_proxy_adapter-6.4.46/mcp_proxy_adapter.egg-info/entry_points.txt +12 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/pyproject.toml +11 -1
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/setup.py +7 -0
- mcp_proxy_adapter-6.4.44/mcp_proxy_adapter/examples/create_test_configs.py +0 -317
- mcp_proxy_adapter-6.4.44/mcp_proxy_adapter.egg-info/entry_points.txt +0 -2
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/__main__.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/app.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/handlers.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/base.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/command_permission_middleware.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/error_handling.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/factory.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/logging.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/performance.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/protocol_middleware.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/transport_middleware.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/unified_security.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/user_info_middleware.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/schemas.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/tool_integration.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/tools.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/auth_validation_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/base.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/builtin_commands.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/catalog_manager.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/cert_monitor_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/certificate_management_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/command_registry.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/config_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/dependency_container.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/dependency_manager.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/echo_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/health_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/help_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/hooks.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/key_management_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/load_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/plugins_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/protocol_management_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/proxy_registration_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/reload_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/result.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/role_test_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/roles_management_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/security_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/settings_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/ssl_setup_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/token_management_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/transport_management_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/unload_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/config.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/app_factory.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/app_runner.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/auth_validator.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/certificate_utils.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/client.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/client_manager.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/client_security.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/config_converter.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/config_validator.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/crl_utils.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/errors.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/logging.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/mtls_asgi.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/mtls_asgi_app.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/mtls_server.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/protocol_manager.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/proxy_client.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/role_utils.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/security_adapter.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/security_factory.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/security_integration.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/server_adapter.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/server_engine.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/settings.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/ssl_utils.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/transport_manager.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/unified_config_adapter.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/utils.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/basic_framework/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/basic_framework/main.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/debug_request_state.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/debug_role_chain.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/demo_client.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/commands/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/hooks/__init__.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/main.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/generate_all_certificates.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/proxy_registration_example.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/run_example.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/run_proxy_server.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/setup_test_environment.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/simple_protocol_test.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/test_config.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/test_examples.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/test_protocol_examples.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/universal_client.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/main.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/openapi.py +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter.egg-info/dependency_links.txt +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter.egg-info/not-zip-safe +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter.egg-info/requires.txt +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter.egg-info/top_level.txt +0 -0
- {mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mcp-proxy-adapter
|
3
|
-
Version: 6.4.
|
3
|
+
Version: 6.4.46
|
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
|
@@ -138,6 +138,86 @@ The `mcp_proxy_adapter/examples/` directory contains comprehensive examples for
|
|
138
138
|
- **Security Testing**: Comprehensive security test suite
|
139
139
|
- **Certificate Generation**: SSL/TLS certificate management
|
140
140
|
|
141
|
+
### Test Environment Setup
|
142
|
+
|
143
|
+
The framework includes a comprehensive test environment setup that automatically creates configurations, generates certificates, and runs tests:
|
144
|
+
|
145
|
+
```bash
|
146
|
+
# Create a complete test environment with all configurations and certificates
|
147
|
+
python -m mcp_proxy_adapter.examples.setup_test_environment
|
148
|
+
|
149
|
+
# Create test environment in a specific directory
|
150
|
+
python -m mcp_proxy_adapter.examples.setup_test_environment /path/to/test/dir
|
151
|
+
|
152
|
+
# Skip certificate generation (use existing certificates)
|
153
|
+
python -m mcp_proxy_adapter.examples.setup_test_environment --skip-certs
|
154
|
+
|
155
|
+
# Skip running tests (setup only)
|
156
|
+
python -m mcp_proxy_adapter.examples.setup_test_environment --skip-tests
|
157
|
+
```
|
158
|
+
|
159
|
+
### Configuration Generation
|
160
|
+
|
161
|
+
Generate test configurations from a comprehensive template:
|
162
|
+
|
163
|
+
```bash
|
164
|
+
# Generate all test configurations
|
165
|
+
python -m mcp_proxy_adapter.examples.create_test_configs
|
166
|
+
|
167
|
+
# Generate from specific comprehensive config
|
168
|
+
python -m mcp_proxy_adapter.examples.create_test_configs --comprehensive-config config.json
|
169
|
+
|
170
|
+
# Generate specific configuration types
|
171
|
+
python -m mcp_proxy_adapter.examples.create_test_configs --types http,https,mtls
|
172
|
+
```
|
173
|
+
|
174
|
+
### Certificate Generation
|
175
|
+
|
176
|
+
Generate SSL/TLS certificates for testing:
|
177
|
+
|
178
|
+
```bash
|
179
|
+
# Generate all certificates using mcp_security_framework
|
180
|
+
python -m mcp_proxy_adapter.examples.generate_all_certificates
|
181
|
+
|
182
|
+
# Generate certificates with custom configuration
|
183
|
+
python -m mcp_proxy_adapter.examples.generate_certificates_framework --config cert_config.json
|
184
|
+
```
|
185
|
+
|
186
|
+
### Security Testing
|
187
|
+
|
188
|
+
Run comprehensive security tests:
|
189
|
+
|
190
|
+
```bash
|
191
|
+
# Run all security tests
|
192
|
+
python -m mcp_proxy_adapter.examples.run_security_tests_fixed
|
193
|
+
|
194
|
+
# Run full test suite (includes setup, config generation, certificate generation, and testing)
|
195
|
+
python -m mcp_proxy_adapter.examples.run_full_test_suite
|
196
|
+
```
|
197
|
+
|
198
|
+
### Complete Workflow Example
|
199
|
+
|
200
|
+
```bash
|
201
|
+
# 1. Install the package
|
202
|
+
pip install mcp-proxy-adapter
|
203
|
+
|
204
|
+
# 2. Create test environment (automatically runs tests)
|
205
|
+
python -m mcp_proxy_adapter.examples.setup_test_environment
|
206
|
+
|
207
|
+
# 3. Or run individual steps:
|
208
|
+
# Generate certificates
|
209
|
+
python -m mcp_proxy_adapter.examples.generate_all_certificates
|
210
|
+
|
211
|
+
# Generate configurations
|
212
|
+
python -m mcp_proxy_adapter.examples.create_test_configs
|
213
|
+
|
214
|
+
# Run security tests
|
215
|
+
python -m mcp_proxy_adapter.examples.run_security_tests_fixed
|
216
|
+
|
217
|
+
# 4. Start server with generated configuration
|
218
|
+
python -m mcp_proxy_adapter --config configs/http_simple.json
|
219
|
+
```
|
220
|
+
|
141
221
|
## Development
|
142
222
|
|
143
223
|
The project follows a modular architecture:
|
@@ -79,6 +79,86 @@ The `mcp_proxy_adapter/examples/` directory contains comprehensive examples for
|
|
79
79
|
- **Security Testing**: Comprehensive security test suite
|
80
80
|
- **Certificate Generation**: SSL/TLS certificate management
|
81
81
|
|
82
|
+
### Test Environment Setup
|
83
|
+
|
84
|
+
The framework includes a comprehensive test environment setup that automatically creates configurations, generates certificates, and runs tests:
|
85
|
+
|
86
|
+
```bash
|
87
|
+
# Create a complete test environment with all configurations and certificates
|
88
|
+
python -m mcp_proxy_adapter.examples.setup_test_environment
|
89
|
+
|
90
|
+
# Create test environment in a specific directory
|
91
|
+
python -m mcp_proxy_adapter.examples.setup_test_environment /path/to/test/dir
|
92
|
+
|
93
|
+
# Skip certificate generation (use existing certificates)
|
94
|
+
python -m mcp_proxy_adapter.examples.setup_test_environment --skip-certs
|
95
|
+
|
96
|
+
# Skip running tests (setup only)
|
97
|
+
python -m mcp_proxy_adapter.examples.setup_test_environment --skip-tests
|
98
|
+
```
|
99
|
+
|
100
|
+
### Configuration Generation
|
101
|
+
|
102
|
+
Generate test configurations from a comprehensive template:
|
103
|
+
|
104
|
+
```bash
|
105
|
+
# Generate all test configurations
|
106
|
+
python -m mcp_proxy_adapter.examples.create_test_configs
|
107
|
+
|
108
|
+
# Generate from specific comprehensive config
|
109
|
+
python -m mcp_proxy_adapter.examples.create_test_configs --comprehensive-config config.json
|
110
|
+
|
111
|
+
# Generate specific configuration types
|
112
|
+
python -m mcp_proxy_adapter.examples.create_test_configs --types http,https,mtls
|
113
|
+
```
|
114
|
+
|
115
|
+
### Certificate Generation
|
116
|
+
|
117
|
+
Generate SSL/TLS certificates for testing:
|
118
|
+
|
119
|
+
```bash
|
120
|
+
# Generate all certificates using mcp_security_framework
|
121
|
+
python -m mcp_proxy_adapter.examples.generate_all_certificates
|
122
|
+
|
123
|
+
# Generate certificates with custom configuration
|
124
|
+
python -m mcp_proxy_adapter.examples.generate_certificates_framework --config cert_config.json
|
125
|
+
```
|
126
|
+
|
127
|
+
### Security Testing
|
128
|
+
|
129
|
+
Run comprehensive security tests:
|
130
|
+
|
131
|
+
```bash
|
132
|
+
# Run all security tests
|
133
|
+
python -m mcp_proxy_adapter.examples.run_security_tests_fixed
|
134
|
+
|
135
|
+
# Run full test suite (includes setup, config generation, certificate generation, and testing)
|
136
|
+
python -m mcp_proxy_adapter.examples.run_full_test_suite
|
137
|
+
```
|
138
|
+
|
139
|
+
### Complete Workflow Example
|
140
|
+
|
141
|
+
```bash
|
142
|
+
# 1. Install the package
|
143
|
+
pip install mcp-proxy-adapter
|
144
|
+
|
145
|
+
# 2. Create test environment (automatically runs tests)
|
146
|
+
python -m mcp_proxy_adapter.examples.setup_test_environment
|
147
|
+
|
148
|
+
# 3. Or run individual steps:
|
149
|
+
# Generate certificates
|
150
|
+
python -m mcp_proxy_adapter.examples.generate_all_certificates
|
151
|
+
|
152
|
+
# Generate configurations
|
153
|
+
python -m mcp_proxy_adapter.examples.create_test_configs
|
154
|
+
|
155
|
+
# Run security tests
|
156
|
+
python -m mcp_proxy_adapter.examples.run_security_tests_fixed
|
157
|
+
|
158
|
+
# 4. Start server with generated configuration
|
159
|
+
python -m mcp_proxy_adapter --config configs/http_simple.json
|
160
|
+
```
|
161
|
+
|
82
162
|
## Development
|
83
163
|
|
84
164
|
The project follows a modular architecture:
|
{mcp_proxy_adapter-6.4.44 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/proxy_registration.py
RENAMED
@@ -68,84 +68,116 @@ class ProxyRegistrationManager:
|
|
68
68
|
except Exception:
|
69
69
|
pass
|
70
70
|
|
71
|
-
#
|
72
|
-
self.
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
self.server_id = self.registration_config.get("server_id")
|
79
|
-
if not self.server_id:
|
80
|
-
# Try to get from proxy_info.name as fallback
|
81
|
-
self.server_id = self.registration_config.get("proxy_info", {}).get("name")
|
82
|
-
if not self.server_id:
|
71
|
+
# Check if registration is enabled
|
72
|
+
self.enabled = self.registration_config.get("enabled", False)
|
73
|
+
|
74
|
+
# Basic registration settings - only validate if enabled
|
75
|
+
if self.enabled:
|
76
|
+
self.proxy_url = self.registration_config.get("proxy_url")
|
77
|
+
if not self.proxy_url:
|
83
78
|
raise ValueError(
|
84
|
-
"
|
85
|
-
"Please specify a
|
79
|
+
"proxy_url is required in registration configuration. "
|
80
|
+
"Please specify a valid proxy URL in your configuration."
|
86
81
|
)
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
82
|
+
else:
|
83
|
+
self.proxy_url = None
|
84
|
+
|
85
|
+
if self.enabled:
|
86
|
+
self.server_id = self.registration_config.get("server_id")
|
87
|
+
if not self.server_id:
|
88
|
+
# Try to get from proxy_info.name as fallback
|
89
|
+
self.server_id = self.registration_config.get("proxy_info", {}).get("name")
|
90
|
+
if not self.server_id:
|
91
|
+
raise ValueError(
|
92
|
+
"server_id is required in registration configuration. "
|
93
|
+
"Please specify a server_id or proxy_info.name in your configuration."
|
94
|
+
)
|
95
|
+
self.server_name = self.registration_config.get("server_name")
|
91
96
|
if not self.server_name:
|
97
|
+
# Try to get from proxy_info.name as fallback
|
98
|
+
self.server_name = self.registration_config.get("proxy_info", {}).get("name")
|
99
|
+
if not self.server_name:
|
100
|
+
raise ValueError(
|
101
|
+
"server_name is required in registration configuration. "
|
102
|
+
"Please specify a server_name or proxy_info.name in your configuration."
|
103
|
+
)
|
104
|
+
self.description = self.registration_config.get("description")
|
105
|
+
if not self.description:
|
106
|
+
# Try to get from proxy_info.description as fallback
|
107
|
+
self.description = self.registration_config.get("proxy_info", {}).get("description")
|
108
|
+
if not self.description:
|
109
|
+
raise ValueError(
|
110
|
+
"description is required in registration configuration. "
|
111
|
+
"Please specify a description or proxy_info.description in your configuration."
|
112
|
+
)
|
113
|
+
else:
|
114
|
+
self.server_id = None
|
115
|
+
self.server_name = None
|
116
|
+
self.description = None
|
117
|
+
|
118
|
+
if self.enabled:
|
119
|
+
self.version = self.registration_config.get("version")
|
120
|
+
if not self.version:
|
121
|
+
# Try to get from proxy_info.version as fallback
|
122
|
+
self.version = self.registration_config.get("proxy_info", {}).get("version")
|
123
|
+
if not self.version:
|
124
|
+
raise ValueError(
|
125
|
+
"version is required in registration configuration. "
|
126
|
+
"Please specify a version or proxy_info.version in your configuration."
|
127
|
+
)
|
128
|
+
else:
|
129
|
+
self.version = None
|
130
|
+
|
131
|
+
# Heartbeat settings - only validate if enabled
|
132
|
+
if self.enabled:
|
133
|
+
heartbeat_config = self.registration_config.get("heartbeat", {})
|
134
|
+
self.timeout = heartbeat_config.get("timeout")
|
135
|
+
if self.timeout is None:
|
92
136
|
raise ValueError(
|
93
|
-
"
|
94
|
-
"Please specify a
|
137
|
+
"heartbeat.timeout is required in registration configuration. "
|
138
|
+
"Please specify a timeout value."
|
95
139
|
)
|
96
|
-
|
97
|
-
|
98
|
-
# Try to get from proxy_info.description as fallback
|
99
|
-
self.description = self.registration_config.get("proxy_info", {}).get("description")
|
100
|
-
if not self.description:
|
140
|
+
self.retry_attempts = heartbeat_config.get("retry_attempts")
|
141
|
+
if self.retry_attempts is None:
|
101
142
|
raise ValueError(
|
102
|
-
"
|
103
|
-
"Please specify a
|
143
|
+
"heartbeat.retry_attempts is required in registration configuration. "
|
144
|
+
"Please specify a retry_attempts value."
|
104
145
|
)
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
146
|
+
else:
|
147
|
+
self.timeout = None
|
148
|
+
self.retry_attempts = None
|
149
|
+
|
150
|
+
if self.enabled:
|
151
|
+
self.retry_delay = heartbeat_config.get("retry_delay")
|
152
|
+
if self.retry_delay is None:
|
110
153
|
raise ValueError(
|
111
|
-
"
|
112
|
-
"Please specify a
|
154
|
+
"heartbeat.retry_delay is required in registration configuration. "
|
155
|
+
"Please specify a retry_delay value."
|
113
156
|
)
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
self.
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
"heartbeat.retry_attempts is required in registration configuration. "
|
127
|
-
"Please specify a retry_attempts value."
|
128
|
-
)
|
129
|
-
self.retry_delay = heartbeat_config.get("retry_delay")
|
130
|
-
if self.retry_delay is None:
|
131
|
-
raise ValueError(
|
132
|
-
"heartbeat.retry_delay is required in registration configuration. "
|
133
|
-
"Please specify a retry_delay value."
|
134
|
-
)
|
135
|
-
self.heartbeat_interval = heartbeat_config.get("interval")
|
136
|
-
if self.heartbeat_interval is None:
|
137
|
-
raise ValueError(
|
138
|
-
"heartbeat.interval is required in registration configuration. "
|
139
|
-
"Please specify an interval value."
|
140
|
-
)
|
157
|
+
else:
|
158
|
+
self.retry_delay = None
|
159
|
+
|
160
|
+
if self.enabled:
|
161
|
+
self.heartbeat_interval = heartbeat_config.get("interval")
|
162
|
+
if self.heartbeat_interval is None:
|
163
|
+
raise ValueError(
|
164
|
+
"heartbeat.interval is required in registration configuration. "
|
165
|
+
"Please specify an interval value."
|
166
|
+
)
|
167
|
+
else:
|
168
|
+
self.heartbeat_interval = None
|
141
169
|
|
142
170
|
# Auto registration settings
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
171
|
+
if self.enabled:
|
172
|
+
self.auto_register = self.registration_config.get("enabled")
|
173
|
+
if self.auto_register is None:
|
174
|
+
raise ValueError(
|
175
|
+
"enabled is required in registration configuration. "
|
176
|
+
"Please specify whether registration is enabled (true/false)."
|
177
|
+
)
|
178
|
+
else:
|
179
|
+
self.auto_register = False
|
180
|
+
|
149
181
|
self.auto_unregister = True # Always unregister on shutdown
|
150
182
|
|
151
183
|
# Initialize client security manager
|
@@ -168,7 +200,7 @@ class ProxyRegistrationManager:
|
|
168
200
|
Returns:
|
169
201
|
True if registration is enabled, False otherwise.
|
170
202
|
"""
|
171
|
-
return self.
|
203
|
+
return self.enabled
|
172
204
|
|
173
205
|
def set_server_url(self, server_url: str) -> None:
|
174
206
|
"""
|