claude-mpm 3.9.11__py3-none-any.whl → 4.0.3__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 (419) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__init__.py +2 -2
  3. claude_mpm/__main__.py +3 -2
  4. claude_mpm/agents/__init__.py +85 -79
  5. claude_mpm/agents/agent_loader.py +464 -1003
  6. claude_mpm/agents/agent_loader_integration.py +45 -45
  7. claude_mpm/agents/agents_metadata.py +29 -30
  8. claude_mpm/agents/async_agent_loader.py +156 -138
  9. claude_mpm/agents/base_agent.json +1 -1
  10. claude_mpm/agents/base_agent_loader.py +179 -151
  11. claude_mpm/agents/frontmatter_validator.py +229 -130
  12. claude_mpm/agents/schema/agent_schema.json +1 -1
  13. claude_mpm/agents/system_agent_config.py +213 -147
  14. claude_mpm/agents/templates/__init__.py +13 -13
  15. claude_mpm/agents/templates/code_analyzer.json +2 -2
  16. claude_mpm/agents/templates/data_engineer.json +1 -1
  17. claude_mpm/agents/templates/documentation.json +23 -11
  18. claude_mpm/agents/templates/engineer.json +22 -6
  19. claude_mpm/agents/templates/memory_manager.json +1 -1
  20. claude_mpm/agents/templates/ops.json +2 -2
  21. claude_mpm/agents/templates/project_organizer.json +1 -1
  22. claude_mpm/agents/templates/qa.json +1 -1
  23. claude_mpm/agents/templates/refactoring_engineer.json +222 -0
  24. claude_mpm/agents/templates/research.json +20 -14
  25. claude_mpm/agents/templates/security.json +1 -1
  26. claude_mpm/agents/templates/ticketing.json +1 -1
  27. claude_mpm/agents/templates/version_control.json +1 -1
  28. claude_mpm/agents/templates/web_qa.json +3 -1
  29. claude_mpm/agents/templates/web_ui.json +2 -2
  30. claude_mpm/cli/__init__.py +79 -51
  31. claude_mpm/cli/__main__.py +3 -2
  32. claude_mpm/cli/commands/__init__.py +20 -20
  33. claude_mpm/cli/commands/agents.py +279 -247
  34. claude_mpm/cli/commands/aggregate.py +138 -157
  35. claude_mpm/cli/commands/cleanup.py +147 -147
  36. claude_mpm/cli/commands/config.py +93 -76
  37. claude_mpm/cli/commands/info.py +17 -16
  38. claude_mpm/cli/commands/mcp.py +140 -905
  39. claude_mpm/cli/commands/mcp_command_router.py +139 -0
  40. claude_mpm/cli/commands/mcp_config_commands.py +20 -0
  41. claude_mpm/cli/commands/mcp_install_commands.py +20 -0
  42. claude_mpm/cli/commands/mcp_server_commands.py +175 -0
  43. claude_mpm/cli/commands/mcp_tool_commands.py +34 -0
  44. claude_mpm/cli/commands/memory.py +239 -203
  45. claude_mpm/cli/commands/monitor.py +203 -81
  46. claude_mpm/cli/commands/run.py +380 -429
  47. claude_mpm/cli/commands/run_config_checker.py +160 -0
  48. claude_mpm/cli/commands/socketio_monitor.py +235 -0
  49. claude_mpm/cli/commands/tickets.py +305 -197
  50. claude_mpm/cli/parser.py +24 -1156
  51. claude_mpm/cli/parsers/__init__.py +29 -0
  52. claude_mpm/cli/parsers/agents_parser.py +136 -0
  53. claude_mpm/cli/parsers/base_parser.py +331 -0
  54. claude_mpm/cli/parsers/config_parser.py +85 -0
  55. claude_mpm/cli/parsers/mcp_parser.py +152 -0
  56. claude_mpm/cli/parsers/memory_parser.py +138 -0
  57. claude_mpm/cli/parsers/monitor_parser.py +104 -0
  58. claude_mpm/cli/parsers/run_parser.py +147 -0
  59. claude_mpm/cli/parsers/tickets_parser.py +203 -0
  60. claude_mpm/cli/ticket_cli.py +7 -3
  61. claude_mpm/cli/utils.py +55 -37
  62. claude_mpm/cli_module/__init__.py +6 -6
  63. claude_mpm/cli_module/args.py +188 -140
  64. claude_mpm/cli_module/commands.py +79 -70
  65. claude_mpm/cli_module/migration_example.py +38 -60
  66. claude_mpm/config/__init__.py +32 -25
  67. claude_mpm/config/agent_config.py +151 -119
  68. claude_mpm/config/experimental_features.py +71 -73
  69. claude_mpm/config/paths.py +94 -208
  70. claude_mpm/config/socketio_config.py +84 -73
  71. claude_mpm/constants.py +35 -18
  72. claude_mpm/core/__init__.py +9 -6
  73. claude_mpm/core/agent_name_normalizer.py +68 -71
  74. claude_mpm/core/agent_registry.py +372 -521
  75. claude_mpm/core/agent_session_manager.py +74 -63
  76. claude_mpm/core/base_service.py +116 -87
  77. claude_mpm/core/cache.py +119 -153
  78. claude_mpm/core/claude_runner.py +425 -1120
  79. claude_mpm/core/config.py +263 -168
  80. claude_mpm/core/config_aliases.py +69 -61
  81. claude_mpm/core/config_constants.py +292 -0
  82. claude_mpm/core/constants.py +57 -99
  83. claude_mpm/core/container.py +211 -178
  84. claude_mpm/core/exceptions.py +233 -89
  85. claude_mpm/core/factories.py +92 -54
  86. claude_mpm/core/framework_loader.py +378 -220
  87. claude_mpm/core/hook_manager.py +198 -83
  88. claude_mpm/core/hook_performance_config.py +136 -0
  89. claude_mpm/core/injectable_service.py +61 -55
  90. claude_mpm/core/interactive_session.py +165 -155
  91. claude_mpm/core/interfaces.py +221 -195
  92. claude_mpm/core/lazy.py +96 -96
  93. claude_mpm/core/logger.py +133 -107
  94. claude_mpm/core/logging_config.py +185 -157
  95. claude_mpm/core/minimal_framework_loader.py +20 -15
  96. claude_mpm/core/mixins.py +30 -29
  97. claude_mpm/core/oneshot_session.py +215 -181
  98. claude_mpm/core/optimized_agent_loader.py +134 -138
  99. claude_mpm/core/optimized_startup.py +159 -157
  100. claude_mpm/core/pm_hook_interceptor.py +85 -72
  101. claude_mpm/core/service_registry.py +103 -101
  102. claude_mpm/core/session_manager.py +97 -87
  103. claude_mpm/core/socketio_pool.py +212 -158
  104. claude_mpm/core/tool_access_control.py +58 -51
  105. claude_mpm/core/types.py +46 -24
  106. claude_mpm/core/typing_utils.py +166 -82
  107. claude_mpm/core/unified_agent_registry.py +721 -0
  108. claude_mpm/core/unified_config.py +550 -0
  109. claude_mpm/core/unified_paths.py +549 -0
  110. claude_mpm/dashboard/index.html +1 -1
  111. claude_mpm/dashboard/open_dashboard.py +51 -17
  112. claude_mpm/dashboard/static/css/dashboard.css +27 -8
  113. claude_mpm/dashboard/static/dist/components/agent-inference.js +2 -0
  114. claude_mpm/dashboard/static/dist/components/event-processor.js +2 -0
  115. claude_mpm/dashboard/static/dist/components/event-viewer.js +2 -0
  116. claude_mpm/dashboard/static/dist/components/export-manager.js +2 -0
  117. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +2 -0
  118. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +2 -0
  119. claude_mpm/dashboard/static/dist/components/hud-manager.js +2 -0
  120. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +2 -0
  121. claude_mpm/dashboard/static/dist/components/module-viewer.js +2 -0
  122. claude_mpm/dashboard/static/dist/components/session-manager.js +2 -0
  123. claude_mpm/dashboard/static/dist/components/socket-manager.js +2 -0
  124. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +2 -0
  125. claude_mpm/dashboard/static/dist/components/working-directory.js +2 -0
  126. claude_mpm/dashboard/static/dist/dashboard.js +2 -0
  127. claude_mpm/dashboard/static/dist/socket-client.js +2 -0
  128. claude_mpm/dashboard/static/js/components/agent-inference.js +80 -76
  129. claude_mpm/dashboard/static/js/components/event-processor.js +71 -67
  130. claude_mpm/dashboard/static/js/components/event-viewer.js +74 -70
  131. claude_mpm/dashboard/static/js/components/export-manager.js +31 -28
  132. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +106 -92
  133. claude_mpm/dashboard/static/js/components/hud-library-loader.js +11 -11
  134. claude_mpm/dashboard/static/js/components/hud-manager.js +73 -73
  135. claude_mpm/dashboard/static/js/components/hud-visualizer.js +163 -163
  136. claude_mpm/dashboard/static/js/components/module-viewer.js +305 -233
  137. claude_mpm/dashboard/static/js/components/session-manager.js +32 -29
  138. claude_mpm/dashboard/static/js/components/socket-manager.js +27 -20
  139. claude_mpm/dashboard/static/js/components/ui-state-manager.js +21 -18
  140. claude_mpm/dashboard/static/js/components/working-directory.js +74 -71
  141. claude_mpm/dashboard/static/js/dashboard.js +178 -453
  142. claude_mpm/dashboard/static/js/extension-error-handler.js +164 -0
  143. claude_mpm/dashboard/static/js/socket-client.js +120 -54
  144. claude_mpm/dashboard/templates/index.html +40 -50
  145. claude_mpm/experimental/cli_enhancements.py +60 -58
  146. claude_mpm/generators/__init__.py +1 -1
  147. claude_mpm/generators/agent_profile_generator.py +75 -65
  148. claude_mpm/hooks/__init__.py +1 -1
  149. claude_mpm/hooks/base_hook.py +33 -28
  150. claude_mpm/hooks/claude_hooks/__init__.py +1 -1
  151. claude_mpm/hooks/claude_hooks/connection_pool.py +120 -0
  152. claude_mpm/hooks/claude_hooks/event_handlers.py +743 -0
  153. claude_mpm/hooks/claude_hooks/hook_handler.py +415 -1331
  154. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +4 -4
  155. claude_mpm/hooks/claude_hooks/memory_integration.py +221 -0
  156. claude_mpm/hooks/claude_hooks/response_tracking.py +348 -0
  157. claude_mpm/hooks/claude_hooks/tool_analysis.py +230 -0
  158. claude_mpm/hooks/memory_integration_hook.py +140 -100
  159. claude_mpm/hooks/tool_call_interceptor.py +89 -76
  160. claude_mpm/hooks/validation_hooks.py +57 -49
  161. claude_mpm/init.py +145 -121
  162. claude_mpm/models/__init__.py +9 -9
  163. claude_mpm/models/agent_definition.py +33 -23
  164. claude_mpm/models/agent_session.py +228 -200
  165. claude_mpm/scripts/__init__.py +1 -1
  166. claude_mpm/scripts/socketio_daemon.py +192 -75
  167. claude_mpm/scripts/socketio_server_manager.py +328 -0
  168. claude_mpm/scripts/start_activity_logging.py +25 -22
  169. claude_mpm/services/__init__.py +68 -43
  170. claude_mpm/services/agent_capabilities_service.py +271 -0
  171. claude_mpm/services/agents/__init__.py +23 -32
  172. claude_mpm/services/agents/deployment/__init__.py +3 -3
  173. claude_mpm/services/agents/deployment/agent_config_provider.py +310 -0
  174. claude_mpm/services/agents/deployment/agent_configuration_manager.py +359 -0
  175. claude_mpm/services/agents/deployment/agent_definition_factory.py +84 -0
  176. claude_mpm/services/agents/deployment/agent_deployment.py +415 -2113
  177. claude_mpm/services/agents/deployment/agent_discovery_service.py +387 -0
  178. claude_mpm/services/agents/deployment/agent_environment_manager.py +293 -0
  179. claude_mpm/services/agents/deployment/agent_filesystem_manager.py +387 -0
  180. claude_mpm/services/agents/deployment/agent_format_converter.py +453 -0
  181. claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +161 -0
  182. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +345 -495
  183. claude_mpm/services/agents/deployment/agent_metrics_collector.py +279 -0
  184. claude_mpm/services/agents/deployment/agent_restore_handler.py +88 -0
  185. claude_mpm/services/agents/deployment/agent_template_builder.py +406 -0
  186. claude_mpm/services/agents/deployment/agent_validator.py +352 -0
  187. claude_mpm/services/agents/deployment/agent_version_manager.py +313 -0
  188. claude_mpm/services/agents/deployment/agent_versioning.py +6 -9
  189. claude_mpm/services/agents/deployment/agents_directory_resolver.py +79 -0
  190. claude_mpm/services/agents/deployment/async_agent_deployment.py +298 -234
  191. claude_mpm/services/agents/deployment/config/__init__.py +13 -0
  192. claude_mpm/services/agents/deployment/config/deployment_config.py +182 -0
  193. claude_mpm/services/agents/deployment/config/deployment_config_manager.py +200 -0
  194. claude_mpm/services/agents/deployment/deployment_config_loader.py +54 -0
  195. claude_mpm/services/agents/deployment/deployment_type_detector.py +124 -0
  196. claude_mpm/services/agents/deployment/facade/__init__.py +18 -0
  197. claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +159 -0
  198. claude_mpm/services/agents/deployment/facade/deployment_executor.py +73 -0
  199. claude_mpm/services/agents/deployment/facade/deployment_facade.py +270 -0
  200. claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +178 -0
  201. claude_mpm/services/agents/deployment/interface_adapter.py +227 -0
  202. claude_mpm/services/agents/deployment/lifecycle_health_checker.py +85 -0
  203. claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +100 -0
  204. claude_mpm/services/agents/deployment/pipeline/__init__.py +32 -0
  205. claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +158 -0
  206. claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +159 -0
  207. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +169 -0
  208. claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +19 -0
  209. claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +195 -0
  210. claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +119 -0
  211. claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +79 -0
  212. claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +90 -0
  213. claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +100 -0
  214. claude_mpm/services/agents/deployment/processors/__init__.py +15 -0
  215. claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +98 -0
  216. claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +235 -0
  217. claude_mpm/services/agents/deployment/processors/agent_processor.py +258 -0
  218. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +318 -0
  219. claude_mpm/services/agents/deployment/results/__init__.py +13 -0
  220. claude_mpm/services/agents/deployment/results/deployment_metrics.py +200 -0
  221. claude_mpm/services/agents/deployment/results/deployment_result_builder.py +249 -0
  222. claude_mpm/services/agents/deployment/strategies/__init__.py +25 -0
  223. claude_mpm/services/agents/deployment/strategies/base_strategy.py +119 -0
  224. claude_mpm/services/agents/deployment/strategies/project_strategy.py +150 -0
  225. claude_mpm/services/agents/deployment/strategies/strategy_selector.py +117 -0
  226. claude_mpm/services/agents/deployment/strategies/system_strategy.py +116 -0
  227. claude_mpm/services/agents/deployment/strategies/user_strategy.py +137 -0
  228. claude_mpm/services/agents/deployment/system_instructions_deployer.py +108 -0
  229. claude_mpm/services/agents/deployment/validation/__init__.py +19 -0
  230. claude_mpm/services/agents/deployment/validation/agent_validator.py +323 -0
  231. claude_mpm/services/agents/deployment/validation/deployment_validator.py +238 -0
  232. claude_mpm/services/agents/deployment/validation/template_validator.py +299 -0
  233. claude_mpm/services/agents/deployment/validation/validation_result.py +226 -0
  234. claude_mpm/services/agents/loading/__init__.py +2 -2
  235. claude_mpm/services/agents/loading/agent_profile_loader.py +259 -229
  236. claude_mpm/services/agents/loading/base_agent_manager.py +90 -81
  237. claude_mpm/services/agents/loading/framework_agent_loader.py +154 -129
  238. claude_mpm/services/agents/management/__init__.py +2 -2
  239. claude_mpm/services/agents/management/agent_capabilities_generator.py +72 -58
  240. claude_mpm/services/agents/management/agent_management_service.py +209 -156
  241. claude_mpm/services/agents/memory/__init__.py +9 -6
  242. claude_mpm/services/agents/memory/agent_memory_manager.py +218 -1152
  243. claude_mpm/services/agents/memory/agent_persistence_service.py +20 -16
  244. claude_mpm/services/agents/memory/analyzer.py +430 -0
  245. claude_mpm/services/agents/memory/content_manager.py +376 -0
  246. claude_mpm/services/agents/memory/template_generator.py +468 -0
  247. claude_mpm/services/agents/registry/__init__.py +7 -10
  248. claude_mpm/services/agents/registry/deployed_agent_discovery.py +122 -97
  249. claude_mpm/services/agents/registry/modification_tracker.py +351 -285
  250. claude_mpm/services/async_session_logger.py +187 -153
  251. claude_mpm/services/claude_session_logger.py +87 -72
  252. claude_mpm/services/command_handler_service.py +217 -0
  253. claude_mpm/services/communication/__init__.py +3 -2
  254. claude_mpm/services/core/__init__.py +50 -97
  255. claude_mpm/services/core/base.py +60 -53
  256. claude_mpm/services/core/interfaces/__init__.py +188 -0
  257. claude_mpm/services/core/interfaces/agent.py +351 -0
  258. claude_mpm/services/core/interfaces/communication.py +343 -0
  259. claude_mpm/services/core/interfaces/infrastructure.py +413 -0
  260. claude_mpm/services/core/interfaces/service.py +434 -0
  261. claude_mpm/services/core/interfaces.py +19 -944
  262. claude_mpm/services/event_aggregator.py +208 -170
  263. claude_mpm/services/exceptions.py +387 -308
  264. claude_mpm/services/framework_claude_md_generator/__init__.py +75 -79
  265. claude_mpm/services/framework_claude_md_generator/content_assembler.py +69 -60
  266. claude_mpm/services/framework_claude_md_generator/content_validator.py +65 -61
  267. claude_mpm/services/framework_claude_md_generator/deployment_manager.py +68 -49
  268. claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +34 -34
  269. claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +25 -22
  270. claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +10 -10
  271. claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +4 -3
  272. claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +4 -3
  273. claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +4 -3
  274. claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +6 -5
  275. claude_mpm/services/framework_claude_md_generator/section_generators/header.py +8 -7
  276. claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +4 -3
  277. claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +6 -5
  278. claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +9 -8
  279. claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +4 -3
  280. claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +5 -4
  281. claude_mpm/services/framework_claude_md_generator/section_manager.py +28 -27
  282. claude_mpm/services/framework_claude_md_generator/version_manager.py +30 -28
  283. claude_mpm/services/hook_service.py +106 -114
  284. claude_mpm/services/infrastructure/__init__.py +7 -5
  285. claude_mpm/services/infrastructure/context_preservation.py +233 -199
  286. claude_mpm/services/infrastructure/daemon_manager.py +279 -0
  287. claude_mpm/services/infrastructure/logging.py +83 -76
  288. claude_mpm/services/infrastructure/monitoring.py +547 -404
  289. claude_mpm/services/mcp_gateway/__init__.py +30 -13
  290. claude_mpm/services/mcp_gateway/config/__init__.py +2 -2
  291. claude_mpm/services/mcp_gateway/config/config_loader.py +61 -56
  292. claude_mpm/services/mcp_gateway/config/config_schema.py +50 -41
  293. claude_mpm/services/mcp_gateway/config/configuration.py +82 -75
  294. claude_mpm/services/mcp_gateway/core/__init__.py +13 -20
  295. claude_mpm/services/mcp_gateway/core/base.py +80 -67
  296. claude_mpm/services/mcp_gateway/core/exceptions.py +60 -46
  297. claude_mpm/services/mcp_gateway/core/interfaces.py +87 -84
  298. claude_mpm/services/mcp_gateway/main.py +287 -137
  299. claude_mpm/services/mcp_gateway/registry/__init__.py +1 -1
  300. claude_mpm/services/mcp_gateway/registry/service_registry.py +97 -94
  301. claude_mpm/services/mcp_gateway/registry/tool_registry.py +135 -126
  302. claude_mpm/services/mcp_gateway/server/__init__.py +2 -2
  303. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +105 -110
  304. claude_mpm/services/mcp_gateway/server/stdio_handler.py +105 -107
  305. claude_mpm/services/mcp_gateway/server/stdio_server.py +691 -0
  306. claude_mpm/services/mcp_gateway/tools/__init__.py +4 -2
  307. claude_mpm/services/mcp_gateway/tools/base_adapter.py +109 -119
  308. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +283 -215
  309. claude_mpm/services/mcp_gateway/tools/hello_world.py +122 -120
  310. claude_mpm/services/mcp_gateway/tools/ticket_tools.py +652 -0
  311. claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +606 -0
  312. claude_mpm/services/memory/__init__.py +2 -2
  313. claude_mpm/services/memory/builder.py +451 -362
  314. claude_mpm/services/memory/cache/__init__.py +2 -2
  315. claude_mpm/services/memory/cache/shared_prompt_cache.py +232 -194
  316. claude_mpm/services/memory/cache/simple_cache.py +107 -93
  317. claude_mpm/services/memory/indexed_memory.py +195 -193
  318. claude_mpm/services/memory/optimizer.py +267 -234
  319. claude_mpm/services/memory/router.py +571 -263
  320. claude_mpm/services/memory_hook_service.py +237 -0
  321. claude_mpm/services/port_manager.py +223 -0
  322. claude_mpm/services/project/__init__.py +3 -3
  323. claude_mpm/services/project/analyzer.py +451 -305
  324. claude_mpm/services/project/registry.py +262 -240
  325. claude_mpm/services/recovery_manager.py +287 -231
  326. claude_mpm/services/response_tracker.py +87 -67
  327. claude_mpm/services/runner_configuration_service.py +587 -0
  328. claude_mpm/services/session_management_service.py +304 -0
  329. claude_mpm/services/socketio/__init__.py +4 -4
  330. claude_mpm/services/socketio/client_proxy.py +174 -0
  331. claude_mpm/services/socketio/handlers/__init__.py +3 -3
  332. claude_mpm/services/socketio/handlers/base.py +44 -30
  333. claude_mpm/services/socketio/handlers/connection.py +145 -65
  334. claude_mpm/services/socketio/handlers/file.py +123 -108
  335. claude_mpm/services/socketio/handlers/git.py +607 -373
  336. claude_mpm/services/socketio/handlers/hook.py +170 -0
  337. claude_mpm/services/socketio/handlers/memory.py +4 -4
  338. claude_mpm/services/socketio/handlers/project.py +4 -4
  339. claude_mpm/services/socketio/handlers/registry.py +53 -38
  340. claude_mpm/services/socketio/server/__init__.py +18 -0
  341. claude_mpm/services/socketio/server/broadcaster.py +252 -0
  342. claude_mpm/services/socketio/server/core.py +399 -0
  343. claude_mpm/services/socketio/server/main.py +323 -0
  344. claude_mpm/services/socketio_client_manager.py +160 -133
  345. claude_mpm/services/socketio_server.py +36 -1885
  346. claude_mpm/services/subprocess_launcher_service.py +316 -0
  347. claude_mpm/services/system_instructions_service.py +258 -0
  348. claude_mpm/services/ticket_manager.py +19 -533
  349. claude_mpm/services/utility_service.py +285 -0
  350. claude_mpm/services/version_control/__init__.py +18 -21
  351. claude_mpm/services/version_control/branch_strategy.py +20 -10
  352. claude_mpm/services/version_control/conflict_resolution.py +37 -13
  353. claude_mpm/services/version_control/git_operations.py +52 -21
  354. claude_mpm/services/version_control/semantic_versioning.py +92 -53
  355. claude_mpm/services/version_control/version_parser.py +145 -125
  356. claude_mpm/services/version_service.py +270 -0
  357. claude_mpm/storage/__init__.py +2 -2
  358. claude_mpm/storage/state_storage.py +177 -181
  359. claude_mpm/ticket_wrapper.py +2 -2
  360. claude_mpm/utils/__init__.py +2 -2
  361. claude_mpm/utils/agent_dependency_loader.py +453 -243
  362. claude_mpm/utils/config_manager.py +157 -118
  363. claude_mpm/utils/console.py +1 -1
  364. claude_mpm/utils/dependency_cache.py +102 -107
  365. claude_mpm/utils/dependency_manager.py +52 -47
  366. claude_mpm/utils/dependency_strategies.py +131 -96
  367. claude_mpm/utils/environment_context.py +110 -102
  368. claude_mpm/utils/error_handler.py +75 -55
  369. claude_mpm/utils/file_utils.py +80 -67
  370. claude_mpm/utils/framework_detection.py +12 -11
  371. claude_mpm/utils/import_migration_example.py +12 -60
  372. claude_mpm/utils/imports.py +48 -45
  373. claude_mpm/utils/path_operations.py +100 -93
  374. claude_mpm/utils/robust_installer.py +172 -164
  375. claude_mpm/utils/session_logging.py +30 -23
  376. claude_mpm/utils/subprocess_utils.py +99 -61
  377. claude_mpm/validation/__init__.py +1 -1
  378. claude_mpm/validation/agent_validator.py +151 -111
  379. claude_mpm/validation/frontmatter_validator.py +92 -71
  380. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.dist-info}/METADATA +27 -1
  381. claude_mpm-4.0.3.dist-info/RECORD +402 -0
  382. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.dist-info}/entry_points.txt +1 -0
  383. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.dist-info}/licenses/LICENSE +1 -1
  384. claude_mpm/cli/commands/run_guarded.py +0 -511
  385. claude_mpm/config/memory_guardian_config.py +0 -325
  386. claude_mpm/config/memory_guardian_yaml.py +0 -335
  387. claude_mpm/core/config_paths.py +0 -150
  388. claude_mpm/core/memory_aware_runner.py +0 -353
  389. claude_mpm/dashboard/static/js/dashboard-original.js +0 -4134
  390. claude_mpm/deployment_paths.py +0 -261
  391. claude_mpm/hooks/claude_hooks/hook_handler_fixed.py +0 -454
  392. claude_mpm/models/state_models.py +0 -433
  393. claude_mpm/services/agent/__init__.py +0 -24
  394. claude_mpm/services/agent/deployment.py +0 -2548
  395. claude_mpm/services/agent/management.py +0 -598
  396. claude_mpm/services/agent/registry.py +0 -813
  397. claude_mpm/services/agents/registry/agent_registry.py +0 -813
  398. claude_mpm/services/communication/socketio.py +0 -1935
  399. claude_mpm/services/communication/websocket.py +0 -479
  400. claude_mpm/services/framework_claude_md_generator.py +0 -624
  401. claude_mpm/services/health_monitor.py +0 -893
  402. claude_mpm/services/infrastructure/graceful_degradation.py +0 -616
  403. claude_mpm/services/infrastructure/health_monitor.py +0 -775
  404. claude_mpm/services/infrastructure/memory_dashboard.py +0 -479
  405. claude_mpm/services/infrastructure/memory_guardian.py +0 -944
  406. claude_mpm/services/infrastructure/restart_protection.py +0 -642
  407. claude_mpm/services/infrastructure/state_manager.py +0 -774
  408. claude_mpm/services/mcp_gateway/manager.py +0 -334
  409. claude_mpm/services/optimized_hook_service.py +0 -542
  410. claude_mpm/services/project_analyzer.py +0 -864
  411. claude_mpm/services/project_registry.py +0 -608
  412. claude_mpm/services/standalone_socketio_server.py +0 -1300
  413. claude_mpm/services/ticket_manager_di.py +0 -318
  414. claude_mpm/services/ticketing_service_original.py +0 -510
  415. claude_mpm/utils/paths.py +0 -395
  416. claude_mpm/utils/platform_memory.py +0 -524
  417. claude_mpm-3.9.11.dist-info/RECORD +0 -306
  418. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.dist-info}/WHEEL +0 -0
  419. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.dist-info}/top_level.txt +0 -0
