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.
- claude_mpm/VERSION +1 -1
- claude_mpm/__init__.py +2 -2
- claude_mpm/__main__.py +3 -2
- claude_mpm/agents/__init__.py +85 -79
- claude_mpm/agents/agent_loader.py +464 -1003
- claude_mpm/agents/agent_loader_integration.py +45 -45
- claude_mpm/agents/agents_metadata.py +29 -30
- claude_mpm/agents/async_agent_loader.py +156 -138
- claude_mpm/agents/base_agent.json +1 -1
- claude_mpm/agents/base_agent_loader.py +179 -151
- claude_mpm/agents/frontmatter_validator.py +229 -130
- claude_mpm/agents/schema/agent_schema.json +1 -1
- claude_mpm/agents/system_agent_config.py +213 -147
- claude_mpm/agents/templates/__init__.py +13 -13
- claude_mpm/agents/templates/code_analyzer.json +2 -2
- claude_mpm/agents/templates/data_engineer.json +1 -1
- claude_mpm/agents/templates/documentation.json +23 -11
- claude_mpm/agents/templates/engineer.json +22 -6
- claude_mpm/agents/templates/memory_manager.json +1 -1
- claude_mpm/agents/templates/ops.json +2 -2
- claude_mpm/agents/templates/project_organizer.json +1 -1
- claude_mpm/agents/templates/qa.json +1 -1
- claude_mpm/agents/templates/refactoring_engineer.json +222 -0
- claude_mpm/agents/templates/research.json +20 -14
- claude_mpm/agents/templates/security.json +1 -1
- claude_mpm/agents/templates/ticketing.json +1 -1
- claude_mpm/agents/templates/version_control.json +1 -1
- claude_mpm/agents/templates/web_qa.json +3 -1
- claude_mpm/agents/templates/web_ui.json +2 -2
- claude_mpm/cli/__init__.py +79 -51
- claude_mpm/cli/__main__.py +3 -2
- claude_mpm/cli/commands/__init__.py +20 -20
- claude_mpm/cli/commands/agents.py +279 -247
- claude_mpm/cli/commands/aggregate.py +138 -157
- claude_mpm/cli/commands/cleanup.py +147 -147
- claude_mpm/cli/commands/config.py +93 -76
- claude_mpm/cli/commands/info.py +17 -16
- claude_mpm/cli/commands/mcp.py +140 -905
- claude_mpm/cli/commands/mcp_command_router.py +139 -0
- claude_mpm/cli/commands/mcp_config_commands.py +20 -0
- claude_mpm/cli/commands/mcp_install_commands.py +20 -0
- claude_mpm/cli/commands/mcp_server_commands.py +175 -0
- claude_mpm/cli/commands/mcp_tool_commands.py +34 -0
- claude_mpm/cli/commands/memory.py +239 -203
- claude_mpm/cli/commands/monitor.py +203 -81
- claude_mpm/cli/commands/run.py +380 -429
- claude_mpm/cli/commands/run_config_checker.py +160 -0
- claude_mpm/cli/commands/socketio_monitor.py +235 -0
- claude_mpm/cli/commands/tickets.py +305 -197
- claude_mpm/cli/parser.py +24 -1156
- claude_mpm/cli/parsers/__init__.py +29 -0
- claude_mpm/cli/parsers/agents_parser.py +136 -0
- claude_mpm/cli/parsers/base_parser.py +331 -0
- claude_mpm/cli/parsers/config_parser.py +85 -0
- claude_mpm/cli/parsers/mcp_parser.py +152 -0
- claude_mpm/cli/parsers/memory_parser.py +138 -0
- claude_mpm/cli/parsers/monitor_parser.py +104 -0
- claude_mpm/cli/parsers/run_parser.py +147 -0
- claude_mpm/cli/parsers/tickets_parser.py +203 -0
- claude_mpm/cli/ticket_cli.py +7 -3
- claude_mpm/cli/utils.py +55 -37
- claude_mpm/cli_module/__init__.py +6 -6
- claude_mpm/cli_module/args.py +188 -140
- claude_mpm/cli_module/commands.py +79 -70
- claude_mpm/cli_module/migration_example.py +38 -60
- claude_mpm/config/__init__.py +32 -25
- claude_mpm/config/agent_config.py +151 -119
- claude_mpm/config/experimental_features.py +71 -73
- claude_mpm/config/paths.py +94 -208
- claude_mpm/config/socketio_config.py +84 -73
- claude_mpm/constants.py +35 -18
- claude_mpm/core/__init__.py +9 -6
- claude_mpm/core/agent_name_normalizer.py +68 -71
- claude_mpm/core/agent_registry.py +372 -521
- claude_mpm/core/agent_session_manager.py +74 -63
- claude_mpm/core/base_service.py +116 -87
- claude_mpm/core/cache.py +119 -153
- claude_mpm/core/claude_runner.py +425 -1120
- claude_mpm/core/config.py +263 -168
- claude_mpm/core/config_aliases.py +69 -61
- claude_mpm/core/config_constants.py +292 -0
- claude_mpm/core/constants.py +57 -99
- claude_mpm/core/container.py +211 -178
- claude_mpm/core/exceptions.py +233 -89
- claude_mpm/core/factories.py +92 -54
- claude_mpm/core/framework_loader.py +378 -220
- claude_mpm/core/hook_manager.py +198 -83
- claude_mpm/core/hook_performance_config.py +136 -0
- claude_mpm/core/injectable_service.py +61 -55
- claude_mpm/core/interactive_session.py +165 -155
- claude_mpm/core/interfaces.py +221 -195
- claude_mpm/core/lazy.py +96 -96
- claude_mpm/core/logger.py +133 -107
- claude_mpm/core/logging_config.py +185 -157
- claude_mpm/core/minimal_framework_loader.py +20 -15
- claude_mpm/core/mixins.py +30 -29
- claude_mpm/core/oneshot_session.py +215 -181
- claude_mpm/core/optimized_agent_loader.py +134 -138
- claude_mpm/core/optimized_startup.py +159 -157
- claude_mpm/core/pm_hook_interceptor.py +85 -72
- claude_mpm/core/service_registry.py +103 -101
- claude_mpm/core/session_manager.py +97 -87
- claude_mpm/core/socketio_pool.py +212 -158
- claude_mpm/core/tool_access_control.py +58 -51
- claude_mpm/core/types.py +46 -24
- claude_mpm/core/typing_utils.py +166 -82
- claude_mpm/core/unified_agent_registry.py +721 -0
- claude_mpm/core/unified_config.py +550 -0
- claude_mpm/core/unified_paths.py +549 -0
- claude_mpm/dashboard/index.html +1 -1
- claude_mpm/dashboard/open_dashboard.py +51 -17
- claude_mpm/dashboard/static/css/dashboard.css +27 -8
- claude_mpm/dashboard/static/dist/components/agent-inference.js +2 -0
- claude_mpm/dashboard/static/dist/components/event-processor.js +2 -0
- claude_mpm/dashboard/static/dist/components/event-viewer.js +2 -0
- claude_mpm/dashboard/static/dist/components/export-manager.js +2 -0
- claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +2 -0
- claude_mpm/dashboard/static/dist/components/hud-library-loader.js +2 -0
- claude_mpm/dashboard/static/dist/components/hud-manager.js +2 -0
- claude_mpm/dashboard/static/dist/components/hud-visualizer.js +2 -0
- claude_mpm/dashboard/static/dist/components/module-viewer.js +2 -0
- claude_mpm/dashboard/static/dist/components/session-manager.js +2 -0
- claude_mpm/dashboard/static/dist/components/socket-manager.js +2 -0
- claude_mpm/dashboard/static/dist/components/ui-state-manager.js +2 -0
- claude_mpm/dashboard/static/dist/components/working-directory.js +2 -0
- claude_mpm/dashboard/static/dist/dashboard.js +2 -0
- claude_mpm/dashboard/static/dist/socket-client.js +2 -0
- claude_mpm/dashboard/static/js/components/agent-inference.js +80 -76
- claude_mpm/dashboard/static/js/components/event-processor.js +71 -67
- claude_mpm/dashboard/static/js/components/event-viewer.js +74 -70
- claude_mpm/dashboard/static/js/components/export-manager.js +31 -28
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +106 -92
- claude_mpm/dashboard/static/js/components/hud-library-loader.js +11 -11
- claude_mpm/dashboard/static/js/components/hud-manager.js +73 -73
- claude_mpm/dashboard/static/js/components/hud-visualizer.js +163 -163
- claude_mpm/dashboard/static/js/components/module-viewer.js +305 -233
- claude_mpm/dashboard/static/js/components/session-manager.js +32 -29
- claude_mpm/dashboard/static/js/components/socket-manager.js +27 -20
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +21 -18
- claude_mpm/dashboard/static/js/components/working-directory.js +74 -71
- claude_mpm/dashboard/static/js/dashboard.js +178 -453
- claude_mpm/dashboard/static/js/extension-error-handler.js +164 -0
- claude_mpm/dashboard/static/js/socket-client.js +120 -54
- claude_mpm/dashboard/templates/index.html +40 -50
- claude_mpm/experimental/cli_enhancements.py +60 -58
- claude_mpm/generators/__init__.py +1 -1
- claude_mpm/generators/agent_profile_generator.py +75 -65
- claude_mpm/hooks/__init__.py +1 -1
- claude_mpm/hooks/base_hook.py +33 -28
- claude_mpm/hooks/claude_hooks/__init__.py +1 -1
- claude_mpm/hooks/claude_hooks/connection_pool.py +120 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +743 -0
- claude_mpm/hooks/claude_hooks/hook_handler.py +415 -1331
- claude_mpm/hooks/claude_hooks/hook_wrapper.sh +4 -4
- claude_mpm/hooks/claude_hooks/memory_integration.py +221 -0
- claude_mpm/hooks/claude_hooks/response_tracking.py +348 -0
- claude_mpm/hooks/claude_hooks/tool_analysis.py +230 -0
- claude_mpm/hooks/memory_integration_hook.py +140 -100
- claude_mpm/hooks/tool_call_interceptor.py +89 -76
- claude_mpm/hooks/validation_hooks.py +57 -49
- claude_mpm/init.py +145 -121
- claude_mpm/models/__init__.py +9 -9
- claude_mpm/models/agent_definition.py +33 -23
- claude_mpm/models/agent_session.py +228 -200
- claude_mpm/scripts/__init__.py +1 -1
- claude_mpm/scripts/socketio_daemon.py +192 -75
- claude_mpm/scripts/socketio_server_manager.py +328 -0
- claude_mpm/scripts/start_activity_logging.py +25 -22
- claude_mpm/services/__init__.py +68 -43
- claude_mpm/services/agent_capabilities_service.py +271 -0
- claude_mpm/services/agents/__init__.py +23 -32
- claude_mpm/services/agents/deployment/__init__.py +3 -3
- claude_mpm/services/agents/deployment/agent_config_provider.py +310 -0
- claude_mpm/services/agents/deployment/agent_configuration_manager.py +359 -0
- claude_mpm/services/agents/deployment/agent_definition_factory.py +84 -0
- claude_mpm/services/agents/deployment/agent_deployment.py +415 -2113
- claude_mpm/services/agents/deployment/agent_discovery_service.py +387 -0
- claude_mpm/services/agents/deployment/agent_environment_manager.py +293 -0
- claude_mpm/services/agents/deployment/agent_filesystem_manager.py +387 -0
- claude_mpm/services/agents/deployment/agent_format_converter.py +453 -0
- claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +161 -0
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +345 -495
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +279 -0
- claude_mpm/services/agents/deployment/agent_restore_handler.py +88 -0
- claude_mpm/services/agents/deployment/agent_template_builder.py +406 -0
- claude_mpm/services/agents/deployment/agent_validator.py +352 -0
- claude_mpm/services/agents/deployment/agent_version_manager.py +313 -0
- claude_mpm/services/agents/deployment/agent_versioning.py +6 -9
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +79 -0
- claude_mpm/services/agents/deployment/async_agent_deployment.py +298 -234
- claude_mpm/services/agents/deployment/config/__init__.py +13 -0
- claude_mpm/services/agents/deployment/config/deployment_config.py +182 -0
- claude_mpm/services/agents/deployment/config/deployment_config_manager.py +200 -0
- claude_mpm/services/agents/deployment/deployment_config_loader.py +54 -0
- claude_mpm/services/agents/deployment/deployment_type_detector.py +124 -0
- claude_mpm/services/agents/deployment/facade/__init__.py +18 -0
- claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +159 -0
- claude_mpm/services/agents/deployment/facade/deployment_executor.py +73 -0
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +270 -0
- claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +178 -0
- claude_mpm/services/agents/deployment/interface_adapter.py +227 -0
- claude_mpm/services/agents/deployment/lifecycle_health_checker.py +85 -0
- claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +100 -0
- claude_mpm/services/agents/deployment/pipeline/__init__.py +32 -0
- claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +158 -0
- claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +159 -0
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +169 -0
- claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +19 -0
- claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +195 -0
- claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +119 -0
- claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +79 -0
- claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +90 -0
- claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +100 -0
- claude_mpm/services/agents/deployment/processors/__init__.py +15 -0
- claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +98 -0
- claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +235 -0
- claude_mpm/services/agents/deployment/processors/agent_processor.py +258 -0
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +318 -0
- claude_mpm/services/agents/deployment/results/__init__.py +13 -0
- claude_mpm/services/agents/deployment/results/deployment_metrics.py +200 -0
- claude_mpm/services/agents/deployment/results/deployment_result_builder.py +249 -0
- claude_mpm/services/agents/deployment/strategies/__init__.py +25 -0
- claude_mpm/services/agents/deployment/strategies/base_strategy.py +119 -0
- claude_mpm/services/agents/deployment/strategies/project_strategy.py +150 -0
- claude_mpm/services/agents/deployment/strategies/strategy_selector.py +117 -0
- claude_mpm/services/agents/deployment/strategies/system_strategy.py +116 -0
- claude_mpm/services/agents/deployment/strategies/user_strategy.py +137 -0
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +108 -0
- claude_mpm/services/agents/deployment/validation/__init__.py +19 -0
- claude_mpm/services/agents/deployment/validation/agent_validator.py +323 -0
- claude_mpm/services/agents/deployment/validation/deployment_validator.py +238 -0
- claude_mpm/services/agents/deployment/validation/template_validator.py +299 -0
- claude_mpm/services/agents/deployment/validation/validation_result.py +226 -0
- claude_mpm/services/agents/loading/__init__.py +2 -2
- claude_mpm/services/agents/loading/agent_profile_loader.py +259 -229
- claude_mpm/services/agents/loading/base_agent_manager.py +90 -81
- claude_mpm/services/agents/loading/framework_agent_loader.py +154 -129
- claude_mpm/services/agents/management/__init__.py +2 -2
- claude_mpm/services/agents/management/agent_capabilities_generator.py +72 -58
- claude_mpm/services/agents/management/agent_management_service.py +209 -156
- claude_mpm/services/agents/memory/__init__.py +9 -6
- claude_mpm/services/agents/memory/agent_memory_manager.py +218 -1152
- claude_mpm/services/agents/memory/agent_persistence_service.py +20 -16
- claude_mpm/services/agents/memory/analyzer.py +430 -0
- claude_mpm/services/agents/memory/content_manager.py +376 -0
- claude_mpm/services/agents/memory/template_generator.py +468 -0
- claude_mpm/services/agents/registry/__init__.py +7 -10
- claude_mpm/services/agents/registry/deployed_agent_discovery.py +122 -97
- claude_mpm/services/agents/registry/modification_tracker.py +351 -285
- claude_mpm/services/async_session_logger.py +187 -153
- claude_mpm/services/claude_session_logger.py +87 -72
- claude_mpm/services/command_handler_service.py +217 -0
- claude_mpm/services/communication/__init__.py +3 -2
- claude_mpm/services/core/__init__.py +50 -97
- claude_mpm/services/core/base.py +60 -53
- claude_mpm/services/core/interfaces/__init__.py +188 -0
- claude_mpm/services/core/interfaces/agent.py +351 -0
- claude_mpm/services/core/interfaces/communication.py +343 -0
- claude_mpm/services/core/interfaces/infrastructure.py +413 -0
- claude_mpm/services/core/interfaces/service.py +434 -0
- claude_mpm/services/core/interfaces.py +19 -944
- claude_mpm/services/event_aggregator.py +208 -170
- claude_mpm/services/exceptions.py +387 -308
- claude_mpm/services/framework_claude_md_generator/__init__.py +75 -79
- claude_mpm/services/framework_claude_md_generator/content_assembler.py +69 -60
- claude_mpm/services/framework_claude_md_generator/content_validator.py +65 -61
- claude_mpm/services/framework_claude_md_generator/deployment_manager.py +68 -49
- claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +34 -34
- claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +25 -22
- claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +10 -10
- claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +4 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +4 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +4 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +6 -5
- claude_mpm/services/framework_claude_md_generator/section_generators/header.py +8 -7
- claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +4 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +6 -5
- claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +9 -8
- claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +4 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +5 -4
- claude_mpm/services/framework_claude_md_generator/section_manager.py +28 -27
- claude_mpm/services/framework_claude_md_generator/version_manager.py +30 -28
- claude_mpm/services/hook_service.py +106 -114
- claude_mpm/services/infrastructure/__init__.py +7 -5
- claude_mpm/services/infrastructure/context_preservation.py +233 -199
- claude_mpm/services/infrastructure/daemon_manager.py +279 -0
- claude_mpm/services/infrastructure/logging.py +83 -76
- claude_mpm/services/infrastructure/monitoring.py +547 -404
- claude_mpm/services/mcp_gateway/__init__.py +30 -13
- claude_mpm/services/mcp_gateway/config/__init__.py +2 -2
- claude_mpm/services/mcp_gateway/config/config_loader.py +61 -56
- claude_mpm/services/mcp_gateway/config/config_schema.py +50 -41
- claude_mpm/services/mcp_gateway/config/configuration.py +82 -75
- claude_mpm/services/mcp_gateway/core/__init__.py +13 -20
- claude_mpm/services/mcp_gateway/core/base.py +80 -67
- claude_mpm/services/mcp_gateway/core/exceptions.py +60 -46
- claude_mpm/services/mcp_gateway/core/interfaces.py +87 -84
- claude_mpm/services/mcp_gateway/main.py +287 -137
- claude_mpm/services/mcp_gateway/registry/__init__.py +1 -1
- claude_mpm/services/mcp_gateway/registry/service_registry.py +97 -94
- claude_mpm/services/mcp_gateway/registry/tool_registry.py +135 -126
- claude_mpm/services/mcp_gateway/server/__init__.py +2 -2
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +105 -110
- claude_mpm/services/mcp_gateway/server/stdio_handler.py +105 -107
- claude_mpm/services/mcp_gateway/server/stdio_server.py +691 -0
- claude_mpm/services/mcp_gateway/tools/__init__.py +4 -2
- claude_mpm/services/mcp_gateway/tools/base_adapter.py +109 -119
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +283 -215
- claude_mpm/services/mcp_gateway/tools/hello_world.py +122 -120
- claude_mpm/services/mcp_gateway/tools/ticket_tools.py +652 -0
- claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +606 -0
- claude_mpm/services/memory/__init__.py +2 -2
- claude_mpm/services/memory/builder.py +451 -362
- claude_mpm/services/memory/cache/__init__.py +2 -2
- claude_mpm/services/memory/cache/shared_prompt_cache.py +232 -194
- claude_mpm/services/memory/cache/simple_cache.py +107 -93
- claude_mpm/services/memory/indexed_memory.py +195 -193
- claude_mpm/services/memory/optimizer.py +267 -234
- claude_mpm/services/memory/router.py +571 -263
- claude_mpm/services/memory_hook_service.py +237 -0
- claude_mpm/services/port_manager.py +223 -0
- claude_mpm/services/project/__init__.py +3 -3
- claude_mpm/services/project/analyzer.py +451 -305
- claude_mpm/services/project/registry.py +262 -240
- claude_mpm/services/recovery_manager.py +287 -231
- claude_mpm/services/response_tracker.py +87 -67
- claude_mpm/services/runner_configuration_service.py +587 -0
- claude_mpm/services/session_management_service.py +304 -0
- claude_mpm/services/socketio/__init__.py +4 -4
- claude_mpm/services/socketio/client_proxy.py +174 -0
- claude_mpm/services/socketio/handlers/__init__.py +3 -3
- claude_mpm/services/socketio/handlers/base.py +44 -30
- claude_mpm/services/socketio/handlers/connection.py +145 -65
- claude_mpm/services/socketio/handlers/file.py +123 -108
- claude_mpm/services/socketio/handlers/git.py +607 -373
- claude_mpm/services/socketio/handlers/hook.py +170 -0
- claude_mpm/services/socketio/handlers/memory.py +4 -4
- claude_mpm/services/socketio/handlers/project.py +4 -4
- claude_mpm/services/socketio/handlers/registry.py +53 -38
- claude_mpm/services/socketio/server/__init__.py +18 -0
- claude_mpm/services/socketio/server/broadcaster.py +252 -0
- claude_mpm/services/socketio/server/core.py +399 -0
- claude_mpm/services/socketio/server/main.py +323 -0
- claude_mpm/services/socketio_client_manager.py +160 -133
- claude_mpm/services/socketio_server.py +36 -1885
- claude_mpm/services/subprocess_launcher_service.py +316 -0
- claude_mpm/services/system_instructions_service.py +258 -0
- claude_mpm/services/ticket_manager.py +19 -533
- claude_mpm/services/utility_service.py +285 -0
- claude_mpm/services/version_control/__init__.py +18 -21
- claude_mpm/services/version_control/branch_strategy.py +20 -10
- claude_mpm/services/version_control/conflict_resolution.py +37 -13
- claude_mpm/services/version_control/git_operations.py +52 -21
- claude_mpm/services/version_control/semantic_versioning.py +92 -53
- claude_mpm/services/version_control/version_parser.py +145 -125
- claude_mpm/services/version_service.py +270 -0
- claude_mpm/storage/__init__.py +2 -2
- claude_mpm/storage/state_storage.py +177 -181
- claude_mpm/ticket_wrapper.py +2 -2
- claude_mpm/utils/__init__.py +2 -2
- claude_mpm/utils/agent_dependency_loader.py +453 -243
- claude_mpm/utils/config_manager.py +157 -118
- claude_mpm/utils/console.py +1 -1
- claude_mpm/utils/dependency_cache.py +102 -107
- claude_mpm/utils/dependency_manager.py +52 -47
- claude_mpm/utils/dependency_strategies.py +131 -96
- claude_mpm/utils/environment_context.py +110 -102
- claude_mpm/utils/error_handler.py +75 -55
- claude_mpm/utils/file_utils.py +80 -67
- claude_mpm/utils/framework_detection.py +12 -11
- claude_mpm/utils/import_migration_example.py +12 -60
- claude_mpm/utils/imports.py +48 -45
- claude_mpm/utils/path_operations.py +100 -93
- claude_mpm/utils/robust_installer.py +172 -164
- claude_mpm/utils/session_logging.py +30 -23
- claude_mpm/utils/subprocess_utils.py +99 -61
- claude_mpm/validation/__init__.py +1 -1
- claude_mpm/validation/agent_validator.py +151 -111
- claude_mpm/validation/frontmatter_validator.py +92 -71
- {claude_mpm-3.9.11.dist-info โ claude_mpm-4.0.3.dist-info}/METADATA +27 -1
- claude_mpm-4.0.3.dist-info/RECORD +402 -0
- {claude_mpm-3.9.11.dist-info โ claude_mpm-4.0.3.dist-info}/entry_points.txt +1 -0
- {claude_mpm-3.9.11.dist-info โ claude_mpm-4.0.3.dist-info}/licenses/LICENSE +1 -1
- claude_mpm/cli/commands/run_guarded.py +0 -511
- claude_mpm/config/memory_guardian_config.py +0 -325
- claude_mpm/config/memory_guardian_yaml.py +0 -335
- claude_mpm/core/config_paths.py +0 -150
- claude_mpm/core/memory_aware_runner.py +0 -353
- claude_mpm/dashboard/static/js/dashboard-original.js +0 -4134
- claude_mpm/deployment_paths.py +0 -261
- claude_mpm/hooks/claude_hooks/hook_handler_fixed.py +0 -454
- claude_mpm/models/state_models.py +0 -433
- claude_mpm/services/agent/__init__.py +0 -24
- claude_mpm/services/agent/deployment.py +0 -2548
- claude_mpm/services/agent/management.py +0 -598
- claude_mpm/services/agent/registry.py +0 -813
- claude_mpm/services/agents/registry/agent_registry.py +0 -813
- claude_mpm/services/communication/socketio.py +0 -1935
- claude_mpm/services/communication/websocket.py +0 -479
- claude_mpm/services/framework_claude_md_generator.py +0 -624
- claude_mpm/services/health_monitor.py +0 -893
- claude_mpm/services/infrastructure/graceful_degradation.py +0 -616
- claude_mpm/services/infrastructure/health_monitor.py +0 -775
- claude_mpm/services/infrastructure/memory_dashboard.py +0 -479
- claude_mpm/services/infrastructure/memory_guardian.py +0 -944
- claude_mpm/services/infrastructure/restart_protection.py +0 -642
- claude_mpm/services/infrastructure/state_manager.py +0 -774
- claude_mpm/services/mcp_gateway/manager.py +0 -334
- claude_mpm/services/optimized_hook_service.py +0 -542
- claude_mpm/services/project_analyzer.py +0 -864
- claude_mpm/services/project_registry.py +0 -608
- claude_mpm/services/standalone_socketio_server.py +0 -1300
- claude_mpm/services/ticket_manager_di.py +0 -318
- claude_mpm/services/ticketing_service_original.py +0 -510
- claude_mpm/utils/paths.py +0 -395
- claude_mpm/utils/platform_memory.py +0 -524
- claude_mpm-3.9.11.dist-info/RECORD +0 -306
- {claude_mpm-3.9.11.dist-info โ claude_mpm-4.0.3.dist-info}/WHEEL +0 -0
- {claude_mpm-3.9.11.dist-info โ claude_mpm-4.0.3.dist-info}/top_level.txt +0 -0
| @@ -0,0 +1,139 @@ | |
| 1 | 
            +
            """MCP command router for CLI commands.
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            This module routes MCP commands to their appropriate handlers.
         | 
| 4 | 
            +
            Extracted from mcp.py to reduce complexity and improve maintainability.
         | 
| 5 | 
            +
            """
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            import asyncio
         | 
