# Altic MCP

Altic MCP turns Claude into a hands-on Mac operator. Connect 37 precise tools for Messages, Contacts, Notes, Reminders, Calendar, Safari, Chrome CDP, screen capture, system controls, and visual feedback, all through an open source Model Context Protocol server for macOS.

Canonical URL: https://altic.dev/mcp
Markdown URL: https://altic.dev/mcp.md
Tool inventory JSON: https://altic.dev/mcp/tools.json
Repository: https://github.com/altic-dev/altic-mcp
Server source: https://github.com/altic-dev/altic-mcp/blob/main/server.py

## Quick Facts

- Category: Model Context Protocol server and macOS automation tool
- License: Apache-2.0
- README tool claim: 20+ tools
- Exact server.py tool count: 37
- Skill: altic-studio
- Requirements: macOS 10.13+; Python 3.13+; UV package manager; Google Chrome for Chrome CDP tools

## Requirements

- macOS 10.13+
- Python 3.13+
- UV package manager
- Google Chrome for Chrome CDP tools

## Setup

1. Install UV if needed

```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```

2. Clone and set up the repository

```bash
git clone https://github.com/altic-dev/altic-mcp.git && cd altic-mcp && uv sync
```

3. Test locally

```bash
uv run server.py
```

4. Configure Claude Desktop

```bash
uv run --project /FULL/PATH/TO/altic-mcp /FULL/PATH/TO/altic-mcp/server.py
```

## Skill Installation

```bash
npx skills add altic-dev/altic-mcp --list
```

```bash
npx skills add altic-dev/altic-mcp
```

## Required Permissions

- Contacts for search_contacts
- Calendars for calendar events
- Reminders for creating reminders
- Automation so Claude can control apps such as Messages, Notes, and Safari
- Accessibility for screen glow and system controls
- Screen Recording for screenshot capture tools
- Safari -> Develop -> Allow JavaScript from Apple Events for Safari tools
- Google Chrome for Chrome CDP tools

## Tool Categories

### Messages & Contacts (3 tools)

Send and read iMessages, search contacts, and resolve phone numbers.

- `search_contacts`
- `send_imessage`
- `read_recent_messages`

### Notes & Reminders (3 tools)

Create and search Apple Notes, then create time-based reminders.

- `create_note`
- `search_notes`
- `set_reminder`

### Calendar (2 tools)

Create Calendar events and list events for a specific day.

- `create_calendar_event`
- `list_calendar_events_for_day`

### Safari (12 tools)

Control Safari tabs, windows, navigation, history, JavaScript, and page inspection.

- `open_safari_tab`
- `close_safari_tab`
- `get_safari_tabs`
- `switch_safari_tab`
- `run_safari_javascript`
- `navigate_safari`
- `reload_safari_page`
- `safari_go_back`
- `safari_go_forward`
- `open_safari_window`
- `close_safari_window`
- `get_safari_page_info`

### Chrome CDP (9 tools)

Use session-based Chrome DevTools Protocol control for navigate, wait, click, type, extract, screenshot, and close workflows.

- `chrome_open_session`
- `chrome_list_sessions`
- `chrome_navigate`
- `chrome_wait_for`
- `chrome_click`
- `chrome_type`
- `chrome_extract`
- `chrome_screenshot`
- `chrome_close_session`

### Screen Capture (1 tools)

Capture the active display and return image output directly to the model.

- `capture_active_screen`

### System (5 tools)

Open apps and adjust brightness or system volume.

- `open_app`
- `decrease_brightness`
- `increase_brightness`
- `turn_up_volume`
- `turn_down_volume`

### Visual Feedback (2 tools)

Add and remove a screen glow so the user can see when automation is active.

- `add_screen_glow`
- `remove_screen_glow`

## Exact Tool Inventory

### open_app

Category: System

Open any macOS application by name.

Arguments:
- `name` (string, required): Name of the Mac app, such as Mail, Contacts, or Messages.

Permissions: Automation

### send_imessage

Category: Messages & Contacts

Send an iMessage to a phone number.

Arguments:
- `phone_number` (string, required): Recipient phone number.
- `message` (string, required): Message text to send.

Permissions: Contacts, Automation

### search_contacts

Category: Messages & Contacts

Search Contacts by name and return matching people and phone numbers.

Arguments:
- `name` (string, required): Contact name to search for.

Permissions: Contacts

### read_recent_messages

Category: Messages & Contacts

Read recent iMessages between the user and a phone number.

Arguments:
- `phone_number` (string, required): Phone number for the conversation.
- `recent_message_count` (integer, optional, default 25): Number of recent messages to retrieve, 1 to 200.

