Window arrange
Use when the user wants to manipulate window layout — focus an app, tile windows side-by-side, send a window to a specific space, maximize, or restore a previous arrangement. Encodes the right tool sequence (list → match → move/resize) and the macOS-specific gotchas around AX windows vs CGWindowID.From its SKILL.md
npx -y skills add MichaelAdamGroberman/mac-mcp --skill window-arrangeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
2.7 KB, as published. Nobody here has run it
Window arrangement with mac-mcp
Window IDs are CGWindowIDs from list_windows. The Accessibility API uses its own AX handles, but mac-mcp's move_window / resize_window / focus_window accept CGWindowIDs directly and translate internally.
Common patterns
"Focus app X" / "switch to app X"
focus_app bundle_id=<X> # preferred — exact
# or
focus_app name=<X> # fallback — localized name
If the app isn't running, focus_app will launch it (when bundle_id is provided). It returns launched:true so you can tell the user.
"Tile two windows side by side"
list_windows # find the two ids
# Get screen size from screenshot_screen.width/height of display 0 OR
# from the existing window bounds + extrapolation.
move_window window_id=<A> x=0 y=0
resize_window window_id=<A> width=<W/2> height=<H>
move_window window_id=<B> x=<W/2> y=0
resize_window window_id=<B> width=<W/2> height=<H>
Caveat: macOS menu bar takes ~30 px at the top, dock takes 80 px at the bottom (when visible). For "true" usable area, query a specific display via screenshot_screen and use that width/height as bounds.
"Maximize this window" / "make it fullscreen"
mac-mcp does not yet have a fullscreen_window tool (real fullscreen creates a new Space). For "maximize without fullscreen":
move_window window_id=<id> x=0 y=0
resize_window window_id=<id> width=<display_width> height=<display_height>
"Switch to space N"
set_space index=<N>
This synthesises Ctrl+N (the system shortcut for "Switch to Desktop N"). It only works if the user has those shortcuts enabled in System Settings → Keyboard → Keyboard Shortcuts → Mission Control. If the user reports nothing happened, that's likely why.
Gotchas
- Multiple windows of the same app:
list_windowsreturns one entry per window with the sameowner. Match bytitleto disambiguate, not bypid. - Hidden windows: pass
on_screen_only=falsetolist_windowsto include minimized/hidden ones. - Floating panels: high
layervalues (>= 25) are usually system overlays (notifications, menu bar). Filter them out unless the user asks about them specifically. - Permission:
move_window/resize_window/focus_windowrequire Accessibility. If they error withtcc_accessibility_denied, invoke themac-mcp-tcc-grantskill.