| 8 | 
            +
            from typing import Any
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            from ...constants import MCPCommands
         | 
| 11 | 
            +
             | 
| 12 | 
            +
             | 
| 13 | 
            +
            class MCPCommandRouter:
         | 
| 14 | 
            +
                """Routes MCP commands to appropriate handlers."""
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def __init__(self, logger):
         | 
| 17 | 
            +
                    """Initialize the command router."""
         | 
| 18 | 
            +
                    self.logger = logger
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                def route_command(self, args) -> int:
         | 
| 21 | 
            +
                    """Route command to appropriate handler."""
         | 
| 22 | 
            +
                    if args.mcp_command == MCPCommands.START.value:
         | 
| 23 | 
            +
                        return asyncio.run(self._start_server(args))
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                    elif args.mcp_command == MCPCommands.STOP.value:
         | 
| 26 | 
            +
                        return self._stop_server(args)
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                    elif args.mcp_command == MCPCommands.STATUS.value:
         | 
| 29 | 
            +
                        return self._show_status(args)
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                    elif args.mcp_command == MCPCommands.TOOLS.value:
         | 
| 32 | 
            +
                        return self._manage_tools(args)
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                    elif args.mcp_command == MCPCommands.REGISTER.value:
         | 
| 35 | 
            +
                        return self._register_tool(args)
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    elif args.mcp_command == MCPCommands.TEST.value:
         | 
