mcp-proxy-adapter 6.4.45__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.
Files changed (144) hide show
  1. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/PKG-INFO +1 -1
  2. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/custom_openapi.py +294 -2
  3. mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/schemas/base_schema.json +114 -0
  4. mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/schemas/openapi_schema.json +314 -0
  5. mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/schemas/roles.json +37 -0
  6. mcp_proxy_adapter-6.4.46/mcp_proxy_adapter/schemas/roles_schema.json +162 -0
  7. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/version.py +1 -1
  8. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter.egg-info/PKG-INFO +1 -1
  9. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter.egg-info/SOURCES.txt +9 -1
  10. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/pyproject.toml +1 -1
  11. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/README.md +0 -0
  12. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/__init__.py +0 -0
  13. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/__main__.py +0 -0
  14. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/__init__.py +0 -0
  15. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/app.py +0 -0
  16. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/handlers.py +0 -0
  17. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/__init__.py +0 -0
  18. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/base.py +0 -0
  19. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/command_permission_middleware.py +0 -0
  20. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/error_handling.py +0 -0
  21. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/factory.py +0 -0
  22. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/logging.py +0 -0
  23. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/performance.py +0 -0
  24. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/protocol_middleware.py +0 -0
  25. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/transport_middleware.py +0 -0
  26. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/unified_security.py +0 -0
  27. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/middleware/user_info_middleware.py +0 -0
  28. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/schemas.py +0 -0
  29. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/tool_integration.py +0 -0
  30. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/api/tools.py +0 -0
  31. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/__init__.py +0 -0
  32. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/auth_validation_command.py +0 -0
  33. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/base.py +0 -0
  34. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/builtin_commands.py +0 -0
  35. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/catalog_manager.py +0 -0
  36. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/cert_monitor_command.py +0 -0
  37. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/certificate_management_command.py +0 -0
  38. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/command_registry.py +0 -0
  39. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/config_command.py +0 -0
  40. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/dependency_container.py +0 -0
  41. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/dependency_manager.py +0 -0
  42. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/echo_command.py +0 -0
  43. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/health_command.py +0 -0
  44. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/help_command.py +0 -0
  45. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/hooks.py +0 -0
  46. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/key_management_command.py +0 -0
  47. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/load_command.py +0 -0
  48. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/plugins_command.py +0 -0
  49. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/protocol_management_command.py +0 -0
  50. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/proxy_registration_command.py +0 -0
  51. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/reload_command.py +0 -0
  52. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/result.py +0 -0
  53. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/role_test_command.py +0 -0
  54. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/roles_management_command.py +0 -0
  55. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/security_command.py +0 -0
  56. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/settings_command.py +0 -0
  57. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/ssl_setup_command.py +0 -0
  58. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/token_management_command.py +0 -0
  59. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/transport_management_command.py +0 -0
  60. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/commands/unload_command.py +0 -0
  61. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/config.py +0 -0
  62. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/__init__.py +0 -0
  63. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/app_factory.py +0 -0
  64. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/app_runner.py +0 -0
  65. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/auth_validator.py +0 -0
  66. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/certificate_utils.py +0 -0
  67. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/client.py +0 -0
  68. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/client_manager.py +0 -0
  69. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/client_security.py +0 -0
  70. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/config_converter.py +0 -0
  71. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/config_validator.py +0 -0
  72. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/crl_utils.py +0 -0
  73. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/errors.py +0 -0
  74. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/logging.py +0 -0
  75. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/mtls_asgi.py +0 -0
  76. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/mtls_asgi_app.py +0 -0
  77. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/mtls_server.py +0 -0
  78. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/protocol_manager.py +0 -0
  79. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/proxy_client.py +0 -0
  80. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/proxy_registration.py +0 -0
  81. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/role_utils.py +0 -0
  82. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/security_adapter.py +0 -0
  83. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/security_factory.py +0 -0
  84. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/security_integration.py +0 -0
  85. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/server_adapter.py +0 -0
  86. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/server_engine.py +0 -0
  87. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/settings.py +0 -0
  88. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/ssl_utils.py +0 -0
  89. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/transport_manager.py +0 -0
  90. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/unified_config_adapter.py +0 -0
  91. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/core/utils.py +0 -0
  92. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/__init__.py +0 -0
  93. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/basic_framework/__init__.py +0 -0
  94. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +0 -0
  95. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +0 -0
  96. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/basic_framework/main.py +0 -0
  97. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/bugfix_certificate_config.py +0 -0
  98. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/cert_manager_bugfix.py +0 -0
  99. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/commands/__init__.py +0 -0
  100. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/config_builder.py +0 -0
  101. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/config_cli.py +0 -0
  102. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/create_test_configs.py +0 -0
  103. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/debug_request_state.py +0 -0
  104. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/debug_role_chain.py +0 -0
  105. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/demo_client.py +0 -0
  106. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/__init__.py +0 -0
  107. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/commands/__init__.py +0 -0
  108. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +0 -0
  109. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +0 -0
  110. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/hooks/__init__.py +0 -0
  111. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +0 -0
  112. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +0 -0
  113. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/main.py +0 -0
  114. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +0 -0
  115. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/generate_all_certificates.py +0 -0
  116. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/generate_certificates_bugfix.py +0 -0
  117. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/generate_certificates_cli.py +0 -0
  118. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/generate_certificates_fixed.py +0 -0
  119. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/generate_certificates_framework.py +0 -0
  120. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/generate_certificates_openssl.py +0 -0
  121. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/proxy_registration_example.py +0 -0
  122. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/required_certificates.py +0 -0
  123. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/run_example.py +0 -0
  124. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/run_full_test_suite.py +0 -0
  125. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/run_proxy_server.py +0 -0
  126. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/run_security_tests_fixed.py +0 -0
  127. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/security_test_client.py +0 -0
  128. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/setup_test_environment.py +0 -0
  129. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/simple_protocol_test.py +0 -0
  130. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/test_config.py +0 -0
  131. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/test_config_builder.py +0 -0
  132. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/test_examples.py +0 -0
  133. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/test_protocol_examples.py +0 -0
  134. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/universal_client.py +0 -0
  135. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/examples/update_config_certificates.py +0 -0
  136. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/main.py +0 -0
  137. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter/openapi.py +0 -0
  138. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter.egg-info/dependency_links.txt +0 -0
  139. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter.egg-info/entry_points.txt +0 -0
  140. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter.egg-info/not-zip-safe +0 -0
  141. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter.egg-info/requires.txt +0 -0
  142. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/mcp_proxy_adapter.egg-info/top_level.txt +0 -0
  143. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/setup.cfg +0 -0
  144. {mcp_proxy_adapter-6.4.45 → mcp_proxy_adapter-6.4.46}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 6.4.45
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
@@ -45,8 +45,300 @@ class CustomOpenAPIGenerator:
45
45
  Returns:
