mcp-proxy-adapter 4.1.1__py3-none-any.whl → 6.0.1__py3-none-any.whl

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.
Files changed (200) hide show
  1. mcp_proxy_adapter/__main__.py +32 -0
  2. mcp_proxy_adapter/api/app.py +290 -33
  3. mcp_proxy_adapter/api/handlers.py +32 -6
  4. mcp_proxy_adapter/api/middleware/__init__.py +38 -32
  5. mcp_proxy_adapter/api/middleware/command_permission_middleware.py +148 -0
  6. mcp_proxy_adapter/api/middleware/error_handling.py +9 -0
  7. mcp_proxy_adapter/api/middleware/factory.py +243 -0
  8. mcp_proxy_adapter/api/middleware/logging.py +32 -6
  9. mcp_proxy_adapter/api/middleware/protocol_middleware.py +201 -0
  10. mcp_proxy_adapter/api/middleware/transport_middleware.py +122 -0
  11. mcp_proxy_adapter/api/middleware/unified_security.py +197 -0
  12. mcp_proxy_adapter/api/middleware/user_info_middleware.py +158 -0
  13. mcp_proxy_adapter/commands/__init__.py +19 -4
  14. mcp_proxy_adapter/commands/auth_validation_command.py +408 -0
  15. mcp_proxy_adapter/commands/base.py +66 -32
  16. mcp_proxy_adapter/commands/builtin_commands.py +95 -0
  17. mcp_proxy_adapter/commands/catalog_manager.py +838 -0
  18. mcp_proxy_adapter/commands/cert_monitor_command.py +620 -0
  19. mcp_proxy_adapter/commands/certificate_management_command.py +608 -0
  20. mcp_proxy_adapter/commands/command_registry.py +711 -354
  21. mcp_proxy_adapter/commands/dependency_manager.py +245 -0
  22. mcp_proxy_adapter/commands/echo_command.py +81 -0
  23. mcp_proxy_adapter/commands/health_command.py +8 -1
  24. mcp_proxy_adapter/commands/help_command.py +21 -14
  25. mcp_proxy_adapter/commands/hooks.py +200 -167
  26. mcp_proxy_adapter/commands/key_management_command.py +506 -0
  27. mcp_proxy_adapter/commands/load_command.py +176 -0
  28. mcp_proxy_adapter/commands/plugins_command.py +235 -0
  29. mcp_proxy_adapter/commands/protocol_management_command.py +232 -0
  30. mcp_proxy_adapter/commands/proxy_registration_command.py +409 -0
  31. mcp_proxy_adapter/commands/reload_command.py +48 -50
  32. mcp_proxy_adapter/commands/result.py +1 -0
  33. mcp_proxy_adapter/commands/role_test_command.py +141 -0
  34. mcp_proxy_adapter/commands/roles_management_command.py +697 -0
  35. mcp_proxy_adapter/commands/security_command.py +488 -0
  36. mcp_proxy_adapter/commands/ssl_setup_command.py +366 -0
  37. mcp_proxy_adapter/commands/token_management_command.py +529 -0
  38. mcp_proxy_adapter/commands/transport_management_command.py +144 -0
  39. mcp_proxy_adapter/commands/unload_command.py +158 -0
  40. mcp_proxy_adapter/config.py +394 -14
  41. mcp_proxy_adapter/core/app_factory.py +410 -0
  42. mcp_proxy_adapter/core/app_runner.py +272 -0
  43. mcp_proxy_adapter/core/auth_validator.py +606 -0
  44. mcp_proxy_adapter/core/certificate_utils.py +1045 -0
  45. mcp_proxy_adapter/core/client.py +574 -0
  46. mcp_proxy_adapter/core/client_manager.py +284 -0
  47. mcp_proxy_adapter/core/client_security.py +384 -0
  48. mcp_proxy_adapter/core/config_converter.py +405 -0
  49. mcp_proxy_adapter/core/config_validator.py +218 -0
  50. mcp_proxy_adapter/core/logging.py +19 -3
  51. mcp_proxy_adapter/core/mtls_asgi.py +156 -0
  52. mcp_proxy_adapter/core/mtls_asgi_app.py +187 -0
  53. mcp_proxy_adapter/core/protocol_manager.py +385 -0
  54. mcp_proxy_adapter/core/proxy_client.py +602 -0
  55. mcp_proxy_adapter/core/proxy_registration.py +522 -0
  56. mcp_proxy_adapter/core/role_utils.py +426 -0
  57. mcp_proxy_adapter/core/security_adapter.py +370 -0
  58. mcp_proxy_adapter/core/security_factory.py +239 -0
  59. mcp_proxy_adapter/core/security_integration.py +286 -0
  60. mcp_proxy_adapter/core/server_adapter.py +282 -0
  61. mcp_proxy_adapter/core/server_engine.py +270 -0
  62. mcp_proxy_adapter/core/settings.py +1 -0
  63. mcp_proxy_adapter/core/ssl_utils.py +234 -0
  64. mcp_proxy_adapter/core/transport_manager.py +292 -0
  65. mcp_proxy_adapter/core/unified_config_adapter.py +579 -0
  66. mcp_proxy_adapter/custom_openapi.py +22 -11
  67. mcp_proxy_adapter/examples/__init__.py +13 -4
  68. mcp_proxy_adapter/examples/basic_framework/__init__.py +9 -0
  69. mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +4 -0
  70. mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +4 -0
  71. mcp_proxy_adapter/examples/basic_framework/main.py +44 -0
  72. mcp_proxy_adapter/examples/commands/__init__.py +5 -0
  73. mcp_proxy_adapter/examples/create_certificates_simple.py +550 -0
  74. mcp_proxy_adapter/examples/debug_request_state.py +112 -0
  75. mcp_proxy_adapter/examples/debug_role_chain.py +158 -0
  76. mcp_proxy_adapter/examples/demo_client.py +275 -0
  77. mcp_proxy_adapter/examples/examples/basic_framework/__init__.py +9 -0
  78. mcp_proxy_adapter/examples/examples/basic_framework/commands/__init__.py +4 -0
  79. mcp_proxy_adapter/examples/examples/basic_framework/hooks/__init__.py +4 -0
  80. mcp_proxy_adapter/examples/examples/basic_framework/main.py +44 -0
  81. mcp_proxy_adapter/examples/examples/full_application/__init__.py +12 -0
  82. mcp_proxy_adapter/examples/examples/full_application/commands/__init__.py +7 -0
  83. mcp_proxy_adapter/examples/examples/full_application/commands/custom_echo_command.py +80 -0
  84. mcp_proxy_adapter/examples/examples/full_application/commands/dynamic_calculator_command.py +90 -0
  85. mcp_proxy_adapter/examples/examples/full_application/hooks/__init__.py +7 -0
  86. mcp_proxy_adapter/examples/examples/full_application/hooks/application_hooks.py +75 -0
  87. mcp_proxy_adapter/examples/examples/full_application/hooks/builtin_command_hooks.py +71 -0
  88. mcp_proxy_adapter/examples/examples/full_application/main.py +173 -0
  89. mcp_proxy_adapter/examples/examples/full_application/proxy_endpoints.py +154 -0
  90. mcp_proxy_adapter/examples/full_application/__init__.py +12 -0
  91. mcp_proxy_adapter/examples/full_application/commands/__init__.py +7 -0
  92. mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +80 -0
  93. mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +90 -0
  94. mcp_proxy_adapter/examples/full_application/hooks/__init__.py +7 -0
  95. mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +75 -0
  96. mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +71 -0
  97. mcp_proxy_adapter/examples/full_application/main.py +173 -0
  98. mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +154 -0
  99. mcp_proxy_adapter/examples/generate_all_certificates.py +362 -0
  100. mcp_proxy_adapter/examples/generate_certificates.py +177 -0
  101. mcp_proxy_adapter/examples/generate_certificates_and_tokens.py +369 -0
  102. mcp_proxy_adapter/examples/generate_test_configs.py +331 -0
  103. mcp_proxy_adapter/examples/proxy_registration_example.py +334 -0
  104. mcp_proxy_adapter/examples/run_example.py +59 -0
  105. mcp_proxy_adapter/examples/run_full_test_suite.py +318 -0
  106. mcp_proxy_adapter/examples/run_proxy_server.py +146 -0
  107. mcp_proxy_adapter/examples/run_security_tests.py +544 -0
  108. mcp_proxy_adapter/examples/run_security_tests_fixed.py +247 -0
  109. mcp_proxy_adapter/examples/scripts/config_generator.py +740 -0
  110. mcp_proxy_adapter/examples/scripts/create_certificates_simple.py +560 -0
  111. mcp_proxy_adapter/examples/scripts/generate_certificates_and_tokens.py +369 -0
  112. mcp_proxy_adapter/examples/security_test_client.py +782 -0
  113. mcp_proxy_adapter/examples/setup_test_environment.py +328 -0
  114. mcp_proxy_adapter/examples/test_config.py +148 -0
  115. mcp_proxy_adapter/examples/test_config_generator.py +86 -0
  116. mcp_proxy_adapter/examples/test_examples.py +281 -0
  117. mcp_proxy_adapter/examples/universal_client.py +620 -0
  118. mcp_proxy_adapter/main.py +93 -0
  119. mcp_proxy_adapter/utils/config_generator.py +1008 -0
  120. mcp_proxy_adapter/version.py +5 -2
  121. mcp_proxy_adapter-6.0.1.dist-info/METADATA +679 -0
  122. mcp_proxy_adapter-6.0.1.dist-info/RECORD +140 -0
  123. mcp_proxy_adapter-6.0.1.dist-info/entry_points.txt +2 -0
  124. {mcp_proxy_adapter-4.1.1.dist-info → mcp_proxy_adapter-6.0.1.dist-info}/licenses/LICENSE +2 -2
  125. mcp_proxy_adapter/api/middleware/auth.py +0 -146
  126. mcp_proxy_adapter/api/middleware/rate_limit.py +0 -152
  127. mcp_proxy_adapter/commands/reload_settings_command.py +0 -125
  128. mcp_proxy_adapter/examples/README.md +0 -124
  129. mcp_proxy_adapter/examples/basic_server/README.md +0 -60
  130. mcp_proxy_adapter/examples/basic_server/__init__.py +0 -7
  131. mcp_proxy_adapter/examples/basic_server/basic_custom_settings.json +0 -39
  132. mcp_proxy_adapter/examples/basic_server/config.json +0 -35
  133. mcp_proxy_adapter/examples/basic_server/custom_settings_example.py +0 -238
  134. mcp_proxy_adapter/examples/basic_server/server.py +0 -103
  135. mcp_proxy_adapter/examples/custom_commands/README.md +0 -127
  136. mcp_proxy_adapter/examples/custom_commands/__init__.py +0 -27
  137. mcp_proxy_adapter/examples/custom_commands/advanced_hooks.py +0 -250
  138. mcp_proxy_adapter/examples/custom_commands/auto_commands/__init__.py +0 -6
  139. mcp_proxy_adapter/examples/custom_commands/auto_commands/auto_echo_command.py +0 -103
  140. mcp_proxy_adapter/examples/custom_commands/auto_commands/auto_info_command.py +0 -111
  141. mcp_proxy_adapter/examples/custom_commands/config.json +0 -35
  142. mcp_proxy_adapter/examples/custom_commands/custom_health_command.py +0 -169
  143. mcp_proxy_adapter/examples/custom_commands/custom_help_command.py +0 -215
  144. mcp_proxy_adapter/examples/custom_commands/custom_openapi_generator.py +0 -76
  145. mcp_proxy_adapter/examples/custom_commands/custom_settings.json +0 -96
  146. mcp_proxy_adapter/examples/custom_commands/custom_settings_manager.py +0 -241
  147. mcp_proxy_adapter/examples/custom_commands/data_transform_command.py +0 -135
  148. mcp_proxy_adapter/examples/custom_commands/echo_command.py +0 -122
  149. mcp_proxy_adapter/examples/custom_commands/hooks.py +0 -230
  150. mcp_proxy_adapter/examples/custom_commands/intercept_command.py +0 -123
  151. mcp_proxy_adapter/examples/custom_commands/manual_echo_command.py +0 -103
  152. mcp_proxy_adapter/examples/custom_commands/server.py +0 -228
  153. mcp_proxy_adapter/examples/custom_commands/test_hooks.py +0 -176
  154. mcp_proxy_adapter/examples/deployment/README.md +0 -49
  155. mcp_proxy_adapter/examples/deployment/__init__.py +0 -7
  156. mcp_proxy_adapter/examples/deployment/config.development.json +0 -8
  157. mcp_proxy_adapter/examples/deployment/config.json +0 -29
  158. mcp_proxy_adapter/examples/deployment/config.production.json +0 -12
  159. mcp_proxy_adapter/examples/deployment/config.staging.json +0 -11
  160. mcp_proxy_adapter/examples/deployment/docker-compose.yml +0 -31
  161. mcp_proxy_adapter/examples/deployment/run.sh +0 -43
  162. mcp_proxy_adapter/examples/deployment/run_docker.sh +0 -84
  163. mcp_proxy_adapter/schemas/base_schema.json +0 -114
  164. mcp_proxy_adapter/schemas/openapi_schema.json +0 -314
  165. mcp_proxy_adapter/tests/__init__.py +0 -0
  166. mcp_proxy_adapter/tests/api/__init__.py +0 -3
  167. mcp_proxy_adapter/tests/api/test_cmd_endpoint.py +0 -115
  168. mcp_proxy_adapter/tests/api/test_custom_openapi.py +0 -617
  169. mcp_proxy_adapter/tests/api/test_handlers.py +0 -522
  170. mcp_proxy_adapter/tests/api/test_middleware.py +0 -340
  171. mcp_proxy_adapter/tests/api/test_schemas.py +0 -546
  172. mcp_proxy_adapter/tests/api/test_tool_integration.py +0 -531
  173. mcp_proxy_adapter/tests/commands/__init__.py +0 -3
  174. mcp_proxy_adapter/tests/commands/test_config_command.py +0 -211
  175. mcp_proxy_adapter/tests/commands/test_echo_command.py +0 -127
  176. mcp_proxy_adapter/tests/commands/test_help_command.py +0 -136
  177. mcp_proxy_adapter/tests/conftest.py +0 -131
  178. mcp_proxy_adapter/tests/functional/__init__.py +0 -3
  179. mcp_proxy_adapter/tests/functional/test_api.py +0 -253
  180. mcp_proxy_adapter/tests/integration/__init__.py +0 -3
  181. mcp_proxy_adapter/tests/integration/test_cmd_integration.py +0 -129
  182. mcp_proxy_adapter/tests/integration/test_integration.py +0 -255
  183. mcp_proxy_adapter/tests/performance/__init__.py +0 -3
  184. mcp_proxy_adapter/tests/performance/test_performance.py +0 -189
  185. mcp_proxy_adapter/tests/stubs/__init__.py +0 -10
  186. mcp_proxy_adapter/tests/stubs/echo_command.py +0 -104
  187. mcp_proxy_adapter/tests/test_api_endpoints.py +0 -271
  188. mcp_proxy_adapter/tests/test_api_handlers.py +0 -289
  189. mcp_proxy_adapter/tests/test_base_command.py +0 -123
  190. mcp_proxy_adapter/tests/test_batch_requests.py +0 -117
  191. mcp_proxy_adapter/tests/test_command_registry.py +0 -281
  192. mcp_proxy_adapter/tests/test_config.py +0 -127
  193. mcp_proxy_adapter/tests/test_utils.py +0 -65
  194. mcp_proxy_adapter/tests/unit/__init__.py +0 -3
  195. mcp_proxy_adapter/tests/unit/test_base_command.py +0 -436
  196. mcp_proxy_adapter/tests/unit/test_config.py +0 -217
  197. mcp_proxy_adapter-4.1.1.dist-info/METADATA +0 -200
  198. mcp_proxy_adapter-4.1.1.dist-info/RECORD +0 -110
  199. {mcp_proxy_adapter-4.1.1.dist-info → mcp_proxy_adapter-6.0.1.dist-info}/WHEEL +0 -0
  200. {mcp_proxy_adapter-4.1.1.dist-info → mcp_proxy_adapter-6.0.1.dist-info}/top_level.txt +0 -0