| 38 | 
            +
                        return self._test_tool(args)
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                    elif args.mcp_command == MCPCommands.INSTALL.value:
         | 
| 41 | 
            +
                        return self._install_gateway(args)
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                    elif args.mcp_command == MCPCommands.CONFIG.value:
         | 
| 44 | 
            +
                        return self._manage_config(args)
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                    elif args.mcp_command == "cleanup":
         | 
| 47 | 
            +
                        return self._cleanup_locks(args)
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                    else:
         | 
| 50 | 
            +
                        self.logger.error(f"Unknown MCP command: {args.mcp_command}")
         | 
| 51 | 
            +
                        print(f"Unknown MCP command: {args.mcp_command}")
         | 
| 52 | 
            +
                        self._show_help()
         | 
| 53 | 
            +
                        return 1
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                async def _start_server(self, args) -> int:
         | 
| 56 | 
            +
                    """Start server command handler."""
         | 
| 57 | 
            +
                    from .mcp_server_commands import MCPServerCommands
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                    handler = MCPServerCommands(self.logger)
         | 
| 60 | 
            +
                    return await handler.start_server(args)
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                def _stop_server(self, args) -> int:
         | 
| 63 | 
            +
                    """Stop server command handler."""
         | 
| 64 | 
            +
                    from .mcp_server_commands import MCPServerCommands
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                    handler = MCPServerCommands(self.logger)
         | 