@@ -1,3 +1,5 @@
1
+ from pathlib import Path
2
+
1
3
  """
2
4
  MCP Gateway Main Entry Point
3
5
  =============================
@@ -8,135 +10,270 @@ Orchestrates server initialization, tool registration, and lifecycle management.
8
10
  Part of ISS-0035: MCP Server Implementation - Core Server and Tool Registry
9
11
  """
10
12
 
11
- import asyncio
12
- import sys
13
- import signal
14
- from pathlib import Path
15
- from typing import Optional, List
16
13
  import argparse
14
+ import asyncio
17
15
  import logging
16
+ import signal
17
+ import sys
18
+ from typing import List, Optional
19
+
20
+ # Import with fallback handling for missing dependencies
21
+ try:
22
+ from claude_mpm.core.logger import get_logger
23
+ except ImportError:
24
+ import logging
25
+
26
+ def get_logger(name):
27
+ return logging.getLogger(name)
28
+
29
+
30
+ try:
31
+ from claude_mpm.services.mcp_gateway.config.configuration import MCPConfiguration
32
+ except ImportError:
33
+ # Fallback configuration class
34
+ class MCPConfiguration:
35
+ def __init__(self):
36
+ self.config = {}
37
+
38
+ def load_config(self, path):
39
+ return True
40
+
41
+ def get(self, key, default=None):
42
+ return default
43
+
44
+
45
+ try:
46
+ from claude_mpm.services.mcp_gateway.registry.tool_registry import ToolRegistry
47
+ except ImportError:
48
+ # Minimal fallback registry
49
+ class ToolRegistry:
50
+ def __init__(self):
51
+ self.tools = []
52
+
53
+ async def initialize(self):
54
+ return True
55
+
56
+ def register_tool(self, tool, category="builtin"):
57
+ return True
58
+
59
+ async def shutdown(self):
60
+ pass
61
+
62
+
63
+ try:
64
+ from claude_mpm.services.mcp_gateway.server.mcp_gateway import MCPGateway
65
+ except ImportError as e:
66
+ raise ImportError(f"Critical: Cannot import MCPGateway server: {e}")
67
+
68
+ try:
69
+ from claude_mpm.services.mcp_gateway.server.stdio_handler import StdioHandler
70
+ except ImportError:
71
+ # Fallback stdio handler
72
+ class StdioHandler:
73
+ async def initialize(self):
74
+ return True
75
+
76
+ async def shutdown(self):
77
+ pass
78
+
79
+
80
+ # Import tools with individual fallbacks
81
+ try:
82
+ from claude_mpm.services.mcp_gateway.tools.base_adapter import (
83
+ CalculatorToolAdapter,
84
+ EchoToolAdapter,
85
+ SystemInfoToolAdapter,
86
+ )
87
+ except ImportError:
88
+ # Create dummy tool adapters
89
+ class BaseToolAdapter:
90
+ def __init__(self):
91
+ pass
92
+
93
+ async def initialize(self):
94
+ return True
18
95
 
