Moving a window, clicking a menu item and reading the clipboard each have their own validated tool, which is more predictable than generating AppleScript from scratch every time. run_osascript is still there for whatever the twelve do not cover.
An MCP server that wraps osascript in twelve typed tools with input validation, so a client can move windows, click menu items, type, read the clipboard and enumerate browser tabs on macOS.
- Windows moved, resized and targeted by index, and the frontmost app reported with its bundle ID (manage_windows, get_frontmost_app)
- The menu bar introspected and its items clicked, so a buried command is reachable (app_menu)
- Text typed and individual keys or shortcut combinations pressed (type_text, press_key)
- The clipboard read and written (get_clipboard, set_clipboard)
- Browser tabs listed with their titles and URLs (get_browser_tabs)
- Applications launched and URLs opened, and native macOS notifications posted (open_app, open_url, send_notification)
- Raw AppleScript run for the cases the typed tools do not cover (run_osascript)
A current macOS and a recent Node; runs with npx -y mcp-osascript. macOS automation permissions have to be granted, and errors are classified so a permission refusal reads differently from a failure.
One command — claude mcp add osascript -- npx -y mcp-osascript