Permissions: Automation

### set_reminder

Category: Notes & Reminders

Create a macOS reminder with a specific date, time, and list.

Arguments:
- `name` (string, required): Reminder text.
- `datetime` (string, required): Time in YYYY-MM-DD HH:MM format.
- `list_name` (string, optional, default Reminders): Reminder list name.

Permissions: Reminders

### create_note

Category: Notes & Reminders

Create a note in Apple Notes.

Arguments:
- `name` (string, required): Note title.
- `body` (string, required): Note body.
- `folder` (string, optional): Optional folder. Uses default folder if omitted.

Permissions: Automation

### search_notes

Category: Notes & Reminders

Search Apple Notes.

Arguments:
- `query` (string, required): Search query.
- `max_results` (integer, optional, default 10): Maximum results, 1 to 20.

Permissions: Automation

### decrease_brightness

Category: System

Decrease screen brightness.

Arguments:
- `amount` (number, optional, default 0.0625): Brightness decrement on a 0.0 to 1.0 scale.

Permissions: Accessibility

### increase_brightness

Category: System

Increase screen brightness.

Arguments:
- `amount` (number, optional, default 0.0625): Brightness increment on a 0.0 to 1.0 scale.

Permissions: Accessibility

### turn_up_volume

Category: System

Turn up system volume.

Arguments:
- `amount` (number, optional, default 6.25): Volume increase on a 0 to 100 scale.

Permissions: Accessibility

### turn_down_volume

Category: System

Turn down system volume.

Arguments:
- `amount` (number, optional, default 6.25): Volume decrease on a 0 to 100 scale.

Permissions: Accessibility

### create_calendar_event

Category: Calendar

Create an event in macOS Calendar.

Arguments:
- `title` (string, required): Event title.
- `start_datetime` (string, required): Start date and time in YYYY-MM-DD HH:MM format.
- `duration_minutes` (integer, required): Duration in minutes.
- `calendar_name` (string, optional): Optional calendar name. Uses default calendar if omitted.

Permissions: Calendars

### list_calendar_events_for_day

Category: Calendar

List Calendar events for a specific day.

Arguments:
- `date` (string, required): Date in YYYY-MM-DD format.

Permissions: Calendars

### open_safari_tab

Category: Safari

Open a new Safari tab with an optional URL.

Arguments:
- `url` (string, optional): Optional URL to open.

Permissions: Automation, Safari JavaScript from Apple Events

### close_safari_tab

Category: Safari

Close a Safari tab.

Arguments:
- `tab_index` (integer, optional, default -1): Use -1 for current tab or a 1-based tab index.

Permissions: Automation

### get_safari_tabs

Category: Safari

List all open Safari tabs with URLs and titles.

Arguments:
No arguments.

Permissions: Automation

### switch_safari_tab

Category: Safari

Switch to a Safari tab by 1-based index.

Arguments:
- `tab_index` (integer, required): 1-based tab index.

Permissions: Automation

### run_safari_javascript

Category: Safari

Execute JavaScript in the current Safari tab.

Arguments:
- `javascript_code` (string, required): JavaScript code to execute.

Permissions: Automation, Safari JavaScript from Apple Events

### navigate_safari

Category: Safari

Navigate the current Safari tab to a URL.

Arguments:
- `url` (string, required): Destination URL.

Permissions: Automation

### reload_safari_page

Category: Safari

Reload the current Safari page.

Arguments:
No arguments.

Permissions: Automation

### safari_go_back

Category: Safari

Navigate back in Safari history.

Arguments:
No arguments.

Permissions: Automation

### safari_go_forward

Category: Safari

Navigate forward in Safari history.

Arguments:
No arguments.

Permissions: Automation

### open_safari_window

Category: Safari

Open a new Safari window with an optional URL.

Arguments:
- `url` (string, optional): Optional URL to open.

Permissions: Automation

### close_safari_window

Category: Safari

Close the current Safari window.

Arguments:
No arguments.

Permissions: Automation

### get_safari_page_info

Category: Safari

Get current Safari page URL, title, text content, and HTML source.

Arguments:
No arguments.

Permissions: Automation, Safari JavaScript from Apple Events

### chrome_open_session

Category: Chrome CDP

Open a Chrome automation session for browser control.

Arguments:
- `start_url` (string, optional, default about:blank): Initial page URL.
- `debug_port` (integer, optional, default 9222): Chrome remote debugging port, 1024 to 65535.
- `headless` (boolean, optional, default false): Launch Chrome headless if debugger needs to be started.