19
- from claude_mpm.services.mcp_gateway.server.mcp_gateway import MCPGateway
20
- from claude_mpm.services.mcp_gateway.server.stdio_handler import StdioHandler
21
- from claude_mpm.services.mcp_gateway.registry.tool_registry import ToolRegistry
22
- from claude_mpm.services.mcp_gateway.tools.base_adapter import (
23
- EchoToolAdapter,
24
- CalculatorToolAdapter,
25
- SystemInfoToolAdapter
26
- )
27
- from claude_mpm.services.mcp_gateway.tools.document_summarizer import DocumentSummarizerTool
28
- from claude_mpm.services.mcp_gateway.config.configuration import MCPConfiguration
29
- from claude_mpm.core.logger import get_logger
30
- from .manager import start_global_gateway, run_global_gateway
31
-
32
-
33
- class MCPGateway:
96
+ def get_definition(self):
97
+ return type("ToolDef", (), {"name": "unknown"})
98
+
99
+ CalculatorToolAdapter = BaseToolAdapter
100
+ EchoToolAdapter = BaseToolAdapter
101
+ SystemInfoToolAdapter = BaseToolAdapter
102
+
103
+ try:
104
+ from claude_mpm.services.mcp_gateway.tools.document_summarizer import (
105
+ DocumentSummarizerTool,
106
+ )
107
+ except ImportError:
108
+ DocumentSummarizerTool = None
109
+
110
+ try:
111
+ from claude_mpm.services.mcp_gateway.tools.unified_ticket_tool import (
112
+ UnifiedTicketTool,
113
+ )
114
+ except ImportError:
115
+ # Unified ticket tool is optional
116
+ UnifiedTicketTool = None
117
+
118
+ # Manager module removed - using simplified architecture
119
+
120
+
121
+ class MCPGatewayOrchestrator:
34
122
  """
35
123
  Main MCP Gateway orchestrator.
36
-
124
+
37
125
  WHY: This class coordinates all MCP components, managing their lifecycle
38
126
  and ensuring proper initialization, startup, and shutdown sequences.
39
-
127
+
40
128
  DESIGN DECISIONS:
41
129
  - Use dependency injection to wire components together
42
130
  - Implement graceful shutdown on SIGINT/SIGTERM
43
131
  - Support both configuration file and CLI arguments
44
132
  - Provide comprehensive logging for debugging
133
+ - Renamed from MCPGateway to avoid naming conflict with server class
45
134
  """
