Other formats agents might prefer:
markdownjsonllms.txt

Agent? You probably want markdown or json, or Pod over MCP.

Reported issues for macos-mcp-server

Pod holds 13 of 13 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to macos-mcp-server.

Most discussed

bug(multiple tools): raw CLI command strings leak into error messages

Server version

0.1.1

mcp-ts-core version

0.9.9

Runtime

Bun

Runtime version

Bun 1.3.11

Transport

HTTP (Streamable HTTP)

OS

macOS 26.1

Description

Several tool handlers surface raw execFile error messages directly to the agent, leaking internal CLI invocations (command path + arguments). The errors also lack reason codes and recovery hints, making them non-actionable.

Affected cases:

| Tool | Input that triggers it | Leaked command | |:-----|:--------

Read the thread · 2026-05-25 · closed · 2 comments

bug(macos_take_screenshot): target=window always fails on macOS 26.1 — ObjC.deepUnwrap(CGWindowList) returns null entries

Server version

0.1.1

mcp-ts-core version

0.9.9

Runtime

Bun

Runtime version

Bun 1.3.11

Transport

HTTP (Streamable HTTP)

OS

macOS 26.1

Description

macos_take_screenshot with target=window always returns window_not_found even for apps that are clearly running and have visible windows. Tested with Finder, Code (VS Code), and ghostty — all fail.

The window-capture flow uses JXA with ObjC.import('CoreGraphics') and `$.CGWindowListCopyWindowInfo($.kCGWi

Read the thread · 2026-05-25 · closed · 2 comments

bug(macos_manage_windows): minimize action fails with "Can't convert types" on macOS 26.1

Server version

0.1.1

mcp-ts-core version

0.9.9

Runtime

Bun

Runtime version

Bun 1.3.11

Transport

HTTP (Streamable HTTP)

OS

macOS 26.1

Description

macos_manage_windows with action=minimize always fails with an osascript execution error, regardless of the target app. Tested with Finder and ghostty — both return the same error.

The minimize case executes win.minimized = <bool> via the buildFindWindowScript helper, which sets the minimized prope

Read the thread · 2026-05-25 · closed · 2 comments

bug(macos_control_audio): SwitchAudioSource -f dict flag not supported in v1.2.2, breaking list and switch_output/switch_input

Server version

0.1.1

mcp-ts-core version

0.9.9

Runtime

Bun

Runtime version

Bun 1.3.11

Transport

HTTP (Streamable HTTP)

OS

macOS 26.1

Description

macos_control_audio with action=list, switch_output, or switch_input always returns an InternalError (-32603). The macos://audio/devices resource also fails with the same error.

AudioService.listDevices calls SwitchAudioSource -a -f dict to get structured output, but the -f flag (format selec

Read the thread · 2026-05-25 · closed · 2 comments

bug(macos_get_info): fully-charged battery on AC renders as "on battery"

macos_get_info renders — on battery for a machine that is fully charged and running on AC, contradicting the Power Source: AC line printed directly beneath it.

Reproduce

On a laptop plugged in and topped up (pmset -g batt reports charged, not charging):

pmset -g batt
Now drawing from 'AC Power'
 -InternalBattery-0 (id=22675555)	100%; charged; 0:00 remaining present: true

Call macos_get_info with no arguments. content[0]:

### Power
**Battery:** 100% — on batter

[Read the thread](https://github.com/cyanheads/macos-mcp-server/issues/6) · 2026-08-22 · closed · 1 comment

### bug(services): silent probe fallbacks report failures as observed values

Two helpers swallow failures and return placeholder values that are indistinguishable from real observations, so a failed probe is reported to the caller as fact.

## `runSafe`

`src/services/system-info/system-info-service.ts` wraps every probe:

```ts
async function runSafe(cmd: string, args: string[]): Promise<string> {
  try {
    const r = await execFile(cmd, args, { timeout: 10_000 });
    return (r.stdout ?? '').trim();
  } catch {
    return '';
  }
}

Each caller then substitutes a

Read the thread · 2026-08-22 · open · 0 comments

