Skip to main content
Glama
surendranb

macOS Companion MCP Server

by surendranb
README.md
# macOS Companion MCP Server šŸ

> **Native macOS Companion MCP server for AI agents: system control, clipboard management, desktop notifications, audio devices, and workspace automation.**

[![CI](https://github.com/surendranb/macos-companion-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/surendranb/macos-companion-mcp/actions)
[![npm version](https://img.shields.io/npm/v/@surendranb/macos-companion-mcp.svg?style=flat-square&color=red)](https://www.npmjs.com/package/@surendranb/macos-companion-mcp)
[![PyPI version](https://img.shields.io/pypi/v/macos-companion-mcp.svg?style=flat-square&color=blue)](https://pypi.org/project/macos-companion-mcp/)
[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/surendranb/macos-companion-mcp/badge)](https://scorecard.dev/viewer/?site=github.com/surendranb/macos-companion-mcp)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](LICENSE)

🌐 **Live Documentation & Web Portal**: [https://macos.builditwithai.xyz](https://macos.builditwithai.xyz)

---

## ⚔ Quickstart

```bash
# 1-Line Universal Installer (Auto-configures Claude Desktop, Cursor, Claude Code, Antigravity, VS Code, Zed, Windsurf)
curl -fsSL "https://macos.builditwithai.xyz/install" | bash

# Or run directly via your preferred runtime:
uvx macos-companion-mcp
npx -y @surendranb/macos-companion-mcp
```

---

---

## šŸ¤– Client Setup

### A. Claude Code (CLI)
```bash
claude mcp add macos-companion -- npx -y @surendranb/macos-companion-mcp
```

### B. Cursor & Google Antigravity (`mcp.json`)
```json
{
  "mcpServers": {
    "macos-companion": {
      "command": "npx",
      "args": ["-y", "@surendranb/macos-companion-mcp"]
    }
  }
}
```

### C. Claude Desktop (`claude_desktop_config.json`)
```json
{
  "mcpServers": {
    "macos-companion": {
      "command": "npx",
      "args": ["-y", "@surendranb/macos-companion-mcp"]
    }
  }
}
```

### D. Python UVX Alternative
```json
{
  "mcpServers": {
    "macos-companion": {
      "command": "uvx",
      "args": ["macos-companion-mcp"]
    }
  }
}
```

---

## šŸ› ļø Tools & Capabilities

| Tool Name | Parameters | Description | Return Type |
|---|---|---|---|
| `notify` | `title` (string), `message` (string), `sound` (optional) | Dispatches native macOS desktop notifications with alert sounds. | `JSON` |
| `clipboard_read` | *(none)* | Reads current plain text contents from the system clipboard. | `string` |
| `clipboard_write` | `text` (string) | Writes text directly to the macOS system clipboard. | `JSON` |
| `get_audio_devices` | *(none)* | Lists available audio input/output devices and current volume level. | `JSON` |
| `set_volume` | `volume` (0-100) | Adjusts macOS system output volume. | `JSON` |
| `get_frontmost_app` | *(none)* | Returns the active, focused desktop application name and bundle ID. | `JSON` |
| `get_open_windows` | *(none)* | Lists visible application window titles and coordinates. | `JSON` |
| `get_displays` | *(none)* | Returns connected monitor resolutions, scaling, and display arrangements. | `JSON` |
| `open_url` | `url` (string) | Opens a URL in the user's default browser or specific application. | `JSON` |
| `execute_applescript` | `script` (string) | Runs sandboxed AppleScript / JXA automation commands safely. | `JSON` |
| `skill_read` | `skill_name` (string) | Loads macOS automation playbooks dynamically from GitHub. | `Markdown` |
| `skills_list` | *(none)* | Lists all available macOS automation skills. | `JSON` |

---

## šŸ”’ Telemetry & Privacy

This package collects anonymous, non-PII diagnostic telemetry (command executions, latency, error codes) to improve tool reliability. No clipboard contents, notification text, personal data, source code, or environment variables are ever collected or stored.

You can opt out anytime by setting either of the following environment variables:
```bash
export DO_NOT_TRACK=1
# or
export MCP_TELEMETRY_OPT_OUT=1
```

---

## šŸ“„ License

MIT License. See [LICENSE](LICENSE) for details.

TDQS

B3.3/5.0

Scored across 40 tools

Disambiguation4/5

Most tools target distinct apps and actions, but there is overlap among system monitoring tools (get_system_stats, get_battery_health, run_health_audit) and storage tools (get_disk_usage, get_storage_scan) that could cause misselection without careful reading.

Naming Consistency4/5

The naming largely follows verb_noun snake_case (list_calendars, create_reminder), with minor deviations like play_pause_music (verb_verb) and get_storage_scan (noun-heavy). Overall predictable.

Tool Count2/5

40 tools is excessive for a single server, even with broad macOS scope. Many tools could be split into separate domain-specific servers (calendar, system, podcasts). This makes the surface heavy to navigate.

Completeness3/5

Core operations exist for most apps (create, read, list), but lifecycle coverage is incomplete: Calendar/Reminders/Notes lack delete, Music lacks queue control, Mail lacks folder/search operations. The podcast tools are unusually thorough, but other areas feel thin.

Maintenance

ActivityMaintained
ResponsivenessNo issues