# Apple System

Lets an assistant view macOS settings and run desktop actions. Helpful when controlling Mac preferences from a coding agent.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 31
- Author: JonathanRReed
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/JonathanRReed/Apple-MCPs/tree/HEAD/applesystem-mcp
- Updated: 2026-10-22
- HTML: https://affpapa.org/en/nevibecode/mcp/apple-system

## What it does

This MCP server connects AI assistants directly to macOS system utilities. It allows the model to inspect preferences and trigger desktop tasks without leaving your terminal workflow. Built-in tools like `system_health` verify setup status, while `system_permission_guide` helps troubleshoot access prompts.

The server requires macOS and Python 3.11 or newer. Execution happens locally via `uvx`. Because desktop actions interact with native services, macOS will ask for user approval across System Events, Accessibility, or Automation panes.

Security hinges on the `APPLE_SYSTEM_MCP_SAFETY_MODE` environment variable. Passing an invalid or empty value forces `safe_readonly`, which stops modification tools from executing. You can also restrict desktop automation to specific software with `APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS`.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `APPLE_SYSTEM_MCP_SAFETY_MODE`, `APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env APPLE_SYSTEM_MCP_SAFETY_MODE=<APPLE_SYSTEM_MCP_SAFETY_MODE> --env APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS=<APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS> --transport stdio applesystem-mcp -- uvx apple-system-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from apple-system-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add applesystem-mcp --env APPLE_SYSTEM_MCP_SAFETY_MODE=<APPLE_SYSTEM_MCP_SAFETY_MODE> --env APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS=<APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS> -- uvx apple-system-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from apple-system-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "applesystem-mcp": {
            "command": "uvx",
            "args": [
                "apple-system-mcp"
            ],
            "env": {
                "APPLE_SYSTEM_MCP_SAFETY_MODE": "<APPLE_SYSTEM_MCP_SAFETY_MODE>",
                "APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS": "<APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from apple-system-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "applesystem-mcp": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "apple-system-mcp"
            ],
            "env": {
                "APPLE_SYSTEM_MCP_SAFETY_MODE": "<APPLE_SYSTEM_MCP_SAFETY_MODE>",
                "APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS": "<APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from apple-system-mcp <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e APPLE_SYSTEM_MCP_SAFETY_MODE=<APPLE_SYSTEM_MCP_SAFETY_MODE> -e APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS=<APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS> applesystem-mcp uvx apple-system-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from apple-system-mcp <command>

## When to use it
- inspect macOS preferences directly from your agent chat
- automate authorized desktop interactions across allowed programs
- verify operating system access rights with `system_health`
- restrict execution via safety profiles and app allowlists

## Example prompts
- Run `system_health` to verify if macOS accessibility permissions are granted.
- Check what permissions are missing by calling `system_permission_guide`.
- Inspect current display and system parameters using available macOS tools.

## Similar
- [macOS-MCP](https://affpapa.org/en/nevibecode/mcp/macos-mcp.md) — MCP server · ★ 227
- [ClawTank](https://affpapa.org/en/nevibecode/mcp/clawtank.md) — MCP server · ★ 44
- [Apple Shortcuts](https://affpapa.org/en/nevibecode/mcp/mindstone-apple-shortcuts.md) — MCP server · ★ 13
- [Apple Shortcuts Integration](https://affpapa.org/en/nevibecode/skills/apple-shortcuts-integration.md) — skill · 4700 installs
- [apple-calendar](https://affpapa.org/en/nevibecode/skills/apple-calendar.md) — skill · 726 installs
- [mcp-apple-notes](https://affpapa.org/en/nevibecode/mcp/mcp-apple-notes.md) — MCP server · ★ 53

From the same set: [jonathanrreed/apple-mcps](https://affpapa.org/en/nevibecode/by/jonathanrreed/apple-mcps.md) — 11 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
