MCP Server for controlling Claude Desktop application on macOS via AppleScript and Accessibility APIs
This server has 12 tools with basic definitions but significant quality gaps. All tools have names and descriptions, but descriptions are minimal (10-60 chars, well below the 194-char baseline). Most critically, 10 of 12 tools have EMPTY input schemas (just `{}`) with no parameter documentation. The 2 tools with parameters (claude_send_message, claude_send_long_message, claude_shortcut) have malformed schema definitions that nest JSON Schema incorrectly. No output schemas are documented. Error handling is minimal, most tools return plain text with no recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk distinctions. The server lacks idempotency guarantees, rate limiting, and permission gates for destructive operations (quit, launch, send_message).
Bring Claude Desktop window to front
Copy current conversation to clipboard (Cmd+Shift+C)
Get UI element hierarchy for debugging
Get Claude Desktop window information (position, size)
Check if Claude Desktop is currently running
Launch Claude Desktop application
Start a new conversation in Claude Desktop (Cmd+N)
10 of 12 tools have empty input schemas ({}). No parameter documentation for tools that accept arguments. Violates pattern:tool-description and pattern:constrained-input.
Malformed JSON Schema in claude_send_message, claude_send_long_message, claude_shortcut. Schemas nest 'type', 'properties', 'required' as object values instead of proper JSON Schema structure. LLM cannot parse these correctly.
All tool descriptions are 10-60 characters (baseline 194 chars). Too brief to guide LLM selection. Missing WHEN to use, WHAT it returns, and prerequisites. Violates pattern:tool-description.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Quit Claude Desktop application
Take a screenshot of Claude Desktop window, saved to Desktop
Send a long message via clipboard (better for complex text with special characters)
Send a message to Claude Desktop. The message will be typed and Enter pressed.
Execute a keyboard shortcut in Claude Desktop
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Destructive tools (claude_quit, claude_launch, claude_send_message) lack warnings. LLM cannot distinguish safe reads from dangerous writes.
No output schemas documented. LLM cannot plan downstream calls or extract structured data. Error responses are plain text with no recovery guidance (pattern:recovery-guide).