| 67 | 
            +
                    return handler.stop_server(args)
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                def _show_status(self, args) -> int:
         | 
| 70 | 
            +
                    """Show status command handler."""
         | 
| 71 | 
            +
                    from .mcp_server_commands import MCPServerCommands
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                    handler = MCPServerCommands(self.logger)
         | 
| 74 | 
            +
                    return handler.show_status(args)
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                def _manage_tools(self, args) -> int:
         | 
| 77 | 
            +
                    """Manage tools command handler."""
         | 
| 78 | 
            +
                    from .mcp_tool_commands import MCPToolCommands
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                    handler = MCPToolCommands(self.logger)
         | 
| 81 | 
            +
                    return handler.manage_tools(args)
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                def _register_tool(self, args) -> int:
         | 
| 84 | 
            +
                    """Register tool command handler."""
         | 
| 85 | 
            +
                    from .mcp_tool_commands import MCPToolCommands
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                    handler = MCPToolCommands(self.logger)
         | 
| 88 | 
            +
                    return handler.register_tool(args)
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                def _test_tool(self, args) -> int:
         | 
| 91 | 
            +
                    """Test tool command handler."""
         | 
| 92 | 
            +
                    from .mcp_tool_commands import MCPToolCommands
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                    handler = MCPToolCommands(self.logger)
         | 
