Hammerspoon MCP vs Linux MCP Server
A side-by-side look at the Hammerspoon MCP and Linux MCP Server MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Hammerspoon MCP for os automation work as a local process; choose Linux MCP Server 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 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.
Choose Linux MCP Server when
- You need dedicated capabilities in the OS Automation domain.
- You prefer a local stdio subprocess transport.
- You want tools like
get_journal_logs, read_log_file, get_network_interfaces.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | OS Automation | OS Automation |
| Quality signal | 61/100 · Good | 64/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | HS_MCP_TOOLS | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 1 | 314 |
| Directory activity | 2 views 0 installs 0 upvotes | 3 views 0 installs 0 upvotes |
| Tools | 38 | 23 |
| Full listing | View Hammerspoon MCP | View Linux MCP Server |
Tools & capabilities
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
Linux MCP Server tools 23
get_journal_logsGet systemd journal logs.read_log_fileRead a specific log file.get_network_interfacesGet detailed information about network interfaces including address and traffic statistics.get_network_connectionsGet detailed information about active network connections.get_listening_portsGet details on listening port, protocols, and services.pcp_guideReturns the PCP metrics guide: a catalog of the metric names recorded on a typical Linux system, and how to read the values the other PCP tools return. Read it before investigating performance with PCP, and take metric names from it rather than from memory.pcp_list_metricsBrowses the PCP metric namespace. Lists the metrics under 'prefix' with their descriptions, collapsing any large sub-namespace to one line giving its name and how many metrics it holds; call again with that name as the prefix to see inside it. Only metrics this system's pmlogger records are listed, so everything listed can be passed to pcp_query_metrics. The pcp_guide tool already names the commonly needed metrics, so reach for this when you need a subsystem the guide does not cover. Use only if get_system_information() indicates PCP is available.pcp_query_metricsRetrieves historical metric data from PCP archives as JSON samples. When start_time, end_time, or interval is omitted, reasonable defaults are chosen, targeting one hour or about 20 samples. Call pcp_guide first for the metric catalog and how to read the values; do not guess metric names. Use only if get_system_information() indicates PCP is available.pcp_performance_summaryProduces a condensed snapshot of CPU, memory, disk, network, and process information using pcp xsos. Can summarize the live system or a particular time in the past. Use only if get_system_information() indicates PCP is available.list_processesList running processesget_process_infoGet information about a specific process.list_servicesList all systemd services.- +11 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.
Hammerspoon MCP
{
"mcpServers": {
"hammerspoon-mcp": {
"command": "npx",
"args": [
"-y",
"@vukvukovich/hammerspoon-mcp"
],
"env": {
"HS_MCP_TOOLS": "YOUR_HS_MCP_TOOLS_HERE"
}
}
}
}
Linux MCP Server
{
"mcpServers": {
"linux-mcp-server-2": {
"command": "uvx",
"args": [
"linux-mcp-server"
]
}
}
}
Frequently asked questions
Hammerspoon MCP is categorized under OS Automation and uses a local stdio subprocess. Linux MCP Server belongs to OS Automation and uses a local stdio subprocess. Pick Hammerspoon MCP for os automation work and Linux MCP Server for os automation.
Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.
Hammerspoon MCP has no declared pricing — check the project's own site. Linux MCP Server has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.
Yes. MCP clients support multiple servers: add hammerspoon-mcp and linux-mcp-server-2 as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, Hammerspoon MCP has a quality signal of 61/100 (Good) with 2 views, 0 installs and 1 GitHub stars. Linux MCP Server has 64/100 (Good) with 3 views, 0 installs and 314 GitHub stars.