Agent Device vs Hammerspoon MCP
A side-by-side look at the Agent Device and Hammerspoon MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Agent Device for os automation work; choose Hammerspoon MCP for os automation as a local process. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
Choose Agent Device when
- You need dedicated capabilities in the OS Automation domain.
- Its auth model fits you: No auth required.
Choose Hammerspoon MCP when
- You need dedicated capabilities in the OS Automation domain.
- You prefer a local stdio subprocess transport.
- You have the keys it needs:
HS_MCP_TOOLS. - You want tools like
hs_health, hs_api_search, hs_list_windows.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | OS Automation | OS Automation |
| Quality signal | 52/100 · Good | 61/100 · Good |
| Install command | Not confirmed yet | Confirmed |
| Transport | — | Local subprocess (stdio) |
| Auth | No auth required | Not declared |
| Pricing | Free | Not declared |
| Required env vars | None listed | HS_MCP_TOOLS |
| Verified owner | Community listing | Community listing |
| GitHub stars | 5,125 | 1 |
| Directory activity | 3 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | Not listed | 38 |
| Full listing | View Agent Device | View Hammerspoon MCP |
Tools & capabilities
Agent Device tools
No tool names declared yet. Check the project README from the listing page.
Hammerspoon MCP tools 38
hs_healthVerify that Hammerspoon is running and reachable, and report its version. Call this first when any other tool fails, because it distinguishes a setup problem from a tool problem.hs_api_searchSearch Hammerspoon's own API documentation for functions, methods, constants, and modules. Returns exact signatures. Use this before writing Lua so calls are correct the first time, rather than discovering a wrong name from a runtime error.hs_list_windowsList every visible window with its id, owning application, title, frame, and screen. Window ids are what hs_focus_window and hs_move_window operate on, so call this first.hs_focus_windowBring a window to the front, selected by id (exact) or by a substring of its title. The matched window is returned so you can confirm the right one was chosen.hs_move_windowSet the position and/or size of a window by id, in screen pixels. Omitted fields keep their current value. The returned frame is read back after the move settles, so it is the real placement; adjusted=true means macOS or the app put the window somewhere other than requested. Use hs_screens to learn the available coordinate space.hs_window_layoutSnap a window to a named position such as left-half or quarter-top-left, computed from the screen size so no pixel arithmetic is needed. Defaults to the focused window. Positions respect the menu bar and Dock.hs_list_appsList running applications with pid, bundle identifier, window count, and which one is frontmost.hs_launch_appLaunch an application by name, or focus it if it is already running. Use the name as it appears in Finder, for example "Safari".hs_focus_appBring an already-running application to the front. Unlike hs_launch_app this never starts anything, so it fails if the application is not running.hs_screensList connected screens with their coordinate frames. frame excludes the menu bar and Dock, fullFrame includes them. Use these bounds when computing arguments for hs_move_window.hs_list_spacesList macOS Spaces across all screens with their id, type, and which one is current. User desktops also carry a 1-based position, which is the number people mean by "desktop 2" and what the Ctrl+N shortcuts match. Fullscreen app spaces have no position.hs_goto_spaceSwitch to another macOS desktop, either by its id from hs_list_spaces or by its 1-based position. The result reports where the switch actually landed: arrived=false with landedOn set means the system did not end up on the requested desktop, which can happen when macOS auto-rearranges Spaces mid-switch. Verified, not assumed.- +26 more on the listing page
Ready-to-paste client configs
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
Agent Device
No confirmed install command for Agent Device yet — follow the setup steps linked from its listing page rather than a guessed package name.
Hammerspoon MCP
{
"mcpServers": {
"hammerspoon-mcp": {
"command": "npx",
"args": [
"-y",
"@vukvukovich/hammerspoon-mcp"
],
"env": {
"HS_MCP_TOOLS": "YOUR_HS_MCP_TOOLS_HERE"
}
}
}
}