46
-
135
+
47
136
  def __init__(self, config_path: Optional[Path] = None):
48
137
  """
49
138
  Initialize the MCP Gateway.
50
-
139
+
51
140
  Args:
52
141
  config_path: Optional path to configuration file
53
142
  """
54
143
  self.logger = get_logger(self.__class__.__name__)
55
144
  self.config_path = config_path
56
-
145
+
57
146
  # Core components
58
- self.server: Optional[MCPServer] = None
147
+ self.server: Optional[MCPGateway] = None
59
148
  self.registry: Optional[ToolRegistry] = None
60
149
  self.communication: Optional[StdioHandler] = None
61
150
  self.configuration: Optional[MCPConfiguration] = None
62
-
151
+
63
152
  # Shutdown handling
64
153
  self._shutdown_event = asyncio.Event()
65
154
  self._setup_signal_handlers()
66
-
155
+
67
156
  def _setup_signal_handlers(self) -> None:
68
157
  """Setup signal handlers for graceful shutdown."""
158
+
69
159
  def signal_handler(sig, frame):
70
160
  self.logger.info(f"Received signal {sig}, initiating shutdown...")
71
161
  self._shutdown_event.set()
72
-
162
+
73
163
  signal.signal(signal.SIGINT, signal_handler)
74
164
  signal.signal(signal.SIGTERM, signal_handler)
