mcp-proxy-adapter-dev 8.11.16__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 (644) hide show
  1. mcp_proxy_adapter/__init__.py +73 -0
  2. mcp_proxy_adapter/__main__.py +13 -0
  3. mcp_proxy_adapter/api/__init__.py +38 -0
  4. mcp_proxy_adapter/api/app.py +64 -0
  5. mcp_proxy_adapter/api/command_session_service.py +455 -0
  6. mcp_proxy_adapter/api/core/__init__.py +19 -0
  7. mcp_proxy_adapter/api/core/app_factory.py +215 -0
  8. mcp_proxy_adapter/api/core/app_factory_certificates.py +159 -0
  9. mcp_proxy_adapter/api/core/app_factory_config.py +75 -0
  10. mcp_proxy_adapter/api/core/app_factory_routes.py +345 -0
  11. mcp_proxy_adapter/api/core/app_factory_validators.py +165 -0
  12. mcp_proxy_adapter/api/core/lifespan_manager/__init__.py +52 -0
  13. mcp_proxy_adapter/api/core/lifespan_manager/manager.py +354 -0
  14. mcp_proxy_adapter/api/core/lifespan_manager/queue_config.py +37 -0
  15. mcp_proxy_adapter/api/core/lifespan_manager/signal_registration.py +74 -0
  16. mcp_proxy_adapter/api/core/registration/__init__.py +24 -0
  17. mcp_proxy_adapter/api/core/registration/config_parsers.py +247 -0
  18. mcp_proxy_adapter/api/core/registration/context_builder.py +130 -0
  19. mcp_proxy_adapter/api/core/registration/helpers.py +36 -0
  20. mcp_proxy_adapter/api/core/registration/metadata_builders.py +117 -0
  21. mcp_proxy_adapter/api/core/registration/models.py +42 -0
  22. mcp_proxy_adapter/api/core/registration/resolvers.py +195 -0
  23. mcp_proxy_adapter/api/core/registration/url_builders.py +122 -0
  24. mcp_proxy_adapter/api/core/registration_context.py +30 -0
  25. mcp_proxy_adapter/api/core/registration_manager/__init__.py +31 -0
  26. mcp_proxy_adapter/api/core/registration_manager/helpers.py +307 -0
  27. mcp_proxy_adapter/api/core/registration_manager/manager.py +584 -0
  28. mcp_proxy_adapter/api/core/registration_manager/status.py +152 -0
  29. mcp_proxy_adapter/api/core/registration_tasks.py +387 -0
  30. mcp_proxy_adapter/api/core/ssl_context_factory.py +99 -0
  31. mcp_proxy_adapter/api/execute_async_contract.py +124 -0
  32. mcp_proxy_adapter/api/handlers/__init__.py +335 -0
  33. mcp_proxy_adapter/api/handlers/command_execution.py +709 -0
  34. mcp_proxy_adapter/api/handlers/health.py +157 -0
  35. mcp_proxy_adapter/api/handlers/jsonrpc.py +207 -0
  36. mcp_proxy_adapter/api/handlers/transfer_notify.py +313 -0
  37. mcp_proxy_adapter/api/handlers/transfer_sessions.py +287 -0
  38. mcp_proxy_adapter/api/handlers_async.py +233 -0
  39. mcp_proxy_adapter/api/health_provider.py +44 -0
  40. mcp_proxy_adapter/api/jsonrpc_job_lifecycle.py +165 -0
  41. mcp_proxy_adapter/api/jsonrpc_job_status.py +94 -0
  42. mcp_proxy_adapter/api/middleware/__init__.py +14 -0
  43. mcp_proxy_adapter/api/middleware/command_permission_middleware.py +73 -0
  44. mcp_proxy_adapter/api/middleware/request_logging.py +153 -0
  45. mcp_proxy_adapter/api/middleware/unified_security.py +367 -0
  46. mcp_proxy_adapter/api/openapi/__init__.py +18 -0
  47. mcp_proxy_adapter/api/openapi/command_integration.py +107 -0
  48. mcp_proxy_adapter/api/openapi/openapi_generator.py +138 -0
  49. mcp_proxy_adapter/api/openapi/openapi_registry.py +55 -0
  50. mcp_proxy_adapter/api/public_downloads.py +68 -0
  51. mcp_proxy_adapter/api/schemas.py +290 -0
  52. mcp_proxy_adapter/api/tool_integration.py +124 -0
  53. mcp_proxy_adapter/api/tools.py +244 -0
  54. mcp_proxy_adapter/api/transfer_session_service.py +329 -0
  55. mcp_proxy_adapter/api/ws_endpoint.py +653 -0
  56. mcp_proxy_adapter/api/ws_identity.py +111 -0
  57. mcp_proxy_adapter/cli/__init__.py +12 -0
  58. mcp_proxy_adapter/cli/commands/__init__.py +14 -0
  59. mcp_proxy_adapter/cli/commands/client.py +137 -0
  60. mcp_proxy_adapter/cli/commands/config_docs/__init__.py +23 -0
  61. mcp_proxy_adapter/cli/commands/config_docs/cli.py +63 -0
  62. mcp_proxy_adapter/cli/commands/config_docs/declared_settings.py +45 -0
  63. mcp_proxy_adapter/cli/commands/config_docs/render.py +58 -0
  64. mcp_proxy_adapter/cli/commands/config_docs/sections/__init__.py +61 -0
  65. mcp_proxy_adapter/cli/commands/config_docs/sections/_chunk.py +19 -0
  66. mcp_proxy_adapter/cli/commands/config_docs/sections/authentication.py +127 -0
  67. mcp_proxy_adapter/cli/commands/config_docs/sections/best_practices.py +166 -0
  68. mcp_proxy_adapter/cli/commands/config_docs/sections/common_patterns.py +154 -0
  69. mcp_proxy_adapter/cli/commands/config_docs/sections/overview.py +135 -0
  70. mcp_proxy_adapter/cli/commands/config_docs/sections/queue_manager.py +140 -0
  71. mcp_proxy_adapter/cli/commands/config_docs/sections/registration.py +212 -0
  72. mcp_proxy_adapter/cli/commands/config_docs/sections/server.py +193 -0
  73. mcp_proxy_adapter/cli/commands/config_docs/sections/troubleshooting.py +215 -0
  74. mcp_proxy_adapter/cli/commands/config_generate.py +95 -0
  75. mcp_proxy_adapter/cli/commands/config_generate_parts/__init__.py +1 -0
  76. mcp_proxy_adapter/cli/commands/config_generate_parts/arguments.py +44 -0
  77. mcp_proxy_adapter/cli/commands/config_generate_parts/arguments_core.py +141 -0
  78. mcp_proxy_adapter/cli/commands/config_generate_parts/arguments_queue.py +140 -0
  79. mcp_proxy_adapter/cli/commands/config_generate_parts/arguments_validation.py +142 -0
  80. mcp_proxy_adapter/cli/commands/config_generate_parts/generation.py +365 -0
  81. mcp_proxy_adapter/cli/commands/config_generate_parts/parsing.py +122 -0
  82. mcp_proxy_adapter/cli/commands/config_validate.py +154 -0
  83. mcp_proxy_adapter/cli/commands/info.py +297 -0
  84. mcp_proxy_adapter/cli/commands/server.py +361 -0
  85. mcp_proxy_adapter/cli/commands/sets.py +165 -0
  86. mcp_proxy_adapter/cli/commands/standalone_entry.py +25 -0
  87. mcp_proxy_adapter/cli/commands/testconfig.py +205 -0
  88. mcp_proxy_adapter/cli/examples/__init__.py +9 -0
  89. mcp_proxy_adapter/cli/main.py +75 -0
  90. mcp_proxy_adapter/cli/parser.py +244 -0
  91. mcp_proxy_adapter/cli/validators.py +389 -0
  92. mcp_proxy_adapter/client/jsonrpc_client/__init__.py +139 -0
  93. mcp_proxy_adapter/client/jsonrpc_client/client.py +257 -0
  94. mcp_proxy_adapter/client/jsonrpc_client/command_api.py +369 -0
  95. mcp_proxy_adapter/client/jsonrpc_client/command_api_bases/__init__.py +1 -0
  96. mcp_proxy_adapter/client/jsonrpc_client/command_api_bases/async_base.py +241 -0
  97. mcp_proxy_adapter/client/jsonrpc_client/command_api_bases/basic_base.py +150 -0
  98. mcp_proxy_adapter/client/jsonrpc_client/command_api_bases/catalog_base.py +178 -0
  99. mcp_proxy_adapter/client/jsonrpc_client/command_api_bases/constants.py +38 -0
  100. mcp_proxy_adapter/client/jsonrpc_client/command_api_bases/helpers.py +66 -0
  101. mcp_proxy_adapter/client/jsonrpc_client/command_api_bases/queue_base.py +137 -0
  102. mcp_proxy_adapter/client/jsonrpc_client/exceptions/__init__.py +70 -0
  103. mcp_proxy_adapter/client/jsonrpc_client/exceptions/base.py +102 -0
  104. mcp_proxy_adapter/client/jsonrpc_client/exceptions/classification.py +143 -0
  105. mcp_proxy_adapter/client/jsonrpc_client/exceptions/request_errors.py +169 -0
  106. mcp_proxy_adapter/client/jsonrpc_client/exceptions/schema_errors.py +90 -0
  107. mcp_proxy_adapter/client/jsonrpc_client/exceptions/transfer_errors.py +48 -0
  108. mcp_proxy_adapter/client/jsonrpc_client/exceptions/transport_errors.py +153 -0
  109. mcp_proxy_adapter/client/jsonrpc_client/execution_status_observer.py +66 -0
  110. mcp_proxy_adapter/client/jsonrpc_client/job_event_registry.py +322 -0
  111. mcp_proxy_adapter/client/jsonrpc_client/job_tracking_mixin.py +206 -0
  112. mcp_proxy_adapter/client/jsonrpc_client/job_tracking_types.py +135 -0
  113. mcp_proxy_adapter/client/jsonrpc_client/openapi_validator.py +127 -0
  114. mcp_proxy_adapter/client/jsonrpc_client/operation_state.py +221 -0
  115. mcp_proxy_adapter/client/jsonrpc_client/proxy_api.py +93 -0
  116. mcp_proxy_adapter/client/jsonrpc_client/proxy_api_bases/__init__.py +1 -0
  117. mcp_proxy_adapter/client/jsonrpc_client/proxy_api_bases/client_base.py +117 -0
  118. mcp_proxy_adapter/client/jsonrpc_client/proxy_api_bases/lifecycle_base.py +222 -0
  119. mcp_proxy_adapter/client/jsonrpc_client/proxy_api_bases/register_base.py +230 -0
  120. mcp_proxy_adapter/client/jsonrpc_client/proxy_api_bases/uuid_base.py +95 -0
  121. mcp_proxy_adapter/client/jsonrpc_client/queue_api.py +302 -0
  122. mcp_proxy_adapter/client/jsonrpc_client/queue_status.py +192 -0
  123. mcp_proxy_adapter/client/jsonrpc_client/schema_generator.py +143 -0
  124. mcp_proxy_adapter/client/jsonrpc_client/schema_generator_bases/__init__.py +1 -0
  125. mcp_proxy_adapter/client/jsonrpc_client/schema_generator_bases/models.py +45 -0
  126. mcp_proxy_adapter/client/jsonrpc_client/schema_generator_bases/parse_base.py +215 -0
  127. mcp_proxy_adapter/client/jsonrpc_client/schema_generator_bases/validate_base.py +181 -0
  128. mcp_proxy_adapter/client/jsonrpc_client/transfer_integrity.py +57 -0
  129. mcp_proxy_adapter/client/jsonrpc_client/transport/__init__.py +161 -0
  130. mcp_proxy_adapter/client/jsonrpc_client/transport/constants.py +30 -0
  131. mcp_proxy_adapter/client/jsonrpc_client/transport/helpers.py +118 -0
  132. mcp_proxy_adapter/client/jsonrpc_client/transport/http_base.py +325 -0
  133. mcp_proxy_adapter/client/jsonrpc_client/transport/rpc_base.py +311 -0
  134. mcp_proxy_adapter/client/jsonrpc_client/transport/tls_base.py +295 -0
  135. mcp_proxy_adapter/client/jsonrpc_client/transport/transfer_base.py +282 -0
  136. mcp_proxy_adapter/client/jsonrpc_client/ws_command_session.py +230 -0
  137. mcp_proxy_adapter/client/jsonrpc_client/ws_command_session_bases/__init__.py +1 -0
  138. mcp_proxy_adapter/client/jsonrpc_client/ws_command_session_bases/core_base.py +154 -0
  139. mcp_proxy_adapter/client/jsonrpc_client/ws_command_session_bases/helpers.py +72 -0
  140. mcp_proxy_adapter/client/jsonrpc_client/ws_command_session_bases/wait_base.py +279 -0
  141. mcp_proxy_adapter/client/jsonrpc_client/ws_job_status.py +337 -0
  142. mcp_proxy_adapter/client/jsonrpc_client/ws_job_status_parts/__init__.py +1 -0
  143. mcp_proxy_adapter/client/jsonrpc_client/ws_job_status_parts/channel.py +159 -0
  144. mcp_proxy_adapter/client/jsonrpc_client/ws_job_status_parts/command_channel.py +154 -0
  145. mcp_proxy_adapter/client/jsonrpc_client/ws_job_status_parts/helpers.py +76 -0
  146. mcp_proxy_adapter/client/proxy.py +124 -0
  147. mcp_proxy_adapter/commands/__init__.py +27 -0
  148. mcp_proxy_adapter/commands/base.py +998 -0
  149. mcp_proxy_adapter/commands/builtin_commands.py +186 -0
  150. mcp_proxy_adapter/commands/command_help_info.py +101 -0
  151. mcp_proxy_adapter/commands/command_registry/__init__.py +55 -0
  152. mcp_proxy_adapter/commands/command_registry/builtins_part.py +206 -0
  153. mcp_proxy_adapter/commands/command_registry/facade.py +310 -0
  154. mcp_proxy_adapter/commands/command_registry/lifecycle_part.py +232 -0
  155. mcp_proxy_adapter/commands/command_registry/loader.py +145 -0
  156. mcp_proxy_adapter/commands/command_registry/mutations_part.py +228 -0
  157. mcp_proxy_adapter/commands/command_registry/part_base.py +59 -0
  158. mcp_proxy_adapter/commands/command_registry/queries_part.py +304 -0
  159. mcp_proxy_adapter/commands/config_command.py +208 -0
  160. mcp_proxy_adapter/commands/dependency_container.py +35 -0
  161. mcp_proxy_adapter/commands/echo_command.py +97 -0
  162. mcp_proxy_adapter/commands/health_command.py +162 -0
  163. mcp_proxy_adapter/commands/help_command.py +296 -0
  164. mcp_proxy_adapter/commands/hooks.py +590 -0
  165. mcp_proxy_adapter/commands/job_metadata.py +26 -0
  166. mcp_proxy_adapter/commands/load_command.py +134 -0
  167. mcp_proxy_adapter/commands/nested_validation.py +185 -0
  168. mcp_proxy_adapter/commands/plugins_command.py +250 -0
  169. mcp_proxy_adapter/commands/proxy_registration_command.py +475 -0
  170. mcp_proxy_adapter/commands/queue/__init__.py +83 -0
  171. mcp_proxy_adapter/commands/queue/add_job_command.py +358 -0
  172. mcp_proxy_adapter/commands/queue/command_execution_diagnostics.py +100 -0
  173. mcp_proxy_adapter/commands/queue/delete_job_command.py +92 -0
  174. mcp_proxy_adapter/commands/queue/get_logs_command.py +90 -0
  175. mcp_proxy_adapter/commands/queue/get_status_command.py +105 -0
  176. mcp_proxy_adapter/commands/queue/health_command.py +44 -0
  177. mcp_proxy_adapter/commands/queue/job_domain_errors.py +117 -0
  178. mcp_proxy_adapter/commands/queue/job_params.py +163 -0
  179. mcp_proxy_adapter/commands/queue/jobs/__init__.py +41 -0
  180. mcp_proxy_adapter/commands/queue/jobs/basic_jobs.py +205 -0
  181. mcp_proxy_adapter/commands/queue/jobs/command_execution_job.py +198 -0
  182. mcp_proxy_adapter/commands/queue/jobs/command_restore_base.py +48 -0
  183. mcp_proxy_adapter/commands/queue/jobs/command_run_base.py +389 -0
  184. mcp_proxy_adapter/commands/queue/jobs/job_helpers.py +80 -0
  185. mcp_proxy_adapter/commands/queue/jobs/long_jobs.py +257 -0
  186. mcp_proxy_adapter/commands/queue/list_jobs_command.py +127 -0
  187. mcp_proxy_adapter/commands/queue/start_job_command.py +97 -0
  188. mcp_proxy_adapter/commands/queue/stop_job_command.py +107 -0
  189. mcp_proxy_adapter/commands/queue_commands.py +49 -0
  190. mcp_proxy_adapter/commands/registration_status_command.py +83 -0
  191. mcp_proxy_adapter/commands/reload_command.py +183 -0
  192. mcp_proxy_adapter/commands/result.py +201 -0
  193. mcp_proxy_adapter/commands/result_helpers.py +43 -0
  194. mcp_proxy_adapter/commands/role_test_command.py +119 -0
  195. mcp_proxy_adapter/commands/roles_management_command/__init__.py +58 -0
  196. mcp_proxy_adapter/commands/roles_management_command/actions_part.py +400 -0
  197. mcp_proxy_adapter/commands/roles_management_command/dispatch_part.py +239 -0
  198. mcp_proxy_adapter/commands/roles_management_command/facade.py +233 -0
  199. mcp_proxy_adapter/commands/roles_management_command/part_base.py +61 -0
  200. mcp_proxy_adapter/commands/roles_management_command/results.py +105 -0
  201. mcp_proxy_adapter/commands/roles_management_command/storage_part.py +181 -0
  202. mcp_proxy_adapter/commands/schema_helpers.py +45 -0
  203. mcp_proxy_adapter/commands/settings_command.py +205 -0
  204. mcp_proxy_adapter/commands/transfer_command_support.py +83 -0
  205. mcp_proxy_adapter/commands/transfer_download_begin_command.py +245 -0
  206. mcp_proxy_adapter/commands/transfer_download_status_command.py +121 -0
  207. mcp_proxy_adapter/commands/transfer_schema_support.py +96 -0
  208. mcp_proxy_adapter/commands/transfer_upload_begin_command.py +254 -0
  209. mcp_proxy_adapter/commands/transfer_upload_complete_command.py +161 -0
  210. mcp_proxy_adapter/commands/transfer_upload_status_command.py +122 -0
  211. mcp_proxy_adapter/commands/transport_management_command.py +144 -0
  212. mcp_proxy_adapter/commands/unload_command.py +109 -0
  213. mcp_proxy_adapter/config.py +30 -0
  214. mcp_proxy_adapter/core/__init__.py +8 -0
  215. mcp_proxy_adapter/core/app_factory/__init__.py +17 -0
  216. mcp_proxy_adapter/core/app_factory/app_creator.py +66 -0
  217. mcp_proxy_adapter/core/app_factory/config_loader.py +125 -0
  218. mcp_proxy_adapter/core/app_factory/factory.py +158 -0
  219. mcp_proxy_adapter/core/app_factory/server_runner.py +152 -0
  220. mcp_proxy_adapter/core/app_factory/ssl_config.py +194 -0
  221. mcp_proxy_adapter/core/app_factory/validators.py +57 -0
  222. mcp_proxy_adapter/core/async_context.py +28 -0
  223. mcp_proxy_adapter/core/auth/__init__.py +18 -0
  224. mcp_proxy_adapter/core/auth/certificate_validator.py +239 -0
  225. mcp_proxy_adapter/core/auth/models.py +47 -0
  226. mcp_proxy_adapter/core/auth/mtls_validator.py +84 -0
  227. mcp_proxy_adapter/core/auth/token_validator.py +114 -0
  228. mcp_proxy_adapter/core/auth_validator.py +137 -0
  229. mcp_proxy_adapter/core/certificate/__init__.py +20 -0
  230. mcp_proxy_adapter/core/certificate/certificate_validator/__init__.py +55 -0
  231. mcp_proxy_adapter/core/certificate/certificate_validator/facade.py +340 -0
  232. mcp_proxy_adapter/core/certificate/certificate_validator/info_part.py +130 -0
  233. mcp_proxy_adapter/core/certificate/certificate_validator/key_part.py +146 -0
  234. mcp_proxy_adapter/core/certificate/certificate_validator/part_base.py +65 -0
  235. mcp_proxy_adapter/core/certificate/certificate_validator/revocation_part.py +112 -0
  236. mcp_proxy_adapter/core/client/__init__.py +11 -0
  237. mcp_proxy_adapter/core/client/auth_handler.py +120 -0
  238. mcp_proxy_adapter/core/client/client.py +314 -0
  239. mcp_proxy_adapter/core/client/factory.py +110 -0
  240. mcp_proxy_adapter/core/client/request_handler.py +122 -0
  241. mcp_proxy_adapter/core/client/ssl_handler.py +105 -0
  242. mcp_proxy_adapter/core/client_manager.py +281 -0
  243. mcp_proxy_adapter/core/client_security/__init__.py +53 -0
  244. mcp_proxy_adapter/core/client_security/auth_part.py +227 -0
  245. mcp_proxy_adapter/core/client_security/cert_part.py +124 -0
  246. mcp_proxy_adapter/core/client_security/facade.py +181 -0
  247. mcp_proxy_adapter/core/client_security/part_base.py +62 -0
  248. mcp_proxy_adapter/core/client_security/ssl_part.py +275 -0
  249. mcp_proxy_adapter/core/config/__init__.py +29 -0
  250. mcp_proxy_adapter/core/config/config.py +963 -0
  251. mcp_proxy_adapter/core/config/config_factory.py +16 -0
  252. mcp_proxy_adapter/core/config/config_graph.py +250 -0
  253. mcp_proxy_adapter/core/config/config_loader.py +70 -0
  254. mcp_proxy_adapter/core/config/env_placeholders.py +52 -0
  255. mcp_proxy_adapter/core/config/feature_manager.py +109 -0
  256. mcp_proxy_adapter/core/config/orchestration_section.py +119 -0
  257. mcp_proxy_adapter/core/config/reload_violations.py +269 -0
  258. mcp_proxy_adapter/core/config/section_validators.py +190 -0
  259. mcp_proxy_adapter/core/config/settings_declaration.py +255 -0
  260. mcp_proxy_adapter/core/config/simple_config.py +893 -0
  261. mcp_proxy_adapter/core/config/simple_config_generator.py +917 -0
  262. mcp_proxy_adapter/core/config/simple_config_validator.py +333 -0
  263. mcp_proxy_adapter/core/config/validators/__init__.py +29 -0
  264. mcp_proxy_adapter/core/config/validators/auth_validator.py +146 -0
  265. mcp_proxy_adapter/core/config/validators/base_validator.py +102 -0
  266. mcp_proxy_adapter/core/config/validators/certificate_validator_helper.py +114 -0
  267. mcp_proxy_adapter/core/config/validators/client_validator.py +131 -0
  268. mcp_proxy_adapter/core/config/validators/job_push_validator.py +55 -0
  269. mcp_proxy_adapter/core/config/validators/queue_manager_validator.py +133 -0
  270. mcp_proxy_adapter/core/config/validators/registration_validator.py +366 -0
  271. mcp_proxy_adapter/core/config/validators/server_validation_validator.py +154 -0
  272. mcp_proxy_adapter/core/config/validators/server_validator.py +326 -0
  273. mcp_proxy_adapter/core/config/validators/ssl_validator.py +221 -0
  274. mcp_proxy_adapter/core/config/websocket_validator.py +99 -0
  275. mcp_proxy_adapter/core/config_validator.py +29 -0
  276. mcp_proxy_adapter/core/constants.py +201 -0
  277. mcp_proxy_adapter/core/crl_utils.py +338 -0
  278. mcp_proxy_adapter/core/date_utils.py +119 -0
  279. mcp_proxy_adapter/core/delivery/__init__.py +35 -0
  280. mcp_proxy_adapter/core/delivery/contracts.py +57 -0
  281. mcp_proxy_adapter/core/delivery/exceptions.py +19 -0
  282. mcp_proxy_adapter/core/delivery/terminal_replay_store.py +129 -0
  283. mcp_proxy_adapter/core/delivery/ws_delivery_manager.py +117 -0
  284. mcp_proxy_adapter/core/domain_errors.py +189 -0
  285. mcp_proxy_adapter/core/error_handling.py +98 -0
  286. mcp_proxy_adapter/core/errors/__init__.py +259 -0
  287. mcp_proxy_adapter/core/errors/config_errors.py +142 -0
  288. mcp_proxy_adapter/core/file_utils.py +94 -0
  289. mcp_proxy_adapter/core/job_manager.py +115 -0
  290. mcp_proxy_adapter/core/job_push/__init__.py +124 -0
  291. mcp_proxy_adapter/core/job_push/caller_loss.py +89 -0
  292. mcp_proxy_adapter/core/job_push/engine.py +282 -0
  293. mcp_proxy_adapter/core/job_push/events/__init__.py +111 -0
  294. mcp_proxy_adapter/core/job_push/events/builders.py +282 -0
  295. mcp_proxy_adapter/core/job_push/events/command_session_payloads.py +50 -0
  296. mcp_proxy_adapter/core/job_push/events/delivery_payloads.py +52 -0
  297. mcp_proxy_adapter/core/job_push/events/event_names.py +163 -0
  298. mcp_proxy_adapter/core/job_push/events/job_payloads.py +83 -0
  299. mcp_proxy_adapter/core/job_push/events/transfer_payloads.py +72 -0
  300. mcp_proxy_adapter/core/job_push/execute_async_deliver_guard.py +55 -0
  301. mcp_proxy_adapter/core/job_push/finish_signal.py +91 -0
  302. mcp_proxy_adapter/core/job_push/hooks.py +53 -0
  303. mcp_proxy_adapter/core/job_push/job_status_accumulator.py +376 -0
  304. mcp_proxy_adapter/core/job_push/lifespan_wiring.py +252 -0
  305. mcp_proxy_adapter/core/job_push/notifier.py +139 -0
  306. mcp_proxy_adapter/core/job_push/notifier_policy.py +38 -0
  307. mcp_proxy_adapter/core/job_push/queue_custom_push.py +67 -0
  308. mcp_proxy_adapter/core/job_push/subscriptions.py +160 -0
  309. mcp_proxy_adapter/core/job_push/transfer_correlation.py +47 -0
  310. mcp_proxy_adapter/core/job_push/transfer_push.py +135 -0
  311. mcp_proxy_adapter/core/json_utils.py +81 -0
  312. mcp_proxy_adapter/core/logging/__init__.py +42 -0
  313. mcp_proxy_adapter/core/logging/formatters.py +55 -0
  314. mcp_proxy_adapter/core/logging/global_logger.py +41 -0
  315. mcp_proxy_adapter/core/logging/request_logger.py +50 -0
  316. mcp_proxy_adapter/core/logging/setup.py +190 -0
  317. mcp_proxy_adapter/core/logging/worker.py +107 -0
  318. mcp_proxy_adapter/core/mtls_asgi_app.py +216 -0
  319. mcp_proxy_adapter/core/mtls_server.py +180 -0
  320. mcp_proxy_adapter/core/orchestration/__init__.py +90 -0
  321. mcp_proxy_adapter/core/orchestration/candidate_validator.py +196 -0
  322. mcp_proxy_adapter/core/orchestration/catalog_builder.py +136 -0
  323. mcp_proxy_adapter/core/orchestration/catalog_snapshot.py +115 -0
  324. mcp_proxy_adapter/core/orchestration/command_record.py +43 -0
  325. mcp_proxy_adapter/core/orchestration/discovery_client.py +229 -0
  326. mcp_proxy_adapter/core/orchestration/orchestration_api.py +273 -0
  327. mcp_proxy_adapter/core/orchestration/orchestration_config.py +146 -0
  328. mcp_proxy_adapter/core/orchestration/orchestration_errors.py +305 -0
  329. mcp_proxy_adapter/core/orchestration/orchestration_lifespan.py +199 -0
  330. mcp_proxy_adapter/core/orchestration/parameter_graph.py +106 -0
  331. mcp_proxy_adapter/core/orchestration/polling_loop.py +281 -0
  332. mcp_proxy_adapter/core/orchestration/server_record.py +37 -0
  333. mcp_proxy_adapter/core/orchestration/snapshot_holder.py +90 -0
  334. mcp_proxy_adapter/core/orchestration/tool_context_exposure.py +83 -0
  335. mcp_proxy_adapter/core/orchestration/tool_context_snapshot.py +164 -0
  336. mcp_proxy_adapter/core/path_utils.py +220 -0
  337. mcp_proxy_adapter/core/protocol_manager.py +260 -0
  338. mcp_proxy_adapter/core/proxy/__init__.py +62 -0
  339. mcp_proxy_adapter/core/proxy/auth_manager.py +110 -0
  340. mcp_proxy_adapter/core/proxy_client.py +252 -0
  341. mcp_proxy_adapter/core/proxy_registration.py +55 -0
  342. mcp_proxy_adapter/core/role_utils.py +166 -0
  343. mcp_proxy_adapter/core/server_adapter.py +302 -0
  344. mcp_proxy_adapter/core/server_engine.py +384 -0
  345. mcp_proxy_adapter/core/settings.py +299 -0
  346. mcp_proxy_adapter/core/signal_handler.py +136 -0
  347. mcp_proxy_adapter/core/ssl_utils.py +482 -0
  348. mcp_proxy_adapter/core/transport_manager.py +168 -0
  349. mcp_proxy_adapter/core/utils.py +74 -0
  350. mcp_proxy_adapter/core/validation/__init__.py +21 -0
  351. mcp_proxy_adapter/core/validation/config_validator.py +256 -0
  352. mcp_proxy_adapter/core/validation/file_validator.py +229 -0
  353. mcp_proxy_adapter/core/validation/protocol_validator.py +322 -0
  354. mcp_proxy_adapter/core/validation/proxy_registration_validator.py +268 -0
  355. mcp_proxy_adapter/core/validation/security_validator.py +300 -0
  356. mcp_proxy_adapter/core/validation/validation_result.py +34 -0
  357. mcp_proxy_adapter/core/validation/validator_support.py +64 -0
  358. mcp_proxy_adapter/core/validation_utils.py +160 -0
  359. mcp_proxy_adapter/core/ws_timeouts.py +88 -0
  360. mcp_proxy_adapter/custom_openapi.py +93 -0
  361. mcp_proxy_adapter/examples/PROTOCOL_EXAMPLES.md +79 -0
  362. mcp_proxy_adapter/examples/README.md +272 -0
  363. mcp_proxy_adapter/examples/README_EN.md +258 -0
  364. mcp_proxy_adapter/examples/SECURITY_TESTING.md +455 -0
  365. mcp_proxy_adapter/examples/__init__.py +16 -0
  366. mcp_proxy_adapter/examples/basic_framework/__init__.py +9 -0
  367. mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +4 -0
  368. mcp_proxy_adapter/examples/basic_framework/configs/http_auth.json +21 -0
  369. mcp_proxy_adapter/examples/basic_framework/configs/http_simple.json +21 -0
  370. mcp_proxy_adapter/examples/basic_framework/configs/https_auth.json +21 -0
  371. mcp_proxy_adapter/examples/basic_framework/configs/https_no_protocol_middleware.json +21 -0
  372. mcp_proxy_adapter/examples/basic_framework/configs/https_simple.json +21 -0
  373. mcp_proxy_adapter/examples/basic_framework/configs/mtls_no_protocol_middleware.json +21 -0
  374. mcp_proxy_adapter/examples/basic_framework/configs/mtls_no_roles.json +21 -0
  375. mcp_proxy_adapter/examples/basic_framework/configs/mtls_simple.json +21 -0
  376. mcp_proxy_adapter/examples/basic_framework/configs/mtls_with_registration.json +73 -0
  377. mcp_proxy_adapter/examples/basic_framework/configs/mtls_with_roles.json +21 -0
  378. mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +4 -0
  379. mcp_proxy_adapter/examples/basic_framework/main.py +123 -0
  380. mcp_proxy_adapter/examples/basic_framework/roles.json +1 -0
  381. mcp_proxy_adapter/examples/bug_report_security_framework.md +141 -0
  382. mcp_proxy_adapter/examples/cert_config.json +1 -0
  383. mcp_proxy_adapter/examples/certs/cert_config.json +1 -0
  384. mcp_proxy_adapter/examples/check_config.py +71 -0
  385. mcp_proxy_adapter/examples/check_config_split_parts/__init__.py +3 -0
  386. mcp_proxy_adapter/examples/check_config_split_parts/checker.py +247 -0
  387. mcp_proxy_adapter/examples/check_config_split_parts/cli.py +68 -0
  388. mcp_proxy_adapter/examples/check_config_split_parts/commands.py +102 -0
  389. mcp_proxy_adapter/examples/cli_config_examples/__init__.py +8 -0
  390. mcp_proxy_adapter/examples/cli_config_examples/examples_configs/http.json +69 -0
  391. mcp_proxy_adapter/examples/cli_config_examples/examples_configs/https_token_roles.json +84 -0
  392. mcp_proxy_adapter/examples/cli_config_examples/examples_configs/mtls_roles.json +84 -0
  393. mcp_proxy_adapter/examples/cli_config_examples/http_basic.py +97 -0
  394. mcp_proxy_adapter/examples/cli_config_examples/https_token.py +128 -0
  395. mcp_proxy_adapter/examples/cli_config_examples/mtls_roles.py +140 -0
  396. mcp_proxy_adapter/examples/client_configs/api_key_client.json +1 -0
  397. mcp_proxy_adapter/examples/client_configs/basic_auth_client.json +1 -0
  398. mcp_proxy_adapter/examples/client_configs/certificate_client.json +1 -0
  399. mcp_proxy_adapter/examples/client_configs/jwt_client.json +1 -0
  400. mcp_proxy_adapter/examples/client_configs/no_auth_client.json +1 -0
  401. mcp_proxy_adapter/examples/client_usage_example.py +216 -0
  402. mcp_proxy_adapter/examples/commands/__init__.py +5 -0
  403. mcp_proxy_adapter/examples/comprehensive/__init__.py +10 -0
  404. mcp_proxy_adapter/examples/comprehensive/run.py +906 -0
  405. mcp_proxy_adapter/examples/comprehensive_config.json +10 -0
  406. mcp_proxy_adapter/examples/config.json +10 -0
  407. mcp_proxy_adapter/examples/config_builder.py +272 -0
  408. mcp_proxy_adapter/examples/config_cli.py +340 -0
  409. mcp_proxy_adapter/examples/config_factory.py +325 -0
  410. mcp_proxy_adapter/examples/configs/full_featured.json +10 -0
  411. mcp_proxy_adapter/examples/configs/http_auth.json +10 -0
  412. mcp_proxy_adapter/examples/configs/http_simple.json +10 -0
  413. mcp_proxy_adapter/examples/configs/http_token.json +10 -0
  414. mcp_proxy_adapter/examples/configs/https_auth.json +10 -0
  415. mcp_proxy_adapter/examples/configs/https_simple.json +10 -0
  416. mcp_proxy_adapter/examples/configs/https_token.json +10 -0
  417. mcp_proxy_adapter/examples/configs/mtls_no_roles.json +10 -0
  418. mcp_proxy_adapter/examples/configs/mtls_simple.json +10 -0
  419. mcp_proxy_adapter/examples/configs/mtls_with_proxy.json +10 -0
  420. mcp_proxy_adapter/examples/configs/mtls_with_roles.json +10 -0
  421. mcp_proxy_adapter/examples/configs/roles.json +1 -0
  422. mcp_proxy_adapter/examples/create_test_configs.py +216 -0
  423. mcp_proxy_adapter/examples/debug_role_chain.py +192 -0
  424. mcp_proxy_adapter/examples/demo_client.py +339 -0
  425. mcp_proxy_adapter/examples/examples_correct/http_example.json +10 -0
  426. mcp_proxy_adapter/examples/full_application/__init__.py +11 -0
  427. mcp_proxy_adapter/examples/full_application/commands/__init__.py +32 -0
  428. mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +75 -0
  429. mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +101 -0
  430. mcp_proxy_adapter/examples/full_application/commands/embed_job_status_command.py +133 -0
  431. mcp_proxy_adapter/examples/full_application/commands/embed_queue_command.py +153 -0
  432. mcp_proxy_adapter/examples/full_application/commands/long_running_command.py +175 -0
  433. mcp_proxy_adapter/examples/full_application/commands/slow_start_long_task_command.py +172 -0
  434. mcp_proxy_adapter/examples/full_application/configs/http_basic.json +73 -0
  435. mcp_proxy_adapter/examples/full_application/configs/http_basic_smart_assistant_proxy3004.json +67 -0
  436. mcp_proxy_adapter/examples/full_application/configs/http_no_registration.json +72 -0
  437. mcp_proxy_adapter/examples/full_application/configs/http_token.json +69 -0
  438. mcp_proxy_adapter/examples/full_application/configs/http_token_roles.json +81 -0
  439. mcp_proxy_adapter/examples/full_application/configs/http_token_roles_smart_assistant_proxy3004.json +81 -0
  440. mcp_proxy_adapter/examples/full_application/configs/http_token_smart_assistant_proxy3004.json +69 -0
  441. mcp_proxy_adapter/examples/full_application/configs/https_basic.json +74 -0
  442. mcp_proxy_adapter/examples/full_application/configs/https_basic_smart_assistant_proxy3004.json +81 -0
  443. mcp_proxy_adapter/examples/full_application/configs/https_token.json +76 -0
  444. mcp_proxy_adapter/examples/full_application/configs/https_token_roles.json +88 -0
  445. mcp_proxy_adapter/examples/full_application/configs/https_token_roles_smart_assistant_proxy3004.json +95 -0
  446. mcp_proxy_adapter/examples/full_application/configs/https_token_smart_assistant_proxy3004.json +83 -0
  447. mcp_proxy_adapter/examples/full_application/configs/mtls_no_roles.json +78 -0
  448. mcp_proxy_adapter/examples/full_application/configs/mtls_no_roles_correct.json +76 -0
  449. mcp_proxy_adapter/examples/full_application/configs/mtls_no_roles_smart_assistant_proxy3004.json +83 -0
  450. mcp_proxy_adapter/examples/full_application/configs/mtls_no_security.json +77 -0
  451. mcp_proxy_adapter/examples/full_application/configs/mtls_with_roles.json +82 -0
  452. mcp_proxy_adapter/examples/full_application/configs/mtls_with_roles_correct.json +88 -0
  453. mcp_proxy_adapter/examples/full_application/configs/mtls_with_roles_smart_assistant_proxy3004.json +95 -0
  454. mcp_proxy_adapter/examples/full_application/configs/mtls_ws_repro.json +76 -0
  455. mcp_proxy_adapter/examples/full_application/configs/proxy_server.json +64 -0
  456. mcp_proxy_adapter/examples/full_application/configs/proxy_server_https.json +63 -0
  457. mcp_proxy_adapter/examples/full_application/configs/proxy_server_mtls.json +63 -0
  458. mcp_proxy_adapter/examples/full_application/example_support.py +45 -0
  459. mcp_proxy_adapter/examples/full_application/hooks/__init__.py +4 -0
  460. mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +51 -0
  461. mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +46 -0
  462. mcp_proxy_adapter/examples/full_application/main.py +95 -0
  463. mcp_proxy_adapter/examples/full_application/main_modules/__init__.py +1 -0
  464. mcp_proxy_adapter/examples/full_application/main_modules/registration.py +122 -0
  465. mcp_proxy_adapter/examples/full_application/main_modules/runner.py +310 -0
  466. mcp_proxy_adapter/examples/full_application/proxy_commands/__init__.py +113 -0
  467. mcp_proxy_adapter/examples/full_application/proxy_commands/_shared.py +8 -0
  468. mcp_proxy_adapter/examples/full_application/proxy_commands/lifecycle_commands.py +196 -0
  469. mcp_proxy_adapter/examples/full_application/proxy_commands/register_command.py +254 -0
  470. mcp_proxy_adapter/examples/full_application/proxy_commands/registry_state.py +8 -0
  471. mcp_proxy_adapter/examples/full_application/proxy_commands/results.py +142 -0
  472. mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +162 -0
  473. mcp_proxy_adapter/examples/full_application/proxy_schemas.py +91 -0
  474. mcp_proxy_adapter/examples/full_application/roles.json +1 -0
  475. mcp_proxy_adapter/examples/full_application/test_client.py +341 -0
  476. mcp_proxy_adapter/examples/full_application/test_minimal_server.py +57 -0
  477. mcp_proxy_adapter/examples/full_application/test_queue_and_descriptions.py +283 -0
  478. mcp_proxy_adapter/examples/full_application/test_server.py +221 -0
  479. mcp_proxy_adapter/examples/full_application/test_simple_server.py +141 -0
  480. mcp_proxy_adapter/examples/generate_all_certificates.py +74 -0
  481. mcp_proxy_adapter/examples/generate_config.py +44 -0
  482. mcp_proxy_adapter/examples/generate_config_parts/__init__.py +3 -0
  483. mcp_proxy_adapter/examples/generate_config_parts/builders.py +234 -0
  484. mcp_proxy_adapter/examples/generate_config_parts/cli.py +260 -0
  485. mcp_proxy_adapter/examples/generate_config_parts/outputs.py +137 -0
  486. mcp_proxy_adapter/examples/generator_validator_compatibility_report.md +127 -0
  487. mcp_proxy_adapter/examples/http_proxy_example.json +17 -0
  488. mcp_proxy_adapter/examples/https_proxy_example.json +17 -0
  489. mcp_proxy_adapter/examples/job_tracking_demo.py +235 -0
  490. mcp_proxy_adapter/examples/proxy_server_support.py +384 -0
  491. mcp_proxy_adapter/examples/queue_demo_simple.py +37 -0
  492. mcp_proxy_adapter/examples/queue_demo_simple_parts/__init__.py +3 -0
  493. mcp_proxy_adapter/examples/queue_demo_simple_parts/_shared.py +8 -0
  494. mcp_proxy_adapter/examples/queue_demo_simple_parts/demo.py +213 -0
  495. mcp_proxy_adapter/examples/queue_demo_simple_parts/mock_commands.py +130 -0
  496. mcp_proxy_adapter/examples/queue_demo_simple_parts/mock_manager.py +272 -0
  497. mcp_proxy_adapter/examples/queue_example_support.py +36 -0
  498. mcp_proxy_adapter/examples/queue_fire_and_forget_example.py +370 -0
  499. mcp_proxy_adapter/examples/queue_server_demo.py +73 -0
  500. mcp_proxy_adapter/examples/queue_server_example.py +76 -0
  501. mcp_proxy_adapter/examples/queue_server_simple.py +251 -0
  502. mcp_proxy_adapter/examples/required_certificates.py +216 -0
  503. mcp_proxy_adapter/examples/run_example.py +119 -0
  504. mcp_proxy_adapter/examples/run_full_test_suite.py +674 -0
  505. mcp_proxy_adapter/examples/run_proxy_server.py +118 -0
  506. mcp_proxy_adapter/examples/run_security_tests_fixed.py +876 -0
  507. mcp_proxy_adapter/examples/security_test/__init__.py +18 -0
  508. mcp_proxy_adapter/examples/security_test/auth_manager.py +49 -0
  509. mcp_proxy_adapter/examples/security_test/ssl_context_manager.py +144 -0
  510. mcp_proxy_adapter/examples/security_test/test_client.py +218 -0
  511. mcp_proxy_adapter/examples/security_test/test_result.py +23 -0
  512. mcp_proxy_adapter/examples/security_test_client.py +103 -0
  513. mcp_proxy_adapter/examples/server_configs/config_basic_http.json +16 -0
  514. mcp_proxy_adapter/examples/server_configs/config_http_token.json +16 -0
  515. mcp_proxy_adapter/examples/server_configs/config_https.json +16 -0
  516. mcp_proxy_adapter/examples/server_configs/config_https_token.json +16 -0
  517. mcp_proxy_adapter/examples/server_configs/config_mtls.json +16 -0
  518. mcp_proxy_adapter/examples/server_configs/config_proxy_registration.json +15 -0
  519. mcp_proxy_adapter/examples/server_configs/config_simple.json +9 -0
  520. mcp_proxy_adapter/examples/server_configs/http_simple.json +14 -0
  521. mcp_proxy_adapter/examples/server_configs/http_token.json +14 -0
  522. mcp_proxy_adapter/examples/server_configs/https_simple.json +14 -0
  523. mcp_proxy_adapter/examples/server_configs/https_token.json +14 -0
  524. mcp_proxy_adapter/examples/server_configs/mtls_no_roles.json +8 -0
  525. mcp_proxy_adapter/examples/server_configs/mtls_test.json +8 -0
  526. mcp_proxy_adapter/examples/server_configs/mtls_with_roles.json +14 -0
  527. mcp_proxy_adapter/examples/server_configs/roles.json +1 -0
  528. mcp_proxy_adapter/examples/setup/__init__.py +48 -0
  529. mcp_proxy_adapter/examples/setup/certificate_manager.py +384 -0
  530. mcp_proxy_adapter/examples/setup/config_generator.py +6 -0
  531. mcp_proxy_adapter/examples/setup/config_validator.py +140 -0
  532. mcp_proxy_adapter/examples/setup/environment_setup.py +143 -0
  533. mcp_proxy_adapter/examples/setup/test_files_generator.py +6 -0
  534. mcp_proxy_adapter/examples/setup/test_runner.py +143 -0
  535. mcp_proxy_adapter/examples/setup_test_environment.py +233 -0
  536. mcp_proxy_adapter/examples/simple_http_example.json +17 -0
  537. mcp_proxy_adapter/examples/simple_https_example.json +17 -0
  538. mcp_proxy_adapter/examples/simple_protocol_test.py +167 -0
  539. mcp_proxy_adapter/examples/test_client/README.md +166 -0
  540. mcp_proxy_adapter/examples/test_client/__init__.py +7 -0
  541. mcp_proxy_adapter/examples/test_client/main.py +102 -0
  542. mcp_proxy_adapter/examples/test_client/main_split_parts/__init__.py +1 -0
  543. mcp_proxy_adapter/examples/test_client/main_split_parts/helpers.py +83 -0
  544. mcp_proxy_adapter/examples/test_client/main_split_parts/runner.py +115 -0
  545. mcp_proxy_adapter/examples/test_client/main_split_parts/scenarios.py +195 -0
  546. mcp_proxy_adapter/examples/test_config.py +183 -0
  547. mcp_proxy_adapter/examples/test_configs/custom_https.json +10 -0
  548. mcp_proxy_adapter/examples/test_configs/http_simple.json +10 -0
  549. mcp_proxy_adapter/examples/test_examples.py +361 -0
  550. mcp_proxy_adapter/examples/test_mcp_server.py +249 -0
  551. mcp_proxy_adapter/examples/test_protocol_examples.py +373 -0
  552. mcp_proxy_adapter/examples/test_proxy/README.md +70 -0
  553. mcp_proxy_adapter/examples/test_proxy/__init__.py +7 -0
  554. mcp_proxy_adapter/examples/test_proxy/main.py +106 -0
  555. mcp_proxy_adapter/examples/test_server/README.md +58 -0
  556. mcp_proxy_adapter/examples/test_server/__init__.py +7 -0
  557. mcp_proxy_adapter/examples/test_server/main.py +349 -0
  558. mcp_proxy_adapter/examples/transparent_queue_commands.py +281 -0
  559. mcp_proxy_adapter/examples/transparent_queue_e1_sync_call.py +102 -0
  560. mcp_proxy_adapter/examples/transparent_queue_e2_event_stream.py +134 -0
  561. mcp_proxy_adapter/examples/transparent_queue_e3_ws_timeouts.py +341 -0
  562. mcp_proxy_adapter/examples/transparent_queue_e4_ws_fallback.py +159 -0
  563. mcp_proxy_adapter/examples/transparent_queue_e5_inner_failure.py +189 -0
  564. mcp_proxy_adapter/examples/transparent_queue_e6_atomic_state.py +203 -0
  565. mcp_proxy_adapter/examples/transparent_queue_e7_caller_loss.py +63 -0
  566. mcp_proxy_adapter/examples/transparent_queue_e7_split2/__init__.py +3 -0
  567. mcp_proxy_adapter/examples/transparent_queue_e7_split2/cases.py +335 -0
  568. mcp_proxy_adapter/examples/transparent_queue_e7_split2/helpers.py +66 -0
  569. mcp_proxy_adapter/examples/transparent_queue_support.py +377 -0
  570. mcp_proxy_adapter/examples/unified_error_handling_example.py +127 -0
  571. mcp_proxy_adapter/examples/unified_error_handling_split_parts/__init__.py +3 -0
  572. mcp_proxy_adapter/examples/unified_error_handling_split_parts/demos.py +180 -0
  573. mcp_proxy_adapter/examples/unified_error_handling_split_parts/runner.py +109 -0
  574. mcp_proxy_adapter/examples/unified_error_handling_split_parts/support.py +79 -0
  575. mcp_proxy_adapter/examples/unified_error_handling_texts.py +17 -0
  576. mcp_proxy_adapter/examples/universal_client.py +215 -0
  577. mcp_proxy_adapter/examples/universal_client_split_parts/__init__.py +3 -0
  578. mcp_proxy_adapter/examples/universal_client_split_parts/configs.py +104 -0
  579. mcp_proxy_adapter/examples/universal_client_split_parts/demos.py +144 -0
  580. mcp_proxy_adapter/examples/update_config_certificates.py +156 -0
  581. mcp_proxy_adapter/examples/validate_generator_compatibility_simple.py +60 -0
  582. mcp_proxy_adapter/examples/websocket_examples/__init__.py +8 -0
  583. mcp_proxy_adapter/examples/websocket_examples/client_bidirectional_websocket.py +100 -0
  584. mcp_proxy_adapter/examples/websocket_examples/client_websocket_job_status.py +103 -0
  585. mcp_proxy_adapter/examples/websocket_examples/run_ws_test_server.py +157 -0
  586. mcp_proxy_adapter/examples/ws_examples/__init__.py +6 -0
  587. mcp_proxy_adapter/examples/ws_examples/http_basic_ws.py +68 -0
  588. mcp_proxy_adapter/examples/ws_examples/http_token_roles_ws.py +66 -0
  589. mcp_proxy_adapter/examples/ws_examples/http_token_ws.py +80 -0
  590. mcp_proxy_adapter/examples/ws_examples/https_basic_ws.py +61 -0
  591. mcp_proxy_adapter/examples/ws_examples/https_token_roles_ws.py +67 -0
  592. mcp_proxy_adapter/examples/ws_examples/https_token_ws.py +64 -0
  593. mcp_proxy_adapter/examples/ws_examples/mtls_basic_ws.py +94 -0
  594. mcp_proxy_adapter/examples/ws_examples/mtls_roles_ws.py +88 -0
  595. mcp_proxy_adapter/examples/ws_examples/ws_example_runner.py +233 -0
  596. mcp_proxy_adapter/integrations/__init__.py +31 -0
  597. mcp_proxy_adapter/integrations/queuemgr_integration/__init__.py +124 -0
  598. mcp_proxy_adapter/integrations/queuemgr_integration/_compat.py +60 -0
  599. mcp_proxy_adapter/integrations/queuemgr_integration/_health.py +299 -0
  600. mcp_proxy_adapter/integrations/queuemgr_integration/_limits.py +70 -0
  601. mcp_proxy_adapter/integrations/queuemgr_integration/_process_reap.py +232 -0
  602. mcp_proxy_adapter/integrations/queuemgr_integration/_result_builders.py +119 -0
  603. mcp_proxy_adapter/integrations/queuemgr_integration/_status_helpers.py +167 -0
  604. mcp_proxy_adapter/integrations/queuemgr_integration/global_manager.py +174 -0
  605. mcp_proxy_adapter/integrations/queuemgr_integration/job_types/__init__.py +375 -0
  606. mcp_proxy_adapter/integrations/queuemgr_integration/job_types/value_types.py +97 -0
  607. mcp_proxy_adapter/integrations/queuemgr_integration/job_types/worker_probe.py +29 -0
  608. mcp_proxy_adapter/integrations/queuemgr_integration/manager/__init__.py +52 -0
  609. mcp_proxy_adapter/integrations/queuemgr_integration/manager/fallback_base.py +240 -0
  610. mcp_proxy_adapter/integrations/queuemgr_integration/manager/fallback_stop_base.py +179 -0
  611. mcp_proxy_adapter/integrations/queuemgr_integration/manager/health_base.py +460 -0
  612. mcp_proxy_adapter/integrations/queuemgr_integration/manager/integration.py +189 -0
  613. mcp_proxy_adapter/integrations/queuemgr_integration/manager/job_start_base.py +333 -0
  614. mcp_proxy_adapter/integrations/queuemgr_integration/manager/job_stop_base.py +274 -0
  615. mcp_proxy_adapter/integrations/queuemgr_integration/manager/lifecycle_base.py +393 -0
  616. mcp_proxy_adapter/integrations/queuemgr_integration/manager/query_base.py +269 -0
  617. mcp_proxy_adapter/integrations/queuemgr_registration.py +66 -0
  618. mcp_proxy_adapter/integrations/queuemgr_version.py +39 -0
  619. mcp_proxy_adapter/main.py +385 -0
  620. mcp_proxy_adapter/main_ssl_paths.py +29 -0
  621. mcp_proxy_adapter/py.typed +0 -0
  622. mcp_proxy_adapter/schemas/base_schema.json +114 -0
  623. mcp_proxy_adapter/schemas/openapi_schema.json +269 -0
  624. mcp_proxy_adapter/schemas/roles.json +37 -0
  625. mcp_proxy_adapter/schemas/roles_schema.json +162 -0
  626. mcp_proxy_adapter/transfer/__init__.py +56 -0
  627. mcp_proxy_adapter/transfer/checksums.py +81 -0
  628. mcp_proxy_adapter/transfer/client_downloader/__init__.py +37 -0
  629. mcp_proxy_adapter/transfer/client_downloader/download_support.py +109 -0
  630. mcp_proxy_adapter/transfer/client_downloader/downloader.py +300 -0
  631. mcp_proxy_adapter/transfer/client_uploader.py +278 -0
  632. mcp_proxy_adapter/transfer/compression.py +127 -0
  633. mcp_proxy_adapter/transfer/errors.py +253 -0
  634. mcp_proxy_adapter/transfer/json_coerce.py +32 -0
  635. mcp_proxy_adapter/transfer/models.py +337 -0
  636. mcp_proxy_adapter/transfer/path_confinement.py +69 -0
  637. mcp_proxy_adapter/transfer/progress_percent.py +25 -0
  638. mcp_proxy_adapter/transfer/server_store.py +878 -0
  639. mcp_proxy_adapter/version.py +8 -0
  640. mcp_proxy_adapter_dev-8.11.16.dist-info/METADATA +1666 -0
  641. mcp_proxy_adapter_dev-8.11.16.dist-info/RECORD +644 -0
  642. mcp_proxy_adapter_dev-8.11.16.dist-info/WHEEL +5 -0
  643. mcp_proxy_adapter_dev-8.11.16.dist-info/entry_points.txt +12 -0
  644. mcp_proxy_adapter_dev-8.11.16.dist-info/top_level.txt +1 -0