| 95 | 
            +
                    return handler.test_tool(args)
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                def _install_gateway(self, args) -> int:
         | 
| 98 | 
            +
                    """Install gateway command handler."""
         | 
| 99 | 
            +
                    from .mcp_install_commands import MCPInstallCommands
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                    handler = MCPInstallCommands(self.logger)
         | 
| 102 | 
            +
                    return handler.install_gateway(args)
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                def _manage_config(self, args) -> int:
         | 
| 105 | 
            +
                    """Manage config command handler."""
         | 
| 106 | 
            +
                    from .mcp_config_commands import MCPConfigCommands
         | 
| 107 | 
            +
             | 
| 108 | 
            +
                    handler = MCPConfigCommands(self.logger)
         | 
| 109 | 
            +
                    return handler.manage_config(args)
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                def _cleanup_locks(self, args) -> int:
         | 
| 112 | 
            +
                    """Cleanup locks command handler."""
         | 
| 113 | 
            +
                    from .mcp_server_commands import MCPServerCommands
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                    handler = MCPServerCommands(self.logger)
         | 
| 116 | 
            +
                    return handler.cleanup_locks(args)
         | 
| 117 | 
            +
             | 
| 118 | 
            +
                def _show_help(self):
         | 
| 119 | 
            +
                    """Show available MCP commands."""
         | 