75
-
165
+
76
166
  async def initialize(self) -> bool:
77
167
  """
78
168
  Initialize all MCP Gateway components.
79
-
169
+
80
170
  Returns:
81
171
  True if initialization successful
82
172
  """
83
173
  try:
84
174
  self.logger.info("Initializing MCP Gateway")
85
-
175
+
86
176
  # Load configuration
87
177
  self.configuration = MCPConfiguration()
88
178
  if self.config_path and self.config_path.exists():
89
179
  if not self.configuration.load_config(self.config_path):
90
180
  self.logger.error("Failed to load configuration")
91
181
  return False
92
-
93
- # Initialize tool registry
94
- self.registry = ToolRegistry()
95
- if not await self.registry.initialize():
96
- self.logger.error("Failed to initialize tool registry")
97
- return False
98
-
99
- # Register built-in tools
100
- await self._register_builtin_tools()
101
-
102
- # Initialize communication handler
103
- self.communication = StdioHandler()
104
- if not await self.communication.initialize():
105
- self.logger.error("Failed to initialize communication handler")
106
- return False
107
-
108
- # Initialize MCP gateway
182
+
183
+ # Initialize tool registry with error handling
184
+ try:
185
+ self.registry = ToolRegistry()
186
+ if not await self.registry.initialize():
187
+ self.logger.error("Failed to initialize tool registry")
188
+ # Continue anyway - server can run without tools
189
+ self.registry = None
190
+ except Exception as e:
191
+ self.logger.warning(f"Tool registry initialization failed: {e}")
192
+ self.registry = None
193
+
194
+ # Register built-in tools if registry is available
195
+ if self.registry:
196
+ try:
197
+ await self._register_builtin_tools()
198
+ except Exception as e:
199
+ self.logger.warning(f"Failed to register some tools: {e}")
200
+ # Continue - server can run with partial tools
201
+
202
+ # Initialize communication handler with fallback
203
+ try:
204
+ self.communication = StdioHandler()
205
+ if not await self.communication.initialize():
206
+ self.logger.warning("Failed to initialize communication handler")
207
+ # Communication is optional for the server
208
+ self.communication = None
209
+ except Exception as e:
210
+ self.logger.warning(f"Communication handler initialization failed: {e}")
211
+ self.communication = None
212
+
213
+ # Initialize MCP gateway server
109
214
  gateway_name = self.configuration.get("server.name", "claude-mpm-mcp")
