claude-mpm 4.4.7__py3-none-any.whl → 4.4.8__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 (24) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
  3. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
  4. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
  5. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-313.pyc +0 -0
  6. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
  7. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
  8. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
  9. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
  10. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-313.pyc +0 -0
  11. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
  12. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
  13. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
  14. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
  15. claude_mpm/scripts/mcp_server.py +0 -0
  16. claude_mpm/scripts/start_activity_logging.py +0 -0
  17. claude_mpm/services/diagnostics/checks/mcp_services_check.py +122 -0
  18. claude_mpm/services/diagnostics/diagnostic_runner.py +3 -0
  19. {claude_mpm-4.4.7.dist-info → claude_mpm-4.4.8.dist-info}/METADATA +1 -1
  20. {claude_mpm-4.4.7.dist-info → claude_mpm-4.4.8.dist-info}/RECORD +22 -9
  21. {claude_mpm-4.4.7.dist-info → claude_mpm-4.4.8.dist-info}/WHEEL +0 -0
  22. {claude_mpm-4.4.7.dist-info → claude_mpm-4.4.8.dist-info}/entry_points.txt +0 -0
  23. {claude_mpm-4.4.7.dist-info → claude_mpm-4.4.8.dist-info}/licenses/LICENSE +0 -0
  24. {claude_mpm-4.4.7.dist-info → claude_mpm-4.4.8.dist-info}/top_level.txt +0 -0
claude_mpm/VERSION CHANGED
@@ -1 +1 @@
1
- 4.4.7
1
+ 4.4.8
File without changes
File without changes
@@ -10,6 +10,7 @@ import subprocess
10
10
  from pathlib import Path
11
11
  from typing import Dict, List, Optional, Tuple
12
12
 
13
+ from claude_mpm.core.logger import get_logger
13
14
  from ..models import DiagnosticResult, DiagnosticStatus
14
15
  from .base_check import BaseDiagnosticCheck
15
16
 
@@ -17,6 +18,11 @@ from .base_check import BaseDiagnosticCheck
17
18
  class MCPServicesCheck(BaseDiagnosticCheck):
18
19
  """Check MCP external services installation and health."""
19
20
 
21
+ def __init__(self, verbose: bool = False):
22
+ """Initialize the MCP services check."""
23
+ super().__init__(verbose)
24
+ self.logger = get_logger(self.__class__.__name__)
25
+
20
26
  # Define MCP services to check