@@ -1,124 +0,0 @@
1
- # MCP Proxy Adapter Examples
2
-
3
- This directory contains examples demonstrating different usage patterns of the MCP Proxy Adapter framework.
4
-
5
- ## Examples Overview
6
-
7
- ### 1. Basic Server (`basic_server/`)
8
- Minimal server example with only built-in commands. Demonstrates:
9
- - Basic framework setup
10
- - Built-in command discovery
11
- - Standard JSON-RPC API
12
- - Backward compatibility with property setting
13
-
14
- ### 2. Custom Commands Server (`custom_commands/`)
15
- Advanced server example with custom commands and hooks. Demonstrates:
16
- - Custom command registration
17
- - Basic hooks (before/after execution)
18
- - Global hooks
19
- - Performance and security monitoring
20
- - Advanced hooks with data transformation and command interception
21
-
22
- ## Setting Application Title and Description
23
-
24
- The framework supports two ways to set application properties:
25
-
26
- ### Method 1: During Creation (Recommended)
27
- ```python
28
- from mcp_proxy_adapter import create_app
29
-
30
- app = create_app(
31
- title="My Custom Server",
32
- description="My custom server description",
33
- version="2.0.0"
34
- )
35
- ```
36
-
37
- ### Method 2: After Creation (Backward Compatible)
38
- ```python
39
- from mcp_proxy_adapter import create_app
40
-
41
- app = create_app()
42
-
43
- # Set properties after creation
44
- app.set_properties(
45
- new_title="My Custom Server",
46
- new_description="My custom server description",
47
- new_version="2.0.0"
48
- )
49
- ```
50
-
51
- ## Running Examples
52
-
53
- ### Basic Server
54
- ```bash
55
- cd mcp_proxy_adapter/examples/basic_server
56
- python server.py
57
- ```
58
-
59
- ### Custom Commands Server
60
- ```bash
61
- cd mcp_proxy_adapter/examples/custom_commands
62
- python server.py
63
- ```
64
-
65
- ## Testing Examples
66
-
67
- ### Basic Server Commands
68
- ```bash
69
- # Get help
70
- curl -X POST http://localhost:8000/cmd \
71
- -H "Content-Type: application/json" \
72
- -d '{"jsonrpc": "2.0", "method": "help", "id": 1}'
73
-
74
- # Get health
75
- curl -X POST http://localhost:8000/cmd \
76
- -H "Content-Type: application/json" \
77
- -d '{"jsonrpc": "2.0", "method": "health", "id": 2}'
78
- ```
79
-
80
- ### Custom Commands Server Commands
81
- ```bash
82
- # Test echo command
83
- curl -X POST http://localhost:8000/cmd \
84
- -H "Content-Type: application/json" \
85
- -d '{"jsonrpc": "2.0", "method": "echo", "params": {"message": "Hello!"}, "id": 1}'
86
-
87
- # Test data transformation
88
- curl -X POST http://localhost:8000/cmd \
89
- -H "Content-Type: application/json" \
90
- -d '{"jsonrpc": "2.0", "method": "data_transform", "params": {"data": {"name": "test", "value": 123}}, "id": 2}'
91
-
92
- # Test command interception (bypass_flag=0)
93
- curl -X POST http://localhost:8000/cmd \
94
- -H "Content-Type: application/json" \
95
- -d '{"jsonrpc": "2.0", "method": "intercept", "params": {"bypass_flag": 0}, "id": 3}'
96
-
97
- # Test command execution (bypass_flag=1)
98
- curl -X POST http://localhost:8000/cmd \
99
- -H "Content-Type: application/json" \
100
- -d '{"jsonrpc": "2.0", "method": "intercept", "params": {"bypass_flag": 1}, "id": 4}'
101
- ```
102
-
103
- ## Features Demonstrated
104
-
105
- ### Basic Server
106
- - āœ… Standard JSON-RPC API
107
- - āœ… Built-in command discovery
108
- - āœ… Basic logging
109
- - āœ… OpenAPI schema generation
110
- - āœ… Backward compatibility
111
-
112
- ### Custom Commands Server
113
- - āœ… Custom command registration
114
- - āœ… Command override with priority
115
- - āœ… Basic hooks (before/after)
116
- - āœ… Global hooks
117
- - āœ… Performance monitoring
118
- - āœ… Security monitoring
119
- - āœ… Data transformation hooks
120
- - āœ… Command interception hooks
121
- - āœ… Conditional processing
122
- - āœ… Smart interception
123
- - āœ… Centralized logging
124
- - āœ… Advanced error handling
@@ -1,60 +0,0 @@
1
- # Basic Server Example
2
-
3
- A minimal example of MCP Proxy Adapter server without additional commands.
4
-
5
- ## Features
6
-
7
- This example demonstrates:
8
- - Basic server setup
9
- - Built-in commands only (help, health)
10
- - Default configuration
11
- - No custom commands
12
-
13
- ## Available Commands
14
-
15
- - `help` - Get information about available commands
16
- - `health` - Get server health status
17
-
18
- ## Usage
19
-
20
- ### Run the server
21
-
22
- ```bash
23
- python server.py
24
- ```
25
-
26
- ### Test the server
27
-
28
- ```bash
29
- # Get help
30
- curl -X POST http://localhost:8000/cmd \
31
- -H "Content-Type: application/json" \
32
- -d '{"command": "help"}'
33
-
34
- # Get health status
35
- curl -X POST http://localhost:8000/cmd \
36
- -H "Content-Type: application/json" \
37
- -d '{"command": "health"}'
38
- ```
39
-
40
- ## API Endpoints
41
-
42
- - `POST /cmd` - Execute commands
43
- - `GET /health` - Health check
44
- - `GET /commands` - List available commands
45
- - `GET /docs` - API documentation
46
-
47
- ## Configuration
48
-
49
- The server uses default configuration. You can customize it by:
50
-
51
- 1. Creating a `config.json` file
52
- 2. Setting environment variables
53
- 3. Passing configuration to `create_app()`
54
-
55
- ## Notes
56
-
57
- - This is the simplest possible setup
58
- - No custom commands are registered
59
- - Uses framework defaults
60
- - Good starting point for understanding the framework
@@ -1,7 +0,0 @@
1
- """
2
- Basic Server Example
3
-
4
- A minimal example of MCP Proxy Adapter server without additional commands.
5
- """
6
-
7
- __version__ = "1.0.0"
@@ -1,39 +0,0 @@
1
- {
2
- "application": {
3
- "name": "Basic MCP Proxy Server with Custom Settings",
4
- "version": "1.1.0",
5
- "environment": "development",
6
- "description": "Basic server demonstrating custom settings usage"
7
- },
8
- "features": {
9
- "basic_logging": true,
10
- "simple_commands": true,
11
- "custom_settings_demo": true,
12
- "file_based_config": true
13
- },
14
- "server_info": {
15
- "description": "Basic server with file-based custom settings",
16
- "author": "MCP Proxy Adapter Team",
17
- "contact": "support@example.com",
18
- "documentation": "https://example.com/docs"
19
- },
20
- "demo_settings": {
21
- "welcome_message": "Welcome to Basic MCP Proxy Server with Custom Settings!",
22
- "max_connections": 150,
23
- "timeout": 45,
24
- "debug_mode": true,
25
- "log_level": "INFO"
26
- },
27
- "performance": {
28
- "enable_caching": true,
29
- "cache_ttl": 300,
30
- "max_cache_size": 1000
31
- },
32
- "security": {
33
- "enable_rate_limiting": false,
34
- "max_request_size": "5MB",
35
- "allowed_origins": [
36
- "*"
37
- ]
38
- }
39
- }
@@ -1,35 +0,0 @@
1
- {
2
- "server": {
3
- "host": "127.0.0.1",
4
- "port": 8000,
5
- "debug": true,
6
- "log_level": "DEBUG"
7
- },
8
- "logging": {
9
- "level": "DEBUG",
10
- "log_dir": "./logs/basic_server",
11
- "log_file": "basic_server.log",
12
- "error_log_file": "basic_server_error.log",
13
- "access_log_file": "basic_server_access.log",
14
- "max_file_size": "5MB",
15
- "backup_count": 3,
16
- "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s",
17
- "date_format": "%Y-%m-%d %H:%M:%S",
18
- "console_output": true,
19
- "file_output": true
20
- },
21
- "commands": {
22
- "auto_discovery": true,
23
- "discovery_path": "mcp_proxy_adapter.commands",
24
- "custom_commands_path": null
25
- },
26
- "custom": {
27
- "server_name": "Basic MCP Proxy Server",
28
- "description": "Simple example server with basic configuration",
29
- "features": {
30
- "hooks_enabled": false,
31
- "custom_commands_enabled": false,
32
- "advanced_logging": false
33
- }
34
- }
35
- }
@@ -1,238 +0,0 @@
1
- """
2
- Custom Settings Example for Basic Server
3
-
4
- This example demonstrates how to use custom settings in a basic server.
5
- """
6
-
7
- import json
8
- import os
9
- from mcp_proxy_adapter.core.settings import (
10
- add_custom_settings,
11
- get_custom_setting_value,
12
- set_custom_setting_value,
13
- get_custom_settings
14
- )
15
- from mcp_proxy_adapter.core.logging import get_logger
16
-
17
-
18
- def setup_basic_custom_settings():
19
- """
20
- Setup basic custom settings for the basic server example.
21
-
22
- This demonstrates how to add custom settings to the framework
23
- and access them throughout the application.
24
- """
25
- logger = get_logger("basic_server_custom_settings")
26
-
27
- # Define basic custom settings
28
- basic_settings = {
29
- "application": {
30
- "name": "Basic MCP Proxy Server",
31
- "version": "1.0.0",
32
- "environment": "development"
33
- },
34
- "features": {
35
- "basic_logging": True,
36
- "simple_commands": True,
37
- "custom_settings_demo": True
38
- },
39
- "server_info": {
40
- "description": "Basic server with custom settings example",
41
- "author": "MCP Proxy Adapter Team",
42
- "contact": "support@example.com"
43
- },
44
- "demo_settings": {
45
- "welcome_message": "Welcome to Basic MCP Proxy Server!",
46
- "max_connections": 100,
47
- "timeout": 30,
48
- "debug_mode": True
49
- }
50
- }
51
-
52
- # Add settings to the framework
53
- add_custom_settings(basic_settings)
54
-
55
- logger.info("āœ… Basic custom settings loaded")
56
- logger.info(f"šŸ“‹ Application: {basic_settings['application']['name']} v{basic_settings['application']['version']}")
57
- logger.info(f"šŸ”§ Features: {list(basic_settings['features'].keys())}")
58
-
59
- return basic_settings
60
-
61
-
62
- def demonstrate_custom_settings_usage():
63
- """
64
- Demonstrate how to use custom settings in the application.
65
- """
66
- logger = get_logger("basic_server_custom_settings")
67
-
68
- # Get specific settings
69
- app_name = get_custom_setting_value("application.name", "Unknown")
70
- app_version = get_custom_setting_value("application.version", "0.0.0")
71
- welcome_msg = get_custom_setting_value("demo_settings.welcome_message", "Hello!")
72
- max_connections = get_custom_setting_value("demo_settings.max_connections", 50)
73
-
74
- logger.info(f"šŸ·ļø Application: {app_name} v{app_version}")
75
- logger.info(f"šŸ’¬ Welcome Message: {welcome_msg}")
76
- logger.info(f"šŸ”— Max Connections: {max_connections}")
77
-
78
- # Check if features are enabled
79
- features = get_custom_setting_value("features", {})
80
- enabled_features = [name for name, enabled in features.items() if enabled]
81
-
82
- logger.info(f"āœ… Enabled Features: {', '.join(enabled_features)}")
83
-
84
- # Set a new custom setting
85
- set_custom_setting_value("demo_settings.last_updated", "2025-08-08")
86
- logger.info("šŸ”§ Set new custom setting: demo_settings.last_updated")
87
-
88
- # Get all custom settings
89
- all_custom_settings = get_custom_settings()
90
- logger.info(f"šŸ“Š Total custom settings: {len(all_custom_settings)} sections")
91
-
92
- return {
93
- "app_name": app_name,
94
- "app_version": app_version,
95
- "welcome_message": welcome_msg,
96
- "max_connections": max_connections,
97
- "enabled_features": enabled_features,
98
- "total_settings_sections": len(all_custom_settings)
99
- }
100
-
101
-
102
- def create_custom_settings_file():
103
- """
104
- Create a custom settings JSON file for the basic server.
105
- """
106
- custom_settings = {
107
- "application": {
108
- "name": "Basic MCP Proxy Server with Custom Settings",
109
- "version": "1.1.0",
110
- "environment": "development",
111
- "description": "Basic server demonstrating custom settings usage"
112
- },
113
- "features": {
114
- "basic_logging": True,
115
- "simple_commands": True,
116
- "custom_settings_demo": True,
117
- "file_based_config": True
118
- },
119
- "server_info": {
120
- "description": "Basic server with file-based custom settings",
121
- "author": "MCP Proxy Adapter Team",
122
- "contact": "support@example.com",
123
- "documentation": "https://example.com/docs"
124
- },
125
- "demo_settings": {
126
- "welcome_message": "Welcome to Basic MCP Proxy Server with Custom Settings!",
127
- "max_connections": 150,
128
- "timeout": 45,
129
- "debug_mode": True,
130
- "log_level": "INFO"
131
- },
132
- "performance": {
133
- "enable_caching": True,
134
- "cache_ttl": 300,
135
- "max_cache_size": 1000
136
- },
137
- "security": {
138
- "enable_rate_limiting": False,
139
- "max_request_size": "5MB",
140
- "allowed_origins": ["*"]
141
- }
142
- }
143
-
144
- # Write to file
145
- settings_file = "basic_custom_settings.json"
146
- with open(settings_file, 'w', encoding='utf-8') as f:
147
- json.dump(custom_settings, f, indent=2, ensure_ascii=False)
148
-
149
- print(f"āœ… Created custom settings file: {settings_file}")
150
- return settings_file
151
-
152
-
153
- def load_custom_settings_from_file(file_path: str = "basic_custom_settings.json"):
154
- """
155
- Load custom settings from a JSON file.
156
-
157
- Args:
158
- file_path: Path to the custom settings JSON file
159
- """
160
- logger = get_logger("basic_server_custom_settings")
161
-
162
- try:
163
- if os.path.exists(file_path):
164
- with open(file_path, 'r', encoding='utf-8') as f:
165
- custom_settings = json.load(f)
166
-
167
- # Add to framework
168
- add_custom_settings(custom_settings)
169
-
170
- logger.info(f"šŸ“ Loaded custom settings from: {file_path}")
171
- logger.info(f"šŸ“‹ Application: {custom_settings.get('application', {}).get('name', 'Unknown')}")
172
-
173
- return custom_settings
174
- else:
175
- logger.warning(f"āš ļø Custom settings file not found: {file_path}")
176
- return None
177
-
178
- except Exception as e:
179
- logger.error(f"āŒ Failed to load custom settings from {file_path}: {e}")
180
- return None
181
-
182
-
183
- def print_custom_settings_summary():
184
- """
185
- Print a summary of current custom settings.
186
- """
187
- logger = get_logger("basic_server_custom_settings")
188
-
189
- all_settings = get_custom_settings()
190
-
191
- logger.info("šŸ“Š Custom Settings Summary:")
192
-
193
- # Application info
194
- app_name = get_custom_setting_value("application.name", "Unknown")
195
- app_version = get_custom_setting_value("application.version", "0.0.0")
196
- logger.info(f" Application: {app_name} v{app_version}")
197
-
198
- # Features
199
- features = get_custom_setting_value("features", {})
200
- enabled_features = [name for name, enabled in features.items() if enabled]
201
- logger.info(f" Enabled Features: {', '.join(enabled_features) if enabled_features else 'None'}")
202
-
203
- # Demo settings
204
- welcome_msg = get_custom_setting_value("demo_settings.welcome_message", "Hello!")
205
- max_connections = get_custom_setting_value("demo_settings.max_connections", 50)
206
- logger.info(f" Welcome Message: {welcome_msg}")
207
- logger.info(f" Max Connections: {max_connections}")
208
-
209
- # Performance
210
- caching_enabled = get_custom_setting_value("performance.enable_caching", False)
211
- logger.info(f" Caching: {'Enabled' if caching_enabled else 'Disabled'}")
212
-
213
- # Security
214
- rate_limiting = get_custom_setting_value("security.enable_rate_limiting", False)
215
- logger.info(f" Rate Limiting: {'Enabled' if rate_limiting else 'Disabled'}")
216
-
217
- logger.info(f" Total Settings Sections: {len(all_settings)}")
218
-
219
-
220
- if __name__ == "__main__":
221
- # Setup basic custom settings
222
- setup_basic_custom_settings()
223
-
224
- # Demonstrate usage
225
- demo_info = demonstrate_custom_settings_usage()
226
-
227
- # Create custom settings file
228
- settings_file = create_custom_settings_file()
229
-
230
- # Load from file
231
- load_custom_settings_from_file(settings_file)
232
-
233
- # Print summary
234
- print_custom_settings_summary()
235
-
236
- print("\nšŸŽ‰ Custom settings demonstration completed!")
237
- print(f"šŸ“ Custom settings file: {settings_file}")
238
- print("šŸ”§ You can now use these settings in your basic server application.")
@@ -1,103 +0,0 @@
1
- """
2
- Basic Server Example
3
-
4
- This example demonstrates a minimal MCP Proxy Adapter server
5
- without any additional custom commands.
6
- """
7
-
8
- import asyncio
9
- import uvicorn
10
- import sys
11
- import os
12
- sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', '..'))
13
-
14
- from mcp_proxy_adapter import create_app
15
- from mcp_proxy_adapter.core.logging import get_logger, setup_logging
16
- from mcp_proxy_adapter.core.settings import (
17
- Settings,
18
- get_server_host,
19
- get_server_port,
20
- get_server_debug,
21
- get_setting
22
- )
23
-
24
-
25
- def main():
26
- """Run the basic server example."""
27
- # Load configuration from config.json in the same directory
28
- config_path = os.path.join(os.path.dirname(__file__), "config.json")
29
- if os.path.exists(config_path):
30
- from mcp_proxy_adapter.config import config
31
- config.load_from_file(config_path)
32
- print(f"āœ… Loaded configuration from: {config_path}")
33
- else:
34
- print(f"āš ļø Configuration file not found: {config_path}")
35
- print(" Using default configuration")
36
-
37
- # Setup logging with configuration
38
- setup_logging()
39
- logger = get_logger("basic_server")
40
-
41
- # Get settings from configuration
42
- server_settings = Settings.get_server_settings()
43
- logging_settings = Settings.get_logging_settings()
44
- commands_settings = Settings.get_commands_settings()
45
- custom_settings = Settings.get_custom_setting("custom", {})
46
-
47
- # Print server header and description
48
- print("=" * 80)
49
- print("šŸ”§ BASIC MCP PROXY ADAPTER SERVER")
50
- print("=" * 80)
51
- print("šŸ“‹ Description:")
52
- print(f" {custom_settings.get('description', 'Basic server example')}")
53
- print()
54
- print("āš™ļø Configuration:")
55
- print(f" • Server: {server_settings['host']}:{server_settings['port']}")
56
- print(f" • Debug: {server_settings['debug']}")
57
- print(f" • Log Level: {logging_settings['level']}")
58
- print(f" • Log Directory: {logging_settings['log_dir']}")
59
- print(f" • Auto Discovery: {commands_settings['auto_discovery']}")
60
- print(f" • Discovery Path: {commands_settings['discovery_path']}")
61
- print()
62
- print("šŸ”§ Available Commands:")
63
- print(" • help - Built-in help command")
64
- print(" • health - Built-in health command")
65
- print(" • config - Built-in config command")
66
- print(" • reload - Built-in reload command")
67
- print()
68
- print("šŸ“ Command Discovery:")
69
- print(f" • Commands will be discovered from: {commands_settings['discovery_path']}")
70
- print(" • This path is configured in config.json under 'commands.discovery_path'")
71
- print()
72
- print("šŸŽÆ Features:")
73
- print(" • Standard JSON-RPC API")
74
- print(" • Built-in command discovery")
75
- print(" • Basic logging and error handling")
76
- print(" • OpenAPI schema generation")
77
- print(" • Configuration-driven settings")
78
- print("=" * 80)
79
- print()
80
-
81
- logger.info("Starting Basic MCP Proxy Adapter Server...")
82
- logger.info(f"Server configuration: {server_settings}")
83
- logger.info(f"Logging configuration: {logging_settings}")
84
- logger.info(f"Commands configuration: {commands_settings}")
85
-
86
- # Create application with settings from configuration
87
- app = create_app(
88
- title=custom_settings.get('server_name', 'Basic MCP Proxy Adapter Server'),
89
- description=custom_settings.get('description', 'Minimal server example with only built-in commands'),
90
- version="1.0.0"
91
- )
92
-
93
- # Run the server with configuration settings
94
- uvicorn.run(
95
- app,
96
- host=server_settings['host'],
97
- port=server_settings['port'],
98
- log_level=server_settings['log_level'].lower()
99
- )
100
-
101
-
102
- if __name__ == "__main__":
103
- main()