| 120 | 
            +
                    print("\nAvailable MCP commands:")
         | 
| 121 | 
            +
                    print("  install  - Install and configure MCP Gateway")
         | 
| 122 | 
            +
                    print("  start    - Start the MCP Gateway server (stdio mode)")
         | 
| 123 | 
            +
                    print("  stop     - Stop the MCP Gateway server")
         | 
| 124 | 
            +
                    print("  status   - Show server and tool status")
         | 
| 125 | 
            +
                    print("  tools    - List and manage registered tools")
         | 
| 126 | 
            +
                    print("  register - Register a new tool")
         | 
| 127 | 
            +
                    print("  test     - Test tool invocation")
         | 
| 128 | 
            +
                    print("  config   - View and manage configuration")
         | 
| 129 | 
            +
                    print("  cleanup  - Clean up legacy files")
         | 
| 130 | 
            +
                    print("\nFor help with a specific command:")
         | 
| 131 | 
            +
                    print("  claude-mpm mcp <command> --help")
         | 
| 132 | 
            +
                    print("\nExamples:")
         | 
| 133 | 
            +
                    print("  claude-mpm mcp install")
         | 
| 134 | 
            +
                    print("  claude-mpm mcp start                  # Run server (for Claude Code)")
         | 
| 135 | 
            +
                    print("  claude-mpm mcp start --instructions    # Show setup instructions")
         | 
| 136 | 
            +
                    print("  claude-mpm mcp start --test           # Test mode with debug output")
         | 
| 137 | 
            +
                    print("  claude-mpm mcp tools")
         | 
| 138 | 
            +
                    print("  claude-mpm mcp register my-tool")
         | 
| 139 | 
            +
                    print("  claude-mpm mcp test my-tool")
         | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            """MCP config command implementations.
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            This module provides MCP configuration commands.
         | 
| 4 | 
            +
            Extracted from mcp.py to reduce complexity and improve maintainability.
         | 
| 5 | 
            +
            """
         | 
| 6 | 
            +
             | 
| 7 | 
            +
             | 
| 8 | 
            +
            class MCPConfigCommands:
         | 
| 9 | 
            +
                """Handles MCP config commands."""
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def __init__(self, logger):
         | 
| 12 | 
            +
                    """Initialize the MCP config commands handler."""
         | 
| 13 | 
            +
                    self.logger = logger
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def manage_config(self, args):
         | 
| 16 | 
            +
                    """Manage MCP configuration command."""
         | 
| 17 | 
            +
                    self.logger.info("MCP configuration management command called")
         | 
| 18 | 
            +
                    print("โ๏ธ  MCP configuration management functionality has been simplified")
         | 
| 19 | 
            +
                    print("   This command is now a placeholder - full implementation needed")
         | 
| 20 | 
            +
                    return 0
         | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            """MCP install command implementations.
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            This module provides MCP installation commands.
         | 
| 4 | 
            +
            Extracted from mcp.py to reduce complexity and improve maintainability.
         | 
| 5 | 
            +
            """
         | 
| 6 | 
            +
             | 
| 7 | 
            +
             | 
| 8 | 
            +
            class MCPInstallCommands:
         | 
| 9 | 
            +
                """Handles MCP install commands."""
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def __init__(self, logger):
         | 
| 12 | 
            +
                    """Initialize the MCP install commands handler."""
         | 
| 13 | 
            +
                    self.logger = logger
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def install_gateway(self, args):
         | 
| 16 | 
            +
                    """Install MCP gateway command."""
         | 
| 17 | 
            +
                    self.logger.info("MCP gateway installation command called")
         | 
| 18 | 
            +
                    print("๐ฆ MCP gateway installation functionality has been simplified")
         | 
| 19 | 
            +
                    print("   This command is now a placeholder - full implementation needed")
         | 
| 20 | 
            +
                    return 0
         | 
| @@ -0,0 +1,175 @@ | |
| 1 | 
            +
            """MCP server command implementations.
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            This module provides MCP server management commands.
         | 
| 4 | 
            +
            Extracted from mcp.py to reduce complexity and improve maintainability.
         | 
| 5 | 
            +
            """
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            import asyncio
         | 
| 8 | 
            +
            import subprocess
         | 
| 9 | 
            +
            import sys
         | 
| 10 | 
            +
            from pathlib import Path
         | 
| 11 | 
            +
             | 
| 12 | 
            +
             | 