110
215
  version = self.configuration.get("server.version", "1.0.0")
111
216
  self.server = MCPGateway(gateway_name=gateway_name, version=version)
112
-
113
- # Wire dependencies
114
- self.server.set_tool_registry(self.registry)
115
- self.server.set_communication(self.communication)
116
-
217
+
218
+ # Wire dependencies (only if available)
219
+ if self.registry:
220
+ self.server.set_tool_registry(self.registry)
221
+ else:
222
+ self.logger.warning("Running without tool registry")
223
+
224
+ if self.communication:
225
+ self.server.set_communication(self.communication)
226
+ else:
227
+ self.logger.info("Running without custom communication handler")
228
+
117
229
  if not await self.server.initialize():
118
230
  self.logger.error("Failed to initialize MCP server")
119
231
  return False
120
-
232
+
121
233
  self.logger.info("MCP Gateway initialized successfully")
122
234
  return True
123
-
235
+
124
236
  except Exception as e:
125
237
  self.logger.error(f"Failed to initialize MCP Gateway: {e}")
126
238
  return False
127
-
239
+
128
240
  async def _register_builtin_tools(self) -> None:
129
241
  """Register built-in tools with the registry."""
130
242
  self.logger.info("Registering built-in tools")
131
-
132
- # Create tool adapters
133
- tools = [
134
- EchoToolAdapter(),
135
- CalculatorToolAdapter(),
136
- SystemInfoToolAdapter(),
137
- DocumentSummarizerTool() # ISS-0037: Document summarizer for memory optimization
138
- ]
139
-
243
+
244
+ # Create tool adapters (only include available tools)
245
+ tools = []
246
+
247
+ # Always include basic tools
248
+ try:
249
+ tools.extend(
250
+ [
251
+ EchoToolAdapter(),
252
+ CalculatorToolAdapter(),
253
+ SystemInfoToolAdapter(),
254
+ ]
255
+ )
256
+ except Exception as e:
257
+ self.logger.warning(f"Could not load basic tools: {e}")
258
+
259
+ # Optional: Document summarizer
260
+ if DocumentSummarizerTool is not None:
261
+ try:
262
+ tools.append(DocumentSummarizerTool())
263
+ except Exception as e:
264
+ self.logger.warning(f"Could not load document summarizer: {e}")
265
+
266
+ # Optional: Unified ticket management tool
267
+ if UnifiedTicketTool is not None:
268
+ try:
269
+ tools.append(UnifiedTicketTool())
270
+ except Exception as e:
271
+ self.logger.warning(f"Could not load unified ticket tool: {e}")
272
+
273
+ if not tools:
274
+ self.logger.warning("No tools available to register")
275
+ return
276
+
140
277
  # Register each tool