21
27
  MCP_SERVICES = {
22
28
  "mcp-vector-search": {
@@ -71,6 +77,11 @@ class MCPServicesCheck(BaseDiagnosticCheck):
71
77
  sub_results = []
72
78
  services_status = {}
73
79
 
80
+ # Check for kuzu-memory configuration issues and offer auto-fix
81
+ kuzu_config_result = self._check_and_fix_kuzu_memory_config()
82
+ if kuzu_config_result:
83
+ sub_results.append(kuzu_config_result)
84
+
74
85
  # Check each MCP service
75
86
  for service_name, service_config in self.MCP_SERVICES.items():
76
87
  service_result = self._check_service(service_name, service_config)
@@ -391,6 +402,117 @@ class MCPServicesCheck(BaseDiagnosticCheck):
391
402
 
392
403
  return None
393
404
 
405
+ def _check_and_fix_kuzu_memory_config(self) -> Optional[DiagnosticResult]:
406
+ """Check for incorrect kuzu-memory configuration in .claude.json and offer auto-fix."""
407
+ claude_config_path = Path.home() / ".claude.json"
408
+
409
+ if not claude_config_path.exists():
410
+ return None
411
+
412
+ try:
413
+ with open(claude_config_path) as f:
414
+ config = json.load(f)
415
+
416
+ mcp_servers = config.get("mcpServers", {})
417
+ kuzu_config = mcp_servers.get("kuzu-memory")
418
+
419
+ if not kuzu_config:
420
+ return None
421
+
422
+ # Check if kuzu-memory has incorrect args
423
+ args = kuzu_config.get("args", [])
424
+ needs_fix = False
425
+ fix_reason = ""
426
+ new_args = None
427
+
428
+ # Check for outdated configurations
429
+ if args == ["claude", "mcp-server"]:
430
+ needs_fix = True
431
+ fix_reason = "Outdated 'claude mcp-server' format"
432
+ new_args = ["mcp", "serve"]
433
+ elif args == ["serve"]:
434
+ needs_fix = True
435
+ fix_reason = "Legacy 'serve' format"
436
+ new_args = ["mcp", "serve"]
437
+ elif args == ["mcp-server"]:
438
+ needs_fix = True
439
+ fix_reason = "Incorrect 'mcp-server' format"
440
+ new_args = ["mcp", "serve"]
441
+
442
+ if needs_fix:
443
+ # Offer to auto-fix
444
+ self.logger.warning(
445
+ f"Found incorrect kuzu-memory configuration: {fix_reason}. "
446
+ f"Current args: {args}"
447
+ )
448
+
449
+ # Auto-fix the configuration
450
+ fixed = self._fix_kuzu_memory_args(claude_config_path, config, new_args)
451
+
452
+ if fixed:
453
+ return DiagnosticResult(
454
+ category="kuzu-memory Configuration Fix",
455
+ status=DiagnosticStatus.OK,
456
+ message="Fixed kuzu-memory configuration",
457
+ details={
458
+ "old_args": args,
459
+ "new_args": new_args,
460
+ "reason": fix_reason,
461
+ "auto_fixed": True,
462
+ },
463
+ )
464
+ else:
465
+ return DiagnosticResult(
466
+ category="kuzu-memory Configuration",
467
+ status=DiagnosticStatus.WARNING,
468
+ message="kuzu-memory has incorrect configuration",
469
+ details={
470
+ "current_args": args,
471
+ "correct_args": new_args,
472
+ "reason": fix_reason,
473
+ "auto_fix_failed": True,
474
+ },
475
+ fix_command="claude-mpm configure --mcp --fix-kuzu",
476
+ fix_description="Fix kuzu-memory configuration manually",
477
+ )
478
+
479
+ # Configuration is correct
480
+ return None
481
+
482
+ except (json.JSONDecodeError, Exception) as e:
483
+ self.logger.debug(f"Could not check kuzu-memory config: {e}")
484
+ return None
485
+
486
+ def _fix_kuzu_memory_args(self, config_path: Path, config: Dict, new_args: List[str]) -> bool:
487
+ """Fix kuzu-memory args in the configuration."""
488
+ try:
489
+ # Save old args before updating
490
+ old_args = config["mcpServers"]["kuzu-memory"].get("args", [])
491
+
492
+ # Create backup
493
+ backup_path = config_path.with_suffix(".json.backup")
494
+ with open(backup_path, "w") as f:
495
+ json.dump(config, f, indent=2)
496
+
497
+ # Update the configuration
498
+ config["mcpServers"]["kuzu-memory"]["args"] = new_args
499
+
500
+ # Write updated configuration
501
+ with open(config_path, "w") as f:
502
+ json.dump(config, f, indent=2)
503
+
504
+ self.logger.info(
505
+ f"✅ Fixed kuzu-memory configuration in {config_path}\n"
506
+ f" Changed args from {old_args} to {new_args}\n"
507
+ f" Backup saved to {backup_path}"
508
+ )
509
+
510
+ return True
511
+
512
+ except Exception as e:
513
+ self.logger.error(f"Failed to fix kuzu-memory configuration: {e}")
514
+ return False
515
+
394
516
  def _check_gateway_configuration(self) -> DiagnosticResult:
395
517
  """Check if MCP services are configured in the gateway."""
396
518
  try:
@@ -214,6 +214,9 @@ class DiagnosticRunner:
214
214
  "agents": AgentCheck,
215
215
  "agent": AgentCheck,
216
216
  "mcp": MCPCheck,
217
+ "mcp_services": MCPServicesCheck,
218
+ "mcp-services": MCPServicesCheck,
219
+ "external": MCPServicesCheck,
217
220
  "monitor": MonitorCheck,
218
221
  "monitoring": MonitorCheck,
219
222
  "common": CommonIssuesCheck,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 4.4.7
3
+ Version: 4.4.8
4
4
  Summary: Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking
5
5
  Author-email: Bob Matsuoka <bob@matsuoka.com>
6
6
  Maintainer: Claude MPM Team
@@ -1,5 +1,5 @@
1
1
  claude_mpm/BUILD_NUMBER,sha256=toytnNjkIKPgQaGwDqQdC1rpNTAdSEc6Vja50d7Ovug,4
2
- claude_mpm/VERSION,sha256=R8T1NAm61Ztbc_VglNJtvUE8VEkNwCNRHjh4rXfFP_M,6
2
+ claude_mpm/VERSION,sha256=6Oq7YOKP_W7Ec69SP5f3Of7vy8xtRJusLVAXeC2etgg,6
3
3
  claude_mpm/__init__.py,sha256=lyTZAYGH4DTaFGLRNWJKk5Q5oTjzN5I6AXmfVX-Jff0,1512
4
4
  claude_mpm/__main__.py,sha256=Ro5UBWBoQaSAIoSqWAr7zkbLyvi4sSy28WShqAhKJG0,723
5
5
  claude_mpm/constants.py,sha256=cChN3myrAcF3jC-6DvHnBFTEnwlDk-TAsIXPvUZr_yw,5953
@@ -383,12 +383,25 @@ claude_mpm/hooks/claude_hooks/installer.py,sha256=4QUZcnQWlQDH11BypvYs_JpQ-ojRF0
383
383
  claude_mpm/hooks/claude_hooks/memory_integration.py,sha256=9PogijgklM7iSNRTK2Sdz3s9AOlxL8Rt5axtU71-J2M,8866
384
384
  claude_mpm/hooks/claude_hooks/response_tracking.py,sha256=eMixPs2fOAqLn9WysTPgfIwwjwzZTdnAn0jpDjlOS6U,15024
385
385
  claude_mpm/hooks/claude_hooks/tool_analysis.py,sha256=t4CFrLldjD-akBY52su6Cl0cBmZCKRZbGbIE-Yg2Hhk,7896
386
+ claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc,sha256=bRXmkaVByqCv8qmFpfSJOEeKUOzLNgFVgFc5GVZ1oGo,322
387
+ claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc,sha256=W3pUVNdaDSE0ndQmQUSnGlBWaxOVnvjvZxCcmjLag-0,28937
388
+ claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc,sha256=HTbwMv0BW8gMg9DxzH6UbEPRPZ8a0e_R7sNaRMJ6I1w,21336
389
+ claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-313.pyc,sha256=xUXfgAB_3qc52cTpL8UgsO_xaplQ0v-yhI4pJLUBDF8,29046
390
+ claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc,sha256=qhDYC403V_m8NG2LHMXtcK_SH3qMuPADSp0sJ9D6YTo,8895
391
+ claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc,sha256=MuqyPvXZuFph_xp1j1vtNLqLKRJT51oI2AmZ3SEn69c,14213
392
+ claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc,sha256=OsljgmGIgSmKTyVRRrJmKvmoHdQFq0kBBGTRUrAdnrI,9137
386
393
  claude_mpm/hooks/claude_hooks/services/__init__.py,sha256=OIYOKsUNw1BHYawOCp-KFK5kmQKuj92cCqCEPO0nwo0,585
387
394
  claude_mpm/hooks/claude_hooks/services/connection_manager.py,sha256=6GSZ6lB0j6u7jE-w9ay-57YX-VVBFGfK_wmZNNM6hxE,8280
388
395
  claude_mpm/hooks/claude_hooks/services/connection_manager_http.py,sha256=sEIWyV-3pfS6VM6_jQgnrKiepD-6DLrk5rr_KU80kHo,8832
389
396
  claude_mpm/hooks/claude_hooks/services/duplicate_detector.py,sha256=Fh9LmEMsVmQM9t0U1v2l_fuBwvNpVkl_0EF8Wu5KLHQ,3882
390
397
  claude_mpm/hooks/claude_hooks/services/state_manager.py,sha256=l50dVFt6eafeLCjlu6TH3qqt8tTBEof971U1OlrUxZ8,11166
391
398
  claude_mpm/hooks/claude_hooks/services/subagent_processor.py,sha256=f7a_vgo_kuG9MalDTka2UPXwDyCkqNgCvG8i1hp0oRo,15263
399
+ claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc,sha256=bk04TMdGscqiVyfzkby3gPrW6DcSqzHJOCnclbO5Qrs,565
400
+ claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-313.pyc,sha256=xEEOqJmCwu_rOaZTzfYdLQtamwrlvn_Uv4M9GcTJeIA,8713
401
+ claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc,sha256=HvK-KUCBSg8J_0UTxNd98pMVa68_NYRkyoTgdATD_n4,9967
402
+ claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc,sha256=87ROjkadSdZB1L24rVdjdOHggYRfaGZ2v0nnhLlUnJk,4722
403
+ claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc,sha256=QoAQvuBn4xDlo_YXuHNgJ3vqXLhp4KzKunTOf9crJ70,11772
404
+ claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc,sha256=svC-kX-MYT5YIbWrY_aNf-Biz-JL49noI--1D-dSx_Q,13821
392
405
  claude_mpm/models/__init__.py,sha256=GADyLAiF-1VVghYKI7Urz3zSnf2sjJUXlOEMuCOs7_g,468
393
406
  claude_mpm/models/agent_definition.py,sha256=LC7EwihixF2Gw4QqOxiCNchsEzzyQJPR6AgPrcTrWTM,6674
394
407
  claude_mpm/models/agent_session.py,sha256=BEI9RsCnnSVMF3oOzWKY3a_NEmWI33J2nU_2O-WEyJQ,20027
@@ -547,7 +560,7 @@ claude_mpm/services/core/interfaces/communication.py,sha256=evwtLbYCFa3Zb8kEfL10
547
560
  claude_mpm/services/core/interfaces/infrastructure.py,sha256=eLtr_dFhA3Ux3mPOV_4DbWhGjHpfpGnj6xOhfQcgZGk,10037
548
561
  claude_mpm/services/core/interfaces/service.py,sha256=hNfHXe45LcPCp_dToOmZCfnUZBF5axMf_TdxqCSm2-I,11536
549
562
  claude_mpm/services/diagnostics/__init__.py,sha256=WTRucANR9EwNi53rotjkeE4k75s18RjHJ8s1BfBj7ic,614
550
- claude_mpm/services/diagnostics/diagnostic_runner.py,sha256=bfF3QQfaJPv2fyo61AstHZ139nHvY0fcjXXbXFcNdZo,9336
563
+ claude_mpm/services/diagnostics/diagnostic_runner.py,sha256=PJje2C3_20JAeDBf2LpZ_rfi3rwSWk73EXJmZEkDcvs,9470
551
564
  claude_mpm/services/diagnostics/doctor_reporter.py,sha256=WhlHBWy-KI8OhAWujOu77VAgSvkBvtF3sDrjacYZhvg,19649
552
565
  claude_mpm/services/diagnostics/models.py,sha256=nqOQLllZyZmw3Zt5eFJfE1Al7C3Vrn3REgFlARtT3jQ,3831
553
566
  claude_mpm/services/diagnostics/checks/__init__.py,sha256=aNdOeJHZVIpEqqzr6xWUOiyZCIrN4vckfRxkW70cqeo,987
@@ -560,7 +573,7 @@ claude_mpm/services/diagnostics/checks/filesystem_check.py,sha256=V5HoHDYlSuoK2l
560
573
  claude_mpm/services/diagnostics/checks/installation_check.py,sha256=WoTt15R8Wg-6k2JZFAtmffFuih1AIyCX71QOHEFH-Ro,19562
561
574
  claude_mpm/services/diagnostics/checks/instructions_check.py,sha256=VbgBorl0RpFvxKQ_SC1gibTmGSiXaKSp-vVZt6hbH1g,16290
562
575
  claude_mpm/services/diagnostics/checks/mcp_check.py,sha256=SftuhP70abopyMD8GlLA_K3XHEYnBAeITggUQI0cYP4,12173
563
- claude_mpm/services/diagnostics/checks/mcp_services_check.py,sha256=aH1YgyAAj3rj5H02adWUjM00KdZuOz4Qm9oyY4bgELc,19007
576
+ claude_mpm/services/diagnostics/checks/mcp_services_check.py,sha256=osS6J9UbGkwgUs1vxlMfUL4cGlUAkUH4CuatWY8sAIo,23794
564
577
  claude_mpm/services/diagnostics/checks/monitor_check.py,sha256=NUx5G1yjHWlukZmwhUz4o8STRWgsQEx01YjIMReNC0A,10096
565
578
  claude_mpm/services/diagnostics/checks/startup_log_check.py,sha256=DrXdml2rHvmhFBdb_sntE3xmwaP_DZIKjdVbCn8Dy7E,12258
566
579
  claude_mpm/services/event_bus/__init__.py,sha256=ETCo4a6puIeyVWAv55uCDjjhzNyUwbVAHEcAVkVapx8,688
@@ -773,9 +786,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=D0izRT8anjiUb_JG72zlJR_JAw1cDkb7kalN
773
786
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
774
787
  claude_mpm/validation/agent_validator.py,sha256=Nm2WmcbCb0EwOG4nFcikc3wVdiiAfjGBBI3YoR6ainQ,20915
775
788
  claude_mpm/validation/frontmatter_validator.py,sha256=IDBOCBweO6umydSnUJjBh81sKk3cy9hRFYm61DCiXbI,7020
776
- claude_mpm-4.4.7.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
777
- claude_mpm-4.4.7.dist-info/METADATA,sha256=dxh7pWMT-QL9jjSQ4oI4tYrYfjuYfJAMucrSK30Jn70,17517
778
- claude_mpm-4.4.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
779
- claude_mpm-4.4.7.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
780
- claude_mpm-4.4.7.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
781
- claude_mpm-4.4.7.dist-info/RECORD,,
789
+ claude_mpm-4.4.8.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
790
+ claude_mpm-4.4.8.dist-info/METADATA,sha256=Mai4bOdvj2KC_AhFTAoj8nHaIxYjWzaI95XBAsC2sx0,17517
791
+ claude_mpm-4.4.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
792
+ claude_mpm-4.4.8.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
793
+ claude_mpm-4.4.8.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
794
+ claude_mpm-4.4.8.dist-info/RECORD,,