From d2c3d048b8f952e5e00b213a561853b055f209fa Mon Sep 17 00:00:00 2001 From: John Randall Date: Thu, 26 Mar 2026 12:23:17 -0400 Subject: [PATCH] fix: handle missing psutil.cpu_freq() on Apple Silicon Macs psutil.cpu_freq() raises AttributeError on Apple Silicon (ARM64) Macs because CPU frequency scaling is not exposed on ARM chips. This crashes three tools: get_system_overview, get_power_settings, and diagnose_slow_performance. Wrap all three call sites in try/except AttributeError, falling back to cpu_freq = None (which the existing if-guards already handle). Tested on Mac mini M2 (macOS 26.2, arm64, psutil 7.2.2). Co-Authored-By: Claude Opus 4.6 (1M context) --- OS_mcp_server.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/OS_mcp_server.py b/OS_mcp_server.py index e03d7be..56ec62f 100644 --- a/OS_mcp_server.py +++ b/OS_mcp_server.py @@ -303,7 +303,10 @@ def get_system_overview() -> str: # CPU info cpu_count = psutil.cpu_count(logical=False) cpu_logical = psutil.cpu_count(logical=True) - cpu_freq = psutil.cpu_freq() + try: + cpu_freq = psutil.cpu_freq() + except AttributeError: + cpu_freq = None # psutil.cpu_freq() not available on Apple Silicon cpu_percent = psutil.cpu_percent(interval=1, percpu=False) # Memory info @@ -1801,7 +1804,10 @@ def diagnose_slow_performance() -> str: result += "**1️⃣ CPU ANALYSIS:**\n" cpu_percent = psutil.cpu_percent(interval=2) cpu_count = psutil.cpu_count() - cpu_freq = psutil.cpu_freq() + try: + cpu_freq = psutil.cpu_freq() + except AttributeError: + cpu_freq = None # psutil.cpu_freq() not available on Apple Silicon result += f"• Usage: {cpu_percent}%\n" result += f"• Cores: {cpu_count}\n" @@ -1995,7 +2001,10 @@ def get_power_settings() -> str: result += "• System is running on AC power\n\n" # CPU frequency (can indicate power mode) - cpu_freq = psutil.cpu_freq() + try: + cpu_freq = psutil.cpu_freq() + except AttributeError: + cpu_freq = None # psutil.cpu_freq() not available on Apple Silicon if cpu_freq: result += "**CPU POWER STATE:**\n" result += f"• Current Frequency: {cpu_freq.current:.0f} MHz\n"