Local push-style macOS event watcher MCP server
Server has 6 tools with visible schemas and descriptions, but quality is inconsistent. All tools have descriptions (10-60 chars, mostly short), and input schemas are present with type definitions. However, descriptions are generic and lack actionable context for LLM selection. Parameter descriptions are minimal. No output schemas documented. Error handling is absent from tool definitions. Tools follow verb_noun naming (watch_*, drain_events) but lack clarity on when to use each watch variant. No tool annotations (readOnlyHint, etc.) despite all being read-only. Composition is reasonable, tools chain via watcher_id, but descriptions don't explain this dependency.
Retrieve accumulated events from a watcher and optionally stop it
Watch disk usage and alert when threshold is exceeded
Watch system memory usage and alert when threshold is exceeded
Watch a filesystem path for changes using native FSEvents
Watch system power state changes using pmset
Watch a process for state changes using kqueue/EVFILT_PROC
Descriptions lack LLM-optimized context. 'Watch a filesystem path for changes' (43 chars) does not explain WHEN to use watch_path vs watch_process vs watch_power, or what 'changes' means (file creation? modification? deletion?). Baseline: 194 chars avg, 50-200 chars optimal.
No output schemas documented. Tools return EventRecord objects (watcher_id, kind, timestamp_ms, data) but this is not visible in tool definitions. LLMs cannot plan downstream calls or extract watcher_id for drain_events without seeing the response structure.
Parameter descriptions are minimal or missing. 'interval_ms' appears in 4 tools with identical description 'Polling interval in milliseconds' but no guidance on valid range, typical values, or performance implications. Baseline: 72 chars avg param description.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2025-06-18+ | v2 |
No tool annotations despite all tools being read-only. Missing readOnlyHint in schema would signal to LLMs that these tools are safe to call speculatively. Current spec (2026-07-28) supports tool annotations.
watch_power has empty input schema (no parameters). Description does not explain what 'power state changes' means (sleep? wake? battery? AC?) or how to retrieve events (must call drain_events with watcher_id, but watch_power returns nothing visible).