MCP Server to execute AppleScript and JXA on macOS.
Single tool 'execute_script' has a comprehensive, well-structured description (1200+ chars) that explains three script sources, input handling, execution options, and output formatting. Input schema is fully defined with 10 parameters, all typed and described. However, the description is verbose and includes implementation details (osascript flags, placeholder syntax) that could confuse LLMs about when/why to use the tool. Parameter descriptions are technical but adequate. No output schema is documented, callers don't know what fields to expect from execution results. Error handling guidance is absent. Tool naming is clear (verb_noun pattern), but the single tool combines multiple concerns (kb lookup, raw script execution, file-based execution) that could be split for better composability.
Automate macOS tasks using AppleScript or JXA (JavaScript for Automation) to control applications like Terminal, Chrome, Safari, Finder, etc. **1. Script Source (Choose one):** * `kb_script_id` (string): **Preferred.** Executes a pre-defined script from the knowledge base by its ID. Use `get_scripting_tips` to find IDs and inputs. Supports placeholder substitution via `input_data` or `arguments`. Ex: `kb_script_id: "safari_get_front_tab_url"`. * `script_content` (string): Executes raw AppleScript/JXA code. Good for simple or dynamic scripts. Ex: `script_content: "tell application \"Finder\" to empty trash"`. * `script_path` (string): Executes a script from an absolute POSIX path on the server. Ex: `/Users/user/myscripts/myscript.applescript`. **2. Script Inputs (Optional):** * `input_data` (JSON object): For `kb_script_id`, provides named inputs (e.g., `--MCP_INPUT:keyName`). Values (string, number, boolean, simple array/object) are auto-converted. Ex: `input_data: { "folder_name": "New Docs" }`. * `arguments` (array of strings): For `script_path` (passes to `on run argv` / `run(argv)`). For `kb_script_id`, used for positional args (e.g., `--MCP_ARG_1`). **3. Execution Options (Optional):** * `language` ('applescript' | 'javascript'): Specify for `script_content`/`script_path` (default: 'applescript'). Inferred for `kb_script_id`. * `timeout_seconds` (integer, optional, default: 60): Sets the maximum time (in seconds) the script is allowed to run. Increase for potentially long-running operations. * `output_format_mode` (enum, optional, default: 'auto'): Controls `osascript` output formatting. * `'auto'`: Smart default - resolves to `'human_readable'` for AppleScript and `'direct'` for JXA. * `'human_readable'`: For AppleScript, uses `-s h` flag. * `'structured_error'`: For AppleScript, uses `-s s` flag (structured errors). * `'structured_output_and_error'`: For AppleScript, uses `-s ss` flag (structured output & errors). * `'direct'`: No special output flags (recommended for JXA). * `include_executed_script_in_output` (boolean, optional, default: false): If `true`, the final script content (after any placeholder substitutions) or script path that was executed will be included in the response. This is useful for debugging and understanding exactly what was run. Defaults to false. * `include_substitution_logs` (boolean, default: false): For `kb_script_id`, includes detailed placeholder substitution logs. * `report_execution_time` (boolean, optional, default: false): If `true`, an additional message with the formatted script execution time will be included in the response. Defaults to false.
No output schema documented. Callers cannot predict response structure, fields, or error format. LLMs must guess what data is available after execution.
Description mixes implementation details (osascript flags, placeholder syntax) with user-facing guidance. LLMs may misinterpret technical flags as required parameters or constraints.
Single tool combines three distinct script sources (kb_script_id, script_content, script_path) with different input semantics. Should be split into separate tools for clarity and composability.
No error recovery guidance. If script execution fails, LLM has no actionable next steps (retry? debug? check permissions?). Error responses should guide recovery.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Tool description lacks WHEN to use it. Should clarify: 'Use for macOS automation tasks requiring AppleScript/JXA. Requires Automation & Accessibility permissions. Not suitable for network calls or long-running operations.'