feat(tools): display_index and layout_name are unobtainable, and displays[].type examples don't match reality

Two tool parameters take identifiers that no tool in the server can produce, and one output field's documented examples do not match the values it returns. All three are cases where a strong model guesses correctly and a weaker one cannot.

display_index has no source

macos_take_screenshot takes a 0-based display_index, and its display_not_found recovery says:

Call macos_manage_displays with action=list to see available displays.

That list returns persistent UUIDs and no index fi

Read the thread · 2026-08-22 · open · 0 comments

bug(tools): missing required arguments classified three incompatible ways, one with a misleading reason

Across the tool surface, a missing conditionally-required argument produces three mutually incompatible outcomes. One of them hands the caller a typed reason that describes a different problem than the one that occurred.

The three behaviors

1. Silent success. macos_control_volume {"action":"set"} does nothing and reports success. Filed separately as #8.

2. Unclassified InternalError. macos_manage_windows move, macos_manage_displays apply_layout, macos_manage_focus set, an

Read the thread · 2026-08-22 · open · 0 comments

Most recent

bug(macos_get_info): Wi-Fi reported disconnected when Location Services gates the SSID

macos_get_info and macos://system/info report wifi: {ssid: null, connected: false} on a machine that is associated with a network. The server is collapsing "cannot read the SSID" into "not connected".

Reproduce

Call macos_get_info on a Mac joined to a Wi-Fi network:

"wifi": { "ssid": null, "connected": false }

Ground truth on the same machine:

$ system_profiler SPAirPortDataType
  Current Network Information:
    PHY Mode: 802.11ax
    Network Type: Infrastructure

[Read the thread](https://github.com/cyanheads/macos-mcp-server/issues/10) · 2026-08-22 · open · 0 comments

### bug(macos_manage_finder): trash on a nonexistent path throws InternalError instead of path_not_found

`macos_manage_finder action=trash` with a path that does not exist fails as an unclassified `InternalError` carrying the raw AppleScript, instead of the `path_not_found` the tool declares. The `reveal` action pre-checks the same path and returns the typed error correctly.

## Reproduce

```json
{"action": "trash", "path": "/zz/no/such/path/qx.txt"}

Returns -32603 InternalError:

osascript failed: 29:72: execution error: Finder got an error: Handler can't handle objects of this class. 

[Read the thread](https://github.com/cyanheads/macos-mcp-server/issues/9) · 2026-08-22 · open · 0 comments

### bug(macos_control_volume): set with no level and no muted silently no-ops and reports success

`macos_control_volume action=set` called with neither `level` nor `muted` does nothing and reports success. The result is indistinguishable from a set that took effect.

## Reproduce

```json
{"action": "set"}

Returns, with no isError:

{"level": 56, "muted": false}

Nothing was changed. 56 is the volume that was already in effect.

Cause

The handler falls through all three branches without writing anything, then reads the current state back and returns it as the result.

Read the thread · 2026-08-22 · open · 0 comments

bug(macos_manage_apps): quit reports success for an app that isn't running

macos_manage_apps action=quit reports success: true for an application that is not running. The sibling actions force_quit, hide, and show all pre-check the process list and correctly return not_running for the same input.

Reproduce

{"action": "quit", "app_name": "ZzNonexistentAppQx"}

Returns, with no isError:

{"action": "quit", "success": true, "app_name": "ZzNonexistentAppQx"}

The same name through force_quit, hide, or show returns -32001 w

Read the thread · 2026-08-22 · open · 0 comments

feat(macos_control_music): add Apple Music transport control tool

The server controls system output volume (macos_control_volume) and audio device routing (macos_control_audio), but has no playback control for the Apple Music app. Add a macos_control_music tool that drives Music.app via AppleScript (tell application "Music") through the existing osascript-service — rounding out the macOS media surface alongside volume and audio.

Proposal

A single macos_control_music tool exposing transport verbs and now-playing reads for the Apple Music app. P

Read the thread · 2026-06-15 · open · 0 comments

The remaining reports are on the project's issue tracker.