141
278
  for tool in tools:
142
279
  try:
@@ -144,76 +281,90 @@ class MCPGateway:
144
281
  if await tool.initialize():
145
282
  # Register with the registry
146
283
  if self.registry.register_tool(tool, category="builtin"):
147
- self.logger.info(f"Registered tool: {tool.get_definition().name}")
284
+ self.logger.info(
285
+ f"Registered tool: {tool.get_definition().name}"
286
+ )
148
287
  else:
149
- self.logger.warning(f"Failed to register tool: {tool.get_definition().name}")
288
+ self.logger.warning(
289
+ f"Failed to register tool: {tool.get_definition().name}"
290
+ )
150
291
  else:
151
- self.logger.warning(f"Failed to initialize tool: {tool.get_definition().name}")
292
+ self.logger.warning(
293
+ f"Failed to initialize tool: {tool.get_definition().name}"
294
+ )
152
295
  except Exception as e:
153
- self.logger.error(f"Error registering tool {tool.get_definition().name}: {e}")
154
-
296
+ self.logger.error(
297
+ f"Error registering tool {tool.get_definition().name}: {e}"
298
+ )
299
+
155
300
  async def start(self) -> bool:
156
301
  """
157
302
  Start the MCP Gateway server.
158
-
303
+
159
304
  Returns:
160
305
  True if startup successful
161
306
  """
162
307
  try:
163
308
  self.logger.info("Starting MCP Gateway")
164
-
309
+
165
310
  if not self.server:
166
311
  self.logger.error("Server not initialized")
167
312
  return False
168
-
313
+
169
314
  if not await self.server.start():
170
315
  self.logger.error("Failed to start MCP server")
171
316
  return False
172
-
317
+
173
318
  self.logger.info("MCP Gateway started successfully")
174
319
  return True
175
-
320
+
176
321
  except Exception as e:
177
322
  self.logger.error(f"Failed to start MCP Gateway: {e}")
178
323
  return False
179
-
324
+
180
325
  async def run(self) -> None:
181
326
  """
182
327
  Run the MCP Gateway main loop.
183
-
328
+
184
329
  This method blocks until shutdown is requested.
185
330
  """
186
331
  try:
187
332
  self.logger.info("MCP Gateway running")
188
-
333
+
189
334
  # Wait for shutdown signal
190
335
  await self._shutdown_event.wait()
191
-
336
+
192
337
  self.logger.info("Shutdown signal received")
193
-
338
+
194
339
  except Exception as e:
195
340
  self.logger.error(f"Error in MCP Gateway main loop: {e}")
196
341
  raise
197
-
342
+
198
343
  async def shutdown(self) -> None:
199
344
  """Shutdown the MCP Gateway gracefully."""
200
345
  try:
201
346
  self.logger.info("Shutting down MCP Gateway")
202
-
347
+
203
348
  # Shutdown server
204
349
  if self.server:
205
350
  await self.server.shutdown()
206
-
351
+
207
352
  # Shutdown registry (which will shutdown all tools)
208
353
  if self.registry:
209
- await self.registry.shutdown()
210
-
354
+ try:
355
+ await self.registry.shutdown()
356
+ except Exception as e:
357
+ self.logger.warning(f"Error during registry shutdown: {e}")
358
+
211
359
  # Shutdown communication handler
212
360
  if self.communication:
213
- await self.communication.shutdown()
214
-
361
+ try:
362
+ await self.communication.shutdown()
363
+ except Exception as e:
364
+ self.logger.warning(f"Error during communication shutdown: {e}")
365
+
215
366
  self.logger.info("MCP Gateway shutdown complete")