| 13 | 
            +
            class MCPServerCommands:
         | 
| 14 | 
            +
                """Handles MCP server commands."""
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def __init__(self, logger):
         | 
| 17 | 
            +
                    """Initialize the MCP server commands handler."""
         | 
| 18 | 
            +
                    self.logger = logger
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                async def start_server(self, args):
         | 
| 21 | 
            +
                    """Start MCP server command.
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                    WHY: This command starts the MCP server using the proper stdio-based
         | 
| 24 | 
            +
                    implementation that Claude Code can communicate with.
         | 
| 25 | 
            +
                    NOTE: MCP is ONLY for Claude Code - NOT for Claude Desktop.
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                    DESIGN DECISION: When called without flags, we run the server directly
         | 
| 28 | 
            +
                    for Claude Code compatibility. With --instructions flag, we show setup info.
         | 
| 29 | 
            +
                    """
         | 
| 30 | 
            +
                    self.logger.info("MCP server start command called")
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                    # Check if we're being called by Claude Code (no special flags)
         | 
| 33 | 
            +
                    show_instructions = getattr(args, "instructions", False)
         | 
| 34 | 
            +
                    test_mode = getattr(args, "test", False)
         | 
| 35 | 
            +
                    daemon_mode = getattr(args, "daemon", False)
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    if daemon_mode:
         | 
| 38 | 
            +
                        # Daemon mode - not recommended for MCP
         | 
| 39 | 
            +
                        print("โ ๏ธ  MCP servers are designed to be spawned by Claude Code")
         | 
| 40 | 
            +
                        print("   Running as a daemon is not recommended.")
         | 
| 41 | 
            +
                        print("   Note: MCP is ONLY for Claude Code, not Claude Desktop.")
         | 
| 42 | 
            +
                        return 1
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                    if show_instructions:
         | 
| 45 | 
            +
                        # Show configuration instructions
         | 
| 46 | 
            +
                        print("๐ MCP Server Setup Instructions for Claude Code")
         | 
| 47 | 
            +
                        print("=" * 50)
         | 
| 48 | 
            +
                        print("\nโน๏ธ  IMPORTANT: MCP is ONLY for Claude Code - NOT for Claude Desktop!")
         | 
| 49 | 
            +
                        print("   Claude Desktop uses a different system for agent deployment.")
         | 
| 50 | 
            +
                        print("\nThe MCP server is designed to be spawned by Claude Code.")
         | 
| 51 | 
            +
                        print("\nTo use the MCP server with Claude Code:")
         | 
| 52 | 
            +
                        print("\n1. Add this to your Claude Code configuration (~/.claude.json):")
         | 
| 53 | 
            +
                        print("\n{")
         | 
| 54 | 
            +
                        print('  "mcpServers": {')
         | 
| 55 | 
            +
                        print('    "claude-mpm": {')
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                        # Find the correct binary path
         | 
| 58 | 
            +
                        bin_path = Path(sys.executable).parent / "claude-mpm-mcp"
         | 
| 59 | 
            +
                        if not bin_path.exists():
         | 
| 60 | 
            +
                            # Try to find it in the project bin directory
         | 
| 61 | 
            +
                            project_root = Path(__file__).parent.parent.parent.parent.parent
         | 
| 62 | 
            +
                            bin_path = project_root / "bin" / "claude-mpm-mcp"
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                        if bin_path.exists():
         | 
| 65 | 
            +
                            print(f'      "command": "{bin_path}"')
         | 
| 66 | 
            +
                        else:
         | 
| 67 | 
            +
                            print('      "command": "claude-mpm-mcp"')
         | 
| 68 | 
            +
                            print("      // Or use the full path if not in PATH:")
         | 
| 69 | 
            +
                            print('      // "command": "/path/to/claude-mpm/bin/claude-mpm-mcp"')
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                        print("    }")
         | 
| 72 | 
            +
                        print("  }")
         | 
| 73 | 
            +
                        print("}")
         | 
| 74 | 
            +
                        print("\n2. Restart Claude Code to load the MCP server")
         | 
| 75 | 
            +
                        print("\n3. The server will be automatically started when needed")
         | 
| 76 | 
            +
                        print("\nOr use the registration script:")
         | 
| 77 | 
            +
                        print("  python scripts/register_mcp_gateway.py")
         | 
| 78 | 
            +
                        print("\nTo test the server directly, run:")
         | 
| 79 | 
            +
                        print("  claude-mpm mcp start --test")
         | 
| 80 | 
            +
                        print("\nFor more information, see:")
         | 
| 81 | 
            +
                        print("  https://github.com/anthropics/mcp")
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                        return 0
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                    # Default behavior: Run the server directly (for Claude Code compatibility)
         | 
| 86 | 
            +
                    # When Claude Code spawns "claude-mpm mcp start", it expects the server to run
         | 
| 87 | 
            +
                    if test_mode:
         | 
| 88 | 
            +
                        print("๐งช Starting MCP server in test mode...")
         | 
| 89 | 
            +
                        print("   This will run the server with stdio communication.")
         | 
| 90 | 
            +
                        print("   Press Ctrl+C to stop.\n")
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                    try:
         | 
| 93 | 
            +
                        # Configure logging to stderr for MCP mode
         | 
| 94 | 
            +
                        import logging
         | 
| 95 | 
            +
                        import sys
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                        # Disable all stdout logging when running MCP server
         | 
| 98 | 
            +
                        # to prevent interference with JSON-RPC protocol
         | 
| 99 | 
            +
                        root_logger = logging.getLogger()
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                        # Remove any existing handlers that might log to stdout
         | 
| 102 | 
            +
                        for handler in root_logger.handlers[:]:
         | 
| 103 | 
            +
                            if hasattr(handler, "stream") and handler.stream == sys.stdout:
         | 
| 104 | 
            +
                                root_logger.removeHandler(handler)
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                        # Add stderr handler if needed (but keep it minimal)
         | 
| 107 | 
            +
                        if not test_mode:
         | 
| 108 | 
            +
                            # In production mode, minimize stderr output too
         | 
