MCP server for macOS hardware and system tuning, providing tools for thermal management, brightness control, battery monitoring, power management, and system metrics reporting.
26 tools with mixed quality. Naming is generally strong (verb_noun pattern: get_*, set_*, list_*, etc.). Descriptions present but often terse (10-50 chars, well below the 194-char baseline). Critical gaps: 8 tools lack minimum/maximum bounds on numeric parameters (set_extended_brightness, set_dim, set_fan, set_charge_limit have null bounds). No output schemas documented anywhere. Error handling minimal, no recovery guidance or error classification. Parameter descriptions sparse; many lack context on valid ranges or formats. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels in metadata.
Clear the battery charge limit and return to default charging.
Delete a saved tuning profile.
Read AI subscription/token usage per provider (OpenRouter, …). Read-only; never returns credential material. Unconfigured providers report as not set up.
Read battery health: charge %, cycle count, capacity, condition — plus Apple's own Maximum Capacity/Condition when available.
Read the current display brightness as a fraction (0.0–1.0).
Report tool version, host info, and which tuning capabilities are available.
Retrieve historical system metrics and tuning events.
8 tools with numeric parameters lack minimum/maximum bounds: set_extended_brightness, set_dim, set_fan, set_charge_limit have null min/max. Unbounded numbers let LLMs pass absurd values (e.g. fan speed 999%, charge limit 500%). Violates constrained-input pattern.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. Violates tool-description and response-shaper patterns. E.g., get_top_processes returns process list but schema is invisible.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Read thermal pressure and (when available) temperatures and fan RPM.
Get overall system health and tuning status.
Read system metrics: CPU utilization, memory pressure, disk usage, network throughput, and live power draw (volts/amps/watts, when the SMC exposes them).
List the processes currently using the most CPU or memory — the answer to "what is making this Mac hot/slow?". CPU is a rate measured between two samples taken about a second apart. Processes owned by another user (root) are counted in unreadable_process_count but cannot be inspected without elevation.
Start or stop a keep-awake session. Prevents idle/system sleep and optionally display sleep. Runs indefinitely without duration_seconds. Returns full session state.
Query the current keep-awake session state without changing it.
List displays with EDR headroom (extended-brightness capability).
List all saved tuning profiles.
Load and apply a previously saved tuning profile.
Reset display dimming to default.
Reset display color temperature to default.
Restore system to default tuning state.
Save the current system tuning state to a named profile.
Set display brightness to a fraction (0.0–1.0).
Set maximum battery charge percentage.
Set display dimming level.
Set extended brightness (HDR/EDR) when available on capable displays.
Set fan speed as a fraction of maximum.
Set display color temperature warmth (0.0–1.0).
Descriptions are terse (10-50 chars, well below 194-char baseline). Most lack WHEN to use, prerequisites, or side effects. E.g., 'Set display dimming level' does not explain what dimming does or valid range. Violates tool-description pattern.
No error handling guidance. Tools return errors but do not tell LLM what to do next (retry? ask user? fatal?). Violates recovery-guide and error-classification patterns. E.g., if load_profile fails, LLM has no hint to call list_profiles first.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels in metadata (READ_ONLY, WRITE, DESTRUCTIVE, REVERSIBLE). LLMs cannot infer safety properties. Violates tool-annotation pattern.