216
-
367
+
217
368
  except Exception as e:
218
369
  self.logger.error(f"Error during shutdown: {e}")
219
370
 
@@ -221,43 +372,42 @@ class MCPGateway:
221
372
  async def main(args: argparse.Namespace) -> int:
222
373
  """
223
374
  Main entry point for the MCP Gateway.
224
-
375
+
225
376
  Args:
226
377
  args: Command line arguments
227
-
378
+
228
379
  Returns:
229
380
  Exit code (0 for success, 1 for failure)
230
381
  """
231
382
  # Setup logging
232
383
  log_level = logging.DEBUG if args.debug else logging.INFO
233
384
  logging.basicConfig(
234
- level=log_level,
235
- format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
385
+ level=log_level, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
236
386
  )
237
-
238
- # Create gateway instance
387
+
388
+ # Create gateway orchestrator instance
239
389
  config_path = Path(args.config) if args.config else None
240
- gateway = MCPGateway(config_path=config_path)
241
-
390
+ gateway = MCPGatewayOrchestrator(config_path=config_path)
391
+
242
392
  try:
243
393
  # Initialize
244
394
  if not await gateway.initialize():
245
395
  logging.error("Failed to initialize MCP Gateway")
246
396
  return 1
247
-
397
+
248
398
  # Start
249
399
  if not await gateway.start():
250
400
  logging.error("Failed to start MCP Gateway")
251
401
  return 1
252
-
402
+
253
403
  # Run until shutdown
254
404
  await gateway.run()
255
-
405
+
256
406
  # Graceful shutdown
257
407
  await gateway.shutdown()
258
-
408
+
259
409
  return 0
260
-
410
+
261
411
  except Exception as e:
262
412
  logging.error(f"Unhandled exception: {e}")
263
413
  await gateway.shutdown()
@@ -267,7 +417,7 @@ async def main(args: argparse.Namespace) -> int:
267
417
  def parse_arguments() -> argparse.Namespace:
268
418
  """
269
419
  Parse command line arguments.
270
-
420
+
271
421
  Returns:
272
422
  Parsed arguments
273
423
  """
@@ -278,51 +428,43 @@ def parse_arguments() -> argparse.Namespace:
278
428
  Examples:
279
429
  # Run with default configuration
280
430
  python -m claude_mpm.services.mcp_gateway.main
281
-
431
+
282
432
  # Run with custom configuration file
283
433
  python -m claude_mpm.services.mcp_gateway.main --config /path/to/config.yaml
284
-
434
+
285
435
  # Run with debug logging
286
436
  python -m claude_mpm.services.mcp_gateway.main --debug
287
-
437
+
288
438
  # Run as MCP server for Claude Desktop
289
439
  python -m claude_mpm.services.mcp_gateway.main --stdio
290
- """
291
- )
292
-
293
- parser.add_argument(
294
- "--config",
295
- type=str,
296
- help="Path to configuration file"
297
- )
298
-
299
- parser.add_argument(
300
- "--debug",
301
- action="store_true",
302
- help="Enable debug logging"
440
+ """,
303
441
  )
304
-
442
+
443
+ parser.add_argument("--config", type=str, help="Path to configuration file")
444
+
445
+ parser.add_argument("--debug", action="store_true", help="Enable debug logging")
446
+
305
447
  parser.add_argument(
306
448
  "--stdio",
307
449
  action="store_true",
308
450
  default=True,
309
- help="Use stdio for communication (default)"
451
+ help="Use stdio for communication (default)",
310
452
  )
311
-
453
+
312
454
  parser.add_argument(
313
- "--version",
314
- action="version",
315
- version="Claude MPM MCP Gateway 1.0.0"
455
+ "--version", action="version", version="Claude MPM MCP Gateway 1.0.0"
316
456
  )
317
-
457
+
318
458
  return parser.parse_args()
319
459
 
320
460
 
321
- async def run_global_mcp_gateway(gateway_name: str = "claude-mpm-mcp", version: str = "1.0.0"):
461
+ async def run_standalone_gateway(
462
+ gateway_name: str = "claude-mpm-mcp", version: str = "1.0.0"
463
+ ):
322
464
  """
323
- Run the MCP Gateway using the global manager.
465
+ Run the MCP Gateway as a standalone server.
324
466
 
325
- This ensures only one gateway instance per installation.
467
+ This creates a simple instance without complex management.
326
468
 
327
469
  Args:
328
470
  gateway_name: Name for the gateway
@@ -331,19 +473,27 @@ async def run_global_mcp_gateway(gateway_name: str = "claude-mpm-mcp", version:
331
473
  logger = get_logger("MCPGatewayMain")
332
474
 
333
475
  try:
334
- logger.info(f"Starting global MCP gateway: {gateway_name}")
476
+ logger.info(f"Starting standalone MCP gateway: {gateway_name}")
477
+
478
+ # Create and run a simple orchestrator
479
+ orchestrator = MCPGatewayOrchestrator()
335
480
 
336
- # Start the global gateway
337
- if not await start_global_gateway(gateway_name, version):
338
- logger.error("Failed to start global gateway")
481
+ if not await orchestrator.initialize():
482
+ logger.error("Failed to initialize gateway")
339
483
  return False
340
484
 
341
- # Run the gateway
342
- await run_global_gateway()
485
+ if not await orchestrator.start():
486
+ logger.error("Failed to start gateway")
487
+ return False
488
+
489
+ # Run until shutdown
490
+ await orchestrator.run()
491
+ await orchestrator.shutdown()
492
+
343
493
  return True
344
494
 
345
495
  except Exception as e:
346
- logger.error(f"Error running global gateway: {e}")
496
+ logger.error(f"Error running standalone gateway: {e}")
347
497
  return False
348
498
 
349
499
 
@@ -353,4 +503,4 @@ if __name__ == "__main__":
353
503
 
354
504
  # Run the gateway
355
505
  exit_code = asyncio.run(main(args))
356
- sys.exit(exit_code)
506
+ sys.exit(exit_code)
@@ -9,4 +9,4 @@ from .tool_registry import ToolRegistry
9
9
 
10
10
  __all__ = [
11
11
  "ToolRegistry",
12
- ]
12
+ ]