46
46
  Dict containing the base OpenAPI schema.
47
47
  """
48
- with open(self.base_schema_path, "r", encoding="utf-8") as f:
49
- return json.load(f)
48
+ try:
49
+ with open(self.base_schema_path, "r", encoding="utf-8") as f:
50
+ return json.load(f)
51
+ except FileNotFoundError:
52
+ logger.warning(f"Base schema file not found at {self.base_schema_path}, using fallback schema")
53
+ return self._get_fallback_schema()
54
+
55
+ def _get_fallback_schema(self) -> Dict[str, Any]:
56
+ """
57
+ Get a fallback OpenAPI schema when the base schema file is not available.
58
+
59
+ Returns:
60
+ Dict containing a basic OpenAPI schema.
61
+ """
62
+ return {
63
+ "openapi": "3.0.2",
64
+ "info": {
65
+ "title": "MCP Microservice API",
66
+ "description": "API для выполнения команд микросервиса",
67
+ "version": "1.0.0"
68
+ },
69
+ "paths": {
70
+ "/cmd": {
71
+ "post": {
72
+ "summary": "Execute Command",
73
+ "description": "Executes a command via JSON-RPC protocol.",
74
+ "operationId": "execute_command",
75
+ "requestBody": {
76
+ "content": {
77
+ "application/json": {
78
+ "schema": {
79
+ "oneOf": [
80
+ { "$ref": "#/components/schemas/CommandRequest" },
81
+ { "$ref": "#/components/schemas/JsonRpcRequest" }
82
+ ]
83
+ }
84
+ }
85
+ },
86
+ "required": True
87
+ },
88
+ "responses": {
89
+ "200": {
90
+ "description": "Successful Response",
91
+ "content": {
92
+ "application/json": {
93
+ "schema": {
94
+ "oneOf": [
95
+ { "$ref": "#/components/schemas/CommandResponse" },
96
+ { "$ref": "#/components/schemas/JsonRpcResponse" }
97
+ ]
98
+ }
99
+ }
100
+ }
101
+ },
102
+ "422": {
103
+ "description": "Validation Error",
104
+ "content": {
105
+ "application/json": {
106
+ "schema": {
107
+ "$ref": "#/components/schemas/HTTPValidationError"
108
+ }
109
+ }
110
+ }
111
+ }
112
+ }
113
+ }
114
+ },
115
+ "/health": {
116
+ "get": {
117
+ "summary": "Проверить работоспособность сервиса",
118
+ "description": "Возвращает информацию о состоянии сервиса",
119
+ "operationId": "health_check",
120
+ "responses": {
121
+ "200": {
122
+ "description": "Информация о состоянии сервиса",
123
+ "content": {
124
+ "application/json": {
125
+ "schema": {
126
+ "$ref": "#/components/schemas/HealthResponse"
127
+ }
128
+ }
129
+ }
130
+ }
131
+ }
132
+ }
133
+ },
134
+ "/openapi.json": {
135
+ "get": {
136
+ "summary": "Get Openapi Schema",
137
+ "description": "Returns OpenAPI schema.",
138
+ "operationId": "get_openapi_schema_openapi_json_get",
139
+ "responses": {
140
+ "200": {
141
+ "description": "Successful Response",
142
+ "content": {
143
+ "application/json": {
144
+ "schema": {}
145
+ }
146
+ }
147
+ }
148
+ }
149
+ }
150
+ },
151
+ "/api/commands": {
152
+ "get": {
153
+ "summary": "Get Commands",
154
+ "description": "Returns list of available commands with their descriptions.",
155
+ "operationId": "get_commands_api_commands_get",
156
+ "responses": {
157
+ "200": {
158
+ "description": "Successful Response",
159
+ "content": {
160
+ "application/json": {
161
+ "schema": {}
162
+ }
163
+ }
164
+ }
165
+ }
166
+ }
167
+ }
168
+ },
169
+ "components": {
170
+ "schemas": {
171
+ "CommandRequest": {
172
+ "title": "CommandRequest",
173
+ "description": "Запрос на выполнение команды",
174
+ "type": "object",
175
+ "required": ["command"],
176
+ "properties": {
177
+ "command": {
178
+ "title": "Command",
179
+ "description": "Команда для выполнения",
180
+ "type": "string"
181
+ },
182
+ "params": {
183
+ "title": "Parameters",
184
+ "description": "Параметры команды, зависят от типа команды",
185
+ "type": "object",
186
+ "additionalProperties": True
187
+ }
188
+ }
189
+ },
190
+ "CommandResponse": {
191
+ "title": "CommandResponse",
192
+ "description": "Ответ на выполнение команды",
193
+ "type": "object",
194
+ "required": ["result"],
195
+ "properties": {
196
+ "result": {
197
+ "title": "Result",
198
+ "description": "Результат выполнения команды"
199
+ }
200
+ }
201
+ },
202
+ "JsonRpcRequest": {
203
+ "properties": {
204
+ "jsonrpc": {
205
+ "type": "string",
206
+ "title": "Jsonrpc",
207
+ "description": "JSON-RPC version",
208
+ "default": "2.0"
209
+ },
210
+ "method": {
211
+ "type": "string",
212
+ "title": "Method",
213
+ "description": "Method name to call"
214
+ },
215
+ "params": {
216
+ "additionalProperties": True,
217
+ "type": "object",
218
+ "title": "Params",
219
+ "description": "Method parameters",
220
+ "default": {}
221
+ },
222
+ "id": {
223
+ "anyOf": [
224
+ {"type": "string"},
225
+ {"type": "integer"},
226
+ {"type": "null"}
227
+ ],
228
+ "title": "Id",
229
+ "description": "Request identifier"
230
+ }
231
+ },
232
+ "type": "object",
233
+ "required": ["method"],
234
+ "title": "JsonRpcRequest",
235
+ "description": "Base model for JSON-RPC requests."
236
+ },
237
+ "JsonRpcResponse": {
238
+ "properties": {
239
+ "jsonrpc": {
240
+ "type": "string",
241
+ "title": "Jsonrpc",
242
+ "description": "JSON-RPC version",
243
+ "default": "2.0"
244
+ },
245
+ "result": {
246
+ "anyOf": [
247
+ {},
248
+ {"type": "null"}
249
+ ],
250
+ "title": "Result",
251
+ "description": "Method execution result"
252
+ },
253
+ "error": {
254
+ "anyOf": [
255
+ {
256
+ "additionalProperties": True,
257
+ "type": "object"
258
+ },
259
+ {"type": "null"}
260
+ ],
261
+ "title": "Error",
262
+ "description": "Error information"
263
+ },
264
+ "id": {
265
+ "anyOf": [
266
+ {"type": "string"},
267
+ {"type": "integer"},
268
+ {"type": "null"}
269
+ ],
270
+ "title": "Id",
271
+ "description": "Request identifier"
272
+ }
273
+ },
274
+ "type": "object",
275
+ "title": "JsonRpcResponse",
276
+ "description": "Base model for JSON-RPC responses."
277
+ },
278
+ "HealthResponse": {
279
+ "title": "HealthResponse",
280
+ "description": "Информация о состоянии сервиса",
281
+ "type": "object",
282
+ "required": ["status", "model", "version"],
283
+ "properties": {
284
+ "status": {
285
+ "title": "Status",
286
+ "description": "Статус сервиса (ok/error)",
287
+ "type": "string"
288
+ },
289
+ "model": {
290
+ "title": "Model",
291
+ "description": "Текущая активная модель",
292
+ "type": "string"
293
+ },
294
+ "version": {
295
+ "title": "Version",
296
+ "description": "Версия сервиса",
297
+ "type": "string"
298
+ }
299
+ }
300
+ },
301
+ "HTTPValidationError": {
302
+ "properties": {
303
+ "detail": {
304
+ "items": {
305
+ "$ref": "#/components/schemas/ValidationError"
306
+ },
307
+ "type": "array",
308
+ "title": "Detail"
309
+ }
310
+ },
311
+ "type": "object",
312
+ "title": "HTTPValidationError"
313
+ },
314
+ "ValidationError": {
315
+ "properties": {
316
+ "loc": {
317
+ "items": {
318
+ "anyOf": [
319
+ {"type": "string"},
320
+ {"type": "integer"}
321
+ ]
322
+ },
323
+ "type": "array",
324
+ "title": "Location"
325
+ },
326
+ "msg": {
327
+ "type": "string",
328
+ "title": "Message"
329
+ },
330
+ "type": {
331
+ "type": "string",
332
+ "title": "Error Type"
333
+ }
334
+ },
335
+ "type": "object",
336
+ "required": ["loc", "msg", "type"],
337
+ "title": "ValidationError"
338
+ }
339
+ }
340
+ }
341
+ }
50
342
 
51
343
  def _add_commands_to_schema(self, schema: Dict[str, Any]) -> None:
52
344
  """
