Skip to content

Releases: CursorTouch/MacOS-MCP

v0.3.11

Choose a tag to compare

@github-actions github-actions released this 15 Jul 16:20

What's Changed

Added

  • Add a desktop-state capture profiling utility (python -m macos_mcp.profiling.desktop_state) with layer-by-layer, per-app, and vision-overhead timing breakdowns, plus --save-screenshot to save the last annotated capture to disk
  • Add a desktop creation tool that opens a new Mission Control Space via Accessibility-based automation of the Dock's Mission Control UI

Changed

  • Speed up desktop state capture (roughly 3-4x locally, both with and without vision):
    • Skip re-scanning an app's menu bar when a windowless app (e.g. Spotlight) reports it again as a top-level child during the windowless fallback scan
    • Skip descending into closed (0-size) AXMenu submenus, since a closed menu can never contain a visible/interactive element
    • Remove an unconditional 50ms sleep from get_foreground_window

Fixed

  • Notification tool no longer fails for non-ASCII text (CJK, emoji): pass ensure_ascii=False to json.dumps when building the display notification AppleScript, since AppleScript string literals don't support \uXXXX escapes (#27)
  • Extension no longer exits at startup under Claude Desktop: manifest.json/server.json now set MACOS_MCP_SKIP_PERMISSION_CHECK=1 by default so the published extension can reach the existing warn-instead-of-exit escape hatch when AXIsProcessTrustedWithOptions() reports false for a disclaimed subprocess even though the host's own grant is inherited; skip mode also suppresses the focus-stealing System Preferences popup (#26)

v0.3.10

Choose a tag to compare

@github-actions github-actions released this 08 Jul 08:25

Full Changelog: v0.3.9...v0.3.10

v0.3.9

Choose a tag to compare

@github-actions github-actions released this 07 Jul 18:33

What's Changed

  • Fix screenshot capture on macOS 15+ (CGWindowListCreateImage returns NULL) by @howielevy-ionq in #24
  • perf: throttle EventObserver app re-scan to cut idle CPU by @kinjung in #20
  • fix: AXWindows role-misclassification recursion on macOS 26 Tahoe (Snapshot RecursionError) by @Austin519 in #18
  • fix: drain autorelease pools on secondary AX threads to stop idle memory leak by @brendancsmith in #17
  • feat: implement Tau extension for macOS-MCP and reorganize documentation structure by @Jeomon
  • Update supported macOS versions to include macOS 26 (Tahoe) and macOS 27 (Golden Gate) by @Jeomon
  • refactor: remove macos-mcp extension and initialize tau settings configuration by @Jeomon

New Contributors

Full Changelog: v0.3.8...v0.3.9

v0.3.8

Choose a tag to compare

@github-actions github-actions released this 20 Jun 01:33

What's Changed

  • fix: resolve three issues preventing v0.3.7 from running as a Claude Desktop extension by @Jeomon in #13
  • feat: update entry point to serve, switch shell execution to bash, an… by @Jeomon in #14
  • fix: drain autorelease pools on secondary AX threads to stop idle memory leak by @brendancsmith in #17
  • fix: AXWindows role-misclassification recursion on macOS 26 Tahoe (Snapshot RecursionError) by @Austin519 in #18
  • perf: throttle EventObserver app re-scan to cut idle CPU by @kinjung in #20

New Contributors

Full Changelog: v0.3.7...v0.3.8

v0.3.7

Choose a tag to compare

@Jeomon Jeomon released this 01 Jun 00:49

Bug Fixes

Fix SyntaxError on import — _SCRAPE_MAX_CHARS misplaced above decorator (#8)

macos-mcp 0.3.6 was completely broken on import due to _SCRAPE_MAX_CHARS = 20_000 being placed between the @mcp.tool(...) decorator and def scrape_tool(...). Python raised a SyntaxError before serving a single tool call. The constant has been moved above the decorator.

Fix AXObserver memory leak in EventObserver (~10–17 MB/min) (#7)

Two cooperating bugs caused steady linear physical footprint growth during long-running sessions, eventually triggering OOM on extended use:

  • AppObserver.start() leaked partial CF state on failure — early-exit paths after AXObserverCreate succeeded left AXObserver and run loop source references alive and never released by the AX framework.
  • _update_observers retried unobservable PIDs every 0.1 s — failed PIDs were never marked as seen, so system/permission-denied apps triggered a new AXObserverCreate call (and leak) on every event loop tick (~10 objects/second).

Both sites are now fixed: start() cleans up partial state at each failure path, and _update_observers unconditionally marks PIDs as seen regardless of success or failure.

v0.3.4

Choose a tag to compare

@github-actions github-actions released this 12 May 16:15

Full Changelog: v0.3.3...v0.3.4

v0.3.3

Choose a tag to compare

@Jeomon Jeomon released this 12 May 14:56

macOS-MCP v0.3.3

✨ Features

  • Notification Tool — Send macOS notification banners with titles, subtitles, and custom sounds
  • App Tool 'move' Mode — New mode for precise window repositioning
  • Scrollable Elements Detection — Improved detection of scrollable UI elements

🐛 Fixes

  • Fixed window resize and move operations with proper AXValue wrapping
  • Improved scroll label retrieval performance

🔄 Improvements

  • Enhanced Accessibility API module with better pattern matching
  • Optimized control interactions and event handling

GitHub | Issues

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 12 May 03:55

Full Changelog: v0.3.0...v0.3.1

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 11 May 17:00

What's Changed

New Contributors

Full Changelog: v0.2.3...v0.3.0

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 21 Apr 01:34

Full Changelog: v0.2.0...v0.2.3