Permissions: Google Chrome

### chrome_list_sessions

Category: Chrome CDP

List active Chrome automation sessions.

Arguments:
No arguments.

Permissions: Google Chrome

### chrome_navigate

Category: Chrome CDP

Navigate an active Chrome CDP session to a URL.

Arguments:
- `session_id` (string, required): Session returned by chrome_open_session.
- `url` (string, required): URL to load.

Permissions: Google Chrome

### chrome_wait_for

Category: Chrome CDP

Wait for a CSS selector in a Chrome CDP session.

Arguments:
- `session_id` (string, required): Session returned by chrome_open_session.
- `selector` (string, required): CSS selector to wait for.
- `timeout_ms` (integer, optional, default 10000): Maximum wait time in milliseconds.
- `poll_ms` (integer, optional, default 200): Polling interval in milliseconds.

Permissions: Google Chrome

### chrome_click

Category: Chrome CDP

Click an element in an active Chrome CDP session.

Arguments:
- `session_id` (string, required): Session returned by chrome_open_session.
- `selector` (string, required): CSS selector for target element.

Permissions: Google Chrome

### chrome_type

Category: Chrome CDP

Type text into an input element in an active Chrome CDP session.

Arguments:
- `session_id` (string, required): Session returned by chrome_open_session.
- `selector` (string, required): CSS selector for target input.
- `text` (string, required): Text to type.
- `clear_first` (boolean, optional, default true): Clear existing value before typing.

Permissions: Google Chrome

### chrome_extract

Category: Chrome CDP

Extract data by selector, attribute, or JavaScript expression.

Arguments:
- `session_id` (string, required): Session returned by chrome_open_session.
- `selector` (string, optional): CSS selector to query.
- `attribute` (string, optional): Attribute name to read from selected element.
- `javascript_expression` (string, optional): JavaScript expression to evaluate.

Permissions: Google Chrome

### chrome_screenshot

Category: Chrome CDP

Capture a screenshot of an active Chrome CDP session.

Arguments:
- `session_id` (string, required): Session returned by chrome_open_session.
- `output_path` (string, optional): Optional output PNG path.

Permissions: Google Chrome

### chrome_close_session

Category: Chrome CDP

Close a Chrome automation session.

Arguments:
- `session_id` (string, required): Session returned by chrome_open_session.

Permissions: Google Chrome

### capture_active_screen

Category: Screen Capture

Capture a full screenshot of the display containing the frontmost app and return image output to the model.

Arguments:
- `output_path` (string, optional): Optional output PNG path.

Permissions: Screen Recording

### add_screen_glow

Category: Visual Feedback

Add an orange screen-edge glow to show that automation is in progress.

Arguments:
No arguments.

Permissions: Accessibility

### remove_screen_glow

Category: Visual Feedback

Remove the screen glow when automation completes.

Arguments:
No arguments.

Permissions: Accessibility

## Example Workflows

- Prompt: Find Sam in contacts and send an iMessage: Running 10 mins late.
  Tool path: search_contacts -> send_imessage
- Prompt: Create tomorrow 9:30 AM standup in Work calendar for 30 minutes.
  Tool path: create_calendar_event
- Prompt: Open a Chrome session, navigate to GitHub, wait for a selector, and extract page text.
  Tool path: chrome_open_session -> chrome_navigate -> chrome_wait_for -> chrome_extract
- Prompt: Capture my active display and attach the screenshot for review.
  Tool path: capture_active_screen

## FAQ

### What is Altic MCP?

Altic MCP is an open source Model Context Protocol server that lets MCP clients automate macOS apps and browser sessions.

### How many tools does Altic MCP expose?

The README describes 20+ tools. The current server.py source exposes 37 exact MCP tools.

### Which automation areas are covered?

Altic MCP covers Messages and Contacts, Notes and Reminders, Calendar, Safari, Chrome CDP, Screen Capture, System controls, and Visual Feedback.

### What is altic-studio?

altic-studio is the shareable skill in the Altic MCP repo. It runs AppleScript automations via osascript and supports Messages, Contacts, Notes, Reminders, Calendar, Safari, system controls, screenshots, and Chrome CDP browser control.

### What are the requirements?

Altic MCP requires macOS 10.13+, Python 3.13+, the UV package manager, and Google Chrome for Chrome CDP tools.

### What permissions are required?

Contacts, Calendars, Reminders, Automation, Accessibility, and Screen Recording are required for the corresponding macOS integrations. Safari tools also require Safari's Allow JavaScript from Apple Events setting.
