Skip to main content
Glama
devizor

macOS Notification MCP

by devizor
README.md
# ๐Ÿ”” macOS Notification MCP

A Model Context Protocol (MCP) server that enables AI assistants to trigger macOS notifications, sounds, and text-to-speech.

## โœจ Features

- ๐Ÿ”Š **Sound Notifications**: Play system sounds like Submarine, Ping, or Tink
- ๐Ÿ’ฌ **Banner Notifications**: Display visual notifications with customizable title, message, and subtitle
- ๐Ÿ—ฃ๏ธ **Speech Notifications**: Convert text to speech with adjustable voice, rate, and volume
- ๐ŸŽ™๏ธ **Voice Management**: List and select from available system voices
- ๐Ÿงช **Testing Tools**: Diagnostic utilities to verify all notification methods

## ๐Ÿš€ Quick Start with uvx (Recommended)

The fastest way to use this tool is with `uvx`, which runs packages without permanent installation:

```bash
# Install uv if you don't have it
curl -LsSf https://astral.sh/uv/install.sh | sh

# Run the MCP server directly (no installation needed)
uvx macos-notification-mcp
```

## โš™๏ธ Configure Claude Desktop

Add this to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "macos-notification-mcp": {
      "command": "uvx",
      "args": ["macos-notification-mcp"]
    }
  }
}
```

Then restart Claude Desktop.

## ๐Ÿ“ฆ Alternative Installation Methods

Standard installation:

```bash
pip install macos-notification-mcp
```

Install from source:

```bash
git clone https://github.com/devizor/macos-notification-mcp
cd macos-notification-mcp
pip install .
```

## ๐Ÿ› ๏ธ Available Notification Tools

### ๐Ÿ”Š Sound Notification
```python
sound_notification(sound_name="Submarine")
```
Available sounds: Basso, Blow, Bottle, Frog, Funk, Glass, Hero, Morse, Ping, Pop, Purr, Sosumi, Submarine, Tink

### ๐Ÿ’ฌ Banner Notification
```python
banner_notification(
    title="Task Complete",
    message="Your analysis is ready",
    subtitle=None,  # Optional
    sound=False,    # Optional: Play sound with notification
    sound_name=None # Optional: Specify system sound
)
```

### ๐Ÿ—ฃ๏ธ Speech Notification
```python
speak_notification(
    text="The process has completed",
    voice=None,     # Optional: System voice to use
    rate=150,       # Optional: Words per minute (default: 150)
    volume=1.0      # Optional: Volume level 0.0-1.0
)
```

### ๐ŸŽ™๏ธ Voice Management
```python
list_available_voices()  # Lists all available text-to-speech voices
```

### ๐Ÿงช Testing
```python
test_notification_system()  # Tests all notification methods
```

## ๐Ÿ”’ Implementation Details

- โฑ๏ธ **Rate Limiting**: Notifications are processed one at a time with a minimum interval of 0.5 seconds
- ๐Ÿ”„ **Queuing**: Multiple notification requests are handled sequentially
- ๐ŸชŸ **OS Integration**: Uses native macOS commands (`afplay`, `osascript`, `say`)
- ๐Ÿ”Œ **FastMCP**: Built on the FastMCP framework for AI communication

## โš ๏ธ Troubleshooting

- ๐Ÿ” **Permissions**: Ensure notifications are allowed in System Settings โ†’ Notifications
- โณ **Timing**: Only one notification is processed at a time
- ๐ŸŒ **Environment**: If using the command directly (not uvx), you may need to use full paths

## ๐Ÿ“„ License

MIT License