| 109 | 
            +
                            logging.basicConfig(
         | 
| 110 | 
            +
                                level=logging.ERROR,
         | 
| 111 | 
            +
                                format="%(message)s",
         | 
| 112 | 
            +
                                stream=sys.stderr,
         | 
| 113 | 
            +
                                force=True,
         | 
| 114 | 
            +
                            )
         | 
| 115 | 
            +
                        else:
         | 
| 116 | 
            +
                            # In test mode, allow more verbose stderr logging
         | 
| 117 | 
            +
                            logging.basicConfig(
         | 
| 118 | 
            +
                                level=logging.INFO,
         | 
| 119 | 
            +
                                format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
         | 
| 120 | 
            +
                                stream=sys.stderr,
         | 
| 121 | 
            +
                                force=True,
         | 
| 122 | 
            +
                            )
         | 
| 123 | 
            +
             | 
| 124 | 
            +
                        # Import and run the stdio server directly
         | 
| 125 | 
            +
                        from ...services.mcp_gateway.server.stdio_server import SimpleMCPServer
         | 
| 126 | 
            +
             | 
| 127 | 
            +
                        server = SimpleMCPServer(name="claude-mpm-gateway", version="1.0.0")
         | 
| 128 | 
            +
             | 
| 129 | 
            +
                        # Run the server (handles stdio communication)
         | 
| 130 | 
            +
                        await server.run()
         | 
| 131 | 
            +
                        return 0
         | 
| 132 | 
            +
             | 
| 133 | 
            +
                    except ImportError as e:
         | 
| 134 | 
            +
                        self.logger.error(f"Failed to import MCP server: {e}")
         | 
| 135 | 
            +
                        # Don't print to stdout as it would interfere with JSON-RPC protocol
         | 
| 136 | 
            +
                        # Log to stderr instead
         | 
| 137 | 
            +
                        import sys
         | 
| 138 | 
            +
             | 
| 139 | 
            +
                        print(
         | 
| 140 | 
            +
                            f"โ Error: Could not import MCP server components: {e}", file=sys.stderr
         | 
| 141 | 
            +
                        )
         | 
| 142 | 
            +
                        print("\nMake sure the MCP package is installed:", file=sys.stderr)
         | 
| 143 | 
            +
                        print("  pip install mcp", file=sys.stderr)
         | 
| 144 | 
            +
                        return 1
         | 
| 145 | 
            +
                    except KeyboardInterrupt:
         | 
| 146 | 
            +
                        # Graceful shutdown
         | 
| 147 | 
            +
                        self.logger.info("MCP server interrupted")
         | 
| 148 | 
            +
                        return 0
         | 
| 149 | 
            +
                    except Exception as e:
         | 
| 150 | 
            +
                        self.logger.error(f"Server error: {e}")
         | 
| 151 | 
            +
                        import sys
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                        print(f"โ Error running server: {e}", file=sys.stderr)
         | 
| 154 | 
            +
                        return 1
         | 
| 155 | 
            +
             | 
| 156 | 
            +
                def stop_server(self, args):
         | 
| 157 | 
            +
                    """Stop MCP server command."""
         | 
| 158 | 
            +
                    self.logger.info("MCP server stop command called")
         | 
| 159 | 
            +
                    print("๐ MCP server stop functionality has been simplified")
         | 
| 160 | 
            +
                    print("   This command is now a placeholder - full implementation needed")
         | 
| 161 | 
            +
                    return 0
         | 
| 162 | 
            +
             | 
| 163 | 
            +
                def show_status(self, args):
         | 
| 164 | 
            +
                    """Show MCP server status command."""
         | 
| 165 | 
            +
                    self.logger.info("MCP server status command called")
         | 
| 166 | 
            +
                    print("๐ MCP server status functionality has been simplified")
         | 
| 167 | 
            +
                    print("   This command is now a placeholder - full implementation needed")
         | 
| 168 | 
            +
                    return 0
         | 
| 169 | 
            +
             | 
| 170 | 
            +
                def cleanup_locks(self, args):
         | 
| 171 | 
            +
                    """Cleanup MCP server locks command."""
         | 
| 172 | 
            +
                    self.logger.info("MCP server cleanup locks command called")
         | 
| 173 | 
            +
                    print("๐งน MCP server cleanup locks functionality has been simplified")
         | 
| 174 | 
            +
                    print("   This command is now a placeholder - full implementation needed")
         | 
| 175 | 
            +
                    return 0
         | 
| @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            """MCP tool command implementations.
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            This module provides MCP tool management commands.
         | 
| 4 | 
            +
            Extracted from mcp.py to reduce complexity and improve maintainability.
         | 
| 5 | 
            +
            """
         | 
| 6 | 
            +
             | 
| 7 | 
            +
             | 
| 8 | 
            +
            class MCPToolCommands:
         | 
| 9 | 
            +
                """Handles MCP tool commands."""
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def __init__(self, logger):
         | 
| 12 | 
            +
                    """Initialize the MCP tool commands handler."""
         | 
| 13 | 
            +
                    self.logger = logger
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def manage_tools(self, args):
         | 
| 16 | 
            +
                    """Manage MCP tools command."""
         | 
| 17 | 
            +
                    self.logger.info("MCP tools management command called")
         | 
| 18 | 
            +
                    print("๐ง MCP tools management functionality has been simplified")
         | 
| 19 | 
            +
                    print("   This command is now a placeholder - full implementation needed")
         | 
| 20 | 
            +
                    return 0
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                def register_tool(self, args):
         | 
| 23 | 
            +
                    """Register MCP tool command."""
         | 
| 24 | 
            +
                    self.logger.info("MCP tool registration command called")
         | 
| 25 | 
            +
                    print("๐ MCP tool registration functionality has been simplified")
         | 
| 26 | 
            +
                    print("   This command is now a placeholder - full implementation needed")
         | 
| 27 | 
            +
                    return 0
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                def test_tool(self, args):
         | 
| 30 | 
            +
                    """Test MCP tool command."""
         | 
| 31 | 
            +
                    self.logger.info("MCP tool testing command called")
         | 
| 32 | 
            +
                    print("๐งช MCP tool testing functionality has been simplified")
         | 
| 33 | 
            +
                    print("   This command is now a placeholder - full implementation needed")
         | 
| 34 | 
            +
                    return 0
         |