@@ -0,0 +1,114 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Base Schema",
4
+ "description": "Basic schema for validating commands and results",
5
+ "definitions": {
6
+ "command": {
7
+ "type": "object",
8
+ "properties": {
9
+ "jsonrpc": {
10
+ "type": "string",
11
+ "enum": ["2.0"],
12
+ "description": "JSON-RPC version"
13
+ },
14
+ "method": {
15
+ "type": "string",
16
+ "description": "Command name"
17
+ },
18
+ "params": {
19
+ "type": "object",
20
+ "description": "Command parameters"
21
+ },
22
+ "id": {
23
+ "oneOf": [
24
+ {"type": "string"},
25
+ {"type": "integer"},
26
+ {"type": "null"}
27
+ ],
28
+ "description": "Request ID"
29
+ }
30
+ },
31
+ "required": ["jsonrpc", "method"]
32
+ },
33
+ "success_response": {
34
+ "type": "object",
35
+ "properties": {
36
+ "jsonrpc": {
37
+ "type": "string",
38
+ "enum": ["2.0"],
39
+ "description": "JSON-RPC version"
40
+ },
41
+ "result": {
42
+ "type": "object",
43
+ "properties": {
44
+ "success": {
45
+ "type": "boolean",
46
+ "enum": [true],
47
+ "description": "Success flag"
48
+ },
49
+ "data": {
50
+ "type": "object",
51
+ "description": "Response data"
52
+ },
53
+ "message": {
54
+ "type": "string",
55
+ "description": "Response message"
56
+ }
57
+ },
58
+ "required": ["success"]
59
+ },
60
+ "id": {
61
+ "oneOf": [
62
+ {"type": "string"},
63
+ {"type": "integer"},
64
+ {"type": "null"}
65
+ ],
66
+ "description": "Request ID"
67
+ }
68
+ },
69
+ "required": ["jsonrpc", "result"]
70
+ },
71
+ "error_response": {
72
+ "type": "object",
73
+ "properties": {
74
+ "jsonrpc": {
75
+ "type": "string",
76
+ "enum": ["2.0"],
77
+ "description": "JSON-RPC version"
78
+ },
79
+ "error": {
80
+ "type": "object",
81
+ "properties": {
82
+ "code": {
83
+ "type": "integer",
84
+ "description": "Error code"
85
+ },
86
+ "message": {
87
+ "type": "string",
88
+ "description": "Error message"
89
+ },
90
+ "details": {
91
+ "type": "object",
92
+ "description": "Detailed error information"
93
+ }
94
+ },
95
+ "required": ["code", "message"]
96
+ },
97
+ "id": {
98
+ "oneOf": [
99
+ {"type": "string"},
100
+ {"type": "integer"},
101
+ {"type": "null"}
102
+ ],
103
+ "description": "Request ID"
104
+ }
105
+ },
106
+ "required": ["jsonrpc", "error"]
107
+ }
108
+ },
109
+ "oneOf": [
110
+ {"$ref": "#/definitions/command"},
111
+ {"$ref": "#/definitions/success_response"},
112
+ {"$ref": "#/definitions/error_response"}
113
+ ]
114
+ }