@@ -0,0 +1,127 @@
1
+ # Generator-Validator Compatibility Report
2
+
3
+ **Author**: Vasiliy Zdanovskiy
4
+ **Email**: vasilyvz@gmail.com
5
+ **Date**: 2024-12-19
6
+
7
+ ## Executive Summary
8
+
9
+ ✅ **COMPATIBLE** - The configuration generator and validator are structurally compatible and work correctly together.
10
+
11
+ ## Test Results
12
+
13
+ ### Structure Compatibility Test
14
+ - ✅ **PASS** - All required sections present
15
+ - ✅ **PASS** - All required fields present
16
+ - ✅ **PASS** - Default values correctly set
17
+ - ✅ **PASS** - All features properly disabled by default
18
+
19
+ ### Configuration Modification Test
20
+ - ✅ **PASS** - HTTPS protocol modification works
21
+ - ✅ **PASS** - SSL enablement works
22
+ - ✅ **PASS** - Security enablement works
23
+ - ✅ **PASS** - Roles enablement works
24
+ - ✅ **PASS** - Proxy registration enablement works
25
+
26
+ ### Validator Acceptance Test
27
+ - ✅ **PASS** - Generated configs pass validation
28
+ - ✅ **PASS** - No structural validation errors
29
+ - ✅ **PASS** - All required sections validated
30
+
31
+ ## Key Findings
32
+
33
+ ### 1. Structural Compatibility
34
+ The generator creates configurations with all required sections:
35
+ - `server` - Server configuration
36
+ - `logging` - Logging configuration
37
+ - `commands` - Command system configuration
38
+ - `debug` - Debug settings
39
+ - `ssl` - SSL/TLS configuration
40
+ - `security` - Security settings
41
+ - `roles` - Role-based access control
42
+ - `proxy_registration` - Proxy registration settings
43
+
44
+ ### 2. Default Configuration
45
+ The generator creates a sensible default HTTP configuration:
46
+ - Protocol: `http`
47
+ - SSL: Disabled
48
+ - Security: Disabled
49
+ - Roles: Disabled
50
+ - Proxy Registration: Disabled
51
+
52
+ ### 3. Modification Capability
53
+ Generated configurations can be easily modified for different scenarios:
54
+ - HTTP → HTTPS (enable SSL)
55
+ - Basic → Secure (enable security)
56
+ - Simple → Role-based (enable roles)
57
+ - Standalone → Proxy-registered (enable proxy registration)
58
+
59
+ ### 4. Validation Coverage
60
+ The validator properly checks:
61
+ - Required sections and fields
62
+ - Feature flag dependencies
63
+ - Protocol-specific requirements
64
+ - File existence (when files are specified)
65
+ - Certificate validity (when certificates are provided)
66
+
67
+ ## Recommendations
68
+
69
+ ### 1. Use Generator for Base Configurations
70
+ The `generate_complete_config()` function should be used as the starting point for all configurations.
71
+
72
+ ### 2. Modify for Specific Needs
73
+ After generating a base configuration, modify it for specific requirements:
74
+ ```python
75
+ config = generate_complete_config(host="localhost", port=8080)
76
+
77
+ # For HTTPS
78
+ config["server"]["protocol"] = "https"
79
+ config["ssl"]["enabled"] = True
80
+ config["ssl"]["cert_file"] = "/path/to/cert.crt"
81
+ config["ssl"]["key_file"] = "/path/to/key.key"
82
+
83
+ # For security
84
+ config["security"]["enabled"] = True
85
+ config["security"]["tokens"] = {"my_token": {"permissions": ["*"]}}
86
+
87
+ # For roles
88
+ config["roles"]["enabled"] = True
89
+ config["roles"]["config_file"] = "/path/to/roles.json"
90
+ ```
91
+
92
+ ### 3. Validate Before Use
93
+ Always validate configurations before using them:
94
+ ```python
95
+ validator = ConfigValidator()
96
+ validator.config_data = config
97
+ results = validator.validate_config()
98
+
99
+ errors = [r for r in results if r.level == "error"]
100
+ if errors:
101
+ print("Configuration errors:")
102
+ for error in errors:
103
+ print(f" - {error.message}")
104
+ ```
105
+
106
+ ## Test Coverage
107
+
108
+ ### Positive Tests
109
+ - ✅ Basic HTTP configuration
110
+ - ✅ Configuration modification
111
+ - ✅ Validator acceptance
112
+ - ✅ Required sections validation
113
+ - ✅ Feature flag validation
114
+
115
+ ### Edge Cases
116
+ - ✅ Empty configuration (correctly fails)
117
+ - ✅ Missing required sections (correctly fails)
118
+ - ✅ Invalid protocols (correctly fails)
119
+ - ✅ SSL without certificates (correctly fails)
120
+
121
+ ## Conclusion
122
+
123
+ The configuration generator and validator are **fully compatible** and work together seamlessly. The generator creates valid, complete configurations that pass validation, and the validator properly checks all aspects of the configuration.
124
+
125
+ **Status**: ✅ **READY FOR PRODUCTION USE**
126
+
127
+ The system provides a robust foundation for configuration management with proper validation and error handling.
@@ -0,0 +1,17 @@
1
+ {
2
+ "server": {
3
+ "host": "127.0.0.1",
4
+ "port": 20021,
5
+ "log_level": "INFO",
6
+ "protocol": "http",
7
+ "servername": "127.0.0.1"
8
+ },
9
+ "registration": {
10
+ "enabled": true,
11
+ "server_id": "http_test_server",
12
+ "server_name": "HTTP Test Server",
13
+ "heartbeat": {
14
+ "interval": 30
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "server": {
3
+ "host": "127.0.0.1",
4
+ "port": 20022,
5
+ "log_level": "INFO",
6
+ "protocol": "http",
7
+ "servername": "127.0.0.1"
8
+ },
9
+ "registration": {
10
+ "enabled": true,
11
+ "server_id": "https_test_server",
12
+ "server_name": "HTTPS Test Server",
13
+ "heartbeat": {
14
+ "interval": 30
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,235 @@
1
+ #!/usr/bin/env python3
2
+ """Reference: JsonRpcClient job tracking (snapshots, message history, WS wait).
3
+
4
+ What this demonstrates
5
+ ----------------------
6
+ In order, the demo runs ``get_job_status(..., sync_from_queue=True)``,
7
+ ``get_job_messages(...)``, and (unless skipped) ``wait_for_job(...)``, which
8
+ wraps ``wait_for_job_via_websocket`` and records inbound events to the client
9
+ registry.
10
+
11
+ Prerequisites (live server)
12
+ -----------------------------
13
+ - A running mcp-proxy-adapter with JSON-RPC and WebSocket ``/ws`` enabled for
14
+ queue-job subscription.
15
+ - Network reachability to the configured host and port.
16
+ - Transport and auth aligned with your deployment:
17
+ * ``--protocol http`` — plain HTTP (typical local dev).
18
+ * ``--protocol https`` — TLS; set token or certificate options if your server
19
+ requires them (same as ``JsonRpcClient`` constructor).
20
+ * ``--protocol mtls`` — mutual TLS; pass ``cert``, ``key``, and ``ca`` via
21
+ code if you extend this script (CLI here uses the default client without
22
+ extra TLS file paths).
23
+
24
+ This module does not start a server.
25
+
26
+ Non-interactive CI / offline path
27
+ --------------------------------
28
+ Run with ``--mock-flow`` to execute the same call sequence against a
29
+ ``JsonRpcClient`` with ``queue_get_job_status`` and
30
+ ``wait_for_job_via_websocket`` patched (no network I/O).
31
+
32
+ How to run
33
+ ----------
34
+ Show CLI help::
35
+
36
+ python -m mcp_proxy_adapter.examples.job_tracking_demo --help
37
+
38
+ Offline mock sequence (copy-paste)::
39
+
40
+ python -m mcp_proxy_adapter.examples.job_tracking_demo --mock-flow
41
+
42
+ Live adapter: replace ``<job-id>`` with a real queued job id from your server::
43
+
44
+ python -m mcp_proxy_adapter.examples.job_tracking_demo \\
45
+ --host 127.0.0.1 --port 8080 --protocol http --job-id <job-id>
46
+
47
+ Skip the blocking ``wait_for_job`` step (snapshots and message list only)::
48
+
49
+ python -m mcp_proxy_adapter.examples.job_tracking_demo \\
50
+ --job-id <job-id> --no-wait
51
+
52
+ Author: Vasiliy Zdanovskiy
53
+ email: vasilyvz@gmail.com
54
+ """
55
+
56
+ from __future__ import annotations
57
+
58
+ import argparse
59
+ import asyncio
60
+ import json
61
+ import sys
62
+ from typing import Any, Dict
63
+
64
+ from mcp_proxy_adapter.client.jsonrpc_client.client import JsonRpcClient
65
+
66
+
67
+ def _parse_args(argv: list[str] | None = None) -> argparse.Namespace:
68
+ """Parse command-line arguments for the job tracking demo.
69
+
70
+ Args:
71
+ argv: List of command-line arguments (excluding program name).
72
+
73
+ Returns:
74
+ Parsed arguments namespace.
75
+ """
76
+ p = argparse.ArgumentParser(description=__doc__)
77
+ p.add_argument("--host", default="127.0.0.1")
78
+ p.add_argument("--port", type=int, default=8080)
79
+ p.add_argument("--protocol", default="http", choices=("http", "https", "mtls"))
80
+ p.add_argument(
81
+ "--job-id",
82
+ default="",
83
+ help="Live server: job id for status, messages, and (unless --no-wait) wait.",
84
+ )
85
+ p.add_argument(
86
+ "--no-wait",
87
+ action="store_true",
88
+ help="With --job-id only: run get_job_status and get_job_messages; skip wait_for_job.",
89
+ )
90
+ p.add_argument(
91
+ "--mock-flow",
92
+ action="store_true",
93
+ help="Run the demo sequence with mocked queue/WS methods (no network).",
94
+ )
95
+ return p.parse_args(argv)
96
+
97
+
98
+ async def run_job_tracking_demo_sequence(
99
+ client: JsonRpcClient,
100
+ job_id: str,
101
+ *,
102
+ include_wait: bool = True,
103
+ wait_timeout: float = 60.0,
104
+ ) -> None:
105
+ """
106
+ Run ``get_job_status``, ``get_job_messages``, and optionally ``wait_for_job``.
107
+
108
+ Intended for reuse from tests and the CLI; prints human-readable lines to stdout.
109
+ """
110
+ jid = job_id.strip()
111
+ if not jid:
112
+ raise ValueError("job_id must be non-empty")
113
+
114
+ snap = await client.get_job_status(jid, sync_from_queue=True)
115
+ print("get_job_status(sync_from_queue=True):")
116
+ print(json.dumps(snap.summary, default=str, indent=2))
117
+
118
+ msgs = await client.get_job_messages(jid, limit=10)
119
+ print("get_job_messages(limit=10):", len(msgs), "message(s)")
120
+
121
+ if not include_wait:
122
+ return
123
+
124
+ async def on_event(msg: Dict[str, Any]) -> None:
125
+ """Print inbound job event messages.
126
+
127
+ Args:
128
+ msg: Event message dictionary.
129
+ """
130
+ print("event:", msg.get("event") or msg.get("type"))
131
+
132
+ result = await client.wait_for_job(jid, timeout=wait_timeout, on_event=on_event)
133
+ print("terminal:", json.dumps(result, default=str, indent=2))
134
+
135
+
136
+ async def _run_mock_flow() -> None:
137
+ """Execute the tracking sequence with patched queue/WS (no live I/O)."""
138
+ from unittest.mock import AsyncMock, patch
139
+
140
+ client = JsonRpcClient(protocol="http", host="127.0.0.1", port=9)
141
+ job_id = "mock-job-id"
142
+
143
+ async def fake_queue_status(jid: str) -> Dict[str, Any]:
144
+ """Mock implementation of queue_get_job_status.
145
+
146
+ Args:
147
+ jid: Job ID to query.
148
+
149
+ Returns:
150
+ Mock job status response.
151
+ """
152
+ return {"status": "completed", "data": {"job_id": jid}}
153
+
154
+ async def fake_wait(
155
+ jid: str,
156
+ timeout: float = 1.0,
157
+ *,
158
+ on_inbound_message: Any = None,
159
+ ) -> Dict[str, Any]:
160
+ """Mock implementation of wait_for_job_via_websocket.
161
+
162
+ Args:
163
+ jid: Job ID to wait for.
164
+ timeout: Timeout in seconds.
165
+ on_inbound_message: Callback for inbound messages.
166
+
167
+ Returns:
168
+ Mock job completion response.
169
+ """
170
+ if on_inbound_message is not None:
171
+ await on_inbound_message({"event": "running", "job_id": jid})
172
+ return {"event": "job_completed", "job_id": jid, "result": {"ok": True}}
173
+
174
+ try:
175
+ with patch.object(
176
+ client,
177
+ "queue_get_job_status",
178
+ new=AsyncMock(side_effect=fake_queue_status),
179
+ ):
180
+ with patch.object(
181
+ client,
182
+ "wait_for_job_via_websocket",
183
+ new=AsyncMock(side_effect=fake_wait),
184
+ ):
185
+ await run_job_tracking_demo_sequence(
186
+ client,
187
+ job_id,
188
+ include_wait=True,
189
+ wait_timeout=30.0,
190
+ )
191
+ finally:
192
+ await client.close()
193
+
194
+
195
+ async def main_async(argv: list[str] | None = None) -> None:
196
+ """Entry point for tests and ``main()``; *argv* is token list only (no ``sys.argv[0]``)."""
197
+ args = _parse_args(argv)
198
+ if args.mock_flow:
199
+ await _run_mock_flow()
200
+ return
201
+
202
+ if args.job_id:
203
+ client = JsonRpcClient(protocol=args.protocol, host=args.host, port=args.port)
204
+ try:
205
+ await run_job_tracking_demo_sequence(
206
+ client,
207
+ args.job_id.strip(),
208
+ include_wait=not args.no_wait,
209
+ wait_timeout=60.0,
210
+ )
211
+ finally:
212
+ await client.close()
213
+ return
214
+
215
+ print(
216
+ "No --job-id and no --mock-flow: no network calls.\n"
217
+ " Offline / CI:\n"
218
+ " python -m mcp_proxy_adapter.examples.job_tracking_demo --mock-flow\n"
219
+ " Live server (replace <job-id>):\n"
220
+ " python -m mcp_proxy_adapter.examples.job_tracking_demo "
221
+ "--host 127.0.0.1 --port 8080 --job-id <job-id>\n"
222
+ " Snapshot + messages only (no wait_for_job):\n"
223
+ " python -m mcp_proxy_adapter.examples.job_tracking_demo "
224
+ "--job-id <job-id> --no-wait\n",
225
+ file=sys.stderr,
226
+ )
227
+
228
+
229
+ def main() -> None:
230
+ """Entry point: run the job tracking demo with command-line arguments."""
231
+ asyncio.run(main_async())
232
+
233
+
234
+ if __name__ == "__main__":
235
+ main()